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 #8664
- Remove guesswork from getStackPointerGlobal. NFC by @sbc100 in #8679
- Add
print_headingtestsuite helper. NFC by @sbc100 in #8650 - [NFC] Inline more core HeapType methods by @kripken in #8681
- [NFC] cache repeated tree walks to avoid O(N^2) in optimizeTerminatingTails in CodeFolding by @Changqing-JING in #8602
- Fuzzer: Fix subtyping of bottom types when fuzzing against JS by @kripken in #8683
- Fix crash in MinimizeRecGroups by @tlively in #8685
- [wasm-split] Move shareImportableItems (NFC) by @aheejin in #8686
- Testing: Add verbose logging feature, and stop excessive spec logging by @kripken in #8684
- Fuzzer: Do not emit calls to table.get when trivialNesting is set by @kripken in #8700
- [wasm-merge] Handle merging of start functions with control flow by @kripken in #8697
- [wasm-reduce] Remove functions with delta debugging by @tlively in #8690
- execution-results: Handle a trap during start by @kripken in #8699
- JSON: Implement printing for all types by @kripken in #8701
- [wasm-split] Split module elements early by @aheejin in #8688
- PrintBoundary pass, emitting a JSON summary of the API boundary of the module by @kripken in #8703
- Supply fuzz imports to second modules as well by @tlively in #8705
- [wasm-split] Use Name() for nonexistent global base (NFC) by @aheejin in #8704
- [wasm-split] Sync secondary tables' initial/max by @aheejin in #8714
- [wasm-split] Fix table naming conflicts by @aheejin in #8708
- Fix validation error in wasm-reduce by @tlively in #8715
- Fix implicitly-deleted default constructor error on older Xcode versions by @sbc100 in #8719
- Use C++20 string_view starts_with/ends_with methods. NFC by @sbc100 in #8722
- Use C++20 requires clauses in TypeNameGeneratorBase by @sbc100 in #8552
- [CI] Build on macos-14 rather than macos-latest by @sbc100 in #8721
- Fix macos 13 compilation errors with stringstream.view() by @kripken in #8725
- [wasm-split] Tidy up indirectCallsToSecondaryFunctions (NFC) by @aheejin in #8726
- [wasm-split] Share active table with caller modules by @aheejin in #8728
- Skip folding branches of unreachable If by @tlively in #8724
- Run non-nullable local fixups when reducing functions by @tlively in #8730
- wasm-ctor-eval: Remove the start function when we succeed by @kripken in #8702
- Fuzzer: Export tags by @kripken in #8729
- [wasm-split] Do not split out the start function by @kripken in #8711
- Fix OOB errors in the lexer by @tlively in #8734
- [NFC] Return optional in Lexer::peek by @tlively in #8737
- MarkJSCalled pass by @kripken in #8733
- PrintBoundary: Handle types for all externable things by @kripken in #8739
- Fix test_cluster_fuzz.py V8 flags mismatch by @tlively in #8746
- Require linux on the wasm-reduce lit test by @tlively in #8749
- Fix i64x2 shift on big-endian by @sertonix in #8748
- Fix ContinuationStore desynchronization by @tlively in #8741
- [Fuzzer] Make Split's exports a list of strings by @aheejin in #8731
- [wasm-split] Don't split trapping globals by @aheejin in #8742
- [Stack Switching] Fix continuation execution from a start function by @kripken in #8751
- RemoveUnusedModuleElements: Referenced elems refer to their offsets by @kripken in #8750
- Fuzzer: Mark js-called functions before optimizing by @kripken in #8752
- LICM: Migrate from invalidates to orderedBefore by @tlively in #8743
- LocalCSE: Migrate from invalidates to orderedBefore by @tlively in #8744
- CodePushing: Migrate from invalidates to orderedBefore by @tlively in #8745
- Effect analysis for indirect call expressions by @stevenfontanella in #8625
- Set branchesOut effect for call.without.effects by @stevenfontanella in #8695
- Fix "pessemistic" => "pessimistic" by @tlively in #8756
- [NFC] Document reference construction in closed world by @kripken in #8761
- Set
BUILD_STATIC_LIBunder emscripten by @sbc100 in #8762 - Fix block-nested Pop in GUFA by @tlively in #8747
- Fix typo in mark-js-called.wast by @tlively in #8755
- HeapStoreOptimization: Migrate from invalidates to orderedBefore by @tlively in #8758
- [wasm-split] Generate fillers in MVP + --no-placenolders by @aheejin in #8759
- Use indirect call effects in LinearExecutionWalker by @stevenfontanella in #8738
- [wasm-split] Scan trapping globals if custom descriptors is enabled (NFC) by @aheejin in #8768
- NFC: Use
const EffectAnalyzer&in ostream operator by @stevenfontanella in #8769 - Support resuming into try-catch in interpreter by @tlively in #8757
- [NFC] Simplify externref literal representation by @tlively in #8765
- MergeBlocks: Migrate from invalidates to orderedBefore by @tlively in #8767
- Fix refinalization for --gufa-cast-all by @tlively in #8773
- Use cmake standard
BUILD_SHARED_LIBSsetting by @sbc100 in #8764 - [NFC] Refactor closedWorld to WorldMode enum by @tlively in #8740
- Update merge-blocks-atomics.wast expectations by @tlively in #8777
- OptimizeCasts: Migrate from invalidates to orderedBefore by @tlively in #8774
- [wasm-ctor-eval] Avoid local and global state getting out of sync by @kripken in #8776
- NFC: Simplify test with improved indirect call effects by @stevenfontanella in #8780
- [wasm-ctor-eval] Do not error on non-constant code in the start function by @kripken in #8778
- Fuzz wide arithmetic instructions by @stevenfontanella in #8661
- Enable fuzzing for wide arithmetic by @stevenfontanella in #8781
- Add isActive/isPassive methods to segments (NFC) by @aheejin in #8782
- [wasm-split] Fix error printing when func does not exist by @aheejin in #8784
- Skip d8 lit tests on windows by @kripken in #8788
- [StackSwitching] Error properly on an unhandled resume during start by @kripken in #8787
- NFC: Require override keyword by @stevenfontanella in #8789
- Make areConsecutiveInputsEqual more precise by @tlively in #8783
- [wasm-split] Move computeTransitiveGlobals into getUsedNames (NFC) by @aheejin in #8790
- update_lit_tests.py: Do not leak results between modules by @kripken in #8791
- Version 130 by @kripken in #8793
New Contributors
- @daichifukui made their first contribution in #8591
Full Changelog: version_129...version_130