binaryen/binaryen.changes

282 lines
13 KiB
Plaintext

-------------------------------------------------------------------
Sun Aug 13 21:04:18 UTC 2023 - Avindra Goolcharan <avindra@opensuse.org>
- update to version 114
* Fix a bug where e.g. -O3 -Oz ran the -O3 with the opt levels
of -Oz, which could inhibit inlining, for example. While this
is a bugfix, it affects how commandline options are
interpreted, so if you depended on the old behavior this may
be a breaking change. That is, the old behavior made -O3 -Oz
run the first -O3 with -Oz's opt levels, and the new behavior
is to run -O3 with the proper (-O3) opt levels. This is a
followup to #5333 from a previous release. (#5787)
* Add pass to remove Exception Handling instructions (#5770).
- includes version 113:
* Add a `wasm-merge` tool. This is a full rewrite of the
previous `wasm-merge` tool that was removed from the tree in
the past. The new version is much simpler after recent
improvements to multi-memory and multi-table. The rewrite was
motivated by new use cases for merging modules in the context
of WasmGC.
* Some C and JS API functions now refer to data and element
segments by name instead of index.
* The `--nominal` and `--hybrid` command line options and
related API functions have been removed. The only supported
type system is now the standard isorecursive (i.e. hybrid)
type system. (#5672)
- Add a "mayNotReturn" effect (#5711).
- Disable the memory64 feature in Memory64Lowering.cpp (#5679).
- Disable sign extension in SignExtLowering.cpp (#5676).
-------------------------------------------------------------------
Wed Mar 1 09:47:57 UTC 2023 - Flavio Castelli <fcastelli@suse.com>
- update to version 112
- Add AbstractTypeRefining pass (#5461)
- Add a mechanism to skip a pass by name (#5448)
- Add TypeMerging pass (#5321)
- Add TypeSSA pass (#5299)
- Optimization sequences like `-O3 -Os` now do the expected thing and run `-O3`
followed by `-Os`. Previously the last of them set the defaults that were used
by all executions, so `-O3 -Os` was equivalent to `-Os -Os`. (There is no
change to the default optimization level that other passes can see. For
example, `--precompute-propagate -O2 -O1` will run `--precompute-propagate`
at opt level `1`, as the global default is set to `2` and then overridden to
`1`. The only change is that the passes run by `-O2` will actually run `-O2`
now, while before they'd use the global default which made them do `-O1`.)
- Add `--closed-world` flag. This enables more optimizations in GC mode as it
lets us assume that we can change types inside the module.
- The isorecursive WasmGC type system (i.e. --hybrid) is now the default to
match the spec and the old default equirecursive (i.e. --structural) system
has been removed.
- `ref.is_func`, `ref.is_data`, and `ref.is_i31` have been removed from the C
and JS APIs and `RefIs` has been replaced with `RefIsNull`.
- Types `Data` and `Dataref` have been replaced with types `Struct` and
`Structref` in the C and JS APIs.
- `BinaryenStringNew` now takes an additional last argument, `try_`, indicating
whether the instruction is one of `string.new_utf8_try` respectively
`string.new_utf8_array_try`.
- `BinaryenStringEq` now takes an additional second argument, `op`, that is
either `BinaryenStringEqEqual()` if the instruction is `string.eq` or
`BinaryenStringEqCompare()` if the instruction is `string.compare`.
- version v111
- Add extra `memory64` argument for `BinaryenSetMemory` and new
`BinaryenMemoryIs64` C-API method to determine 64-bit memory. (#4963)
- `TypeBuilderSetSubType` now takes a supertype as the second argument.
- `call_ref` now takes a mandatory signature type immediate.
- If `THROW_ON_FATAL` is defined at compile-time, then fatal errors will throw a
`std::runtime_error` instead of terminating the process. This may be used by
embedders of Binaryen to recover from errors.
- Implemented bottom heap types: `none`, `nofunc`, and `noextern`. RefNull
expressions and null `Literal`s must now have type `nullref`, `nullfuncref`,
or `nullexternref`.
- The C-API's `BinaryenTypeI31ref` and `BinaryenTypeDataref` now return nullable
types.
- The `sign-extension` and `mutable-globals` features are now both enabled by
default in all tools. This is in order to match llvm's defaults (See
https://reviews.llvm.org/D125728).
- Add a pass to lower sign-extension operations to MVP.
- version v110
- Add support for non-nullable locals in wasm GC. (#4959)
- Add support for multiple memories. (#4811)
- Add support for the wasm Strings proposal. (see PRs with [Strings] in name)
- Add a new flag to Directize, `--pass-arg=directize-initial-contents-immutable`
which indicates the initial table contents are immutable. That is the case for
LLVM, for example, and it allows us to optimize more indirect calls to direct
ones. (#4942)
- Change constant values of some reference types in the C and JS APIs. This is
only observable if you hardcode specific values instead of calling the
relevant methods (like `BinaryenTypeDataref()`). (#4755)
- `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.
-------------------------------------------------------------------
Wed Mar 17 00:46:09 UTC 2021 - Avindra Goolcharan <avindra@opensuse.org>
- update to v100
* `wasm-dis` now supports options to enable or disable Wasm features.
* Reference types support has been improved by allowing multiple
tables in a module.
* `call_indirect` and `return_call_indirect` now take an additional
table name parameter. This is necessary for reference types support.
* New getter/setter methods have been introduced for `call_indirect`
table name:
- `BinaryenCallIndirectGetTable`
- `BinaryenCallIndirectSetTable`
- JS API `CallIndirect.table`
* New APIs have been added to add and manipulate multiple tables
in a module:
- `BinaryenAddTable`
- `BinaryenRemoveTable`
- `BinaryenGetNumTables`
- `BinaryenGetTable`
- `BinaryenGetTableByIndex`
- `BinaryenTableGetName`
- `BinaryenTableGetInitial`
- `BinaryenTableHasMax`
- `BinaryenTableGetMax`
- `BinaryenTableImportGetModule`
- `BinaryenTableImportGetBase`
- `module.addTable`
- `module.removeTable`
- `module.getTable`
- `module.getTableByIndex`
- `module.getNumTables`
- `binaryen.getTableInfo`
-------------------------------------------------------------------
Wed Feb 3 23:43:44 UTC 2021 - Avindra Goolcharan <avindra@opensuse.org>
- Declare missing wasm-split binary
- simplify and neutralize the description
-------------------------------------------------------------------
Mon Jan 18 04:30:11 UTC 2021 - Garret Wassermann <gwasser@gmail.com>
- update to v99
* [GC] Fix parsing/printing of ref types using i31 (#3469),
This lets us parse (ref null i31) and (ref i31) and not just i31ref.
* It also fixes the parsing of i31ref, making it nullable for now, which we
need to do until we support non-nullability.
* Fix some internal handling of i31 where we had just i31ref (which meant we
just handled the non-nullable type).
* After fixing a bug in printing (where we didn't print out (ref null i31)
properly), I found some a simplification, to remove TypeName.
-------------------------------------------------------------------
Tue Dec 1 06:17:51 UTC 2020 - Avindra Goolcharan <avindra@opensuse.org>
- update to v98
* Add --fast-math mode.
* Initial implementation of "Memory64" proposal
* Lots of changes in support of GC proposal
- ran spec-cleaner
- create .changes for first time
- fix build
-------------------------------------------------------------------
Wed Oct 7 05:22:51 UTC 2020 - Garret Wassermann <garret@wassiverse.com>
- updated to v97
* Remove asm2wasm, which supported Emscripten's fastcomp backend,
after fastcomp was removed.
* The new feature flag --enable-anyref enables just the anyref
type incl. basic subtyping of externref, funcref and exnref
(if enabled).
* Enabling the exception handling or anyref features without also
enabling reference types is a validation error now.
* The Host expression and its respective APIs have been refactored
into separate MemorySize and MemoryGrow expressions to align with
other memory instructions.
-------------------------------------------------------------------
Fri Dec 14 11:40:26 UTC 2018 - Garret Wassermann <garret@wassiverse.com>
- Initial package (v1.38.28)