JS++
Paradigm | Imperative, structured, object-oriented, functional, generic |
---|---|
Designed by | Roger Poon, Anton Rapetov |
Developer | Onux |
First appeared | 8 October 2011 |
Typing discipline | Gradual, static, dynamic |
License | BSD License |
Filename extensions | .jspp, .js++, .jpp |
Website | www |
Influenced by | |
C, C++, C#, Java, JavaScript |
JS++ is a proprietary programming language for web development that extends JavaScript with a sound type system. It includes imperative, object-oriented, functional, and generic programming features.
History[edit]
JS++ first appeared on October 8, 2011.[1][2][3] The modern implementation was announced at DeveloperWeek 2016[4] and released on May 31, 2016.[5][6][7][8] The language is designed by Roger Poon and Anton Rapetov.
Syntax[edit]
Type annotations[edit]
Since JS++ is a superset of JavaScript, declaring types for variables is optional.
int x = 1; // declares the variable x with an "internal type" (JS++ type)
var y = 2; // declares the variable y with an "external type" (JavaScript type)
bool z = true; // declares the variable z with an "internal type" (JS++ type)
Features[edit]
JS++ features a type system that is sound.[9][10]
JS++ is able to efficiently analyze out-of-bounds errors at compile time.[11][12][13]
Development tools[edit]
Compiler[edit]
The JS++ compiler is available for Windows, Mac OS X, and Linux. The compiler generates JavaScript output.
Editor integration[edit]
JS++ integrates with various code editors including Visual Studio Code, Atom, and Sublime Text.[14][15][16]
Build tools[edit]
JS++ can be integrated with third-party build tools like Webpack.[17]
Release history[edit]
Version number | Release date | Changes |
---|---|---|
0.01 | 8 October 2011 | Alpha version, initial release |
0.011 | 10 October 2011 | Alpha version |
0.012 | 25 October 2011 | Alpha version |
0.013 | 29 January 2012 | Alpha version |
0.014.1 | 15 August 2012 | Alpha version |
0.4.1 | 31 May 2016 | Beta version, array and callback types, character literals, integral suffixes, removed ECMAScript ASI |
0.4.2 | 18 October 2016 | Modules, function overloading, dead code elimination, editor integrations |
0.4.2.1 | 24 October 2016 | Bug fixes |
0.4.2.2 | 17 November 2016 | Source map debugging |
0.4.2.4 | 25 December 2016 | Support for Mac OS X, C-style casts, callback and array conversions |
0.5.0 | 13 March 2017 | Classes |
0.5.1 | 26 March 2017 | 'foreach' loops |
0.5.2 | 27 July 2017 | BSD License, Interfaces, Abstract Classes, Virtual Methods, Auto-boxing |
0.7.0 | 27 October 2017 | All ECMAScript 3 features via Array<T> and Standard Library |
0.8.0 | 15 March 2018 | Generic programming, Dictionary<T>, multi-line strings, .js++ file extension |
0.8.1 | 27 March 2018 | auto, catch-all clauses, standard library modules for handling time, bug fixes |
0.8.4 | 23 May 2018 | New string functions, advanced generics, bug fixes, standard library expansion |
0.8.5 | 2 June 2018 | Bug fixes |
0.8.10 | 24 November 2018 | Faster compile times, stacks, queues, Unicode, Base64, generic default constraint rules |
0.9.0 | 11 January 2019 | Efficient compile time out-of-bounds error analysis |
0.9.1 | 1 July 2019 | Bug fixes |
0.9.2 | 18 October 2019 | Final (immutable) variables and default to 64-bit for macOS Catalina |
See also[edit]
References[edit]
- ^ "JavaScript++: New, Powerful Language for Better Web Development". 17 October 2011. Archived from the original on 17 October 2011.
- ^ "C++ et Javascript = Javascript++". 12 October 2011. Archived from the original on 12 October 2011.
- ^ "Index of /downloads". 18 October 2011. Archived from the original on 18 October 2011.
- ^ "Javascript Conference - DeveloperWeek 2016 - February 12-18". 13 February 2016. Archived from the original on 13 February 2016.
- ^ "JS++ Goes Into Public Beta". May 31, 2016.
- ^ Alex Handy (June 1, 2016). "Onux seeks to fix JavaScript's lack of type safety". SD Times.
- ^ Paul Krill (June 6, 2016). "New compiler tackles JavaScript's weak typing". InfoWorld.
- ^ Catalin Cimpanu (June 9, 2016). "jQuery 3.0 Released and Other JavaScript News". Softpedia.
- ^ "The JS++ Type System". www.onux.com.
- ^ Adrian Bridgwater (June 13, 2016). "Onux JS++, an answer to JavaScript 'brittle' type safety?". Computer Weekly.
- ^ Fabio Díaz (January 23, 2019). "JS++, the JavaScript superset, is getting rid of out-of-bounds errors". Akuaroworld.
- ^ Christina Cardoza (January 16, 2019). "JS++ programming language looks to solve out-of-bounds errors". SD Times.
- ^ "JS++ 0.9.0: Efficient Compile Time Analysis of Out-of-Bounds Errors". January 11, 2019.
- ^ "JavaScript superset JS++ adds dead code elimination and more". Computerworld. October 19, 2016.
- ^ Christina Cardoza (October 19, 2016). "JS++ 0.4.2 released with code editor integrations, modules and dead code elimination". SD Times.
- ^ Geneva Clark (October 20, 2016). "JS++ 0.4.2 Release - Upgraded With Modular Design, Dead Code Elimination, and Multiple Code Editors". Zeomag.
- ^ "GitHub - IngwiePhoenix/jspp-webpack-poc". 7 December 2018 – via GitHub.