-
Notifications
You must be signed in to change notification settings - Fork 14
/
ChangeLog
213 lines (169 loc) · 6.89 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
Cheerp: C++ for the Web
Version 3.0:
* 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
Version 2.7:
* 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
Version 2.6 RC1:
* 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
Version 2.5:
* 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
Version 2.0:
* 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
Version 2.0 RC2:
* 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
Version 2.0 RC1:
* 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
Version 1.3:
* 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 PreExecuting 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
Version 1.2.1:
* Fixed encoding of literal strings in JS
* Minor fixes
Version 1.2:
* 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
Version 1.1:
* Greatly improved performance for the generated code
Version 1.0:
* Greatly improved clientlib.h header
* Generated Doxygen documentation for Web APIs
* Several fixes to robustness and performance
Version 0.9.6:
* Initial support for debugging using Source Maps
* Improved type safety of SROA optimization and enabled it
* Collapse allocations when possible
* Enable GNU extensions to C++ by default
* Generate "strict" mode JavaScript
* Explicitly disable unsupported sets and maps of pointers
* Fixed std set and map for other types
Version 0.9.5:
* Rebase on top of current LLVM/clang
* Several bug fixes
Version 0.9.4:
* Reduce verbosity of type safety warning
* Add cheerp version to clang --version
* Cleanup examples
* Support C++ mutex/atomic/thread headers
* Initial support for promise based async RPC
* [[jsexport]] attribute to use C++ objects from JavaScript
* __asm__ to execute JavaScript from C++ code
Version 0.9.3:
* Support memset with non-constant values
* stdout/stderr support
* Added server.h to the installed files
* The cheerp.js utility file is not needed anymore
* Use C++11 by default
Version 0.9.2:
* First webGLES release
* Improved toolchain usability
* Automatic linking to system libraries
* Mac OS X build
Version 0.9.1:
* Minor bug fixes
Version 0.9:
* First release to the public
Version 0.3:
* Rebased over LLVM 3.3
* Restored support for client/server RPCs
* Improved robustness
Version 0.2:
* Support for libc, libc++, libc++abi
* Support for clean cross compiling using CMake
Version 0.1.4:
* Support for virtual calls
* Removed hardcoded paths for includes