)]}'
{
  "log": [
    {
      "commit": "ec6f4970e12c0e1f31e52b0686e8d3d17c33081f",
      "tree": "6011f52d1e5d12fa0fe6acd88166746f70354854",
      "parents": [
        "f8e541312b30acf0d36fbf23b36d71a017a371b9"
      ],
      "author": {
        "name": "shravanrn",
        "email": "shravanrn@gmail.com",
        "time": "Sat Aug 01 06:04:44 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Sat Aug 01 18:31:59 2026"
      },
      "message": "wasm2c: Extend segue to simd and unshared atomics\n"
    },
    {
      "commit": "f8e541312b30acf0d36fbf23b36d71a017a371b9",
      "tree": "e3f2f568a545afe8e4659761726dd3c40ae96187",
      "parents": [
        "0ef5bd9a261407d4469a849e7ff41f34c889c45e"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jul 29 19:07:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 19:07:49 2026"
      },
      "message": "Fix out-of-bounds read when tracing global.set and table ops (#2802)\n\nASan, `spectest-interp --trace` on a module that imports a global and\nalso defines one:\n\n\u003d\u003d73766\u003d\u003dERROR: AddressSanitizer: heap-buffer-overflow on address\n0x60e0000002a4\n    READ of size 8 at 0x60e0000002a4 thread T0\n#1 Thread::TraceSource::GetGlobalType(unsigned int) interp.cc:3022\n        #2 Thread::TraceSource::Pick(unsigned int, Instr) interp.cc:2954\n        #3 Istream::Trace(...) istream.cc:887\n0x60e0000002a4 is located 12 bytes after 152-byte region\n[0x60e000000200,0x60e000000298)\n\nNoticed it while reading the trace helpers. `ModuleDesc::globals` and\n`ModuleDesc::tables` hold only the defined entries, imports live in\n`ModuleDesc::imports`. But the `global.set`/`table.*` immediate is the\nmodule-level index, which counts imports first. One imported global plus\none defined global is already enough to run off the end.\n`GetTableElementType` has the same shape at interp.cc:3026, reached from\n`table.grow` and `table.fill`.\n\nThe garbage `ValueType` that comes back then decides how the operand\n`Value` is read, so a debug build aborts on the `CheckType` assert in\ninterp.h and a release build prints an arbitrary reference index.\n\nBoth immediates now resolve against the instance, which is what the\n`GlobalSet`, `DoTableGrow` and `DoTableFill` handlers already do.\nRegression test added under test/interp."
    },
    {
      "commit": "0ef5bd9a261407d4469a849e7ff41f34c889c45e",
      "tree": "0ba13df3766ed8b2b52a8cee125f472e28534ffd",
      "parents": [
        "11602da5423eb9c7517311ed01917ea231594170"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Mon Jul 20 17:07:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 17:07:50 2026"
      },
      "message": "[interp] Pop memory.copy/table.copy length using the minimum index type (#2800)\n\nA valid module doing a mixed-width `table.copy` aborts wasm-interp in a\ndebug build:\n\n$ wasm-interp --enable-memory64 --enable-multi-memory --run-all-exports\nt.wasm\nAssertion failed: (t \u003d\u003d type || type \u003d\u003d ValueType::Any), function\nCheckType, file interp.h, line 596.\n\nThe module copies from an i64-indexed table into an i32-indexed one\n(`table.copy $t32 $t64`). Found it running the memory64 tests under\n`--run-all-exports`.\n\n`DoTableCopy`/`DoMemoryCopy` pop the length operand with the source\u0027s\nindex type (`PopPtr(table_src)`/`PopPtr(mem_src)`). But the length\u0027s\ntype is the minimum of the two index types, not the source\u0027s, so for a\n64-bit source into a 32-bit destination the length is i32 while the\ninterpreter reads it as i64. `TypeChecker::OnMemoryCopy`/`OnTableCopy`\nalready spell out the min rule; the runtime side just didn\u0027t follow it.\n\nDebug builds trip the type assertion. In release the read only gives the\nright answer because the `Value` union happens to be zero-initialised.\n\nPop the length as u64 only when both memories/tables are 64-bit.\nSame-width copies are byte-identical. Regression test added under\ntest/interp."
    },
    {
      "commit": "11602da5423eb9c7517311ed01917ea231594170",
      "tree": "644ef3a111b31113d8f847c0c61fb112dc434bed",
      "parents": [
        "f794a59d915d608bbeab5a85823a7482bf12aac8"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Fri Jul 17 18:03:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 18:03:59 2026"
      },
      "message": "Fix out-of-bounds type stack read after rethrow in c-writer (#2798)\n\nwasm2c on a valid exceptions module, ASan/debug build:\n\nAssertion failed: (index \u003c type_stack_.size()), function Write, file\nc-writer.cc, line 1246.\n\nWorked backwards from the StackVar read. The rethrow case in\n`Write(const ExprList\u0026)` ends in `break`, so the loop carries on and\nemits the instructions after it. The validator has already marked those\nunreachable (`OnRethrow` makes the stack polymorphic), so a valid module\ncan put operations there that pop operands which are not really on the\nstack. StackVar then underflows `type_stack_` and reads off the end.\nRelease builds drop the assert and take the out-of-bounds read;\n`DropTypes` does an out-of-bounds erase on the same tail.\n\nbr, br_table, return, unreachable, throw, throw_ref and the return_call\nfamily all return here to stop walking the list. rethrow was the one\nthat fell through, so it now does the same.\n\nRepro: `(func try nop catch_all rethrow 0 i32.store end)` assembled with\n`--enable-exceptions`, then run through wasm2c."
    },
    {
      "commit": "f794a59d915d608bbeab5a85823a7482bf12aac8",
      "tree": "2242ee58f39649f12156d0513fe08f782378a183",
      "parents": [
        "2a8dc8be6575f75e51e41d7a3835ee0a4541d1f5"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Jul 14 16:26:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:26:02 2026"
      },
      "message": "Avoid out-of-bounds imports read in wasm_instance_new (#2797)\n\nASan, instantiating a 2-import module through the wasm C API with a\n1-element imports vector:\n\n    \u003d\u003dERROR: AddressSanitizer: heap-buffer-overflow\n    READ of size 8 ... in wasm_instance_new interp-wasm-c-api.cc:746\n    0 bytes after 8-byte region [...] (the caller\u0027s imports array)\n\nSpotted while running modules through libwasm with a fixed imports list.\n`wasm_instance_new` copies the imports into a `RefVec` by looping `i`\nover the module\u0027s declared import count and reading `imports-\u003edata[i]`.\nNothing checks the caller actually supplied that many, so a module whose\nimport section declares more imports than the embedder passes reads past\nthe end of the imports array and then derefs the wild pointer through\n`-\u003eI-\u003eself()`.\n\n`Instance::Instantiate` already rejects a short list with a \"not enough\nimports!\" trap, but it runs after this loop, so the over-read happens\nfirst. Bounding the loop by `imports-\u003esize` lets the short case fall\nthrough to that existing trap instead. Valid and over-supplied lists\nbuild the same `RefVec` as before."
    },
    {
      "commit": "2a8dc8be6575f75e51e41d7a3835ee0a4541d1f5",
      "tree": "2d5dff68edc333c48169221fbacd9635db120952",
      "parents": [
        "33328a02b9d4ef3d5c008009795a7b621f03cad0"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Mon Jul 13 16:06:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 16:06:58 2026"
      },
      "message": "Fix out-of-bounds write in MakeTypeBindingReverseMapping (#2796)\n\nASan, release build, `wasm2wat` on a crafted module:\n\n    \u003d\u003d…\u003d\u003dERROR: AddressSanitizer: heap-buffer-overflow\n      #0 wabt::MakeTypeBindingReverseMapping(...) ir.cc\n      #1 wabt::ApplyNames(wabt::Module*)\n      #2 ProgramMain\n    ... located 1535 bytes after 24-byte region\n\nFound while going over the name-section handlers. The local subsection\nstores a (local index, name) pair per entry. `OnLocalNameLocalCount`\nchecks the entry count against the function\u0027s param+local count, but the\nper-entry local index in `OnLocalName` is never range-checked before it\nbecomes a `Binding`. `MakeTypeBindingReverseMapping` sizes the reverse\nmap to that local count and writes each name at `binding.index`, guarded\nonly by an `assert`. A name whose index sits past the function\u0027s locals\nwrites off the end of the vector: a debug build trips the assert, a\nrelease build corrupts the heap. Reached from an untrusted `.wasm`\nthrough `wasm2wat` and `wasm2c` (both call `ApplyNames` and read debug\nnames by default), on an otherwise valid module.\n\nSkip entries that land outside the mapping. Valid modules only name real\nlocals, so their output does not change. The added test names local\nindex 5 of a one-param function; before the fix `wasm2wat` aborts, after\nit prints the module with the stray name dropped."
    },
    {
      "commit": "33328a02b9d4ef3d5c008009795a7b621f03cad0",
      "tree": "2591c8f32ebfd612ef0174bc526935168fea34c2",
      "parents": [
        "f93b9215d74627b4e8ae8bf94e804438c6fff2d9"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Sat Jul 11 16:41:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 11 16:41:03 2026"
      },
      "message": "Fix out-of-bounds read in BinaryReaderLogging::WriteIndent (#2795)\n\nFound with ASan while feeding fuzz-style modules to `wasm-objdump\n--debug`:\n\n    \u003d\u003dERROR: AddressSanitizer: global-buffer-overflow\n    READ of size 144 at 0x... thread T0\n#5 wabt::BinaryReaderLogging::WriteIndent() binary-reader-logging.cc:75\n        #6 wabt::BinaryReaderLogging::BeginGenericCustomSection(...)\n    0x... is located 0 bytes after global variable\n      \u0027WriteIndent()::s_indent\u0027 ... of size 143\n\nWriteIndent emits the indent from a fixed 142-space buffer in chunks.\nThe loop writes full blocks and shrinks `i`; the leftover write then\npassed `indent_`, the whole width, rather than `i`. Once the indent\ngrows past the buffer that leftover write runs off the end.\n`WatWriter::WriteIndent` uses the same loop but writes the leftover\ncount, so this was the odd one out.\n\nHow the indent gets that big: it rises by two on every section Begin. A\ncustom `name` section whose sub-section size runs past the section end\nfails after `BeginNamesSection`, and objdump reads with\n`stop_on_first_error` and `fail_on_custom_section_error` both off, so\nthe matching End callbacks never run and the indent leaks a little per\nbad section. Enough of them and it passes the buffer during the prepass\nlogging.\n\nRegression test added under test/binary-reader; it overruns without the\nchange and is clean with it."
    },
    {
      "commit": "f93b9215d74627b4e8ae8bf94e804438c6fff2d9",
      "tree": "6f5b051421ca90fbae6823f88bd79d722ae28dbb",
      "parents": [
        "fb047130174be8ffad5718182ac83c2f5dcb45be"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Thu Jul 09 17:24:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 09 17:24:21 2026"
      },
      "message": "Fix operand arity of v128.storeN_lane in GetExprArity (#2764)\n\nFound this fuzzing wasm-decompile under a debug build: a valid module\nwhose only instruction is v128.store8_lane aborts on the value-stack\nassert in decompiler-ast.h Construct.\n\n1. GetExprArity groups SimdLoadLane and SimdStoreLane together and\nreports both as {2, 1}.\n2. store_lane pops the address and the vector and pushes nothing, so its\nreal effect is {2, 0}; the spare result throws value_stack_depth out by\none.\n\nThe decompiler has since been removed, but GetExprArity still drives the\nfolded wat writer, where the phantom result is equally observable:\nwasm2wat --fold-exprs folds the store into the next value consumer and\nstrands the value beneath it. Split the case so SimdStoreLane returns\n{2, 0} and SimdLoadLane keeps {2, 1}. A reduced repro is added under\ntest/roundtrip."
    },
    {
      "commit": "fb047130174be8ffad5718182ac83c2f5dcb45be",
      "tree": "1f5851614af279cd30ac3d79f5baa4e22bf15d0e",
      "parents": [
        "814c8e326ef778a4d1b51610dbf69e25e3db3701"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jul 08 23:56:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 23:56:49 2026"
      },
      "message": "Check memory64 addr+offset overflow in wasm2c store/atomic/simd ops (#2790)\n\nComparing wasm2c output either side of 4bedf7c (\"check address + offset\naddition for memory64\"):\n\n    // load  (fixed in 4bedf7c)\n    i64_load(\u0026M0, (u64)checked_add_u64(var_j0, 16u));\n    // store (still unchecked)\n    i64_store(\u0026M0, (u64)(var_j0) + 16, var_j1);\n\nThat commit only converted `CWriter::Write(const LoadExpr\u0026)`. For an i64\nmemory the store still adds the static offset with a wrapping `+`, and\nso do the SIMD lane/splat/zero and atomic emitters.\n\nHow I hit it: memory64 module, `i64.store offset\u003d16` at address\n`0xFFFFFFFFFFFFFFF0`. The sum overflows u64 to 0, the generated\n`RANGE_CHECK` sees an in-range address, and the write lands at guest\naddress 0. Per the spec that access should trap; the load form already\ndoes after 4bedf7c.\n\nApplied the same `checked_add_u64` guard to `StoreExpr`,\n`SimdLoadLaneExpr`, `SimdStoreLaneExpr`, `LoadSplatExpr`,\n`LoadZeroExpr`, `AtomicLoadExpr`, `AtomicStoreExpr`, `AtomicRmwExpr` and\n`AtomicRmwCmpxchgExpr` for `is_64` memories. The 32-bit output is byte\nfor byte unchanged. The wasm2c spec tests (memory64, threads, simd)\nstill pass."
    },
    {
      "commit": "814c8e326ef778a4d1b51610dbf69e25e3db3701",
      "tree": "8ae603defcb7d6df8610da56035af0a29f956442",
      "parents": [
        "40417c0d9f3f79b07d94dde6fe551460b01f3fbb"
      ],
      "author": {
        "name": "lexi-nadia",
        "email": "lexinadia@google.com",
        "time": "Wed Jul 08 20:21:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 20:21:04 2026"
      },
      "message": "Fix WABT_PRINTF_TYPE_CODE to correctly handle INT_MIN (#2792)\n\nThis fixes a fuzzer-discovered edge case: the result of std::abs(INT_MIN) is undefined behavior. To work around this, we now convert the value to int64_t."
    },
    {
      "commit": "40417c0d9f3f79b07d94dde6fe551460b01f3fbb",
      "tree": "2b2e6cb69e9b7556ed669ae8e8c6126916da5c2e",
      "parents": [
        "6b85d94cb60d64aff01bf7e6d7aa44e9c69e2146"
      ],
      "author": {
        "name": "lexi-nadia",
        "email": "lexinadia@google.com",
        "time": "Wed Jul 08 18:35:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 18:35:21 2026"
      },
      "message": "Add WABT_USE annotations for Result values only used in assertions (#2793)"
    },
    {
      "commit": "6b85d94cb60d64aff01bf7e6d7aa44e9c69e2146",
      "tree": "3c3f5a800cb39829561b1ec4931321440046a921",
      "parents": [
        "f4908362bd398b31853c4754664a2ea01ff31966"
      ],
      "author": {
        "name": "lexi-nadia",
        "email": "lexinadia@google.com",
        "time": "Wed Jul 08 04:47:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 08 04:47:30 2026"
      },
      "message": "Mark Result as [[nodiscard]] and fix associated errors (#2791)\n\nThis CL fixes a fuzzer error caused by unintentionally ignoring a\nfailure. Instead of just fixing the one case, I figured I\u0027d fix them\nall.\n\nIn a handful of cases, I wasn\u0027t sure how errors should be propagated.\nPlease feel free to suggest improvements!"
    },
    {
      "commit": "f4908362bd398b31853c4754664a2ea01ff31966",
      "tree": "22e2da9ee814beb4dc1c8d75b4807a218505c24b",
      "parents": [
        "146b6f3dbdcf745d5a2a21d0577fcc4350f02384"
      ],
      "author": {
        "name": "lexi-nadia",
        "email": "me@lexibromfield.com",
        "time": "Tue Jul 07 19:27:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 19:27:53 2026"
      },
      "message": "Zero-init an InitInst to avoid accessing unintialized memory (#2789)"
    },
    {
      "commit": "146b6f3dbdcf745d5a2a21d0577fcc4350f02384",
      "tree": "7ffe2cb4a2a7e59a29b97e12c9e39d53174f97cd",
      "parents": [
        "52a5fed56973288161f82be15249e3ff7b2a3eed"
      ],
      "author": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Sun Jul 05 22:20:16 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Mon Jul 06 19:21:48 2026"
      },
      "message": "wasm2c: Move to O3 optimizations for wasm2c spec compliance tests\n"
    },
    {
      "commit": "52a5fed56973288161f82be15249e3ff7b2a3eed",
      "tree": "775e41c65796c8ac5cd13978e869a761cf0b5ab1",
      "parents": [
        "4bedf7c2638dffeafdf063afb0c2deaa13482cfc"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Mon Jul 06 19:06:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 06 19:06:37 2026"
      },
      "message": "Bounds-check function index in name section local handlers (#2787)\n\nASAN, calling `ReadBinaryIr` with `read_debug_names\u003dtrue` and\n`stop_on_first_error\u003dfalse` on a crafted module:\n\n    binary-reader-ir.cc:1721: AddressSanitizer: container-overflow\n    READ of size 8 in BinaryReaderIR::OnLocalNameLocalCount\n\nFound while going over the name-section handlers.\n`OnLocalNameLocalCount` and `OnLocalName` index\n`module_-\u003efuncs[func_index]` using the function index taken from the\nname section\u0027s local subsection. The reader only checks `function_index\n\u003c NumTotalFuncs()`, i.e. the declared count `num_func_imports_ +\nnum_function_signatures_`. With `stop_on_first_error` off, a truncated\nfunction section (declares two funcs, but the second signature LEB runs\npast the section end) leaves `funcs` one short of that count, so a local\nname for the missing function reads past the vector.\n`OnLocalNameLocalCount` had a debug-only assert; `OnLocalName` had no\ncheck at all.\n\nEvery sibling handler here already does the `index \u003e\u003d size()` check, and\n`OnFunctionBodyCount` already guards this same `stop_on_first_error`\ncase for the code path. Added the matching check to both local-name\nhandlers, plus a regression test."
    },
    {
      "commit": "4bedf7c2638dffeafdf063afb0c2deaa13482cfc",
      "tree": "d1c4cf362c755de53decbfeb282741113e841dcb",
      "parents": [
        "58cf9ff2a8e19e5291a24b7d6394fd51c9d0e0d6"
      ],
      "author": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 02:53:14 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 22:02:46 2026"
      },
      "message": "wasm2c: (Security) fix to check address + offset addition for memory64\n"
    },
    {
      "commit": "58cf9ff2a8e19e5291a24b7d6394fd51c9d0e0d6",
      "tree": "45a60269f244cc7317d67bda38b927e119f43680",
      "parents": [
        "bf48b8c5ae364b195281398a33a11cdd7fad23d0"
      ],
      "author": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 02:27:51 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 21:17:51 2026"
      },
      "message": "wasm2c: fix minor errors in atomic ops implementation\n"
    },
    {
      "commit": "bf48b8c5ae364b195281398a33a11cdd7fad23d0",
      "tree": "7ad27db6b371e99c209930f56d78088b18b1531d",
      "parents": [
        "e62f23cc829c9c846d0b6985e80c5fb22930a331"
      ],
      "author": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Fri Jul 03 16:44:05 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 17:27:25 2026"
      },
      "message": "wasm2c: guard wasm_rt_allocate_memory size overflow and alloc failure\n"
    },
    {
      "commit": "e62f23cc829c9c846d0b6985e80c5fb22930a331",
      "tree": "842b73c1cf850ce80ab7a00a5029dc520a3990d2",
      "parents": [
        "1c7bca930694427af1f3076010a1cbc9297b1030"
      ],
      "author": {
        "name": "Valentino Contreras",
        "email": "valentinocontrerast@gmail.com",
        "time": "Fri Jul 03 17:06:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 03 17:06:41 2026"
      },
      "message": "[validator] Allow call_indirect/return_call_indirect table elements to be subtypes of funcref (#2780)\n\nThis PR resolves an issue where the validator rejects valid WebAssembly\nmodules using typed function references (such as `(ref null $sig)`) with\n`call_indirect` and `return_call_indirect`.\nCurrently, `SharedValidator` performs a strict equality check\n(`table_type.element !\u003d Type::FuncRef`), which rejects valid subtypes of\n`funcref` in indirect calls.\n**Changes:**\n- Replaced the strict equality check in `src/shared-validator.cc` with\n`typechecker_.CheckType` to correctly check for subtypes of `funcref`.\n- Handled out-of-range table index checks to maintain compatibility with\nexisting spec test outputs.\n\nFixes: #2523"
    },
    {
      "commit": "1c7bca930694427af1f3076010a1cbc9297b1030",
      "tree": "56deb2f6a067138d3ee88ddf2f93123467d8d0dd",
      "parents": [
        "d75ec31583006d9385d942545e49f76bbc2d2fc1"
      ],
      "author": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 02:12:14 2026"
      },
      "committer": {
        "name": "Shravan Narayan",
        "email": "shravanrn@gmail.com",
        "time": "Fri Jul 03 07:10:11 2026"
      },
      "message": "wasm2c: (Security) fix runtime overflows when running Wasm modules with memory64\n"
    },
    {
      "commit": "d75ec31583006d9385d942545e49f76bbc2d2fc1",
      "tree": "1e1167ff4b59018212882ffc446313bb96cd36bd",
      "parents": [
        "984f7f30003a9048eaeb49c1962493cb8992d896"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 29 22:34:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 22:34:43 2026"
      },
      "message": "Fix DecodeInvalidOpcode for 9-bit opcode codes (#2781)\n\nWhen MAX_OPCODE_BITS was increased to 9, DecodeInvalidOpcode still used\na hardcoded 0xff mask when unpacking the invalid opcode code. This\ncaused any invalid opcode with a code \u003e\u003d 0x100 (such as unsupported SIMD\nopcodes) to be truncated to 8 bits when reported in error messages.\n\nUse ((1 \u003c\u003c MAX_OPCODE_BITS) - 1) instead of 0xff so that 9-bit opcode\ncodes are correctly preserved when reporting invalid opcodes.\n\nSee #2779"
    },
    {
      "commit": "984f7f30003a9048eaeb49c1962493cb8992d896",
      "tree": "7860ad92e600cc37664e978cfa2fd92a0f38261f",
      "parents": [
        "23b62e9665fa96fa6d94e9e08adb3bc5ce1f3a34"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 29 16:41:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 29 16:41:48 2026"
      },
      "message": "[cpp20] Modernize binary reader and writer APIs to use std::span (#2775)\n\nReplace legacy raw pointer and size pairs with std::span\u003cconst uint8_t\u003e\n(aliased to `ByteSpan`) across WABT\u0027s binary reader interfaces, writer\nstreams, parser callbacks, and public entry points.\n\nThis greatly improves type safety, simplifies call sites (allowing\nvectors\nand arrays to be passed directly), and aligns WABT with modern C++20\nstandards.\n\nHighlights:\n- Fixes a performance bug in Stream::WriteData where passing std::vector\n  accidentally triggered a full copy-by-value of the vector\u0027s contents.\n  The template overload now correctly accepts std::span (zero-copy).\n- Simplifies various writing call sites (e.g. in binary-writer,\nc-writer,\n  and wasm-strip) by passing vectors directly or leveraging subspan."
    },
    {
      "commit": "23b62e9665fa96fa6d94e9e08adb3bc5ce1f3a34",
      "tree": "fd616be9f962654843c01914402491c58e638bec",
      "parents": [
        "2b2fb60ff9c3a87c47480c0010536f172e851d9c"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Sat Jun 27 06:25:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 27 06:25:39 2026"
      },
      "message": "[interp] Stop on first error in the binary reader fuzzer (#2778)\n\nThe interp binary reader is only meant to read valid modules. Every\n`ReadBinaryInterp` caller runs with `stop_on_first_error\u003dtrue` except\n`read_binary_interp_fuzzer.cc`, which passed `false`.\n\nIn collect-all-errors mode the `SharedValidator` keeps counting\ndeclarations the reader has already rejected. For example a function\nwhose type index is out of range: `OnFunction` skips the append, but the\nvalidator still counts it. So the reader\u0027s `func_types_`/`module_.funcs`\nvectors and the validator\u0027s counts drift apart, and later callbacks\nindex past the end (`BeginFunctionBody`, `OnExport`,\n`OnReturnCallExpr`).\n\nPer the review, rather than adding reader-side guards for a mode the\ninterp reader was never meant to support, this stops the fuzzer on the\nfirst error like every other caller, so the reader is no longer driven\nover invalid modules."
    },
    {
      "commit": "2b2fb60ff9c3a87c47480c0010536f172e851d9c",
      "tree": "9012df803d199be408ac77784aa7487e5d6428cb",
      "parents": [
        "3baa26374aa356e766ce71bb4631918f5a87923b"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Thu Jun 25 08:43:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 25 08:43:13 2026"
      },
      "message": "Remove ReadLeb128 type argument (#2776)"
    },
    {
      "commit": "3baa26374aa356e766ce71bb4631918f5a87923b",
      "tree": "2cdc6811ad6d7259ecdb4bd676b800e5ac6d7a23",
      "parents": [
        "5d0a3a7b6a9ab1c846275db74d09855011fb5e36"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jun 24 14:56:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 14:56:45 2026"
      },
      "message": "Avoid out-of-bounds section_starts_ read on invalid reloc index (#2777)\n\nUBSan, `wasm-objdump -x` on a crafted module:\n\nbinary-reader-objdump.cc:69:12: runtime error: index\n18446744073709551615 out of bounds for type \u0027const Offset[14]\u0027\n#0 BinaryReaderObjdumpBase::GetSectionStart binary-reader-objdump.cc:69\n        #1 BinaryReaderObjdump::OnReloc binary-reader-objdump.cc:2176\n\nThe input is a `reloc.*` custom section whose section index points past\nthe last section. The base `OnRelocCount` spots that, sets\n`reloc_section_` to `BinarySection::Invalid` (`~0`) and returns `Error`\nto abort the section. The details-mode override dropped that result and\nreturned `Ok`, so `ReadRelocSection` carried on into `OnReloc`, where\n`GetSectionStart(reloc_section_)` reads `section_starts_[(size_t)-1]`.\n\n`Result` is not `[[nodiscard]]`, so the dropped error built clean.\nPropagating it with `CHECK_RESULT` rejects the bad index the same way\nthe other reader modes already do.\n\n`bad-relocs.txt` used a zero relocation count, so it never reached\n`OnReloc`; gave it one entry so it covers the read."
    },
    {
      "commit": "5d0a3a7b6a9ab1c846275db74d09855011fb5e36",
      "tree": "fe8f29256a4c96f2c2391e6c0629a39e69e403de",
      "parents": [
        "274f26bbf391433d94767a3504aa5f9d8cd74aff"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jun 24 06:08:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 06:08:36 2026"
      },
      "message": "[wasm2c] Write float constants independent of the host locale (#2768)\n\nNoticed while running wasm2c with the embedder\u0027s locale set to de_DE,\nwhere LC_NUMERIC makes the radix \u0027,\u0027. The constant writer produced:\n\n    instance-\u003ew2c_g0 \u003d 1,5;\n\nsnprintf(\"%.9g\"/\"%.17g\") in CWriter::Write(const Const\u0026) takes the radix\nfrom the active locale, but the emitted C must use \u0027.\u0027. The comma is\neither a compile error or, in argument/initialiser position, a comma\nexpression that quietly drops the fractional part. The f64 path is\nworse: the following strchr(buf, \u0027.\u0027) no longer finds the radix, so it\nalso appends \".0\" and writes 1,5.0.\n\nThe .wat writer sidesteps this by emitting hex floats, and the parsing\ndirection was already made locale-independent in literal.cc. This is the\noutput side. The fix formats as before, then rewrites the locale\u0027s radix\nback to \u0027.\u0027, so the generated C is byte-identical regardless of the\nlocale the caller set. Output under the C locale is unchanged.\n\nAdded a unit test that writes a module with f32/f64 constants under a\ncomma locale and checks the result uses \u0027.\u0027. It skips when no comma\nlocale is installed, matching the existing parser test."
    },
    {
      "commit": "274f26bbf391433d94767a3504aa5f9d8cd74aff",
      "tree": "87405c8123c66dbae4e108bcf80c0b354c537228",
      "parents": [
        "256515849f292997a0e39048018fa04141a47a56"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jun 24 04:38:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 04:38:19 2026"
      },
      "message": "Use C++20 standard bit utilities and std::bit_cast. NFC (#2773)\n\n- Replace custom Clz, Ctz, and Popcount implementations in config.h.in\nwith standard templates using std::countl_zero, std::countr_zero, and\nstd::popcount from \u003cbit\u003e.\n- Redefine wabt::Bitcast to use std::bit_cast.\n- This removes a significant amount of compiler-specific boilerplate."
    },
    {
      "commit": "256515849f292997a0e39048018fa04141a47a56",
      "tree": "0deb55511706d7722cd57912f035517678865800",
      "parents": [
        "deeb6f34d243f40877c49cc8b73bdf75c7f28592"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jun 24 03:15:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 24 03:15:33 2026"
      },
      "message": "Add -Wno-gnu-folding-constant when compiling c api examples (#2774)\n\nI\u0027m not sure why this starting showing up as a failure on the\nmacos-latest build. I\u0027m guess it was some kind of system updated that\ngive us a newer version of clang.\n\nI\u0027m also not sure why `-std\u003dgnu11` wasn\u0027t enough to enable this\nextension."
    },
    {
      "commit": "deeb6f34d243f40877c49cc8b73bdf75c7f28592",
      "tree": "b85ccd3a5eec911f33ecf3e30861bda26d815c96",
      "parents": [
        "1bccd720008840a40eb9a6c8051f27390e414206"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jun 23 18:24:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 18:24:08 2026"
      },
      "message": "Update from C++17 to C++20 (#2772)\n\nBinaryen did this a while back in\nhttps://github.com/WebAssembly/binaryen/pull/8218.\n\nThere we a couple of issue related to building on macOS 13.2.1 but I\ndon\u0027t think we need to support building on such old versions of macOS\nhere. We still support deploying to macOS 10.14 via\nCMAKE_OSX_DEPLOYMENT_TARGET.\n\nUse std::string::starts_with and std::string_view::starts_with in\nvarious places now that C++20 is available.\n\nAlso, adopt `.contains()` for std::map, std::set, and their unordered\ncounterparts to replace verbose find/end and count checks."
    },
    {
      "commit": "1bccd720008840a40eb9a6c8051f27390e414206",
      "tree": "5bd64eb59325d3abed79fa2e3490d61a31bb6db8",
      "parents": [
        "f87a3ad2de1525ca71c20f70a20fcb51f1157d8e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jun 23 16:55:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 16:55:31 2026"
      },
      "message": "[binary-reader] Templatize LEB reading functions. NFC (#2771)"
    },
    {
      "commit": "f87a3ad2de1525ca71c20f70a20fcb51f1157d8e",
      "tree": "17e10bfceda9d64ecc7e07d26299957b4d2b2c28",
      "parents": [
        "2304811313bc496fe49054181693c518dbfef4d6"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Tue Jun 23 08:29:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 23 08:29:49 2026"
      },
      "message": "Support 64 bit limits for tables (#2767)"
    },
    {
      "commit": "2304811313bc496fe49054181693c518dbfef4d6",
      "tree": "c79c5d24741ab843293b1f74821f56fc31fb3a81",
      "parents": [
        "3cd556a4f81b3d6fb616d53396109e47b36a8be4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 22 22:24:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 22:24:57 2026"
      },
      "message": "Remove wasm-decompile (#2769)\n\nThis tools was unmainatined and acting mostly active as source of fuzzer\nbugs."
    },
    {
      "commit": "3cd556a4f81b3d6fb616d53396109e47b36a8be4",
      "tree": "6463b5c7a00c27e2b12550e2f7a085dc7541837d",
      "parents": [
        "4c6951d0c5658276727a0fe1bb352dd9953e7847"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 22 20:39:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 20:39:33 2026"
      },
      "message": "Add ruff python linter. NFC (#2770)"
    },
    {
      "commit": "4c6951d0c5658276727a0fe1bb352dd9953e7847",
      "tree": "0aed078bd9c835a3cfd8d5da6750fab2d4e1694a",
      "parents": [
        "51f0020d2f70bb0fada6c4a2ef9af9b841d48006"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Mon Jun 22 17:04:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 17:04:28 2026"
      },
      "message": "Avoid front() on an empty element expression in the validator (#2765)\n\nThe validator picks each element expression\u0027s diagnostic location with\nelem_expr.front().loc, which dereferences a null list head when the\nelement expression is empty (an init expr that is only the trailing end\nbyte, which the binary reader accepts), so fall back to the segment\nlocation and let the existing constant-expression check reject it with\nthe same type-mismatch error already produced for an empty global or\ndata init expr; reachable from untrusted .wasm via wasm-validate,\nwasm2wat and wasm-decompile, which all validate by default."
    },
    {
      "commit": "51f0020d2f70bb0fada6c4a2ef9af9b841d48006",
      "tree": "d0bef18e9f097b7a2ae68a534cb9cc7c2aace8f8",
      "parents": [
        "80b6582e395fde2adc1f62728950d9ed760e5af1"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jun 22 09:07:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 22 09:07:48 2026"
      },
      "message": "Update man pages and html docs (#2763)\n\nThis was automated via the new scripts/update-manpages.py"
    },
    {
      "commit": "80b6582e395fde2adc1f62728950d9ed760e5af1",
      "tree": "230595967a365454d70e1a12371945471c6afa59",
      "parents": [
        "f42ead6ca363617f01dcf7d36a9008f35b872adb"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Fri Jun 19 17:21:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 19 17:21:42 2026"
      },
      "message": "Avoid Var::name() on function-level branches in decompiler (#2762)\n\nFound while fuzzing wasm-decompile.\n\n    Assertion failed: (is_name()), function name, file ir.h, line 82.\n\nA branch whose target is the function\u0027s implicit outermost label is left\nas an index by the name resolution passes, since there is no block label\nto attach to it. DecompileExpr then called Var::name() on that index\nvar. ir.h keeps index_ and name_ in a union, so this reads the inactive\nstd::string member; with NDEBUG the assert is gone and it dereferences a\ngarbage pointer instead.\n\nSmallest repro, decompiles to a return:\n\n    (func (block (loop (br 2))))\n\nbr_if and br_table with a function-level target reach the same path.\nRouted the three branch sites through a helper that emits return when\nthe target is unnamed."
    },
    {
      "commit": "f42ead6ca363617f01dcf7d36a9008f35b872adb",
      "tree": "7e0ca137817a5d00c61c0f1c69533cf1a2712463",
      "parents": [
        "4421c6cf73592dc3dfde95d380df1697bc5f116b"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Thu Jun 18 17:41:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 17:41:03 2026"
      },
      "message": "Avoid string_view underflow in ParseCodeMetadataAnnotation (#2761)\n\nASAN, `wat2wasm --enable-annotations` on a `(@custom ...)` sat inside a\nfunction body:\n\n    ERROR: AddressSanitizer: heap-buffer-overflow READ of size 8\n      #5 std::__string_view_hash::operator()(std::string_view)\n      #9 wabt::BinaryWriter::WriteExpr() binary-writer.cc:1189\n      #11 wabt::BinaryWriter::WriteFunc() binary-writer.cc:1229\n\n`ParseCodeMetadataAnnotation` strips the `metadata.code.` prefix with\n`remove_prefix(14)` and assumes it is always there. `ParseInstrList`\nhands it every `(@...)` annotation in an instruction list, and `Peek`\nadmits the bare `(@custom ...)` token because that spelling is\nmeaningful at module scope. On the 6-byte `custom` text\n`remove_prefix(14)` underflows the view length to ~2^64 and walks the\ndata pointer past the token. The `CodeMetadataExpr` then keeps a name\nwhose pointer and size are both rubbish. Nothing trips until the binary\nwriter hashes that name as a map key, which is where ASAN fires.\n\nThe binary reader already guards the matching strip with\n`find(\"metadata.code.\") \u003d\u003d 0` in binary-reader.cc; the parser never got\nit. Reject annotations without the prefix.\n\nRepro:\n\n    (module\n      (func\n        (@custom \"x\")))\n\nTurned up fuzzing wat2wasm with annotations enabled."
    },
    {
      "commit": "4421c6cf73592dc3dfde95d380df1697bc5f116b",
      "tree": "6bd03c5aa58fac637d516351532838a42e884b6b",
      "parents": [
        "71acc6da51158a2e08e1db37ec62909431370bc6"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jun 17 16:10:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 17 16:10:08 2026"
      },
      "message": "[interp] Use u64 table operands so out-of-range table64 indices trap (#2760)\n\nOn a table declared with the i64 index type, an index past the end of\nthe table does not trap as it should:\n\n    $ wasm-interp --enable-memory64 --run-all-exports t.wasm\n    get_oob() \u003d\u003e funcref:0\n\nThe table has 10 slots and the index was `(i64.const 0x1_0000_0003)`.\nThat is out of bounds, but it read slot 3.\n\ntable.get/set/fill/copy/init/grow pop their operands as u64 for an i64\ntable (PopPtr), then pass them to Table::Get/Set/Fill/Copy/Init/Grow,\nwhich take u32. The high half is dropped, so any index in [2^32, 2^32 +\nsize) wraps to an in-range slot and the bounds check passes. table.set\noverwrites a live entry that way, and table.grow truncates a delta above\n2^32 and reports success instead of failing.\n\nMemory already takes u64 throughout for memory64, so this widens the\nTable side to match and rejects a grow delta that does not fit in u32.\nBehaviour for i32 tables is byte-identical. Added an interp test\ncovering the wrap window."
    },
    {
      "commit": "71acc6da51158a2e08e1db37ec62909431370bc6",
      "tree": "1cea15a498140b607fceb567c22cfd125c98a9d7",
      "parents": [
        "e6053b83c88f51b6cf06668205716a4f0c14be17"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Jun 16 17:48:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 16 17:48:15 2026"
      },
      "message": "Avoid unbounded alloca in FloatParser::ParseFloat (#2754)\n\nParseFloat sizes alloca() by the literal length, so a multi-megabyte\nfloat constant in untrusted .wat text overflows the stack; use a heap\nbuffer instead."
    },
    {
      "commit": "e6053b83c88f51b6cf06668205716a4f0c14be17",
      "tree": "5dc9f08a5ef32074b8eb1e0684e832552525a729",
      "parents": [
        "68db1c1b214fa71b5566264a6ceeb6c18b3e842a"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Mon Jun 15 17:06:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 15 17:06:43 2026"
      },
      "message": "[wasm2c] Use locale-independent ctype in GenerateHeaderGuard (#2759)\n\nThe file already defines internal_isalpha/isdigit/isalnum/ishexdigit on\nuint8_t for this exact reason (the comment above them spells it out),\nused throughout Mangle. GenerateHeaderGuard was the lone holdout. Routed\nit through internal_isalnum plus a matching internal_toupper. Guards for\nASCII header names come out byte-identical."
    },
    {
      "commit": "68db1c1b214fa71b5566264a6ceeb6c18b3e842a",
      "tree": "0799ad9365a15d7980f23cdc3deb9368c9ca3947",
      "parents": [
        "b7ad849395485e6adf9ab2bfad8226741038690d"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Sat Jun 13 17:30:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 13 17:30:13 2026"
      },
      "message": "[wasm-decompile] Avoid out-of-range shift in  load/store rewrite (#2758)\n\nUBSan, decompiling a module that addresses memory as (base + (index \u003c\u003c\nn)):\n\nsrc/decompiler.cc:325:21: runtime error: shift exponent 64 is too large\nfor 64-bit type \u0027unsigned long long\u0027\n        #0 wabt::Decompiler::LoadStore(...) decompiler.cc:325\n        #1 wabt::Decompiler::DecompileExpr(...) decompiler.cc:489\n\nThe load/store printer recognises that address shape and tries to\nrewrite it to base[index], testing 1ULL \u003c\u003c n against the access\nalignment. n is the i32.const operand of the i32.shl, read straight from\nthe module. i32.shl masks its shift amount at runtime, so n is otherwise\nunconstrained; n \u003e\u003d 64 pushes the exponent past the width of the type\nand the shift is undefined.\n\nBounding n \u003c 64 before the shift loses no real match, since the\nalignment it is compared against is always a small power of two. The\nunmatched shape then prints verbatim, the same as a mismatched shift\nalready does.\n\nRepro is a load of (local 0 + (local 1 \u003c\u003c 64)): UBSan aborts at\ndecompiler.cc:325 before, decompiles to (a + (b \u003c\u003c 64))[0]:int after.\nCovered by the loadstore decompile test."
    },
    {
      "commit": "b7ad849395485e6adf9ab2bfad8226741038690d",
      "tree": "c9830a42f4a3798d16bcb2b544dce4baa1bc9ee7",
      "parents": [
        "435b7da6260124d7ab65724f21fcc47512a7f915"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Wed Jun 10 06:54:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 06:54:35 2026"
      },
      "message": "Parse decimal float literals independent system locale (#2757)"
    },
    {
      "commit": "435b7da6260124d7ab65724f21fcc47512a7f915",
      "tree": "b9a93a03baaf441ed56e7bfe115cbedfbdacc73f",
      "parents": [
        "2d84a9980efe4bc107f2504c912d5c6ced7192c9"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Jun 09 17:53:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 17:53:23 2026"
      },
      "message": "[wasm2c] Avoid size_t overflow in wasm_rt_grow table reallocation (#2756)\n\nOn a 32-bit (ILP32) build, growing a funcref table in `wasm_rt_grow`:\n\n    new_elems            \u003d 230000000          (\u003c\u003d table-\u003emax_size)\n    new_elems * sizeof   \u003d 4600000000 bytes   (computed as uint64_t)\n    realloc() size_t arg \u003d 305032704 bytes    (truncated to 32-bit)\n\n`new_elems` is a `uint64_t` but only bounded by `table-\u003emax_size`, which\ncan be `UINT32_MAX`. The element is a multi-pointer struct, so the byte\ncount crosses 2^32 long before `new_elems` does. The product is then\nnarrowed to `realloc`\u0027s `size_t` parameter, so the reallocation is far\ntoo small. The loop right after writes `new_elems` elements into it. A\nguest `table.grow` with a large delta on a table with a large max\nreaches this.\n\nFound while reading the table path looking for the realloc-side\nequivalent of the recent wasi size fix. `calloc` in `wasm_rt_allocate`\nis safe because it overflows-checks its two operands; the grow path does\nthe multiply itself and hands the result straight to `realloc`, which\ndoes not.\n\nReject the grow when the byte size would not fit in `size_t`, before the\nrealloc. No effect on 64-bit. The shared include covers the funcref,\nexternref and exnref variants."
    },
    {
      "commit": "2d84a9980efe4bc107f2504c912d5c6ced7192c9",
      "tree": "04d274e90ac23298185a1a02eac05af0e695c5a7",
      "parents": [
        "9bbc21ef33932532fbee97025eecb5b5a6fa4d7f"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Fri Jun 05 16:27:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 16:27:09 2026"
      },
      "message": "Use unsigned shift in GetAlignment to avoid signed overflow (#2755)\n\nReading the two binary readers side by side, the load/store alignment\nimmediate gets widened differently:\n\n    binary-reader-ir.cc:      1ull \u003c\u003c alignment_log2\n    binary-reader-interp.cc:  1 \u003c\u003c alignment_log2\n\nThe interp form shifts a signed int. CheckAlignment only rejects\nalignment_log2 \u003e\u003d 32, so a load or store in an untrusted module can\ncarry alignment_log2 \u003d\u003d 31, and 1 \u003c\u003c 31 on int is signed overflow.\nSwitching the literal to 1u makes the shift unsigned; the returned value\nis unchanged."
    },
    {
      "commit": "9bbc21ef33932532fbee97025eecb5b5a6fa4d7f",
      "tree": "79b3af1f9e005d87044d2ac6bebf14c07db57626",
      "parents": [
        "03a00a1334e6121fb0cce4fccbd6bb109b68acaa"
      ],
      "author": {
        "name": "aizu-m",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Jun 02 17:23:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 17:23:37 2026"
      },
      "message": "[wasi-interp] Fix integer overflow in wasi getMemPtr size calculation (#2752)\n\n`getMemPtr` computes the access size as `num_elems * sizeof(T)` in\n`size_t` (interp-wasi.cc:608), which truncates on 32-bit targets so an\noversized guest iovec count passes `IsValidAccess` and the caller then\nreads out of bounds. Widen the multiplication to 64 bits to match the\n`IsValidAccess` signature."
    },
    {
      "commit": "03a00a1334e6121fb0cce4fccbd6bb109b68acaa",
      "tree": "711535e811191ba36a68c8683e71f50fe07f1002",
      "parents": [
        "7773e5c9d34b67fdb7af7699814d3e992157e929"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed May 06 18:39:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 18:39:06 2026"
      },
      "message": "Bump version to 1.0.41 (#2746)"
    },
    {
      "commit": "7773e5c9d34b67fdb7af7699814d3e992157e929",
      "tree": "27aeddaf771a3433ad35752d6e0a9c95e829e7ec",
      "parents": [
        "282e2e5d92d6464d7ea59c88fa39d2e29fab26ac"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed May 06 18:18:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 18:18:35 2026"
      },
      "message": "Include error information on error opening output file (#2745)\n\nFixes: #2740"
    },
    {
      "commit": "282e2e5d92d6464d7ea59c88fa39d2e29fab26ac",
      "tree": "2733cea2bedafde811559a1d5dc94ad9f22baca8",
      "parents": [
        "77a95c8c82325ac3a716f9aacbe0a3822718f3cf"
      ],
      "author": {
        "name": "Gabor Greif",
        "email": "ggreif@gmail.com",
        "time": "Wed May 06 14:32:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 06 14:32:22 2026"
      },
      "message": "Validator: thread table limits through `OnReturnCallIndirect` (#2744)\n\n`SharedValidator::OnCallIndirect` passes `table_type.limits` to\n`TypeChecker::OnCallIndirect`, which expects i64 vs i32 for the\ntable-index based on `is_64`. `OnReturnCallIndirect` doesn\u0027t — so under\n`table64`, plain `call_indirect` with an i64 index validates, but the\nmatching `return_call_indirect` rejects it with `expected [i32] but got\n[i64]`.\n\nMirrors the signature. Adds a `test/typecheck/` regression for the\nnegative case.\n\nCo-authored-by: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "77a95c8c82325ac3a716f9aacbe0a3822718f3cf",
      "tree": "ffcf46b68c716fb3155bed1a6a9f4da9403a97ee",
      "parents": [
        "6dc6cfd8a5c57e9acb966cf3c71520cf5c84017c"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Wed Apr 08 17:19:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 08 17:19:43 2026"
      },
      "message": "Use unsigned line info in Locations (#2738)"
    },
    {
      "commit": "6dc6cfd8a5c57e9acb966cf3c71520cf5c84017c",
      "tree": "6f975951d655898d8c69b33db498906ff3b58728",
      "parents": [
        "ec3eac81f594fb5c8cb687ed35fba326f5c9880e"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Tue Apr 07 00:09:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 07 00:09:59 2026"
      },
      "message": "Remove debug-parser option and other unused variables (#2739)\n\nThe support for --debug-parser is removed from the project after the parser\nhas been reworked. This patch removes the command line option as well."
    },
    {
      "commit": "ec3eac81f594fb5c8cb687ed35fba326f5c9880e",
      "tree": "570c933ac33398cd83e6a39d950ef4b3e6bc1fac",
      "parents": [
        "2f731a7ea5e8457567da220df86e6fe4d2465e39"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Fri Apr 03 17:37:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 03 17:37:21 2026"
      },
      "message": "[lexer] Simplify GetLineOffsets (#2735)\n\nDirectly parse the source code, without moving it into a buffer."
    },
    {
      "commit": "2f731a7ea5e8457567da220df86e6fe4d2465e39",
      "tree": "bf0cd12637cea41bae1632ac87a886fc8469dfb9",
      "parents": [
        "41db0048e65447b965c4624c77dbf4f3dec5c2e5"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Thu Apr 02 18:28:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 02 18:28:41 2026"
      },
      "message": "Add declaration limit checks to parser (#2736)"
    },
    {
      "commit": "41db0048e65447b965c4624c77dbf4f3dec5c2e5",
      "tree": "81b3d9ef882046b093052172f894aba34a811862",
      "parents": [
        "0756e492440cf5d228e8188d8512dd2b4e18761b"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Thu Mar 26 16:34:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 26 16:34:00 2026"
      },
      "message": "Move filename out of Location (#2728)\n\nLocations are stored in IR frequently, and they stored the same filename.\nThis patch moves the filename to module/script level, and store it only once."
    },
    {
      "commit": "0756e492440cf5d228e8188d8512dd2b4e18761b",
      "tree": "d2876f0f0a9d59183d450f887a9dbee3aa659684",
      "parents": [
        "5551e79a8f22a645502115683ba0e4d8e5021f8b"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Wed Mar 25 15:11:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 25 15:11:08 2026"
      },
      "message": "[wast-parser] Optimize Consume() (#2727)\n\nAnother small optimization. The unused tokens does not need to be\nprocessed (destroyed)."
    },
    {
      "commit": "5551e79a8f22a645502115683ba0e4d8e5021f8b",
      "tree": "b7399b0e92fedd8fc535d119204c25887d73cfe9",
      "parents": [
        "e8ffd4d030ea846953308e45dad1dfd4ea5996e2"
      ],
      "author": {
        "name": "Yuvraj Sahu",
        "email": "59147222+yuvraj-sahu@users.noreply.github.com",
        "time": "Tue Mar 24 14:40:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 24 14:40:03 2026"
      },
      "message": "Fix wat2wasm demo by removing call to non-existent module.resolveNames (#2726)\n\nOn the [wat2wasm demo\nwebsite](https://webassembly.github.io/wabt/demo/wat2wasm/), when\ncorrect WAT is written (such as with any of the examples), the build log\ndisplays the following error: `TypeError: module.resolveNames is not a\nfunction`. This error seems to originate from the JavaScript file\n`demo.js`, which contains `module.resolveNames()` on line 110. This\nprevents WebAssembly from being generated.\n\nAt commit\n[d8e3fe6](https://github.com/WebAssembly/wabt/tree/d8e3fe601070ba99b8e68577b83036e4cdc105ff),\nthe `resolveNames` function existed within\n[`libwabt.js`](https://github.com/WebAssembly/wabt/tree/d8e3fe601070ba99b8e68577b83036e4cdc105ff/docs/demo/libwabt.js)\nas an empty function. However, this reference seems to have been removed\nin the later commit\n[10dcc58](https://github.com/WebAssembly/wabt/tree/10dcc589d874cf47f1bc1bc0147824c4d252bb9f)\nand its version of\n[`libwabt.js`](https://github.com/WebAssembly/wabt/blob/10dcc589d874cf47f1bc1bc0147824c4d252bb9f/docs/demo/libwabt.js).\nThis function seems to have been empty even in older commits (such as\ncommit\n[6aac429](https://github.com/WebAssembly/wabt/tree/6aac429991b31f179ec948f1835c2a5eadc8404c)\nand its version of\n[`libwabt.js`](https://github.com/WebAssembly/wabt/blob/6aac429991b31f179ec948f1835c2a5eadc8404c/docs/demo/libwabt.js),\nwhere the file had not been edited for four years prior). As such, it\nappears that simply deleting the `module.resolveNames()` call in\n`demo.js` seems to fix the error - though it should be double-checked\nthat there are no side effects of this deletion.\n\nThis is my first attempted contribution to any major open source\nproject, so please let me know if there are any additional guidelines I\nmay have missed or if there is any other information I should provide.\nThanks!"
    },
    {
      "commit": "e8ffd4d030ea846953308e45dad1dfd4ea5996e2",
      "tree": "9ae5efa74908a58c24465338363c2dba785764ef",
      "parents": [
        "10dcc589d874cf47f1bc1bc0147824c4d252bb9f"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Wed Mar 18 00:18:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 18 00:18:58 2026"
      },
      "message": "[wasm2c] Fix exception testing on macOS (#2716)\n\nThis commit addresses the assertion failures during exception testing\nin `wasm2c` on macOS:\n`Assertion failed: (!(ss.ss_flags \u0026 SS_ONSTACK) \u0026\u0026 \"attempt to\ndeallocate altstack while in use\")`\n\nException handling in wasm2c uses `wasm_rt_try(target)` which mapped\nto `sigsetjmp(buf, 1)`. However, on macOS (XNU), performing nested\n`sigsetjmp(..., 1)` and `siglongjmp` across threads with an allocated\nalternate signal stack can erroneously cause the kernel to preserve the\n`SS_ONSTACK` flag in the thread state, even when the exception did not\noriginate from the signal handler.\n\nSince WebAssembly exception handling relies strictly on\n`setjmp`/`longjmp`\nfor control flow and does not need to restore signal masks (unlike stack\nexhaustion traps, which do need the mask to unblock `SIGSEGV`), the fix\nis to simply avoid saving the signal mask for exception boundaries.\n\nWe split `WASM_RT_SETJMP_SETBUF` into two variants:\n- `WASM_RT_SETJMP_TRAP_SETBUF`: Uses `sigsetjmp(buf, 1)` for traps\n(safely handles `SIGSEGV`).\n- `WASM_RT_SETJMP_EXN_SETBUF`: Uses `sigsetjmp(buf, 0)` for Wasm\nexceptions (bypasses `SS_ONSTACK` bug).\n\nThis also reverts commit 74cc83c1c8b1d87f9461acb29be086ba7bfb30b7\n(which temporarily disabled `macos-latest` in CI), as the tests now\npass successfully.\n\nFixes #2654"
    },
    {
      "commit": "10dcc589d874cf47f1bc1bc0147824c4d252bb9f",
      "tree": "f6602ad74a55bb541771fdc71f3cc31a7c3e1e97",
      "parents": [
        "d8e3fe601070ba99b8e68577b83036e4cdc105ff"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Mar 17 23:05:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 23:05:58 2026"
      },
      "message": "Fix Emscripten warnings by removing deprecated writeAsciiToMemory (#2724)\n\nThe Emscripten function writeAsciiToMemory has been deprecated and logs\nwarnings\nduring the build process.\n\n- Replaced usages of writeAsciiToMemory in wabt.post.js with TextEncoder\n- Fixed a 1-byte buffer overflow in allocateCString\n- Removed writeAsciiToMemory from CMake EXPORTED_RUNTIME_METHODS"
    },
    {
      "commit": "d8e3fe601070ba99b8e68577b83036e4cdc105ff",
      "tree": "4a4d4867d3b4f4a64acf2cdec792b4de7b317c2c",
      "parents": [
        "d9cfa577de10b63b563fa2dd3c7113c458918566"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Mar 17 22:11:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 22:11:36 2026"
      },
      "message": "[demo] Use arrow functions (#2725)\n\nalso rebuilt third_party bits"
    },
    {
      "commit": "d9cfa577de10b63b563fa2dd3c7113c458918566",
      "tree": "0d26e09772551208607698f40143d237f91ea637",
      "parents": [
        "166b88f5e34c1c021c718eae00a728877d95bdd9"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Mar 17 20:18:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 20:18:17 2026"
      },
      "message": "Cleanup how emscripten is invoked (#2723)\n\nAllows emcc to be invoked in a more standard way avoiding issues with\nsymlinks"
    },
    {
      "commit": "166b88f5e34c1c021c718eae00a728877d95bdd9",
      "tree": "0aa80e28c33cd51459a1ceea2e276aaa767d9615",
      "parents": [
        "3fb9d42136a8c6bb68c79a3dff7df2a3ba83fabf"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Mar 17 19:42:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 19:42:43 2026"
      },
      "message": "Fix wasm2wat demo (#2722)\n\nThis was broken by #2721"
    },
    {
      "commit": "3fb9d42136a8c6bb68c79a3dff7df2a3ba83fabf",
      "tree": "39ae01190f015ca2f262141938040d1259af4427",
      "parents": [
        "6aac429991b31f179ec948f1835c2a5eadc8404c"
      ],
      "author": {
        "name": "Kevin Moore",
        "email": "kevmoo@users.noreply.github.com",
        "time": "Tue Mar 17 18:37:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 17 18:37:52 2026"
      },
      "message": "Refactor browser demos and Emscripten build output (#2721)\n\nThis comprehensive modernization of the WABT web demos and Emscripten\nbuild output includes the following major improvements:\n\n* Separate WASM payload: Updated CMake and Makefile to output a separate\n  `libwabt.wasm` file instead of inlining it in JS. This drastically\n  reduces the `libwabt.js` size from ~1.24MB to ~26KB.\n* ES6 and async/await Modernization: Refactored `wabt.post.js` and demo\n  scripts to use modern ES6 syntax (classes, const/let, arrow functions)\n  and properly load the WebAssembly binary asynchronously.\n* Dynamic feature flags: Demos now dynamically generate feature\ncheckboxes\n  by inspecting `wabt.FEATURES`, rather than hardcoding them in HTML.\n* NPM Dependency Bundling: Migrated third-party demo dependencies\n  (CodeMirror, Split.js) into a `package.json`-based build, generating\n  a clean `third_party.bundle.js`. Consolidated shared demo logic into\n  `share.js`.\n* Emscripten exports: Added missing features (`compact_imports`,\n`custom_page_sizes`, and `wide_arithmetic`) to `emscripten-exports.txt`\n  to prevent instantiation errors."
    },
    {
      "commit": "6aac429991b31f179ec948f1835c2a5eadc8404c",
      "tree": "68a36a88cf4b31d8617defbe642f506dac977df0",
      "parents": [
        "83072346ad77135d9fbcd869af2ba387677a0dc1"
      ],
      "author": {
        "name": "Spotandjake",
        "email": "40705786+spotandjake@users.noreply.github.com",
        "time": "Sun Mar 15 15:51:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 15 15:51:40 2026"
      },
      "message": "[demo] Run js in worker in wat2wasm demo (#2568)\n\nMove execution of the user js and wasm module from the main\npage to a web worker. The benefit of this is if you write an infinite\nloop in either the js or wasm you won\u0027t crash the main page and can\nrecompile. I also added a `Run` button as I noticed there wasn\u0027t one and\nit was useful for testing (when you edit the wasm the output doesn\u0027t\nupdate until you click run or edit the js).\n\n\n### NOTE\nAs the js is now running in a worker it is isolated so while before you\ncould have worked with the dom from the js editor you can\u0027t really do\nthis anymore. I feel like the old behaviour didn\u0027t make much sense\nanyways though."
    },
    {
      "commit": "83072346ad77135d9fbcd869af2ba387677a0dc1",
      "tree": "94aaeefd248c81fe2aaa2140d5ffc255f80ea4cd",
      "parents": [
        "faa52c9a97b8556e910c703d9c5ff11185284b22"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg@inf.u-szeged.hu",
        "time": "Thu Mar 12 18:52:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Mar 12 18:52:26 2026"
      },
      "message": "Implement quoted identifier parsing (#2715)\n\nPart of annotations and WebAssembly 3.0."
    },
    {
      "commit": "faa52c9a97b8556e910c703d9c5ff11185284b22",
      "tree": "f874eb60f58ef6b75898ed78d1c41489a1cda569",
      "parents": [
        "34eb8835829709860487150ecaee03f6e0aea5ab"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Mar 11 05:07:36 2026"
      },
      "committer": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Mar 11 05:08:02 2026"
      },
      "message": "Bump version to 1.0.40\n"
    },
    {
      "commit": "34eb8835829709860487150ecaee03f6e0aea5ab",
      "tree": "010a4b196efc2e308c1555fef176cc843648fa84",
      "parents": [
        "6be9e863ce5766a9e3fc1be8a5b2a8bbb7b37bb0"
      ],
      "author": {
        "name": "Alex Reinking",
        "email": "areinking@adobe.com",
        "time": "Wed Mar 11 04:56:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 11 04:56:24 2026"
      },
      "message": "Update minimum CMake version to 3.10 in wabt-config.cmake (#2714)\n\nCMake versions 3.31 and newer have begun to warn that compatibility with\nCMake versions older than 3.10 will be removed. When that happens, this\nwill stop working. For now, it issues annoying warnings.\n\nSee the 3.31 release notes:\nhttps://cmake.org/cmake/help/latest/release/3.31.html\n\nI chose to bump to 3.10 out of extreme conservatism. But I don\u0027t know of\nany supported Linux systems that require anything that old. For context,\nUbuntu 20.04 LTS shipped with 3.16. The oldest supported Debian release\n(bookworm) ships with 3.25."
    },
    {
      "commit": "6be9e863ce5766a9e3fc1be8a5b2a8bbb7b37bb0",
      "tree": "334acef506448c8725ae8a7a4bfe56e44eaac91c",
      "parents": [
        "dbd22f865e46e9e7857486e7c0dfea51d997f378"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg7@gmail.com",
        "time": "Fri Mar 06 19:30:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 06 19:30:37 2026"
      },
      "message": "Prevent fuzzer allocation errors (#2713)"
    },
    {
      "commit": "dbd22f865e46e9e7857486e7c0dfea51d997f378",
      "tree": "4d27ef8f85a1197b37c72fb31823834666dd5faf",
      "parents": [
        "9a226dcf837725249a15db007b5678e8f7c884b4"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Fri Feb 27 02:35:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 27 02:35:20 2026"
      },
      "message": "Fix typed select pushing Type::Any instead of expected type (#2707)\n\n## Summary\n- The typed select instruction\u0027s type checker validates operands against\nthe expected type but forgets to set `result_type`, leaving it as\n`Type::Any`.\n- Fix adds `result_type \u003d expected[0]` in the typed select branch.\n\n## Details\nIn `TypeChecker::OnSelect` (type-checker.cc), `result_type` is\ninitialized to `Type::Any`. The untyped select path (when `expected` is\nempty) correctly sets `result_type \u003d type1` on line 1012. However, the\ntyped select path (when `expected` is non-empty) validates both operands\nagainst `expected[0]` but never assigns `result_type`.\n\nThe typed select instruction (`select t`) exists specifically to provide\nprecise type information for cases where the operand types alone are\ninsufficient (e.g., reference types). Pushing `Type::Any` as the result\ntype defeats this purpose and can cause downstream type checking to be\nless precise than intended.\n\nThe fix adds `result_type \u003d expected[0]` after the CheckType calls in\nthe typed select branch, mirroring the pattern used in the untyped path.\n\n## Tests\n- `typed-select-result-type.txt`: Verifies that typed select with\nfuncref/externref annotations properly propagates the result type,\nallowing the result to be used in contexts expecting that specific\nreference type (e.g., `global.set` to a `funcref` global, return from an\n`externref` function).\n- `bad-typed-select-type-mismatch.txt`: Verifies that using a typed\nselect `(result funcref)` where `externref` is expected correctly\nproduces a type mismatch error."
    },
    {
      "commit": "9a226dcf837725249a15db007b5678e8f7c884b4",
      "tree": "20b0afcbee303e8b47264617bd02b9b2b6b3664c",
      "parents": [
        "11967f11678ea58af0afd3ad7d03f59ad6ee7a67"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Feb 26 23:52:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 23:52:24 2026"
      },
      "message": "Initial support for wide arithmetic (#2697)\n\nNo interpreter support here so not enough execute the tests yet.\n\nSee\nhttps://github.com/WebAssembly/wide-arithmetic/blob/main/proposals/wide-arithmetic/Overview.md"
    },
    {
      "commit": "11967f11678ea58af0afd3ad7d03f59ad6ee7a67",
      "tree": "d8d663743865f7da43e0685d8ffe6f6a660598a1",
      "parents": [
        "9d5cf7cab3523649b469402d4487d12a03c874ad"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Thu Feb 26 17:52:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 17:52:15 2026"
      },
      "message": "Fix GC root leak in RefPtr assignment operators (#2699)\n\nThe copy and move assignment operators for `RefPtr` (both same-type and\ncross-type) overwrite `root_index_` with a new root without first\ncalling `DeleteRoot` on the old one. While the destructor correctly\nreleases the root via `reset()`, assignments bypass this cleanup,\nleaking one GC root per reassignment.\n\nIn a long-running interpreter session where `RefPtr` objects are\nreassigned frequently, the leaked roots accumulate in the `Store`\u0027s root\nlist. Because roots prevent the GC from collecting the referenced\nobjects, this leads to unbounded memory growth.\n"
    },
    {
      "commit": "9d5cf7cab3523649b469402d4487d12a03c874ad",
      "tree": "7ff8e5647771dc5a67229f53f844d4dbcbea4b6b",
      "parents": [
        "02ece849f4acc5b1a86d9eac7c8c869b640b9b17"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Thu Feb 26 16:35:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 26 16:35:32 2026"
      },
      "message": "Fix off-by-one in Select instruction ref tracking (#2704)\n\nThe `Select` instruction\u0027s ref tracking compares against wrong stack\nindex after popping the condition value, causing reference operands to\nlose GC tracking.\n\nThis fix adjusts both ref checks to use `values_.size() - 1` instead of\n`values_.size()`.\n"
    },
    {
      "commit": "02ece849f4acc5b1a86d9eac7c8c869b640b9b17",
      "tree": "0d7ab727ae75d35407a5ed1dbde01e8730877c92",
      "parents": [
        "82a8fb8b429ab9d6a658ee53eafafe1c2eb1d05c"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Wed Feb 25 19:38:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 19:38:30 2026"
      },
      "message": "Fix CanonNaN template to use correct type for f64 NaN canonicalization (#2701)\n\nThe `CanonNaN\u003cT\u003e` template function in `interp-math.h` hardcodes\n`std::numeric_limits\u003cf32\u003e::quiet_NaN()` instead of using the template\nparameter `T`.\n"
    },
    {
      "commit": "82a8fb8b429ab9d6a658ee53eafafe1c2eb1d05c",
      "tree": "8166ecf3daa817e31c8a11211bea6fbe44ef03e2",
      "parents": [
        "bb29abeba3181dc0611789ae1df97c0601727aea"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Feb 25 19:04:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 19:04:13 2026"
      },
      "message": "[wasm-objdump] Fix missing error on bad opcode (#2696)\n\nIn binary-reader-objdump were we suppressing all error except those in\npre-pass, in order to avoid reporting them mulitple time.\n\nHowever, the pre-pass is run with `skip_function_bodies` so opcode error\nare not shown in that pass."
    },
    {
      "commit": "bb29abeba3181dc0611789ae1df97c0601727aea",
      "tree": "a5c7a9ec1fd07399447530b9dbcb1c0a81d5811e",
      "parents": [
        "b8d1aa82e66aba15cebe8265d393602665d11e5c"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Wed Feb 25 18:25:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 18:25:01 2026"
      },
      "message": "Fix incorrect parameter index in WASI fd_read (#2700)\n\nFix a copy-paste bug in the WASI `fd_read` implementation where\n`params[2]` was used for both `iovcnt` and `out_ptr`.\n"
    },
    {
      "commit": "b8d1aa82e66aba15cebe8265d393602665d11e5c",
      "tree": "fec8e4798146ffcd2f4fe87564b54bfee9d91933",
      "parents": [
        "6ca912cf16345af74cb97506a8ceadfa54e428f4"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Wed Feb 25 18:00:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 25 18:00:37 2026"
      },
      "message": "Fix wrong iterator variable in InterpDropKeep ref tracking (#2702)\n\nFix a bug in the `InterpDropKeep` handler in `src/interp/interp.cc`\nwhere the \"find dropped refs\" loop checked `*iter` instead of\n`*drop_iter`"
    },
    {
      "commit": "6ca912cf16345af74cb97506a8ceadfa54e428f4",
      "tree": "3c463ce4546c28b35ebe801f39cdd47670905cf1",
      "parents": [
        "1298485498c1163e48ad11433b77a545f4b66067"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Fri Feb 13 16:52:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 16:52:56 2026"
      },
      "message": "Fix integer overflow in section and subsection size checks (#2694)\n\n"
    },
    {
      "commit": "1298485498c1163e48ad11433b77a545f4b66067",
      "tree": "65ae1c7bd8d00c277a5fc83bb97a7897f5a78c08",
      "parents": [
        "d09cffc7835de4d5f8647339e3e92a53d7124617"
      ],
      "author": {
        "name": "Yi Liu",
        "email": "yi@quantstamp.com",
        "time": "Fri Feb 13 01:11:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 13 01:11:38 2026"
      },
      "message": "Add bounds check for function body size in binary reader (#2693)\n\n"
    },
    {
      "commit": "d09cffc7835de4d5f8647339e3e92a53d7124617",
      "tree": "165568ac9d0b83f850fae2d5cddceb9ace9ac393",
      "parents": [
        "bad0cc87586fa6e81cf7649b1a75e16f27590315"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Feb 11 01:01:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Feb 11 01:01:51 2026"
      },
      "message": "Update gtest from release-1.10.0 -\u003e release-1.12.0. NFC (#2687)\n\nOn my machine this fixes the following error:\n\n```\nIn file included from /usr/local/google/home/sbc/dev/wasm/wabt/third_party/gtest/googletest/src/gtest-all.cc:42:\n/usr/local/google/home/sbc/dev/wasm/wabt/third_party/gtest/googletest/src/gtest-death-test.cc:1385:26: error: unknown type name \u0027uintptr_t\u0027; did you mean \u0027intptr_t\u0027?\n 1385 |         reinterpret_cast\u003cuintptr_t\u003e(stack_top) % kMaxStackAlignment \u003d\u003d 0);\n      |                          ^~~~~~~~~\n      |                          intptr_t\n/usr/local/google/home/sbc/dev/wasm/wabt/third_party/gtest/googletest/src/gtest-death-test.cc:308:38: note: expanded from macro \u0027GTEST_DEATH_TEST_CHECK_\u0027\n  308 |     if (!::testing::internal::IsTrue(expression)) { \\\n      |                                      ^\n/usr/include/unistd.h:267:20: note: \u0027intptr_t\u0027 declared here\n  267 | typedef __intptr_t intptr_t;\n      |                    ^\n1 error generated.\n[37/40] Building CXX object CMakeFiles/wabt-unittests.dir/src/test-interp.cc.o\n```"
    },
    {
      "commit": "bad0cc87586fa6e81cf7649b1a75e16f27590315",
      "tree": "c4d60461287f9dbf76c1427b6f861fc406492ded",
      "parents": [
        "e9affb42ca481d2d0d4e71d93079649eaa4c47af"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jan 21 20:53:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 21 20:53:11 2026"
      },
      "message": "Add initial support for compact import section. NFC (#2685)\n\nSee https://github.com/WebAssembly/compact-import-section\n\nFor this initial commit I\u0027ve just added a single simple test in form of\ntest/binary/compact-imports.txt. Once we update the `testsuite` repo we\ncan pull in the official tests."
    },
    {
      "commit": "e9affb42ca481d2d0d4e71d93079649eaa4c47af",
      "tree": "8804e806d82f7e35b8662e61bad544d56fea91d1",
      "parents": [
        "42a0e4074c1cf1204173bb4c5df5b1a57836cc1c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jan 20 20:57:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 20 20:57:47 2026"
      },
      "message": "[binary-reader] Re-use ReadExternalKind for import as well as exports. NFC (#2684)\n\nAnother refactor to prepare for compact imports.\n\nI don\u0027t feel strongly about `malformed import kind` vs `invalid import\nexternal kind` but we should probably be consistent between imports and\nexports."
    },
    {
      "commit": "42a0e4074c1cf1204173bb4c5df5b1a57836cc1c",
      "tree": "f014b8dff4e833b511f68e0915a57a722fc086b9",
      "parents": [
        "9ffc939203ec4410f339edf457f6ceb1359ab75d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Jan 17 01:29:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jan 17 01:29:53 2026"
      },
      "message": "[binary-reader] Validate import type earlier. NFC (#2683)\n\nMinor cleanup/refactor in preparation of compact imports."
    },
    {
      "commit": "9ffc939203ec4410f339edf457f6ceb1359ab75d",
      "tree": "b75ef81784f942ba75acdd5a0ea611de6a4deff4",
      "parents": [
        "0f5ba6f19462d754643ff3fcbcf9dce212195d37"
      ],
      "author": {
        "name": "James Ring",
        "email": "sjr@jdns.org",
        "time": "Wed Jan 14 01:06:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jan 14 01:06:49 2026"
      },
      "message": "wast-parser: make IsPowerOfTwo support memory64 addresses (#2681)\n\n"
    },
    {
      "commit": "0f5ba6f19462d754643ff3fcbcf9dce212195d37",
      "tree": "682479fbfab10261ab4e0add49f9dcbcbb9f3176",
      "parents": [
        "ade2a411dba6dd1f18ed261fed43cab94fd40a49"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "hzmester@freemail.hu",
        "time": "Mon Nov 24 21:58:29 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 24 21:58:29 2025"
      },
      "message": "Save local set data in EndTryTable (#2673)\n\nI have checked with `gdb` that `OnEnd` is really called. I hope I don\u0027t\nmake more mistakes. I have also added the test case without\n`unreachable`, since the `unreachable` should not affect the bug,\nalthough it might trigger future bugs, so both should be present."
    },
    {
      "commit": "ade2a411dba6dd1f18ed261fed43cab94fd40a49",
      "tree": "e686ff3c1d2003c156df29821069ec175e4fa7b8",
      "parents": [
        "deb758e712f62edbc9be90096cd92a75b5006fb6"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "hzmester@freemail.hu",
        "time": "Sun Nov 23 00:27:48 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 23 00:27:48 2025"
      },
      "message": "Fix reference tracking in SharedValidator (#2672)\n\nClear \"reference is set\" bitset and hasmap in BeginFunctionBody.\nFurtermore support try_tables.\n\nFixes: #2670"
    },
    {
      "commit": "deb758e712f62edbc9be90096cd92a75b5006fb6",
      "tree": "cee78311181e673ff216a633987e716126e89944",
      "parents": [
        "d8184ba916dfe99fa5df91cf5b4b0b8df355a555"
      ],
      "author": {
        "name": "William Furr",
        "email": "519506+wffurr@users.noreply.github.com",
        "time": "Tue Nov 18 16:47:48 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 18 16:47:48 2025"
      },
      "message": "Fix use of uninitialized value in WastParser::ParseSimdV128Const. (#2668)\n\nFound this from msan.  See b/461044733."
    },
    {
      "commit": "d8184ba916dfe99fa5df91cf5b4b0b8df355a555",
      "tree": "859707d8108b087e0b9e9179e05d9dd759f0041a",
      "parents": [
        "8be9a01b3d8679d878d14dc4721ab29ebc1085f4"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "hzmester@freemail.hu",
        "time": "Sun Nov 16 03:59:15 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 16 03:59:15 2025"
      },
      "message": "Code improvements for call ref and br_on_[non_]null (#2663)\n\nThis is just a small set of changes which should follow #2567."
    },
    {
      "commit": "8be9a01b3d8679d878d14dc4721ab29ebc1085f4",
      "tree": "4978b0ff2c7b9a17cca6dea02e225acd3e8ecd8d",
      "parents": [
        "ed94ed771c73189d414c6dcb7d74b60a5198ded2"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "hzmester@freemail.hu",
        "time": "Fri Nov 14 16:24:17 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 14 16:24:17 2025"
      },
      "message": "Support table initializer expressions; completes function references support (#2593)\n\nAnother large patch on the top of the other two. Now there are 3-4000\nlines of new code is waiting for review, and it looks like the end is\nstill far.\n\nThe painful part so far:\n\nhttps://webassembly.github.io/function-references/core/binary/modules.html#element-section\n\nSince type 0-3 is reserved for `(ref func)`, all `(elem ... funcref\n...)` must be encoded with 4-7, which increase binary size. This affect\nseveral tests, and probably real word programs :(\n\nThere are spec tests to check this behavior."
    },
    {
      "commit": "ed94ed771c73189d414c6dcb7d74b60a5198ded2",
      "tree": "2853d78f136790881a8e6e9b1e47763c320afda9",
      "parents": [
        "ee879620eb7617319ca2915342469ee35d19ca28"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg.u-szeged@partner.samsung.com",
        "time": "Sun Nov 09 05:18:59 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 09 05:18:59 2025"
      },
      "message": "Implement return_call_ref, ref.as_non_null, br_on_[non_]null instructions (#2567)\n\nFollowup to #2562\n\nAnother 1000 lines addition. Depends on the previous work. Currently\nimplements 3 opcodes, but I might add the remaining opcode\n(return_call_ref)."
    },
    {
      "commit": "ee879620eb7617319ca2915342469ee35d19ca28",
      "tree": "546b663414ed0ca364eaf2830bc78d2989242693",
      "parents": [
        "d5a9913376fa71b9d8a09eb82ae1edff7c6b75f0"
      ],
      "author": {
        "name": "Zoltan Herczeg",
        "email": "zherczeg.u-szeged@partner.samsung.com",
        "time": "Fri Nov 07 19:58:02 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 07 19:58:02 2025"
      },
      "message": "Add support for (ref ...) / (ref null ...) constructs (#2562)\n\nThis large patch adds function references support for those parts of the\nwabt library, which already present in the code. The current code is\ndesigned for an older (outdated) variant of the function references\nproposal.\n\nKey changes:\n- Var variables can optionally store type data. This way there is no\nneed for a Var/Type field pair in many cases.\n- CallRef now needs to explicitly provide its reference type (no auto\ndetection)\n- Tracking local reference initialization (non nullable refs must be set\nbefore using them)\n- Supporting type equality comparisons in the validator and in the\ninterpreter\n- Adds a code for reading/writing 33 bit integers (leb format)\n- Remove EndTypeSection in shared validator, types can be validated\nearlier\n- Improve named reference resolving in the text parser\n\nCo-authored-by: Zoltan Herczeg \u003chzmester@freemail.hu\u003e"
    },
    {
      "commit": "d5a9913376fa71b9d8a09eb82ae1edff7c6b75f0",
      "tree": "f7ec9eae4de69efbdc8d132cf5445a917a18025a",
      "parents": [
        "d325f48ea5630db5b21f1c1591dad866f0104816"
      ],
      "author": {
        "name": "KKiiim",
        "email": "jerryfoooster@gmail.com",
        "time": "Fri Nov 07 18:20:41 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 07 18:20:41 2025"
      },
      "message": "Lower the Ubuntu version for the release (#2662)\n\n"
    },
    {
      "commit": "d325f48ea5630db5b21f1c1591dad866f0104816",
      "tree": "4f246cf7b64df5e2a3d99db764f63ce3de587e6b",
      "parents": [
        "ad75c5edcdff96d73c245b57fbc07607aaca9f95"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Nov 04 22:54:28 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 04 22:54:28 2025"
      },
      "message": "Remove macos-13 from CI. NFC (#2661)\n\nGitHub are removing support:\nhttps://github.com/actions/runner-images/issues/13046"
    },
    {
      "commit": "ad75c5edcdff96d73c245b57fbc07607aaca9f95",
      "tree": "2821b45401fefdd2ee11729fc7c5dbf84a11aade",
      "parents": [
        "75b10798542047d85feb5528f28950733182c7f2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Nov 04 19:47:45 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 04 19:47:45 2025"
      },
      "message": "Bump version to 1.0.39 (#2660)\n\n"
    },
    {
      "commit": "75b10798542047d85feb5528f28950733182c7f2",
      "tree": "8bba152a56ddb175bafd8edaad8ac9932db67bb5",
      "parents": [
        "34eb922c95c298d46630512dc205d605a1f29a42"
      ],
      "author": {
        "name": "KKiiim",
        "email": "jerryfoooster@gmail.com",
        "time": "Tue Nov 04 16:38:54 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 04 16:38:54 2025"
      },
      "message": "Add arm64 linux release binaries. NFC (#2650)\n\nAlso, standardize the naming of the downloadable assets to use `arm64` and `x64` for the names of the two architectures we currently support."
    },
    {
      "commit": "34eb922c95c298d46630512dc205d605a1f29a42",
      "tree": "e17cefaeaa7c4d25eb43ba05b586a65b8a33882a",
      "parents": [
        "4a3ef847fed9a8fa07f0ca4f141eaec0770f42e7"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Nov 03 22:27:55 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 03 22:27:55 2025"
      },
      "message": "CMakeLists.txt: Update version to 1.0.38 (#2659)\n\nI should have done this before tagging he release but forgot.\n\nWe are also lacking some binaries for 1.0.38 so I think we should tag\n1.0.39 soon a call 1.0.38 a failures.\n\nSee #2658"
    },
    {
      "commit": "4a3ef847fed9a8fa07f0ca4f141eaec0770f42e7",
      "tree": "a7032964ac0000cfd0a43f3d3657a0625154d3f9",
      "parents": [
        "74cc83c1c8b1d87f9461acb29be086ba7bfb30b7"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Nov 03 01:44:29 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 03 01:44:29 2025"
      },
      "message": "Temporarily disable s390 CI build (#2656)\n\nSee https://github.com/WebAssembly/wabt/issues/2655"
    },
    {
      "commit": "74cc83c1c8b1d87f9461acb29be086ba7bfb30b7",
      "tree": "9763137c0d5166f055caa6e7b14312f2fa5c6cdc",
      "parents": [
        "236c48dbbcccb3f59123fe57618806472cf72ab0"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sun Nov 02 19:31:12 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 19:31:12 2025"
      },
      "message": "Temporarily disable macos-latest testing.  NFC (#2657)\n\nSwitch to macos-14 rather then macos-latest until we can figure out why\nsome wasm2c tests are failing there #2654."
    },
    {
      "commit": "236c48dbbcccb3f59123fe57618806472cf72ab0",
      "tree": "5a2fb0318c47950e94e9d858332818fdaafc5b3a",
      "parents": [
        "9cf4a0b6c1e52d337dbdc0769b23e3c9cd6dd6f7"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sun Nov 02 00:49:25 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 00:49:25 2025"
      },
      "message": "[wasm2c] Add more debugging for sigaltstack failures. NFC (#2652)\n\nSome test recently starting failing on the macOS CI runner."
    },
    {
      "commit": "9cf4a0b6c1e52d337dbdc0769b23e3c9cd6dd6f7",
      "tree": "9cbbc81dc8be84312696703faca52a0189e81914",
      "parents": [
        "1f454c3be6cc1ea9963a7e7668a5301e628d8086"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sun Nov 02 00:12:52 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Nov 02 00:12:52 2025"
      },
      "message": "Update flake8 version. NFC (#2653)\n\n"
    },
    {
      "commit": "1f454c3be6cc1ea9963a7e7668a5301e628d8086",
      "tree": "c7b4096824acdc0d86c3a6ec74eeaa0e1efa57d9",
      "parents": [
        "f571f444ebf1d06521408b51f2c6ec2ca3c2f818"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 30 19:15:05 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 30 19:15:05 2025"
      },
      "message": "[CI] Disable `fail-fast` for release builder (#2651)\n\nWithout this, the failure of one release builder will cancel any other\noutstanding ones. This setting defaults to `true`."
    },
    {
      "commit": "f571f444ebf1d06521408b51f2c6ec2ca3c2f818",
      "tree": "0b2a90768cd1c7af9e1faf0fd651b3f8fe4ea0a1",
      "parents": [
        "1644c9255e04f7ceccfae632b20fe37434c260f7"
      ],
      "author": {
        "name": "qouteall",
        "email": "qouteall@163.com",
        "time": "Tue Sep 23 14:07:58 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 23 14:07:58 2025"
      },
      "message": "Update HTML doc (#2644)\n\nPreviously I found that the web doc of wasm2wat doesn\u0027t mention\n`--enable-annotations`. Previous PR\nhttps://github.com/WebAssembly/wabt/pull/2642\n\nAfter knowing that the HTML docs are auto-generated, I run\n`generate-html-docs.sh`. Now it includes `--enable-annotations` option\nbecause `wasm2wat.1` already includes it.\n\nThat also caused many other changes, probably caused by HTML doc not\nupdated for long time. I opened these html and they looks fine."
    },
    {
      "commit": "1644c9255e04f7ceccfae632b20fe37434c260f7",
      "tree": "1ff96b42739438d0798474741ab52f4ba56fc016",
      "parents": [
        "c5f3b04348df202787e62b4faebcd6d6ca5ff0fd"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 19 18:28:01 2025"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 19 18:28:01 2025"
      },
      "message": "Fix `wat2wasm -o -` for writing to stdout. NFC (#2638)\n\nFixes: #2637"
    }
  ],
  "next": "c5f3b04348df202787e62b4faebcd6d6ca5ff0fd"
}
