JS++


JS++ is a programming language for web development that extends JavaScript with a sound type system. It includes imperative, object-oriented, functional, and generic programming features.

History

JS++ first appeared on October 8, 2011. The modern implementation was announced at DeveloperWeek 2016 and released on May 31, 2016. The language is designed by Roger Poon and Anton Rapetov.

Syntax

Type annotations

Since JS++ is a superset of JavaScript, declaring types for variables is optional.

int x = 1; // declares the variable x with an "internal type"
var y = 2; // declares the variable y with an "external type"
bool z = true; // declares the variable z with an "internal type"

Features

JS++ features a type system that is sound.
JS++ is able to efficiently analyze out-of-bounds errors at compile time.

Development tools

Compiler

The JS++ compiler is available for Windows, Mac OS X, and Linux. The compiler generates JavaScript output.

Editor integration

JS++ integrates with various code editors including Visual Studio Code, Atom, and Sublime Text.

Build tools

JS++ can be integrated with third-party build tools like Webpack.

Release history

Version numberRelease dateChanges
0.01Alpha version, initial release
0.011Alpha version
0.012Alpha version
0.013Alpha version
0.014.1Alpha version
0.4.1Beta version, array and callback types, character literals, integral suffixes, removed ECMAScript ASI
0.4.2Modules, function overloading, dead code elimination, editor integrations
0.4.2.1Bug fixes
0.4.2.2Source map debugging
0.4.2.4Support for Mac OS X, C-style casts, callback and array conversions
0.5.0Classes
0.5.1'foreach' loops
0.5.2BSD License, Interfaces, Abstract Classes, Virtual Methods, Auto-boxing
0.7.0All ECMAScript 3 features via Array and Standard Library
0.8.0Generic programming, Dictionary, multi-line strings,.js++ file extension
0.8.1auto, catch-all clauses, standard library modules for handling time, bug fixes
0.8.4New string functions, advanced generics, bug fixes, standard library expansion
0.8.5Bug fixes
0.8.10Faster compile times, stacks, queues, Unicode, Base64, generic default constraint rules
0.9.0Efficient compile time out-of-bounds error analysis
0.9.1Bug fixes
0.9.2Final variables and default to 64-bit for macOS Catalina