- `BinaryenModulePrintStackIR`, `BinaryenModuleWriteStackIR` and
`BinaryenModuleAllocateAndWriteStackIR` now have an extra boolean
argument `optimize`. (#4832)
- Remove support for the `let` instruction that has been removed from the typed
function references spec.
- HeapType::ext has been restored but is no longer a subtype of HeapType::any to
match the latest updates in the GC spec. (#4898)
- `i31ref` and `dataref` are now nullable to match the latest GC spec. (#4843)
- Add support for `extern.externalize` and `extern.internalize`. (#4975)
version v109
- Add Global Struct Inference pass (#4659) (#4714)
- Restore and fix SpillPointers pass (#4570)
- Update relaxed SIMD instructions to latest spec
version v108
- Add CMake flag BUILD_TOOLS to control building tools (#4655)
- Add CMake flag JS_OF_OCAML for js_of_ocaml (#4637)
- Remove externref (#4633)
version v107
- Update the wasm GC type section binary format (#4625, #4631)
- Lift the restriction in liveness-traversal.h on max 65535 locals (#4567)
- Switch to nominal fuzzing by default (#4610)
- Refactor Feature::All to match FeatureSet.setAll() (#4557)
- New Signature Pruning pass (#4545)
- Add support for extended-const proposal (#4529)
- Add BUILD_TESTS CMake option to make gtest dependency optional.
- Updated tests to use filecheck 0.0.22 (#4537). Updating is required to
successfully run the lit tests. This can be done with
`pip3 install -r requirements-dev.txt`.
version v106
- [wasm2js] Support exports of Globals (#4523)
- MergeSimilarFunctions optimization pass (#4414)
- Various wasm-ctor-eval improvements, including support for GC.
version v105
- This release contains binaries for ARM64 MacOS devices (#4397)
- Otherwise, mostly bug fixes and incremental optimization improvements.
version v104
- Bugfixes only, release created due to incorrect github release artifacts in
v103 release (#4398).
version v103
- The EffectAnalyzer now takes advantage of immutability of globals. To achieve
that it must have access to the module. That is already the case in the C++
API, but the JS API allowed one to optionally not add a module when calling
`getSideEffects()`. It is now mandatory to pass in the module.
- JS and Wasm builds now emit ECMAScript modules. New usage is:
```js
import Binaryen from "path/to/binaryen.js";
const binaryen = await Binaryen();
...
```
- CallIndirect changed from storing a Signature to storing a HeapType
version v102
- Add `BinaryenUpdateMaps` to the C API.
- Adds a TrapsNeverHappen mode (#4059). This has many of the benefits of
IgnoreImplicitTraps, but can be used safely in more cases. IgnoreImplicitTraps
is now deprecated.
- Adds type argument for BinaryenAddTable method (#4107). For the binaryen.js api
this parameter is optional and by default is set to funcref type.
- Replace `BinaryenExpressionGetSideEffects`'s features parameter with a module
parameter.
- OptimizeInstructions now lifts identical code in `select`/`if` arms (#3828). This may cause direct `BinaryenTupleExtract(BinaryenTupleMake(...))` to [use multivalue types](https://github.com/grain-lang/grain/pull/1158).
version v101
- `BinaryenSetFunctionTable` and `module.setFunctionTable` have been removed
in favor of `BinaryenAddTable` and `module.addTable` respectively.
- `BinaryenIsFunctionTableImported` is removed.
- A new type `BinaryenElementSegmentRef` has been added to the C API with
new apis in both C & JS:
- `BinaryenAddActiveElementSegment`
- `BinaryenAddPassiveElementSegment`
- `BinaryenRemoveElementSegment`
- `BinaryenGetElementSegment`
- `BinaryenGetElementSegmentByIndex`
- `BinaryenElementSegmentGetName`
- `BinaryenElementSegmentSetName`
- `BinaryenElementSegmentGetTable`
- `BinaryenElementSegmentSetTable`
- `BinayenElementSegmentIsPassive`
- `module.addActiveElementSegment`
- `module.addPassiveElementSegment`
- `module.removeElementSegment`
- `module.getElementSegment`
- `module.getElementSegmentByIndex`
- `module.getTableSegments`
- `module.getNumElementSegments`
- `binaryen.getElementSegmentInfo`
- `BinaryenAddTable` and `module.addTable` no longer take offset and function
names.
- `BinaryenGetNumFunctionTableSegments` is replaced with
`BinaryenGetNumElementSegments`.
- `BinaryenGetFunctionTableSegmentOffset` is replaced with
`BinaryenElementSegmentGetOffset`.
- `BinaryenGetFunctionTableSegmentLength` is replaced with
`BinaryenElementSegmentGetLength`.
- `BinaryenGetFunctionTableSegmentData` is replaced with
`BinaryenElementSegmentGetData`.
- Boolean values in the C API now should use `bool` instead of `int`.
- Experimental SIMD instructions have been removed and the names and opcodes of
the standard instructions have been updated to match the final spec.