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

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


Branch: CURRENT, Version: 116, Package name: binaryen-116, 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: 4679.944 KB

Version history: (Expand)


CVS history: (Expand)


   2023-11-23 12:11:25 by Thomas Klausner | Files touched by this commit (2)
Log message:
binaryen: fix PLIST for new test option
   2023-11-16 10:57:43 by Nia Alarie | Files touched by this commit (2)
Log message:
binaryen: Optionize googletest dependency
   2023-11-06 23:04:25 by Frederic Cambus | Files touched by this commit (3) | Package updated
Log message:
binaryen: update to 116.

v116
----

 - "I31New" changed to "RefI31" everywhere it appears in the \ 
C API and similarly
   "i31.new" has been replaced with "ref.i31" in the JS API \ 
and in printed
   output (#5930, #3931).
 - The standard WasmGC opcodes are now on by default (#5873).

v115
----

- The nonstandard, experimental gc-nn-locals feature has been removed now that
  standard non-nullable locals are supported. (#5080)
- Print all debug annotations when `BINARYEN_PRINT_FULL`. (#5904)
- Use the standard text format for WasmGC now that things are stable there.
  (#5894, #5889, #5852, #5801)
- Rename multimemory flag to `--multimemory` to match its naming in LLVM.
  (#5890)
- Allow opting into standard GC encodings at compile time. (#5868)
- Remove legacy WasmGC instructions. (#5861)
- GUFA: Infer using TrapsNeverHappen. (#5850)
- Add a pass to reorder functions by name, which can be useful for debugging
  (e.g. comparisons after optimizations), `--reorder-functions-by-name`. (#5811)
- C API: Add `BinaryenAddFunctionWithHeapType` which is like
  `BinaryenAddFunction` but takes a heap type. The old function is kept for
  backwards compatibility and as a convenience. (#5829)
- Work on new optimization framework using lattices. (#5784, #5794, #5800,
  #5817, #5831, #5849)
- Heap types are now final by default and openness must be opted into both in
  the text and binary formats as well as in the TypeBuilder API. (#5918)
   2023-08-14 07:25:36 by Thomas Klausner | Files touched by this commit (1247)
Log message:
*: recursive bump for Python 3.11 as new default
   2023-07-02 23:22:07 by Frederic Cambus | Files touched by this commit (2) | Package updated
Log message:
binaryen: update to 114.

v114
----

- 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.
- Add pass to remove Exception Handling instructions.
   2023-05-22 15:58:06 by Frederic Cambus | Files touched by this commit (3) | Package updated
Log message:
binaryen: update to 113.

v113
----

- 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.
- Add a "mayNotReturn" effect.
- Disable the memory64 feature in Memory64Lowering.cpp.
- Disable sign extension in SignExtLowering.cpp.
   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`.