Changelog

Cheerp 3.0 - March 6th, 2023

* Rebase on top of LLVM/Clang 16.0
* [[cheerp::jsexport]] support for classes compiled to WebAssembly
* WebAssembly SIMD support
* CFGStackifier improvements
* PartialExecuter improvements
* Various performance improvements
* Various robustness improvements
* Switch to new LLVM PassManager
* Use musl + dlmalloc as libc
* Progress towards opaque pointer support

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
Was this page helpful?
Suggest changes