Path to this page:
./
devel/binaryen,
Compiler and toolchain infrastructure library for WebAssembly
Branch: CURRENT,
Version: 112,
Package name: binaryen-112,
Maintainer: pkgsrc-usersBinaryen is a compiler and toolchain infrastructure library for WebAssembly,
written in C++. It aims to make compiling to WebAssembly easy, fast, and
effective.
* Easy: Binaryen has a simple C API in a single header, and can also be used
from JavaScript. It accepts input in WebAssembly-like form but also accepts
a general control flow graph for compilers that prefer that.
* Fast: Binaryen's internal IR uses compact data structures and is designed
for completely parallel codegen and optimization, using all available CPU
cores. Binaryen's IR also compiles down to WebAssembly extremely easily and
quickly because it is essentially a subset of WebAssembly.
* Effective: Binaryen's optimizer has many passes (see an overview later
down) that can improve code size and speed. These optimizations aim to
make Binaryen powerful enough to be used as a compiler backend by itself.
One specific area of focus is on WebAssembly-specific optimizations (that
general-purpose compilers might not do), which you can think of as wasm
minification, similar to minification for JavaScript, CSS, etc., all of
which are language-specific.
Master sites:
Filesize: 4320.737 KB
Version history: (Expand)
- (2023-02-13) Updated to version: binaryen-112
- (2022-11-19) Updated to version: binaryen-111
- (2022-09-04) Updated to version: binaryen-110
- (2022-06-15) Updated to version: binaryen-109
- (2022-05-12) Updated to version: binaryen-108
- (2022-05-04) Updated to version: binaryen-107
CVS history: (Expand)
2023-03-16 09:36:24 by Adam Ciarcinski | Files touched by this commit (1) |
Log message:
binaryen: switch to cmake/build.mk
|
2023-02-12 23:32:58 by Frederic Cambus | Files touched by this commit (2) |  |
Log message:
binaryen: update to 112.
v112
----
- 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`.
|
2022-11-19 18:00:21 by Frederic Cambus | Files touched by this commit (2) |  |
Log message:
binaryen: update to 111.
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.
|
2022-11-13 19:17:46 by Frederic Cambus | Files touched by this commit (2) |
Log message:
*: drop maintainership for WebAssembly related packages.
|
2022-09-04 16:36:07 by Frederic Cambus | Files touched by this commit (2) |  |
Log message:
binaryen: update to 110.
v110
----
- Add support for non-nullable locals in wasm GC.
- Add support for multiple memories.
- 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.
- 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()`).
- `BinaryenModulePrintStackIR`, `BinaryenModuleWriteStackIR` and
`BinaryenModuleAllocateAndWriteStackIR` now have an extra boolean
argument `optimize`.
- 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.
- `i31ref` and `dataref` are now nullable to match the latest GC spec.
- Add support for `extern.externalize` and `extern.internalize`.
|
2022-06-15 12:22:46 by Frederic Cambus | Files touched by this commit (2) |  |
Log message:
binaryen: update to 109.
v109
----
- Add Global Struct Inference pass (#4659) (#4714)
- Restore and fix SpillPointers pass (#4570)
- Update relaxed SIMD instructions to latest spec
|
2022-05-15 19:22:12 by Frederic Cambus | Files touched by this commit (1) |  |
Log message:
binaryen: update USE_LANGUAGES, it now uses c++17.
|
2022-05-12 09:57:22 by Frederic Cambus | Files touched by this commit (2) |  |
Log message:
binaryen: update to 108.
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)
|