This document describes changes between tagged Binaryen versions.
To browse or download snapshots of old tagged versions, visit https://github.com/WebAssembly/binaryen/releases.
Not all changes are documented here. In particular, new features, user-oriented fixes, options, command-line parameters, usage changes, deprecations, significant internal modifications and optimizations etc. generally deserve a mention. To examine the full set of changes between versions, visit the link to full changeset diff at the end of each section.
- Added load_splat SIMD instructions
- Binaryen.js instruction API changes:
notify
->atomic.notify
i32.wait
/i64.wait
->i32.atomic.wait
/i64.atomic.wait
- Binaryen.js:
flags
argument insetMemory
function is removed. atomic.fence
instruction support is added.- wasm-emscripten-finalize: Don't rely on name section being present in the input. Use the exported names for things instead.
- Added
mutable
parameter to BinaryenAddGlobalImport. - Replace BinaryenSIMDBitselect* with BinaryenSIMDTernary* in the C API and add qfma/qfms instructions.
- Added
offset
parameter to BinaryenSetFunctionTable.
- wasm-emscripten-finalize: For -pie binaries that import a mutable stack pointer we internalize this an import it as immutable.
- The
tail-call
feature including thereturn_call
andreturn_call_indirect
instructions is ready to use.
- Rename Bysyncify => Asyncify
- The --initial-stack-pointer argument to wasm-emscripten-finalize no longer has any effect. It will be removed completely in future release.
- Wast file parsing rules now don't allow a few invalid formats for typeuses
that were previously allowed. Typeuse entries should follow this format,
meaning they should have (type) -> (param) -> (result) order if more than one
of them exist.
Also, all (local) nodes in function definition should be after all typeuse elements.
typeuse ::= (type index|name)+ | (type index|name)+ (param ..)* (result ..)* | (param ..)* (result ..)*
- Removed APIs related to deprecated instruction names in Binaryen.js:
get_local
/getLocal
set_local
/setLocal
tee_local
/teeLocal
get_global
/getGlobal
set_global
/setGlobal
current_memory
/currentMemory
grow_memory
/growMemory
They are now available as their new instruction names:local.get
,local.set
,local.tee
,global.get
,global.set
,memory.size
, andmemory.grow
.
- Add feature handling to the C/JS API with no feature enabled by default.
- Generate dynCall thunks for any signatures used in "invoke" calls.
- Fix AsmConstWalker handling of string address in arg0 with -fPIC code
- Change default feature set in the absence of a target features section from all features to MVP.
- Improve support for side modules
- Add
namedGlobals
to metadata output of wasm-emscripten-finalize - Add support for llvm PIC code.
- Add --side-module option to wasm-emscripten-finalize.
- Add
segmentPassive
argument toBinaryenSetMemory
for marking segments passive. - Make
-o -
print to stdout instead of a file named "-".
- Remove wasm-merge tool.
- Remove jsCall generation from wasm-emscripten-finalize. This is not needed as of emscripten-core/emscripten#8255.
RelooperCreate
in the C API now has a Module parameter, andRelooperRenderAndDispose
does not.- The JS API now has the
Relooper
constructor receive theModule
.
- The JS API now has the
- Relooper: Condition properties on Branches must not have side effects.
-
BinaryenSetFunctionTable
in the C API no longer accepts an array of functions, instead it accepts an array of function names,const char** funcNames
. Previously, you could not include imported functions because they are of typeBinaryenImportRef
instead ofBinaryenFunctionRef
. #1650 -
BinaryenSetFunctionTable
in the C API now expects the initial and maximum table size as additional parameters, likeBinaryenSetMemory
does for pages, so tables can be grown dynamically. #1687 -
Add
shared
parameters toBinaryenAddMemoryImport
andBinaryenSetMemory
, to support a shared memory. #1686