Skip to content

Releases: WebAssembly/binaryen

version_65: Handle EM_ASM/EM_JS in LLVM wasm backend O0 output (#1888)

28 Jan 20:14
153ba18
Compare
Choose a tag to compare
See emscripten-core/emscripten#7928 - we have been optimizing all wasms until now, and noticed this when the wasm object file path did not do so. When not optimizing, our methods of handling EM_ASM and EM_JS fail since the patterns are different.

Specifically, for EM_ASM we hunt for emscripten_asm_const(X, where X is a constant, but without opts it may be a get of a local. For EM_JS, the function body may not just contain a const, but a block with a set of the const and a return of a get later.

This adds logic to track gets and sets in basic blocks, which is sufficient to handle this.

1.38.25: More misc ASAN fixes (#1882)

24 Jan 00:16
e63c4a7
Compare
Choose a tag to compare
* fix buffer overflow in simple_ast.h printing.
* check wasm binary format reading of function export indexes for errors.
* check if s-expr format imports have a non-empty module and base.

Fixes #1876
Fixes #1877
Fixes #1879

1.38.24: Emscripten stack simplification (#1870)

17 Jan 15:06
777d33d
Compare
Choose a tag to compare
This takes advantage of the recent memory simplification in emscripten, where JS static allocation is done at compile time. That means we know the stack's initial location at compile time, and can apply it. This is the binaryen side of that:

* asm2wasm support for asm.js globals with an initial value var X = Y; where Y is not 0 (which is what the stack now is).
* wasm-emscripten-finalize support for a flag --initial-stack-pointer=X, and remove the old code to import the stack's initial location.

version_64: Emscripten stack simplification (#1870)

16 Jan 22:02
777d33d
Compare
Choose a tag to compare
This takes advantage of the recent memory simplification in emscripten, where JS static allocation is done at compile time. That means we know the stack's initial location at compile time, and can apply it. This is the binaryen side of that:

* asm2wasm support for asm.js globals with an initial value var X = Y; where Y is not 0 (which is what the stack now is).
* wasm-emscripten-finalize support for a flag --initial-stack-pointer=X, and remove the old code to import the stack's initial location.

1.38.23: Code style improvements (#1868)

15 Jan 22:01
d24427d
Compare
Choose a tag to compare
* Use modern T p = v; notation to initialize class fields
* Use modern X() = default; notation for empty class constructors

version_63

03 Jan 01:16
2a0dcfe
Compare
Choose a tag to compare
Don't emit simd in fuzzer unless requested (some code paths we missed…

version_62: Fix fuzzing JS glue code (#1843)

28 Dec 00:01
3f3fc85
Compare
Choose a tag to compare
After we added logging to the fuzzer, we forgot to add to the JS glue code the necessary imports so it can be run there too.

Also adds legalization for the JS glue code imports and exports.

Also adds a missing validator check on imports having a function type (the fuzzing code was missing one).

Fixes #1842

version_61: wasm-emscripten-finalize: Add tableSize to metadata (#1826)

14 Dec 19:49
e8f5842
Compare
Choose a tag to compare
This allows emscripten to generate table of the correct size.
Right now is simply defaults to creating a table to size 1024.

version_60: No exit runtime pass (#1816)

14 Dec 00:22
0fd96e6
Compare
Choose a tag to compare
When emscripten knows that the runtime will not be exited, it can tell codegen to not emit atexit() calls (since those callbacks will never be run). This saves both code size and startup time. In asm2wasm the JSBackend does it directly. For the wasm backend, this pass does the same on the output wasm.

version_59

12 Dec 01:13
Compare
Choose a tag to compare
wasm-emscripten-finalize: import env.STACKTOP, like asm2wasm does