Changelog
Cheerp 2.7 - March 29th, 2022:
* Rebase on top of LLVM/Clang 14.0
* Switch to monorepo (cheerp-compiler)
* Support ES6 modules with -cheerp-make-module=es6
* Support for C++ exceptions
* Support for catching JavaScript exceptions
* Introduction of [[cheerp::interface_name]] attribute
* Full rework of Cheerp clang checks
* Removal of cheerp-mode command line options
* Removal of cfg-legacy command line options
* Support for branch hint Wasm custom section
* Various performance improvements
* Various robustness improvements
* PartialExecuter and SinkGenerator IR-optimization passes
* Adopt new BranchHinting standard
Cheerp 2.6 - December 16th, 2020
* Improved handling of WebAssembly instantiation errors
* Rebase on top of LLVM/Clang 9.0
* Full rework of 64-bit integer support
* Full rework of [[cheerp::jsexport]] support
* Full rework of LLVM ConstantExpr support
* Improved codegen for memcpy/memset/memmove
* Support non-void block types in WebAssembly code
* Improvements to devirtualization support
* Improved lowering of SwitchInst
Cheerp 2.5 - May 13th, 2020
* Target WebAssembly by default
* Full rework of CFGStackifier
* Full rework of Registerize (locals allocator)
* Large improvements to JavaScript/WebAssembly interoperability
* Rebase on top of LLVM/Clang 6.0
* Support -cheerp-strict-linking= to report missing symbols at link time
* Reduced output size (both JavaScript/WebAssembly)
* Use compount operators (+=, -=, etc) in JavaScript code
* Reduce code generation time
* Support RPM packages
* Support devirtualization of indirect calls in some cases
* Support removal of indirectly used functions in some cases
* Support removing unobservable globals in some cases
* Fixed build determinism
* Initial support for anyref
* Various performance improvements
* Various robustness improvements
* Experimental support for anyref
Cheerp 2.0 - Feb 18th, 2019
* Introduce CFGStackifier (successor to Relooper)
* Support commonjs modules with -cheerp-make-module
* Support static methods in [[cheerp::jsexport]] classes
* Support inlining of simple functions across the genericjs/asmjs/wasm boundary
* Improved sourcemaps support
* Improved support for __asm__ syntax
* Reduced output size (both wasm and js)
* Faster memcpy/memset/memmove in linear memory mode
* Various performance improvements
* Various robustness improvements
Cheerp 2.0-RC2 - Apr 23rd, 2018
* Much improved interoperability between WebAssembly and JavaScript code
* Much improved compile time errors when using interoperability features
* Support variable length stack arrays in WebAssembly and JavaScript mode
* Optimize WebAssembly code generation to reduce code size
* Support virtual bases in WebAssembly and JavaScript mode
* Support runtime bounds checking in WebAssembly and JavaScript mode
* Introduce Identical Code Folding to remove duplicated code in WebAssembly and Asmj.js mode
Cheerp 2.0-RC1 - Nov 11th, 2017:
* Add a WebAssembly backend that produces binary and textual wasm
* Add flag -cheerp-asmjs-mem-file to output a file holding asm.js module initialized memory
* Add flag -cheerp-wasm-loader to output a file that initialises the WebAssembly file
* Add flag -cheerp-linear-heap-size that sets heap size in megabytes for asmjs and wasm
* Add flag -cheerp-no-math-fround that disables the usage of Math.fround()
* Add `[[cheerp::asmjs]]` attribute for setting globals in the asmjs section manually
* Add `[[cheerp::genericjs]]` attribute for setting globals in the generic section
* Enabling asmjs mode will define `__ASMJS__` in the preprocessor
* Enabling wasm mode will define `__WASM__` in the preprocessor
* Overhaul of priority system to remove useless parenthesis and type coercions
Cheerp 1.3 - Feb 7th, 2017:
* Improve support for unions
* Make it possible to define globals in the client namespace
* Improve support for variadic arguments
* Improvements to PreExecuter
* Improvements to JavaScript minimizer
* Declare all variables at the beginning of the functions
* Add -cheerp-reserved-names option to skip specific names in the minimizer
* Improve support for [[cheerp::jsexport]]
* Make it possible to use [[cheerp::jsexport]] on free functions beside classes
* Improve precision of float constants
* Merge small integers fields together
* Improve promotion of pointer to value arguments
* Initial support for PreExecusing main/webMain
* Introduce debug command line flags -cheerp-bounds-check and -cheerp-defined-members-check
* Enable 64-bit enums
* Enable dynamic_cast of references
* Improve compilation speed
* Various optimizations
Cheerp 1.2.1 - Feb 10th, 2016
* Fixed encoding of literal strings in JS
* Minor fixes
Cheerp 1.2 - Jan 25th, 2016
* Based on updated LLVM/clang
* Support covariant return types
* Add support for 64-bit integers
* Support RTTI and dynamic_cast
* Improved compiler diagnostic messages
* Reduced code size
* Reduced code startup time
* Improved performance of generated code
* Support JavaScript module pattern
* Improved SourceMaps
Cheerp 1.1 - Jun 15th, 2015
* Greatly improved performance for the generated code
Cheerp 1.0 - May 28th, 2014
* Initial stable release
* Greatly improved clientlib.h header
* Generated Doxygen documentation for Web APIs
* Several fixes to robustness and performance