./devel/binaryen, Compiler and toolchain infrastructure library for WebAssembly

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 112, Package name: binaryen-112, Maintainer: pkgsrc-users

Binaryen 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)


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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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) | Package updated
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)