Releases: WebAssembly/binaryen
Releases · WebAssembly/binaryen
version_130
What's Changed
- Canonicalize NaNs from nearbyint by @stevenfontanella in #8561
- feat: Update jsoo build process for libbinaryen by @spotandjake in #8565
- Handle ref before expected in Heap2Local for StructCmpxchg by @tlively in #8566
- GUFA: Ignore unreachable packed reads by @kripken in #8564
- Group locals by written type in binary writer by @tlively in #8568
- More ArrayCmpxchg expected opts in Heap2Local by @tlively in #8567
- Fix typos by @tlively in #8570
- Make everything 4% faster by skipping empty tasks [NFC] by @kripken in #8571
- [NFC] Allow SubTypes::iterSubTypes to stop early by @kripken in #8573
- Temporarily disable Split in fuzz_opt by @tlively in #8575
- [NFC] Optimize ModuleUtils type-scanning code by @kripken in #8572
- [FP16] Implement f32x4.promote_low_f16x8. by @brendandahl in #8578
- Fix optimized grouping of locals by @tlively in #8577
- Make getters const in Module class by @stevenfontanella in #8579
- Make everything 1.5% faster by calling leaf visitors immediately [NFC] by @kripken in #8581
- feat(js & c-api): Rename Memory segment functions data segment. by @spotandjake in #8576
- [ci] Use emsdk-setup github action by @sbc100 in #8584
- Move a v8 fuzzer flag to a more prominent place by @kripken in #8582
- [Stack Switching] wasm-ctor-eval: stop on serializing continuations to globals by @kripken in #8585
- [NFC] Move fuzzer VMs out of CompareVMs by @kripken in #8587
- [NFC] Fuzzer: Add a run_js() method by @kripken in #8588
- Fuzzer: Make --fuzz-preserve-imports-and-exports also preserve the start function by @kripken in #8589
- Fix spelling typos by @daichifukui in #8591
- perf: use unordered_set for Name sets for better compile speed by @Changqing-JING in #8586
- Increase Alpine stack size to 8MB by @kripken in #8595
- Refactor graph traversal in GlobalEffects by @stevenfontanella in #8593
- New fuzzer: PreserveImportsExportsJS by @kripken in #8592
- [NFC] Simplify lexer and move to header by @tlively in #8597
- perf: use unordered containers for Name sets in SimplifyLocals and DuplicateFunctionElimination by @Changqing-JING in #8600
- [NFC] Simplify a bit of logic in RemoveUnusedBrs by @kripken in #8603
- [NFC] Skip parsing instructions in first parser pass by @tlively in #8601
- Heap2Local: Handle unreachable ref.test replacement by @kripken in #8605
- Use fewer scratch locals in IRBuilder by @tlively in #8608
- Handle strings when skipping function bodies by @tlively in #8614
- Validate descriptor clause forward references by @tlively in #8611
- PreserveImportsExportsJS fuzzer: Handle JS differences in stack traces by @kripken in #8610
- NFC: Propagate global effects via strongly-connected components by @stevenfontanella in #8607
- BranchHinting fuzzing: Do not remove effects when deinstrumenting by @kripken in #8613
- [NFC] Simplify printing of unreachable replacements by @tlively in #8616
- Fix and improve unreachable parsing by @tlively in #8617
- [NFC] Remove redundant code from bad merge by @tlively in #8627
- Simplify branch hint instrumentation by @tlively in #8624
- [StackIR] Optimize the simple case of a multivalue tee and extracts by @kripken in #8623
- Look at fallthrough when deleting branch hints by @tlively in #8630
- [wasm-merge] Preserve function names when writing a profile by @tlively in #8631
- Avoid assertion in BrOn parsing by @kripken in #8635
- Fix comment about --no-auto-initial-contents by @aheejin in #8636
- PreserveImportsExportsJS fuzzer: Handle NaNs properly by @kripken in #8620
- Account for global effects in LinearExecutionWalker by @stevenfontanella in #8637
- Fix binary writing for test_emit_all_features by @stevenfontanella in #8642
- Add feature flag for wide arithmetic by @stevenfontanella in #8639
- Fuzzer: Only run one handler at a time by @kripken in #8643
- [FP16] Implement f16x8.demote_{f64x2, f32x4}_zero. by @brendandahl in #8580
- Compute effects for indirect calls in GlobalEffects by @stevenfontanella in #8609
- Canonicalize NaNs when casting between float and double by @stevenfontanella in #8645
- add missing include by @walkingeyerobot in #8646
- [wasm-reduce] Empty functions with delta debugging by @tlively in #8640
- Rename
lldtests tofinalizetests. NFC by @sbc100 in #8395 - [legalize-js-interface] Don't delete exports by @sbc100 in #8649
- PreserveImportsExportsJS fuzzer: Handle crashes and function ids by @kripken in #8648
- Enable more ruff checks and remove flake8. NFC by @sbc100 in #8654
- Fuzzer: Do not return 0 from upTo when input is finished by @kripken in #8653
- Support i64.add/sub128 instructions from Wide Arithmetic proposal by @stevenfontanella in #8638
- Move getI64Pair to wasm::Types by @stevenfontanella in #8658
- [EH] Vacuum: Fix up pops after adding blocks in a Try by @kripken in #8659
- Disable wide arithmetic in fuzzers by @stevenfontanella in #8663
- [EH] Handle pops in Directize by @kripken in #8666
- wasm-reduce: Fix integer overflows by @kripken in #8665
- Support i64.mul_wide_s and i64.mul_wide_u from Wide Arithmetic proposal by @stevenfontanella in #8652
- [NFC] Refactor delta debugger utility to a struct by @tlively in #8651
- Avoid use of C++20 header in GlobalEffects.cpp by @juj in #8668
- Directize: Handle table.grow by @kripken in #8671
- RemoveExports pass by @kripken in #8670
- Add Wide Arithmetic C + JS APIs by @stevenfontanella in #8660
- Fix clang 13 build by @juj in #8669
- Rename relaxed SIMD instructions with prefix by @brendandahl in #8673
- [NFC] Use pascal-style string storage for IString/Name by @kripken in #8662
- RemoveExports: Support comma separation and a response file by @kripken in #8674
- SignatureRefining: Do not refine results of functions used in continuations by @kripken in #8675
- Support fuzzing more Relaxed SIMD instructions by @brendandahl in #8676
- perf: avoid O(N^2) exiting-branch checks in CodeFolding by @Changqing-JING in #8599
- Add fuzzing support for more FP16 instructions by @brendandahl in #8678
- Flush stdout/stderr between wasm-opt tests by @sbc100 in #8680
- New fuzzer mode: Fuzz against JavaScript by @kripken in #8655
- Enable fuzzing for relaxed atomics by @stevenfontanella in #866...
version_129
What's Changed
- [Stack Switching] Unsubtyping: Handle continuation subtyping by @kripken in #8463
- [StackSwitching] Implementing partial cont.bind-ing by @kripken in #8464
- Fix Unsubtyping on array and struct cmpxchg by @tlively in #8469
- Fix propagation bug in Unsubtyping by @tlively in #8468
- Fix effects for AtomicFence by @tlively in #8465
- Remove coverage builder from CI by @tlively in #8471
- Fix NaN handling for some instructions by @stevenfontanella in #8472
- Stack switching validation by @tlively in #8467
- Update RMW fields indices in GTO by @tlively in #8474
- Fuzzer: Log exported globals by @kripken in #8466
- [Stack Switching] Trap on cont.bind of a null continuation by @kripken in #8477
- Fix feature set checking for GC RMWs by @tlively in #8480
- [multibyte] Add multibyte array store instructions. by @brendandahl in #8059
- Skip a testcase with non-utf8 names in it that trips up the fuzzer by @kripken in #8483
- Fix assertion in br_on_cast finalization by @tlively in #8476
- Add type validations for function imports by @stevenfontanella in #8478
- Fix OptimizeInstructions on unreachable GC RMWs by @tlively in #8485
- Add RMW tests to fuzzer ignore list by @tlively in #8481
- [Fuzzing] Do not clusterfuzz multibyte by @kripken in #8488
- GUFA: Don't misoptimize struct/array atomics by @kripken in #8484
- [NFC] Remove TypeUpdating::canHandleAsLocal by @tlively in #8490
- [Stack Switching] Generate continuation types in the fuzzer, and cont.bind to test them by @kripken in #8486
- [NFC] Rename "calling" in the fuzzer to "export" by @kripken in #8479
- [wasm-split] Move exclusive items to secondary modules by @aheejin in #8441
- Print and compare prototypes in fuzzer interpreter by @tlively in #8457
- Add .github/CODEOWNERS by @tlively in #8492
- Fix OptimizeInstructions for general Cmpxchg expected types by @tlively in #8495
- Trap on atomic.wait on an unshared memory by @kripken in #8497
- [wasm-split] Split globals' transitive global dependencies by @aheejin in #8442
- [Shared Everything] struct.wait on unshared should trap by @kripken in #8498
- Handle StructCmpxchg::expected in Heap2Local by @tlively in #8491
- Fix TypeMapper::getNewHeapType() on types being rebuilt by @kripken in #8499
- Add and use readLE/writeLE helpers by @sertonix in #8470
- [wasm-split] Remove unnecessary trampolines for ref.func initializers by @aheejin in #8443
- Fix scratch local when optimizing cmpxchg in Heap2Local by @tlively in #8496
- [wasm-split] Remove dead globals by @aheejin in #8505
- Remove use of deprecated emscripten setting:
EXPORT_EXCEPTION_HANDLING_HELPERSby @sbc100 in #8507 - [Multibyte] Handle ArrayStore in Precompute by @kripken in #8511
- Do not copy function annotations when copying expressions by @tlively in #8512
- [Stack Switching] Improve cont.bind fuzzing by @kripken in #8500
- More unsubtyping for cont.bind by @tlively in #8506
- [NFC] Skip new intrinsic test in fuzzer by @kripken in #8516
- TypeRefiningGUFA: Avoid bottom continuation casts by @kripken in #8513
- [NFC] CtorEval fuzzing: skip export names that may need escaping by @kripken in #8502
- Do not precompute RMW ops on GC types by @tlively in #8517
- [emscripten] Fix handleFatalError to match recent emscripten changes by @sbc100 in #8521
- Validate global imports by @stevenfontanella in #8487
- [multibyte] Add multibyte array load instructions. by @brendandahl in #8504
- Make table subtyping invariant by @stevenfontanella in #8489
- Improve distinct rec groups error message by @tlively in #8522
- Fix up RMW operand types in TypeRefining by @tlively in #8525
- [StackSwitching] Prune continuations in LegalizeAndPruneJSInterface by @kripken in #8523
- third_party/setup.py: fix wabt platform detection on Linux by @BilelGho in #8526
- Add support for non-nullable tables and init expressions by @pufferfish101007 in #8405
- Fix CHANGELOG.md after #8405 by @pufferfish101007 in #8527
- [jspi] Remove module splitting changes. by @brendandahl in #8529
- [Multibyte] Fix GUFA on multibyte reads of different types by @kripken in #8531
- Enable conversions.wast spec test by @stevenfontanella in #8528
- Remove redundant spec tests by @stevenfontanella in #8533
- Handle sharedness in Heap2Local's Array2Struct by @tlively in #8515
- [NFC] Fix logging functions in tests by @kripken in #8538
- Add an option for wasm-merge to write a split manifest by @tlively in #8534
- Remove unused wasm::alignAddr by @sertonix in #8543
- Add readBinaryWithFeatures to JS API by @ospencer in #8541
- Generate Struct RMW operations in the fuzzer by @tlively in #8535
- GUFA: Fix indirect return-call subtyping by @kripken in #8536
- [NFC] Handle atomic arrays in Heap2Local by @tlively in #8549
- Add contains() to custom containers and use where possible. NFC by @sbc100 in #8547
- feat(C & JS API)!: Add
BinaryenHasMemorySegmentby @spotandjake in #8286 - Update from C++17 to C++20 by @sbc100 in #8218
- Handle ArrayCmpxchg in Heap2Local by @tlively in #8551
- Handle module name collisions in MinifyImportsAndExports using a new output format by @kripken in #8550
- Validate RMW field types by @tlively in #8554
- Version 129 by @kripken in #8555
- Generate atomic array operations in the fuzzer by @tlively in #8545
- [Stack Switching] Fix ctor-eval handling of unhandled resumes by @kripken in #8556
- Stub out llvm::sys::fs::detail::directory_iterator_destruct for GCC 16 by @stbergmann in #8559
- Skip f32.wast on linux due to Alpine issue + add testing by @kripken in #8558
New Contributors
- @BilelGho made their first contribution in #8526
- @pufferfish101007 made their first contribution in #8405
- @stbergmann made their first contribution in #8559
Full Changelog: version_128...version_129
version_128
Version 128 (#8462)
version_127
Version 127 (#8444)
version_126
Version 126 (#8326)
version_125
Version 125 (#8063)
version_124
Version 124 (#7874) We support a lot of new features in this one...
version_123
Release version 123 (#7394) Given the big speedup in our official release binaries for Linux, this seems useful to get to users quickly.
version_122
[Interpreter] i32.mul (#7268) Building on top of #7227, i32.mul is implemented and tested.
version_121
Version 121 (#7153)