)]}'
{
  "log": [
    {
      "commit": "193792f6e900b36603b300266e4481c30bc0a31e",
      "tree": "47b82105695e7fea0e9e093d594f8c397919e689",
      "parents": [
        "c2a1cc8d19b601191f326e3bc749a9003fe354dd"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Thu Jun 11 21:52:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 21:52:41 2026"
      },
      "message": "Fix type merging for unknown effects (#8833)\n\nFixes #8831. See the incorrect optimization described in that issue."
    },
    {
      "commit": "c2a1cc8d19b601191f326e3bc749a9003fe354dd",
      "tree": "53fff043523dd8deba7e99b49d2a017c899bece6",
      "parents": [
        "2fe6f0458eccdfaf2a0e292d723e066866a760e0"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu Jun 11 17:41:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 17:41:55 2026"
      },
      "message": "[wasm-split] Scan trapping globals\u0027 initailizer (#8830)\n\nThis basically reverts #8790, which had unforseen consequences. We\ndidn\u0027t scan trapping globals\u0027 initializer because computing transitive\nglobals happened before adding those trapping globals to the primary\nmodule."
    },
    {
      "commit": "2fe6f0458eccdfaf2a0e292d723e066866a760e0",
      "tree": "85589490fe732995a4ca7794bba16f7c32850cfa",
      "parents": [
        "7c5e27c9f1ebd86f81cb8ece6a2c46748e8a04da"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu Jun 11 01:02:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 11 01:02:40 2026"
      },
      "message": "[wasm-split] Take functions out of shareImportableItems (NFC) (#8829)\n\nThis takes `getUsedNames`, which got blown out of proportion, out of\n`shareImportableItems` and renames it to `scanModule`, and put it in a\nnew function `computeUsedNames`. This also takes some routines out of\n`scanModule` and put it in `computeUsedNames`.\n\nThe rationale is twofold:\n- `shareImportableItems` is too blown up and not easy to read.\n- Before I tried to do all things necessary to figure out where each\nmodule itesm is used within `getUsedNames` in order to make other things\ntidier, but this is just untenable going forward."
    },
    {
      "commit": "7c5e27c9f1ebd86f81cb8ece6a2c46748e8a04da",
      "tree": "f128385a079a40c6c83e90c87c992c4f1205ee2e",
      "parents": [
        "2e5bdfc693b183a8716845e4eb1e22eadf18f2ca"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jun 10 23:49:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 23:49:09 2026"
      },
      "message": "Add initial (binary only) support for compact imports proposal. NFC. (#8226)\n\nSee https://github.com/WebAssembly/compact-import-section\n\nThis change only adds binary support. Luckily the upstream tests are\ndevided in two seperate\nfiles `binary-compact-imports.wast` and `compact-imports.wast` so this\nchange only imports\none of them."
    },
    {
      "commit": "2e5bdfc693b183a8716845e4eb1e22eadf18f2ca",
      "tree": "90169bdbada8f135b8043b69ca9bcf50d35e3c68",
      "parents": [
        "f143d6652f8d6dd3b5a45ef49e36528115516633"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Wed Jun 10 22:57:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 22:57:17 2026"
      },
      "message": "[wasm-split] Support Table::init (#8818)\n\nThis adds support for `Table::init` expressions."
    },
    {
      "commit": "f143d6652f8d6dd3b5a45ef49e36528115516633",
      "tree": "8c9d05253167c8b32a6ed80150d829201fa66b0f",
      "parents": [
        "e013264c0b62b6ec7862ec09c9ffdf81916b1427"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jun 10 21:17:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 21:17:09 2026"
      },
      "message": "Refactor WasmBinaryReader::readImports to use helper methods. NFC. (#8825)\n\nThis change is in preparation for compact imports in #8226."
    },
    {
      "commit": "e013264c0b62b6ec7862ec09c9ffdf81916b1427",
      "tree": "74c75aa3ca252f3b020c1a034d1fda9ff750015f",
      "parents": [
        "62c74d726922079d4e4aba4d00b4e6979c3c00f2"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Wed Jun 10 17:57:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 17:57:23 2026"
      },
      "message": "Fix effects for inexactly imported functions (#8823)\n\nFollowup to\nhttps://github.com/WebAssembly/binaryen/pull/8807#pullrequestreview-4440513943.\nWhen a function is imported inexactly, it may be downcasted to any of\nits subtypes. So a call_ref to $sub needs to include effects from an\nimport of type $super. This isn\u0027t needed for ref.func on a defined\n(non-imported) function because we know its exact type in that case, and\nditto for exact imports.\n\nPart of #8615."
    },
    {
      "commit": "62c74d726922079d4e4aba4d00b4e6979c3c00f2",
      "tree": "17d347e5384f527003191eacb8b6008511308e66",
      "parents": [
        "3c25487214600a965e6d5134252efc55b7980000"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Wed Jun 10 00:01:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 10 00:01:00 2026"
      },
      "message": "NFC: Take a `const Module` for `iter...` functions (#8822)\n\nEven if the visitor takes a mutable pointer param e.g. `Function*`, it\nstill works since the pointers aren\u0027t a member of a the `Module` itself\nbut stored in a separate unique_ptr.\n\nAlso use a forwarding reference for `visitor` to avoid copies.\n\nFor use in #8823."
    },
    {
      "commit": "3c25487214600a965e6d5134252efc55b7980000",
      "tree": "e174aa8c74a08dcbfe22bb4611390a8322fe220b",
      "parents": [
        "598d0b1577f97eb368091451b60ed9876b6f7e71"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Tue Jun 09 22:39:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 22:39:06 2026"
      },
      "message": "Intrinsics: Add @binaryen.inline, parallel to @metadata.code.inline (#8820)\n\nThe existing standardized annotation is for VMs. This annotation is for\ntoolchains.\n\nWe already have such annotations for never-inline, but not using an\nintrinsic, and also allowing partial-inlining to be set. This uses the\nmodern annotations framework for it. We can deprecate the old form after we\nadd a partial-inlining form in the modern way.\n\nFor reference the old forms are here:\n\nhttps://github.com/WebAssembly/binaryen/blob/598d0b1577f97eb368091451b60ed9876b6f7e71/src/wasm.h#L2474-L2477\n\nFixes #7972"
    },
    {
      "commit": "598d0b1577f97eb368091451b60ed9876b6f7e71",
      "tree": "4c177a6028f7eb28ae57a95f6ea166c23eeee1c4",
      "parents": [
        "2227ff02350ba741a73a3b29c7d9e7f9a2fb79c2"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Tue Jun 09 18:45:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 18:45:44 2026"
      },
      "message": "NFC: Remove obsolete TODO (#8819)\n\nThe TODO is already resolved:\nhttps://github.com/WebAssembly/binaryen/pull/8807#issuecomment-4652950529."
    },
    {
      "commit": "2227ff02350ba741a73a3b29c7d9e7f9a2fb79c2",
      "tree": "6624081accb315657770d17a306b1d0fbdee585b",
      "parents": [
        "8ba5b2e6eb485574f7a86e942ce0ca0072fbe778"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue Jun 09 15:28:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 15:28:54 2026"
      },
      "message": "Fix crash in optimizeSelect with non-concrete arm types (#8817)\n\nAvoid creating a scratch local of non-concrete type (like unreachable)\nwhen we cannot reorder. We generally do not optimize unreachable selects\nin the first place, but it is still possible that we observe unreachable\narms when optimizing because other optimizations might have made the\narms unreachable.\n\nTAG\u003dagy"
    },
    {
      "commit": "8ba5b2e6eb485574f7a86e942ce0ca0072fbe778",
      "tree": "91eb9888e5c951f9a8eec5c0791926ca4e184999",
      "parents": [
        "cacc71181118036bd677d937bd6fb5cfdc1bee4c"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Mon Jun 08 23:36:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 23:36:26 2026"
      },
      "message": "[wasm-split] Move some code (NFC) (#8815)\n\nThis just moves some code to make future diff tidier. This makes\n`walkSegments` a lambda function within `shareImportableItems` because\nit is only used within that function, and this adds the dispatch table\nand segments to the primary\u0027s used list within `getUsedNames` rather\nthan outside."
    },
    {
      "commit": "cacc71181118036bd677d937bd6fb5cfdc1bee4c",
      "tree": "83469b1a35006168e824355881fb7c5d55e023b7",
      "parents": [
        "dfebc6a38c918f8fb7dd4aecf068a4a61c94fc7c"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Mon Jun 08 23:32:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 23:32:46 2026"
      },
      "message": "Add std::inplace_vector polyfill from c++26 [NFC] (#8814)\n\nHeader is basically our SmallVector, modified to remove the dynamic\nallocation."
    },
    {
      "commit": "dfebc6a38c918f8fb7dd4aecf068a4a61c94fc7c",
      "tree": "3a71ae9ddbf9be83f75f31cbb1d0286aba9cf02e",
      "parents": [
        "bfe40fa4c1f969e4014dd9e34105f7018541bbfc"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Mon Jun 08 21:41:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 21:41:36 2026"
      },
      "message": "[wasm-split] Remove unused module elements (#8813)\n\nWe currently just leave unused module items in the primary module,\nexcept for globals (#8505). This removes other unused module items too,\nbecause it is simpler for upcoming PRs.\n\nWe currently pin all segments in the primary module, but future PRs can\nchange that, in which case segments\u0027 usage can be dependent on tables,\nin which case unused tables can become tricky as in the case of globals.\nThis PR just removes all unused module items for simplicity. This\ndoesn\u0027t mean this runs a comprehensive fixed-point analysis like\nRemoveUnusedModuleElements pass; it just drops elements that are never\nreferenced anywhere in any modules when exporting them.\n\nUpdate some tests so that tables are \"used\" in not droped."
    },
    {
      "commit": "bfe40fa4c1f969e4014dd9e34105f7018541bbfc",
      "tree": "735c8de6f299161825b375e6d31ecc2eceef3ceb",
      "parents": [
        "06000bf0ee350cce1f14657a8978b0a88a35f408"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Mon Jun 08 21:00:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 21:00:31 2026"
      },
      "message": "GUFA: Fix string.encode (#8812)\n\nThis writes to an array. Without noticing the write, we might think it\ncontains the wrong thing."
    },
    {
      "commit": "06000bf0ee350cce1f14657a8978b0a88a35f408",
      "tree": "4209c0b49f75ac9f96e92eac00c185f0eae74d71",
      "parents": [
        "c800b9dd18ecaf8f11bc1382ad0f54d8b8f0f626"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Sat Jun 06 00:56:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 00:56:58 2026"
      },
      "message": "Use deep effects in areConsecutiveInputsEqual (#8808)\n\nAlthough it is true that side effects in the children of the LHS input\naffect both the LHS and RHS inputs equally, we did not properly account\nfor the fact that the same effects are executed again as part of the RHS\nand can change its value."
    },
    {
      "commit": "c800b9dd18ecaf8f11bc1382ad0f54d8b8f0f626",
      "tree": "58a268abbd175a20762304802bc79d18bcfb8875",
      "parents": [
        "1993b75fef962fc34f26b795ec459afaab228c7f"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Sat Jun 06 00:15:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 00:15:32 2026"
      },
      "message": "Improve optimization of select between same values (#8806)\n\nWe previously optimized selects between the same value only when the\nifTrue and ifFalse values had identical structure and no side effects\nand the condition could be dropped or reordered with the value.\n\nMake this more robust by using the `areConsecutiveInputs...` utilities\nto check whether the arms have equal values and whether they are\nfoldable. The old code avoided introducing blocks to keep code size\ndown, but the blocks it would introduce are not named and will be elided\nin the output, so introducing blocks is not a problem. The old code also\navoided introducing a scratch local, but if a scratch local is\nnecessary, it is because the arms have some side effects that would\nprevent reordering. In that case it is more likely to be beneficial to\nexecute only one arm, so go ahead and use scratch locals in the case\nwhere the second arm can be folded away."
    },
    {
      "commit": "1993b75fef962fc34f26b795ec459afaab228c7f",
      "tree": "c3fd34e6bcb9d0775aa0b49d0e72e73c974f3786",
      "parents": [
        "32a8e1bdf53d0d49210788f9a6ca08b6b4f3f999"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Sat Jun 06 00:14:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jun 06 00:14:29 2026"
      },
      "message": "Skip idempotent test in fuzzing.py (#8809)\n\nThe fuzzer cannot preserve idempotency, so it does not support initial\ncontents with idempotency annotations."
    },
    {
      "commit": "32a8e1bdf53d0d49210788f9a6ca08b6b4f3f999",
      "tree": "eb708a5897ea2808d6dc1a8b5dd56d509a6a769a",
      "parents": [
        "f58a1962519383fd16e3813c51897d0aead9afed"
      ],
      "author": {
        "name": "Chris Harvey",
        "email": "1362083+chharvey@users.noreply.github.com",
        "time": "Fri Jun 05 23:00:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 23:00:17 2026"
      },
      "message": "[C/JS API] Add BinaryenExpressionAllocateAndWriteText (#8717)\n\nAdds a function for returning a string representation of an expression\nin s-expression format.\n\nfixes #8716"
    },
    {
      "commit": "f58a1962519383fd16e3813c51897d0aead9afed",
      "tree": "006625dd44398c7631851fc9b71d4e23eea3c643",
      "parents": [
        "fb29c73730a81080ec23636d71860e2565d5919c"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri Jun 05 17:49:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:49:19 2026"
      },
      "message": "Improve ref.eq optimization (#8805)\n\nOptimizeInstructions would previously optimize ref.eq by checking if its\noperands were equal and foldable. If so, it would be replaced with the\ndropped operands (if they had effects that needed preserving) followed\nby a constant 1. Improve this by dropping only one of the operands; if\nthey are equal and foldable, then there is no need to keep both around.\nWhen the operands do not have effects, this leaves more work for Vacuum\nthan the old optimization did, but that\u0027s fine.\n\nAlso newly optimize when the operands are equal but not foldable. In\nthis case they can still be dropped and followed by a constant 1.\n\nFinally, replace the EffectAnalyzer `invalidates` call in\n`areConsecutiveInputsEqualAndFoldable` with an `orderedBefore` call. Add\ntests using release/acquire operations to show that the direction of the\neffect comparison is correct."
    },
    {
      "commit": "fb29c73730a81080ec23636d71860e2565d5919c",
      "tree": "b2cdce3c23d4750a4cc23306cf464ac65477f562",
      "parents": [
        "420e74e6f91121234dbfeb91810a98ba28bf6998"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri Jun 05 17:44:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:44:23 2026"
      },
      "message": "Fix areConsecutiveInputsEqual for idempotent calls (#8804)\n\nOptimizeInstruction\u0027s `areConsecutiveInputsEqual` function finds the\neffects that are executed in between the left-hand and right-hand\nexpressions and checks that they cannot affect the value of the\nright-hand expression or its operands. However, it did not previously\nhandle the case where the left-hand expression itself changes the value\nof the operands flowing into the right-hand expression. This can happen\nin the case of calls to idempotent functions, where the first call\nchanges a global that is passed as an argument to the second call."
    },
    {
      "commit": "420e74e6f91121234dbfeb91810a98ba28bf6998",
      "tree": "d9771a103c090f1be033b3f74bb40f6e79bbcafc",
      "parents": [
        "a568a144578777b9aea4433c17183067788e1850"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Fri Jun 05 17:15:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:15:50 2026"
      },
      "message": "Fuzz with start functions (#8736)\n\n* Before we always removed the start, now we randomly may keep or replace it.\n\n* Handle instantiation errors (traps and exceptions) in the various fuzzers.\n\n* Remove the start function in fuzzers that break on it. E.g. Merge merges two\n  modules and checks that the combined exports are as expected, but the order of\n  start execution is confusing (the second module\u0027s start executes before the\n  first module\u0027s exports). This is done using a new test-only RemoveStart pass.\n\n* Standardize the instantiation error in fuzz_shell.js, which used quit\n  (that not all VMs support).\n\n* Handle errors during the start function in our interpreter. We must track\n  whether we are in the start, then error on attempts to use an export (as in\n  JS, no exports exist at this time)."
    },
    {
      "commit": "a568a144578777b9aea4433c17183067788e1850",
      "tree": "9287077efacb80b48f1da07f88dcbfdd0abd6f19",
      "parents": [
        "213840526620f66cf478fc436c17f0c98e646311"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri Jun 05 17:04:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 17:04:44 2026"
      },
      "message": "[NFC] Using orderedBefore in skipNonNullCast (#8803)\n\nWhen OptimizeInstructions skips explicit `ref.as_non_null` instructions\nbecause they are flowing into a parent expression that will already do a\nnull check, it has to check that moving the trap effect past any\nsubsequent children of the parent is allowed. Update the code to use\n`orderedBefore` instead of `invalidates`. Also make this change in\nanother place that removes a `ref.as_non_null` in the same way.\n\nThis is not a functional change because traps are ordered symmetrically\nwith other effects; a trap can be moved forward past another effect iff\nit can be moved backward past that other effect. The code therefore has\nthe same behavior whether it uses `orderedBefore`, `orderedAfter`, or\n`invalidates` here. `orderedBefore` makes the most sense given then\ncontext, though."
    },
    {
      "commit": "213840526620f66cf478fc436c17f0c98e646311",
      "tree": "7c20a535eaa3d15c361fa9c3dad60a6a7da57300",
      "parents": [
        "9e3b947bef886553fa9e7da6d683110d60d91f54"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Fri Jun 05 16:11:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jun 05 16:11:55 2026"
      },
      "message": "Link wasm-wasm directly in the fuzzer (#8794)\n\nThis avoids passing JSPI-wrapped exports from one wasm module as the\nimports to another. Without this, the stack traces and erroring behavior become\nvery confusing.\n\nLeaving full investigation to the JSPI behavior here for later, this seems\nsafe to land to unblock current work on the fuzzer (#8736, start function\nfuzzing)."
    },
    {
      "commit": "9e3b947bef886553fa9e7da6d683110d60d91f54",
      "tree": "c2d0cd8983a1ba364bc59a45be2523e611e0f7ff",
      "parents": [
        "f390f3bb3d04359f01daec764e64f9032df246fc"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu Jun 04 22:35:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 22:35:06 2026"
      },
      "message": "Revert \"Fix open world public types\" (#8802)\n\nReverts WebAssembly/binaryen#8792.\n\nThis change broke the fuzzer and real users due to an interaction\nbetween DAE optimizing private, non-referenced functions by introducing\nexact references in the parameters and results and MinimizeRecGroups\nexpecting all public types (which now included the types of private,\nnon-referenced functions) to be distinct, taking features into account.\n\nRevert this change while we fix it to be more precise about which\nfunction types are public and to make sure the fuzzer is otherwise happy\nwith it."
    },
    {
      "commit": "f390f3bb3d04359f01daec764e64f9032df246fc",
      "tree": "71bb6113f943333437d997936733591049242417",
      "parents": [
        "af7a13c4cb57b554dec0880dff3142d1fe490b97"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu Jun 04 15:52:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 04 15:52:31 2026"
      },
      "message": "FuzzAgainstJS: Fix tuple size when nothing was noted (#8801)\n\nBefore, if we had a tuple with nothing noted, we could refine it to a\nsingle value, i.e., breaking the arity. Instead, keep the arity\nunchanged from before."
    },
    {
      "commit": "af7a13c4cb57b554dec0880dff3142d1fe490b97",
      "tree": "ed245e4facb5a954d15d4677b58415c5be6b4659",
      "parents": [
        "5e0ad2cc504f49777f4906e79359964e1d3ad505"
      ],
      "author": {
        "name": "Roberto Lublinerman",
        "email": "rluble@google.com",
        "time": "Wed Jun 03 16:43:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jun 03 16:43:41 2026"
      },
      "message": "j2cl-merge-itables: Fatal abort if optimizable types are public (#8800)\n\nAdds a sanity check to abort if any of the Java classes end up being\npublic."
    },
    {
      "commit": "5e0ad2cc504f49777f4906e79359964e1d3ad505",
      "tree": "f6ce593b8732c525331bc36eb65fd546ccd79be9",
      "parents": [
        "6bb9fe22ad64df1752a79c6784bccd233a4c9117"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Tue Jun 02 19:38:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 19:38:59 2026"
      },
      "message": "Fix ChildTyper on unreachable and shared ArrayCmpxchg (#8797)"
    },
    {
      "commit": "6bb9fe22ad64df1752a79c6784bccd233a4c9117",
      "tree": "673d14f9ac90d2a44c6766418a196b841f6af674",
      "parents": [
        "b9c72894fba2ee5bef8e4002fb176c1917a556ad"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue Jun 02 19:13:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 19:13:36 2026"
      },
      "message": "Fix open world public types (#8792)\n\nIn an open world, we have to assume that the environment may cast any\npublic type down to any of its subtypes and expect that to work before\nand after optimization. We therefore must make public visibility\npropagate to subtypes.\n\nBut we can be more precise than this, because some types are public not\nbecause they can cross the module boundary, but rather because they are\nreachable in the definition of some other type that can cross the module\nboundary. Subtypes of such public types do not need to be public, since\ntheir values will never cross the module boundary. In addition, we do\nnot need to make public the subtypes of types that are exposed only as\nexact references.\n\nAllow Unsubtyping to operate in open-world mode and use it in tests that\nthe visibility propagation works correctly.\n\nFixes #8718."
    },
    {
      "commit": "b9c72894fba2ee5bef8e4002fb176c1917a556ad",
      "tree": "d5bb3867db997920789795cb40be5fbce6cca74b",
      "parents": [
        "a7c09934d169bb3323e87e85d7db0acf4ce2e326"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Tue Jun 02 17:57:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 17:57:28 2026"
      },
      "message": "Account for unaddressed funcs in GlobalEffects (#8644)\n\nPart of #8615. We currently union the effects of all functions of a\ngiven type when computing the effects for indirect calls. Make this more\nprecise by excluding effects of functions that never have their address\ntaken.\n\nContinued from #8628 which was accidentally merged."
    },
    {
      "commit": "a7c09934d169bb3323e87e85d7db0acf4ce2e326",
      "tree": "89e0d822cc9447df497a2b8dc587b3b895e50653",
      "parents": [
        "5c017d1596ee876f98a511a89db83d1492852e3a"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue Jun 02 06:45:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 06:45:28 2026"
      },
      "message": "[wasm-split] Rename active table to dispatch table (NFC) (#8795)\n\nThis renames active table and active segments to dispatch table and\ndispatch segments. I feel \"active segments\" sound confusing because this\ncan read as non-passive segments."
    },
    {
      "commit": "5c017d1596ee876f98a511a89db83d1492852e3a",
      "tree": "a1bba38e784ee1b0495b4417b696a2ac24b63c69",
      "parents": [
        "226787d20cca523fece850f58ada4b87e0af4580"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue Jun 02 06:00:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 02 06:00:32 2026"
      },
      "message": "[wasm-split] Don\u0027t generate trampolines on all active segments (#8796)\n\nWe should skip all active segments in the active table when creating\ntrampolines for indirect references. Currently we only do it for the\nlast active segment, in case there are multiple of them."
    },
    {
      "commit": "226787d20cca523fece850f58ada4b87e0af4580",
      "tree": "4aae9efbf48f849e81dfa3d8b9d297bbdbf9627a",
      "parents": [
        "5d704ad52bc77a258e8fa3f9d34fcc5e8799c1c3"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Mon Jun 01 21:57:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 21:57:39 2026"
      },
      "message": "PrintBoundary: Handle recursive types (#8786)\n\nBefore, we infinitely recursed.\n\nAdd this to fuzzing to find further issues.\n\nDrive-by: fix a `python` to `python3` in a script I just noticed."
    },
    {
      "commit": "5d704ad52bc77a258e8fa3f9d34fcc5e8799c1c3",
      "tree": "0b733f48dfa2ef418bc7b57674648aac8ca9eac1",
      "parents": [
        "806fab60bbdbe87794a13cd18b0efca2a13b854a"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Mon Jun 01 21:00:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 01 21:00:57 2026"
      },
      "message": "Version 130 (#8793)"
    },
    {
      "commit": "806fab60bbdbe87794a13cd18b0efca2a13b854a",
      "tree": "441edc163a40e92473691ac3c7cca06effbc2efc",
      "parents": [
        "8531324a9d2f5c04ae69d769f68c4d5910f28fe1"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Fri May 29 23:38:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 23:38:22 2026"
      },
      "message": "update_lit_tests.py: Do not leak results between modules (#8791)\n\nUse an internal separator when doing `foreach`, i.e., when there are\nmultiple modules."
    },
    {
      "commit": "8531324a9d2f5c04ae69d769f68c4d5910f28fe1",
      "tree": "7b0a6d552a635edf044a6667e26f848338c0c17d",
      "parents": [
        "a6f59c6bc0302eafe3568415b0057d8919ecdfb0"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Fri May 29 05:31:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 29 05:31:29 2026"
      },
      "message": "[wasm-split] Move computeTransitiveGlobals into getUsedNames (NFC) (#8790)\n\nThis doesn\u0027t have to be a separate function outside `getUsedNames`."
    },
    {
      "commit": "a6f59c6bc0302eafe3568415b0057d8919ecdfb0",
      "tree": "12e80c5783877b9f106525479d1bd0dc90a6d4b6",
      "parents": [
        "ec73e2ba8a6cefc3efe1e714333afdf790ffb9d7"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu May 28 21:00:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 21:00:57 2026"
      },
      "message": "Make areConsecutiveInputsEqual more precise (#8783)\n\nCollect the interfering effects specifically from the expressions that\nare evaluated in between the LHS and RHS fallthrough values. The\nprevious code overapproximated this by collecting all effects from the\nLHS and RHS expressions, whether or not the effects were due to\nsubexpressions that would have been evaluated before or after the LHS\nand RHS values. Also use a direction-aware effect ordering check."
    },
    {
      "commit": "ec73e2ba8a6cefc3efe1e714333afdf790ffb9d7",
      "tree": "e035b2f8a8edb176f6e4886407df7e28471daf4b",
      "parents": [
        "ab2d66cf85b4933b1624bc187ab21fdedb441cf6"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Thu May 28 20:51:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:51:09 2026"
      },
      "message": "NFC: Require override keyword (#8789)"
    },
    {
      "commit": "ab2d66cf85b4933b1624bc187ab21fdedb441cf6",
      "tree": "eb7d44a89e94610492fe500cd78c94d05878e9ef",
      "parents": [
        "a72691c422a631f177af86fd929751f4c5847047"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 28 20:50:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 20:50:00 2026"
      },
      "message": "[StackSwitching] Error properly on an unhandled resume during start (#8787)\n\nBefore, we asserted on stale state.\n\nFix the auto-updater script to not crash on such output (an exec\nline before any function). That happens to improve one existing\ntest output."
    },
    {
      "commit": "a72691c422a631f177af86fd929751f4c5847047",
      "tree": "6b3842c28bd0f1088a854970f2213fd83f581686",
      "parents": [
        "513aa1f662009ba743cd2495f3d69f0c32b2d509"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 28 19:41:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 19:41:36 2026"
      },
      "message": "Skip d8 lit tests on windows (#8788)\n\nIt is not clear why v8 is not installed on CI specifically on\nwindows-arm, but apparently it isn\u0027t. As this just affects 4 tests, skip them on\nwindows.\n\nExample error:\n\n\nhttps://github.com/WebAssembly/binaryen/actions/runs/26543251282/job/78189409612\n\n```\nFailed Tests (4):\n  Binaryen lit tests :: d8/fuzz_shell.wast\n  Binaryen lit tests :: d8/fuzz_shell_exceptions.wast\n  Binaryen lit tests :: d8/fuzz_shell_jspi.wast\n  Binaryen lit tests :: d8/fuzz_shell_sleep.wast\n\n```"
    },
    {
      "commit": "513aa1f662009ba743cd2495f3d69f0c32b2d509",
      "tree": "d399cc9aee449f7110b7fc09f9ea3807c3aaec44",
      "parents": [
        "f499c8468541ac0a693898fa5a21b81d49e39ce4"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu May 28 18:24:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 18:24:32 2026"
      },
      "message": "[wasm-split] Fix error printing when func does not exist (#8784)\n\nWhen `func` is null, we can\u0027t query `func-\u003ename`."
    },
    {
      "commit": "f499c8468541ac0a693898fa5a21b81d49e39ce4",
      "tree": "d8d204b6a5a7ae5ff4cd26f1ee9685657a5bc037",
      "parents": [
        "ab25864b0b3b81505074277048196389f78038c4"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu May 28 18:24:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 28 18:24:13 2026"
      },
      "message": "Add isActive/isPassive methods to segments (NFC) (#8782)\n\nCurrently `DataSegment` class has `isPassive` member variable but\n`ElementSegment` doesn\u0027t. `DataSegment`\u0027s `isPassive` variable is\nredundant anyway because we can test whether its `memory` is set, as we\ndo for `ElementSegment`\u0027s `table`.\n\nThis removes `DataSegment::isPassive` variable, and instead adds\n`isPassive()` and `isActive()` methods to both classes and use them\ninstead of things like `if (segment-\u003etable)`.\n\nThis also removes `isPassive` parameter from `makeDataSegment` in\n`Builder`."
    },
    {
      "commit": "ab25864b0b3b81505074277048196389f78038c4",
      "tree": "cc3a6f3549401d6307be03fd644a778d52cf1daf",
      "parents": [
        "ac6c001b75f7ace237e94dcd522cdc6462e768e8"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Wed May 27 22:47:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 22:47:05 2026"
      },
      "message": "Enable fuzzing for wide arithmetic (#8781)\n\nPart of #8544. The V8 implementation is ready now under an experimental\nflag."
    },
    {
      "commit": "ac6c001b75f7ace237e94dcd522cdc6462e768e8",
      "tree": "6ea7b5c347c3148b6ab2c52239e62144d6a6b324",
      "parents": [
        "04adfce58972427b08972ae954449bb514b32766"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Wed May 27 20:16:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 20:16:54 2026"
      },
      "message": "Fuzz wide arithmetic instructions (#8661)\n\nPart of #8544. Continued in #8781.\n\nDrive-by fix: ensure that tuples aren\u0027t generated with a size larger\nthan TUPLE_MAX_SIZE:\n\n```diff\n-  size_t maxElements \u003d 2 + upTo(fuzzParams-\u003eMAX_TUPLE_SIZE - 1);\n+  size_t maxElements \u003d 2 + upTo(fuzzParams-\u003eMAX_TUPLE_SIZE - 2);\n```\n\nAfter increasing the seed file size, the wide arithmetic instructions\n[were\ngenerated](https://github.com/WebAssembly/binaryen/actions/runs/26316945566/job/77478064626)\n(ctrl + f \"wideint\"), but fails in CI due to #8770. For now I leave the\nseed file unchanged without showing that the wide arithmetic\ninstructions are generated in the golden file.\n\nAlso generated a new seed for test/lit/fuzz-import.wast since it was\nfailing after these changes, seemingly due to bad luck (which the test\nfile mentions is a possibility)."
    },
    {
      "commit": "04adfce58972427b08972ae954449bb514b32766",
      "tree": "3ee8eedc762a101e9206722a13b30dc7d8284e8e",
      "parents": [
        "9f2642a28f6d2963a7dbe134dee80cb5163c67e9"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Wed May 27 17:15:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 17:15:58 2026"
      },
      "message": "[wasm-ctor-eval] Do not error on non-constant code in the start function (#8778)\n\nBefore, we did not catch the Nonconstant exception."
    },
    {
      "commit": "9f2642a28f6d2963a7dbe134dee80cb5163c67e9",
      "tree": "e564f7805b340484e8fe380f25a998b1bb64eca3",
      "parents": [
        "83f68e13b2cd22e52a8e8c19b9a48cc11416c99a"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Wed May 27 02:36:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 27 02:36:10 2026"
      },
      "message": "NFC: Simplify test with improved indirect call effects (#8780)\n\nThis was missed after #8625 and #8738. We don\u0027t need the extra\nindirection of a direct call in the test since we\u0027re testing effect\nanalysis for indirect calls and call chains containing both indirect and\ndirect calls is already tested\n[here](https://github.com/WebAssembly/binaryen/blob/83f68e13b2cd22e52a8e8c19b9a48cc11416c99a/test/lit/passes/global-effects-closed-world.wast#L248-L251)."
    },
    {
      "commit": "83f68e13b2cd22e52a8e8c19b9a48cc11416c99a",
      "tree": "4e9e7d8931eacd96fbb55952b67fa8ba85d60728",
      "parents": [
        "818de5e9c9e959e470c145f9f562991cf45fa952"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Tue May 26 23:04:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 23:04:10 2026"
      },
      "message": "[wasm-ctor-eval] Avoid local and global state getting out of sync (#8776)\n\nSimplify this by clearing before any serialization. Before, if we\npartially evalled, the local and global state could diverge, leading to locals\nreferring to the wrong globals.\n\nChanges to the existing test are NFC, just reordering of names (sadly)."
    },
    {
      "commit": "818de5e9c9e959e470c145f9f562991cf45fa952",
      "tree": "b3216b034d6e4a564976bceb704f789ccbfb9776",
      "parents": [
        "865b60914e35d66bb40f3de733f733ab5f020e08"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 22:53:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 22:53:38 2026"
      },
      "message": "OptimizeCasts: Migrate from invalidates to orderedBefore (#8774)\n\nReplace the coarse \u0027invalidates\u0027 check in \u0027OptimizeCasts\u0027 with\n\u0027orderedBefore\u0027. This is a cleanup to use the more precise directional\neffects check.\n\nAlso add a new lit test to verify that casts (which have trap effects)\nare correctly allowed to move past global state reads but blocked by\nglobal state writes.\n\nTAG\u003dagy"
    },
    {
      "commit": "865b60914e35d66bb40f3de733f733ab5f020e08",
      "tree": "5722d67e0b66b38d92a2cf113d3942272e9548c5",
      "parents": [
        "95e7dfa3cffa0cb6792a116ac28c58bb788d086e"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 20:48:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 20:48:00 2026"
      },
      "message": "Update merge-blocks-atomics.wast expectations (#8777)\n\nThis incorrect test expectation was force-landed past a CI infra\nfailure, so is causing failures on main. Fix it."
    },
    {
      "commit": "95e7dfa3cffa0cb6792a116ac28c58bb788d086e",
      "tree": "1e2dacb166f342acc1f622a0abc799fee2bcf737",
      "parents": [
        "6a7249360da5499f0e135a288ac92c334079ad26"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 18:48:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 18:48:17 2026"
      },
      "message": "[NFC] Refactor closedWorld to WorldMode enum (#8740)\n\nReplace the `closedWorld` boolean in `PassOptions` with a `WorldMode`\nenum which has `Closed` and `Open` variants. Also introduce\n`ModuleUtils::getExposedPublicHeapTypes` to collect directly exposed\npublic types, and updates `getPublicHeapTypes` to take `WorldMode` as a\nparameter. These refactorings will make a subsequent commit changing how\nwe collect public heap types in open-world mode simpler."
    },
    {
      "commit": "6a7249360da5499f0e135a288ac92c334079ad26",
      "tree": "da714f8a00c2e6835c3971d2599091a647f41a84",
      "parents": [
        "aea97f8506268d5e341858d372ef20858aeefa9d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue May 26 16:04:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 16:04:12 2026"
      },
      "message": "Use cmake standard `BUILD_SHARED_LIBS` setting (#8764)\n\nSee https://cmake.org/cmake/help/latest/variable/BUILD_SHARED_LIBS.html\n\nI\u0027m not sure why we made up our own setting here rather than using the\nstandard one."
    },
    {
      "commit": "aea97f8506268d5e341858d372ef20858aeefa9d",
      "tree": "9abad2cfc4143159818a5ad00e57f40171e4b56d",
      "parents": [
        "d78dba37bca6dac681124e565318e655a44aea49"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 15:54:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:54:26 2026"
      },
      "message": "Fix refinalization for --gufa-cast-all (#8773)\n\nIn #8747 we refactored GUFA\u0027s `replaceCurrent` to set `optimized \u003d true`\nand removed the now-redundant `optimized \u003d true` at all the call sites.\nBut we were too aggressive and removed an `optimized \u003d true` in `Adder`,\nwhich had a separate `replaceCurrent` that did not set `optimized \u003d\ntrue`. This caused a regression where we no longer refinalized after\nadding casts, but the regression was not caught by any tests.\n\nFix the bug and add a test that depends on refinalization after adding\ncasts."
    },
    {
      "commit": "d78dba37bca6dac681124e565318e655a44aea49",
      "tree": "c19744ec8a720623ea4d4447ced9b1206f977029",
      "parents": [
        "9d2c168dd525b3e843c39547fbf86723082c48d4"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 15:48:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:48:15 2026"
      },
      "message": "MergeBlocks: Migrate from invalidates to orderedBefore (#8767)\n\nReplace the coarse \u0027invalidates\u0027 check in \u0027MergeBlocks\u0027 with\n\u0027orderedBefore\u0027. This allows \u0027MergeBlocks\u0027 to move expressions (like GC\nreads) out of blocks past other sibling expressions that have been left\nbehind.\n\nAlso clean up dead code in \u0027optimize()\u0027 by removing the unused\n\u0027dependency1\u0027 and \u0027dependency2\u0027 parameters and their checks (which were\nthe other two replaced \u0027invalidates\u0027 calls that are no longer active).\n\nTAG\u003dagy"
    },
    {
      "commit": "9d2c168dd525b3e843c39547fbf86723082c48d4",
      "tree": "d72fd8dcf9e960e227a2912b07fbf3e5b6914334",
      "parents": [
        "fe6e02c58e3898e3a8140cf9bb8e13d2e130f368"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 15:45:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:45:21 2026"
      },
      "message": "[NFC] Simplify externref literal representation (#8765)\n\nInstead of using a complex bit-packing scheme to represent externref\npayloads and differentiate them from externalized internal references,\nsimply store the payload in the GCData. Externalized internal references\nare also stored in the GCData, but can be differentiated from externref\npayloads because the latter have type i32 and the former are always\nreference types.\n\nBesides being complex, the bit packing scheme was also incorrect on\nbig-endian architectures."
    },
    {
      "commit": "fe6e02c58e3898e3a8140cf9bb8e13d2e130f368",
      "tree": "223fde467c8590047c6ed19f1c795d1a3638efb9",
      "parents": [
        "67c63733dc5d496fb63a4f470a2f9d3b4235701c"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue May 26 15:25:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 15:25:25 2026"
      },
      "message": "Support resuming into try-catch in interpreter (#8757)\n\nEnable resuming execution into `try` and `catch` blocks in the\ninterpreter. For catch blocks, preserve the exception stack state so\nthat `rethrow` and other exception operations work correctly after\nresumption.\n\nTAG\u003dagy"
    },
    {
      "commit": "67c63733dc5d496fb63a4f470a2f9d3b4235701c",
      "tree": "79898f7e8a974a93b10d9cd2dffb6bc996ac9af5",
      "parents": [
        "8b61409636f76adb679d90370c1da867fc9d61ec"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Sun May 24 02:51:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun May 24 02:51:00 2026"
      },
      "message": "NFC: Use `const EffectAnalyzer\u0026` in ostream operator (#8769)\n\nAllows printing `const EffectAnalyzer`s.\n\nAlso move the ostream operator into the `wasm` namespace to avoid UB\nfrom extending std:\nhttps://en.cppreference.com/cpp/language/extending_std"
    },
    {
      "commit": "8b61409636f76adb679d90370c1da867fc9d61ec",
      "tree": "5eac521b642057f36e35b55f612c82ca4fa6d448",
      "parents": [
        "abfdaeee8c8bd7eb9db773771374c3ad536675c4"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Sat May 23 02:34:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 02:34:27 2026"
      },
      "message": "[wasm-split] Scan trapping globals if custom descriptors is enabled (NFC) (#8768)\n\nWe don\u0027t need to compute effects for all global initializers unless\ncustom-descriptors is not enabled. Should have done this with #8742."
    },
    {
      "commit": "abfdaeee8c8bd7eb9db773771374c3ad536675c4",
      "tree": "8f2ced970f1b6d30156777b3d1c428a03cab9af1",
      "parents": [
        "a69c666279b7bc9df3f83895ada44f84ff56eb7c"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Sat May 23 00:38:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat May 23 00:38:57 2026"
      },
      "message": "Use indirect call effects in LinearExecutionWalker (#8738)\n\nPart of #8615. Follows up from #8637 now that global effects for\nindirect calls has been added.\n\nAllows LinearExecutionWalker to *not* halt and continue scanning when an\nindirect call is encountered in the case the global effects have been\ncomputed under `--closed-world` and we determined that the indirect call\ncan\u0027t have any throw effects. LinearExecutionWalker is used in the\nfollowing passes:\n\n* LocalGraph\n* LocalCSE\n* OptimizeCasts\n* SimplifyGlobals\n* SimplifyLocals\n* GUFA\n* TypeRefining"
    },
    {
      "commit": "a69c666279b7bc9df3f83895ada44f84ff56eb7c",
      "tree": "e5af05d474fc6deeb84073b053a7ddd83aecdf93",
      "parents": [
        "962bd54ee9f5c32a1209d2ad63dbfafaf9231960"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Fri May 22 23:59:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 23:59:59 2026"
      },
      "message": "[wasm-split] Generate fillers in MVP + --no-placenolders (#8759)\n\nWhen --no-placeholder is given and reference-types is disabled, we\ncannot fill the table with `ref.nulls`. Previously we were generating\n`ref.null`s anyway, creating invalid modules. This generates filler\nfunctions in place of `ref.null`s."
    },
    {
      "commit": "962bd54ee9f5c32a1209d2ad63dbfafaf9231960",
      "tree": "45a7f7711d1b557f49d394493184bc90878e5e13",
      "parents": [
        "f19f8e13b9f1df43db1adacccbca6ef9003ba601"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 23:40:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 23:40:46 2026"
      },
      "message": "HeapStoreOptimization: Migrate from invalidates to orderedBefore (#8758)\n\nReplace the coarse `invalidates` check in `HeapStoreOptimization` with\n`orderedBefore`. This allows `HeapStoreOptimization` to optimize heap\nstores across release stores (e.g., moving a GC read before a release\nstore), while still correctly blocking them from being moved before\nacquire loads.\n\nAdded a lit test to verify the asymmetrical reordering behavior with\nrelease/acquire atomics on shared GC structs and Wasm memory.\n\nTAG\u003dagy"
    },
    {
      "commit": "f19f8e13b9f1df43db1adacccbca6ef9003ba601",
      "tree": "34865b823f790c7c9ea881f08415ae3f7da4b675",
      "parents": [
        "36ef125bc7bb702790fde39e4fdaa14e767f053e"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 23:01:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 23:01:00 2026"
      },
      "message": "Fix typo in mark-js-called.wast (#8755)\n\nFound by my local spellchecking git hook when performing a merge."
    },
    {
      "commit": "36ef125bc7bb702790fde39e4fdaa14e767f053e",
      "tree": "5cf2d289e9b58b0c92de5fcae59e247492b0b7ec",
      "parents": [
        "505dae4a6fa9fe4eee8e9c92ab7380699e73717f"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 22:49:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 22:49:29 2026"
      },
      "message": "Fix block-nested Pop in GUFA (#8747)\n\nIn GUFA, when optimizing RefEq or RefTest expressions, they are replaced\nby constants if the optimizer can prove the two sides have no\nintersection. However, if the expression contains side effects (like a\nPop), getDroppedChildrenAndAppend is used to preserve them, which wraps\nthe side-effect expressions in a Block.\n\nIf the Pop is nested inside this Block, it becomes invalidly nested\nwithin the catch block, which violates validation rules. GUFA has a\nfixup pass (EHUtils::handleBlockNestedPops) designed to fix this by\nspilling the Pop to a local, but it was not being run because visitRefEq\nand visitRefTest failed to set the `optimized \u003d true` flag.\n\nFix the issue by setting `optimized \u003d true` when RefEq or RefTest are\noptimized, ensuring the post-optimization cleanups (including the nested\npop fixup) are executed.\n\nAdd a regression test to gufa-cast-all.wast."
    },
    {
      "commit": "505dae4a6fa9fe4eee8e9c92ab7380699e73717f",
      "tree": "c5ff1b133574841b72902b027ee1b7e6de23c8d1",
      "parents": [
        "17d9262e2163446b0f3421474109eaed50bda54e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri May 22 18:09:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 18:09:34 2026"
      },
      "message": "Set `BUILD_STATIC_LIB` under emscripten (#8762)\n\nThis fixes the following warning when building with emscripten:\n\n```\nCMake Warning (dev) at CMakeLists.txt:460 (add_library):\n  ADD_LIBRARY called with SHARED option but the target platform does not\n  support dynamic linking.  Building a STATIC library instead.  This may lead\n  to problems.\nThis warning is for project developers.  Use -Wno-dev to suppress it.\n```"
    },
    {
      "commit": "17d9262e2163446b0f3421474109eaed50bda54e",
      "tree": "c4a98c020ea3ec74a503760e689488564fd5cd66",
      "parents": [
        "5cbd7f09bc5087e1c339f4df72fc01e3fd6aaf89"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Fri May 22 16:55:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 16:55:29 2026"
      },
      "message": "[NFC] Document reference construction in closed world (#8761)\n\nSee #8754"
    },
    {
      "commit": "5cbd7f09bc5087e1c339f4df72fc01e3fd6aaf89",
      "tree": "4155bfd99c798136c111d76b4d6a19f24ff56190",
      "parents": [
        "0312a6f9c1737d86a010d503ba3a95d569924c27"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 06:31:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 06:31:10 2026"
      },
      "message": "Fix \"pessemistic\" \u003d\u003e \"pessimistic\" (#8756)\n\nFound by my local spell checker git hook during a merge."
    },
    {
      "commit": "0312a6f9c1737d86a010d503ba3a95d569924c27",
      "tree": "cd836d311760501094f2dd5959fda3348e4f1b40",
      "parents": [
        "77679499aee2fa2480416b099651f81e0b151f1e"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Fri May 22 05:42:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 05:42:42 2026"
      },
      "message": "Set branchesOut effect for call.without.effects (#8695)\n\nFix for #8693"
    },
    {
      "commit": "77679499aee2fa2480416b099651f81e0b151f1e",
      "tree": "2106011f3a040ef88587ef1f80696187307327aa",
      "parents": [
        "f404918453cef6c22774f71a4945cdb187f8e95a"
      ],
      "author": {
        "name": "Steven Fontanella",
        "email": "stevenfont@google.com",
        "time": "Fri May 22 05:01:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 05:01:39 2026"
      },
      "message": "Effect analysis for indirect call expressions (#8625)\n\nPart of #8615. After #8609, we compute effects for indirect call\nexpressions, but only reflect this in the call-site via the effects of\nthe `Function` that contains the indirect call. That let us reason about\neffects only one layer of indirection away, for example in the following\nmodule:\n\n```wasm\n(func $a\n  (call_ref $t (...))\n)\n\n(func $b\n  (call $a)\n)\n```\n\nIf we know that an indirect call to $t can\u0027t possibly have any effects\n(e.g. its only potential target is a nop), we\u0027d be able to optimize away\n`(call $a)` but not the `(call_ref)` itself, since the effects only got\nstored in the effects of `$a`.\n\nThis PR lets us reason about indirect call effects at the expression\nlevel within function bodies by adding a map from HeapType to effects\n`typeEffects` in `wasm::Module`. As a result we can completely optimize\nout the `call_ref` in the above example.\n\nDrive-by fixes:\n* Set an unconditional trap effect on call_indirect when the call type\ndoesn\u0027t match the target table.\n* ~~Correctly set `branchesOut` for `return_call` on\n`call.without.effects`. Previously this would not have a `branchesOut`\neffect which may have allowed incorrect reorderings (we shouldn\u0027t move\nan effectful expression above a `return_call` but we would have allowed\nthis).~~ Will follow up in #8693."
    },
    {
      "commit": "f404918453cef6c22774f71a4945cdb187f8e95a",
      "tree": "4fea9066598131a87756906879f2820087fa3657",
      "parents": [
        "da3bff5a8a18d8856aa77745e735f3b68bbb0f9b"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 04:15:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 04:15:02 2026"
      },
      "message": "CodePushing: Migrate from invalidates to orderedBefore (#8745)\n\nReplace the coarse `invalidates` check in `CodePushing` with\n`orderedBefore`. This allows `CodePushing` to push expressions (like GC\nreads) past acquire loads, while still correctly blocking them from\nbeing pushed past release stores.\n\nAdd a lit test to verify the asymmetrical reordering behavior with\nrelease/acquire atomics on shared GC structs and Wasm memory."
    },
    {
      "commit": "da3bff5a8a18d8856aa77745e735f3b68bbb0f9b",
      "tree": "eb670c54ebaaa9b523c25ef47ed8a67660145b30",
      "parents": [
        "58e27a24d5940211ec54cb587ab8a93b931ec5fd"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 22 02:05:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 22 02:05:24 2026"
      },
      "message": "LocalCSE: Migrate from invalidates to orderedBefore (#8744)\n\nReplace the coarse `invalidates` check in `LocalCSE` with\n`orderedBefore`. This allows `LocalCSE` to reuse expression values\nacross release stores, while still correctly blocking reuse across\nacquire loads.\n\nAdd a lit test to verify the asymmetrical reordering behavior with\nrelease/acquire atomics on shared GC structs and Wasm memory."
    },
    {
      "commit": "58e27a24d5940211ec54cb587ab8a93b931ec5fd",
      "tree": "3cc3a70f5bee2d4b1f5cc8572264cb24d3b5f6e8",
      "parents": [
        "9aaee88b765c163be93702baa91364ae4ba6e6e1"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu May 21 23:18:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 23:18:25 2026"
      },
      "message": "LICM: Migrate from invalidates to orderedBefore (#8743)\n\nReplace the coarse `invalidates` check and the coarse global state check\nin LICM with more precise `orderedBefore` checks. This allows LICM to\nmove memory accesses past release stores, while still correctly blocking\nthem from moving past acquire loads.\n\nAdd a lit test to verify the asymmetrical reordering behavior with\nrelease/acquire atomics on shared memory/GC structs."
    },
    {
      "commit": "9aaee88b765c163be93702baa91364ae4ba6e6e1",
      "tree": "2c85fbb0ff5b7bd7c055055ea62aff513dd1efff",
      "parents": [
        "affe9b72db4845624e8a62750e449bfa66156f8e"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 21 22:37:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 22:37:25 2026"
      },
      "message": "Fuzzer: Mark js-called functions before optimizing (#8752)\n\nMarking them after does not work... since the point is to fix things for\noptimizations."
    },
    {
      "commit": "affe9b72db4845624e8a62750e449bfa66156f8e",
      "tree": "3cbbb7dcc9b0d2171ebd03deaf8377f7bcea99e2",
      "parents": [
        "f526098d83d9b2928bdc140d37f3763cdbf81961"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 21 21:45:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:45:58 2026"
      },
      "message": "RemoveUnusedModuleElements: Referenced elems refer to their offsets (#8750)"
    },
    {
      "commit": "f526098d83d9b2928bdc140d37f3763cdbf81961",
      "tree": "0a75743c4fe1071966c0f9aeab57d8d8f4c459bc",
      "parents": [
        "86910224b8632751b705a39938023a2132ce75f5"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 21 21:45:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:45:44 2026"
      },
      "message": "[Stack Switching] Fix continuation execution from a start function (#8751)\n\nRather than set the module after creation - which is after the start is\ncalled - do it during init, which is also simpler."
    },
    {
      "commit": "86910224b8632751b705a39938023a2132ce75f5",
      "tree": "142b74e7f23651408423a2010f628e8e5b198f33",
      "parents": [
        "1215ea4eaa5146cd2cb5a7318a5f512ac3fe5928"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu May 21 21:31:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:31:34 2026"
      },
      "message": "[wasm-split] Don\u0027t split trapping globals (#8742)\n\nTrapping globals, which became possible with the custom-descriptor\nproposal, should stay in the primary module because we have to preserve\ntheir trapping behavior upon instantiation.\n\nAlso, note that we remove unused globals here:\n\nhttps://github.com/WebAssembly/binaryen/blob/17a90787bae4f4544e25b3e7833da076e0d543de/src/ir/module-splitting.cpp#L896-L903\nBut trapping globals shouldn\u0027t be removed even when they are unused to\npreserve the trapping behavior.\n\nIn case someone wants to split modules assuming traps never happen, this\nalso adds `--traps-never-happen` option to wasm-split, in which case we\ncan freely split or remove trapping globals."
    },
    {
      "commit": "1215ea4eaa5146cd2cb5a7318a5f512ac3fe5928",
      "tree": "9285cfd0ba24b67624fb92747ac758f28089cd96",
      "parents": [
        "d215f0303a4d449b3664419bbdadbb42d63a508a"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu May 21 21:31:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:31:26 2026"
      },
      "message": "[Fuzzer] Make Split\u0027s exports a list of strings (#8731)\n\nWhen the export name contains a comma, such as `foo\u003cx,y\u003e`, the v8\ncommand does not work:\n```colsole\nv8 ... exports:foo\u003cx,y\u003e,bar,... --fuzz-split\n```\n\nThis generates an `exports` as a list of strings within quotes,\nsupporting export names with commas:\n```colsole\nv8 ... exports:[\"foo\u003cx,y\u003e\",\"bar\",...] --fuzz-split\n```\n\nThis still parses the old format of `exports` in case it doesn\u0027t contain\ncommas, which I think might be useful for handwritten command lines."
    },
    {
      "commit": "d215f0303a4d449b3664419bbdadbb42d63a508a",
      "tree": "4547bff9a0336bcb6f5c6175c73bcd5fc6942399",
      "parents": [
        "cfc3d50b89e5745fd03db29d650b726bcb146f6c"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu May 21 21:14:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 21:14:38 2026"
      },
      "message": "Fix ContinuationStore desynchronization (#8741)\n\nWhen a primary module execution traps or suspends to the host, its\ncontinuation store is cleared. Previously, this was done by reassigning\nthe shared_ptr to a new ContinuationStore instance. However, secondary\n(linked) modules that were instantiated prior to this still hold the\noriginal shared_ptr to the old ContinuationStore. This led to\ndesynchronization, where the secondary module would run with stale\ncontinuation state (including leaked continuations and resuming flags),\neventually causing crashes like assertion failures in visitSuspend.\n\nThis fix changes clearContinuationStore to clear the ContinuationStore\nin-place (clearing the continuations vector and resetting resuming flag)\ninstead of reassigning the shared_ptr, ensuring all linked modules\ncontinue to share the same cleared state.\n\nAdded a lit test to verify the fix and prevent regression."
    },
    {
      "commit": "cfc3d50b89e5745fd03db29d650b726bcb146f6c",
      "tree": "9d0901036c193b5ecdf808caeb92b655bde091a7",
      "parents": [
        "2f63efb3681c47da15c5e3f5edbb7319c40d9227"
      ],
      "author": {
        "name": "Sertonix",
        "email": "sertonix@posteo.net",
        "time": "Thu May 21 18:54:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 18:54:45 2026"
      },
      "message": "Fix i64x2 shift on big-endian (#8748)\n\nSince the i64x2.sh* functions use i32 as shift argument the access to\n`other.i64` may not use the correct union member. On big-endian systems\nthis causes tests in `test/spec/testsuite/simd_bit_shift.wast` and a few\nother places to fail.\n\nRef https://github.com/WebAssembly/binaryen/issues/2983"
    },
    {
      "commit": "2f63efb3681c47da15c5e3f5edbb7319c40d9227",
      "tree": "dd05c7ca14bdc17cec13511d50ef28ab920ea513",
      "parents": [
        "371faf73decf05acde4cd0bd0f298fd2be90f1e7"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu May 21 17:36:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 17:36:59 2026"
      },
      "message": "Require linux on the wasm-reduce lit test (#8749)\n\nFor some reason this test is crashing on the Windows CI and possibly\ncausing timeouts. Only run it on linux for now to avoid blocking other\nPRs from going in."
    },
    {
      "commit": "371faf73decf05acde4cd0bd0f298fd2be90f1e7",
      "tree": "269110d936d687951f1c2c5d77d056517b35e202",
      "parents": [
        "84ace4aa2cab2fed7b2fd12a1e91e5a2ce342811"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Thu May 21 16:30:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 16:30:18 2026"
      },
      "message": "Fix test_cluster_fuzz.py V8 flags mismatch (#8746)\n\nWhen running test_cluster_fuzz.py, it was launching V8 with a hardcoded\nlist of flags, instead of reading the flags from the generated flags\nfile. This caused V8 to fail compilation of test cases that included \nrelaxed atomics (which are generated by default now since relaxed\natomics fuzzing was enabled), because V8 requires \n--experimental-wasm-acquire-release flag for them, and this flag was\nnot in the hardcoded list.\n\nThis CL fixes this by reading the flags from the generated flags file\nto faithfully simulate how ClusterFuzz runs V8."
    },
    {
      "commit": "84ace4aa2cab2fed7b2fd12a1e91e5a2ce342811",
      "tree": "af1f8d13362c4ab9bd9e4393aaaf32a2862d5033",
      "parents": [
        "17a90787bae4f4544e25b3e7833da076e0d543de"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Thu May 21 15:44:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 21 15:44:56 2026"
      },
      "message": "PrintBoundary: Handle types for all externable things (#8739)\n\nThe old code gave memories, tables, and tags, a null Type as a\nplaceholder. But that actually crashes in printing. This adds a proper type for each."
    },
    {
      "commit": "17a90787bae4f4544e25b3e7833da076e0d543de",
      "tree": "709b9886623f1d5c72a704b8ec0feb5f79182784",
      "parents": [
        "355af661ff7e9370685f674df0894aebb9877d18"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Wed May 20 23:03:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 23:03:27 2026"
      },
      "message": "MarkJSCalled pass (#8733)\n\nThis adds `@binaryen.js.called` to functions called from any\n`configureAll`, even one not from the start function.\n\nAddresses the issue in #8727, where fuzzing the start function can lead\nto situations where a function is referred to from configureAll but not\nmarked as js-called, which can break optimizations. By using this in the\nfuzzer, we can fuzz even files with interesting configureAll calls."
    },
    {
      "commit": "355af661ff7e9370685f674df0894aebb9877d18",
      "tree": "295f15ceaf33aca4b792571a15fefff5495573bf",
      "parents": [
        "f3e100813546dc5b5d87ee05015e582f85116468"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Wed May 20 22:07:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 22:07:02 2026"
      },
      "message": "[NFC] Return optional in Lexer::peek (#8737)\n\nThis prevents errors where we peek the buffer without checking that\nthere is more input to peek at."
    },
    {
      "commit": "f3e100813546dc5b5d87ee05015e582f85116468",
      "tree": "77bec04dd9d30f13bc608b9960603768b3d8b60b",
      "parents": [
        "072bcc4df2869a013609ba5941c51e960cdfede8"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Wed May 20 21:04:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 21:04:01 2026"
      },
      "message": "Fix OOB errors in the lexer (#8734)\n\nFix an OOB string_view access that was just trying to get a\none-past-the-end pointer. Fix two locations where we could have been\npeeking empty input.\n\nFixes #8732."
    },
    {
      "commit": "072bcc4df2869a013609ba5941c51e960cdfede8",
      "tree": "341919104ffb07c88181659b32152f55db27c75e",
      "parents": [
        "7ac78f76ffd988605b11f5493a1074480d92a86c"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Wed May 20 17:18:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 17:18:29 2026"
      },
      "message": "[wasm-split] Do not split out the start function (#8711)\n\nLike imports, automatically keep it in the primary module."
    },
    {
      "commit": "7ac78f76ffd988605b11f5493a1074480d92a86c",
      "tree": "c5221fa7823343880461e2ee550de4e27e74bdcf",
      "parents": [
        "dd958c220e19c63054d2122037d9dec04ddf21e6"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Wed May 20 16:02:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 16:02:25 2026"
      },
      "message": "Fuzzer: Export tags (#8729)\n\nThis is the only exportable thing we did not already export."
    },
    {
      "commit": "dd958c220e19c63054d2122037d9dec04ddf21e6",
      "tree": "3de2acfc091dd8abf610447ea85e931f6270bc25",
      "parents": [
        "8e2e403604b1ed11b53f7a88b233f5994413635e"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Wed May 20 16:02:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 16:02:11 2026"
      },
      "message": "wasm-ctor-eval: Remove the start function when we succeed (#8702)\n\nIf we remove even one ctor that we were asked to, then we ran the start\nfunction, and we evalled it too (if it trapped or such, we would not\nhave managed to eval that one ctor). But we left the start function there,\nwhich meant it would run again, even though we evalled it and baked its\nresults into the wasm already.\n\nBasically, the start function is like a ctor, and after evalling it\nsuccessfully we need to empty it out, so it doesn\u0027t re-execute, or else we would be\nchanging the program behavior."
    },
    {
      "commit": "8e2e403604b1ed11b53f7a88b233f5994413635e",
      "tree": "b8511fd548b83883e8b8292ff303f5ddd86757ca",
      "parents": [
        "c82a630d5ad354eb2225e40b2563489c4b70524f"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Wed May 20 15:56:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 15:56:02 2026"
      },
      "message": "Run non-nullable local fixups when reducing functions (#8730)\n\nIt\u0027s not entirely clear how FunctionReplacer was producing IR that with\ninvalid nullable locals, but this was observed in practice in issue\n#8720. Fix it by running the non-nullable local fixups after the pass.\n\nFixes #8720."
    },
    {
      "commit": "c82a630d5ad354eb2225e40b2563489c4b70524f",
      "tree": "272c34a710f734e270d97608a060239e3ded3c5a",
      "parents": [
        "c974a59509729273425d562356accad27cd123ea"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Wed May 20 01:43:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 01:43:11 2026"
      },
      "message": "Skip folding branches of unreachable If (#8724)\n\nOptimizeInstructions generally skips optimizing unreachable code,\nleaving that to DCE instead. But it did not have this check before\nfolding identical instructions out of If arms. The fuzzer found a case\nwhere cont.new instructions were hoisted out of an unreachable If but\nnot refinalized, resulting in the concretely-typed cont.new having an\nunreachable child. This caused an assertion failure in the validator.\n\nFix the root problem by skipping this optimization for unreachable Ifs,\nbut also fix the validator so that it will no longer crash on such\ninvalid IR."
    },
    {
      "commit": "c974a59509729273425d562356accad27cd123ea",
      "tree": "2f22df602140562fc438dfdac44fa10dbab052d4",
      "parents": [
        "5fcc1af12ae19032339ee5e56889e08b6912e8cb"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Wed May 20 00:51:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed May 20 00:51:54 2026"
      },
      "message": "[wasm-split] Share active table with caller modules (#8728)\n\nThe way we currently share the active table with secondary modules\nhttps://github.com/WebAssembly/binaryen/blob/2c2509b5bfe399df400b2185caa370f56e563d32/src/ir/module-splitting.cpp#L1122-L1156\nhas missed an important case in multi-split. This is one of the\nunexpected consequences of #8688.\n\nHere the `secondary` module in this loop is a secondary module whose\nfunctions have been put in the active table, mostly by `getTrampoline`\nfunction. When we have a call from `$A` to `$B` and `$B` is split,\n`getTrampoline` puts `$B` on the active table, which will be converted\nto a placeholder in `setupTablePatcing`. So the code above share the\nactive table (and its base global, if exists) with `$B`\u0027s module.\n\nThe problem is we didn\u0027t share the active global with `$A`\u0027s module. In\na two-way split this is not a problem because `$A` is in the primary\nmodule. But in multi-split, `$A`\u0027s module itself is another secondary\nmodule, and this module needs to access the active table because it\nshould call the placeholder for `$B`. This does it in\n`indirectCallsToSecondaryFunctions`.\n\n---\n\nI wish we can do the active table sharing for callee modules in\n`indirectCallsToSecondaryFunctions` too and get done with it, but we\nstill need to share it in `shareImportableItems` for secondary modules\nthat have functions to be replaced in the active table, because there is\na case of existing secondary function names in the active table. See\n`KEEP-NONE` RUN line in the test below:\n\nhttps://github.com/WebAssembly/binaryen/blob/main/test/lit/wasm-split/basic.wast\n\nIn this test, we reuse the existing table as the active table, which\nalready has `$foo` in its element section. And that `foo` will be split.\nBecause both `bar` and `foo` are split there is no cross-module call\nbetween them to process in `indirectCallsToSecondaryFunctions`. This\nwon\u0027t be converted to trampolines because\n\nhttps://github.com/WebAssembly/binaryen/blob/5fcc1af12ae19032339ee5e56889e08b6912e8cb/src/ir/module-splitting.cpp#L947-L958\nand because there is no trampoline, this doesn\u0027t get to have a call\ninstruction from primary-\u003esecondary, but we still need to share the\nactive table with the secondary module, and we can\u0027t handle it in\n`indirectCallsToSecondaryFunctions`.\n\n---\n\nThis fixes the error discussed in\nhttps://github.com/WebAssembly/binaryen/pull/8711#discussion_r3251422502."
    },
    {
      "commit": "5fcc1af12ae19032339ee5e56889e08b6912e8cb",
      "tree": "1597053be1ef1df4f613cea20c5dd63d9b2254cc",
      "parents": [
        "2c2509b5bfe399df400b2185caa370f56e563d32"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue May 19 21:37:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 21:37:04 2026"
      },
      "message": "[wasm-split] Tidy up indirectCallsToSecondaryFunctions (NFC) (#8726)\n\nThis avoids computing repeated expression multiple times and removes an\nunnecessary if condition."
    },
    {
      "commit": "2c2509b5bfe399df400b2185caa370f56e563d32",
      "tree": "09b5043001d4366165649be804dbe4ece8a3b48f",
      "parents": [
        "7b7959369c91d82a14f6b9518575687ba803f9e8"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Tue May 19 00:05:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 19 00:05:55 2026"
      },
      "message": "Fix macos 13 compilation errors with stringstream.view() (#8725)\n\nFixes https://github.com/WebAssembly/binaryen/issues/8723"
    },
    {
      "commit": "7b7959369c91d82a14f6b9518575687ba803f9e8",
      "tree": "e6357ea1e56a4056f626ade6d5a76156988aa280",
      "parents": [
        "b66e6c9ed07ed02a664f59a1e0031864d80f58d0"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon May 18 22:59:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 22:59:51 2026"
      },
      "message": "[CI] Build on macos-14 rather than macos-latest (#8721)\n\nIn emsdk we actually build on macos-13, but sadly there is not macos-13\navailable in github actions.\n\nIn doing this I\u0027m trying to get binaryen CI to reproduce the current\nissue we are seeing in emsdk CI:\n```\nIn file included from /Users/distiller/project/binaryen/main/src/ir/import-names.h:23:\n/Users/distiller/project/binaryen/main/src/support/name.h:35:12: error: call to implicitly-deleted default constructor of \u0027wasm::IString\u0027\n  Name() : IString() {}\n           ^\n/Users/distiller/project/binaryen/main/src/support/istring.h:72:3: note: explicitly defaulted function was implicitly deleted here\n  IString() \u003d default;\n  ^\n/Users/distiller/project/binaryen/main/src/support/istring.h:68:14: note: default constructor of \u0027IString\u0027 is implicitly deleted because field \u0027str\u0027 of const-qualified type \u0027const wasm::IString::View\u0027 would not be initialized\n  const View str;\n             ^\n```\n\nSplit out from #8719"
    },
    {
      "commit": "b66e6c9ed07ed02a664f59a1e0031864d80f58d0",
      "tree": "5479c2ee13dc1e6ccebc708e523d80f5a571298c",
      "parents": [
        "0005bc8686fa3a639d9b514ebc341c41face684f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon May 18 21:17:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 21:17:21 2026"
      },
      "message": "Use C++20 requires clauses in TypeNameGeneratorBase (#8552)\n\nThis addresses the TODOs in src/wasm-type-printing.h by utilizing C++20\nconcepts and requires clauses.\n\n- Replaced the manual SFINAE/macro-based check in TypeNameGeneratorBase\nwith a static_assert(requires { ... }) to ensure subclasses implement\ngetNames correctly. This is cleaner and more robust.\n- Updated the ModuleTypeNameGenerator constructor to use a requires\nclause instead of std::enable_if_t for its default constructor,\nimproving readability.\n- Added #include \u003cconcepts\u003e as required.\n\nVerfied locally by remove a `getNames` impl:\n\n```\n/usr/local/google/home/sbc/dev/wasm/binaryen/src/wasm-type-printing.h: In instantiation of ‘constexpr void wasm::TypeNameGeneratorBase\u003cSubclass\u003e::assertValidUsage() [with Subclass \u003d wasm::PrintSExpression::TypePrinter]’:\n/usr/local/google/home/sbc/dev/wasm/binaryen/src/wasm-type-printing.h:36:29:   required from ‘wasm::TypeNameGeneratorBase\u003cSubclass\u003e::TypeNameGeneratorBase() [with Subclass \u003d wasm::PrintSExpression::TypePrinter]’\n   36 |   TypeNameGeneratorBase() { assertValidUsage(); }\n      |                             ^~~~~~~~~~~~~~~~\n/usr/local/google/home/sbc/dev/wasm/binaryen/src/passes/Print.cpp:179:22:   required from here\n  179 |       : parent(parent) {\n      |                      ^\n/usr/local/google/home/sbc/dev/wasm/binaryen/src/wasm-type-printing.h:50:7: error: static assertion failed: Derived class must implement getNames\n   50 |       requires(Subclass\u0026 s, HeapType ht) {\n      |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n   51 |         { s.getNames(ht) } -\u003e std::same_as\u003cTypeNames\u003e;\n      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n   52 |       }, \"Derived class must implement getNames\");\n      |       ~\n/usr/local/google/home/sbc/dev/wasm/binaryen/src/wasm-type-printing.h:50:7: note: ‘false’ evaluates to false\n```"
    },
    {
      "commit": "0005bc8686fa3a639d9b514ebc341c41face684f",
      "tree": "209451d8e72cc291c676c078bc48371e4d6ed9ad",
      "parents": [
        "731a4732986d9c560be8ffde40cbd4f3accc0267"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon May 18 20:15:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 20:15:24 2026"
      },
      "message": "Use C++20 string_view starts_with/ends_with methods. NFC (#8722)\n\nAlso, remove the extra suffix size check from ends_with. (I could\nalternatively add this to `starts_with` instead, but I assumes its not a\nuseful optimization?)."
    },
    {
      "commit": "731a4732986d9c560be8ffde40cbd4f3accc0267",
      "tree": "f40f48203b77e3060f54f503e34b33a90f92e1a7",
      "parents": [
        "aef8534cd359bd8e811bcd61ca5c874d8bfb407f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon May 18 19:40:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 19:40:45 2026"
      },
      "message": "Fix implicitly-deleted default constructor error on older Xcode version. (#8719)\n\nOlder versions of Clang (particularly those shipped with older Xcode\nversions) are more strict about the initialization of const members.\nAccording to the C++ standard, if a class has a const member that is not\ninitialized at the point of declaration and lacks a user-provided\ndefault constructor that initializes it, the default constructor is\nimplicitly deleted.\n\nWhile newer versions of Clang and other compilers may allow this if the\nmember has a trivial default constructor (like our View struct, which\nhas an inline initializer for its only member), older versions of Apple\nClang have been known to reject this, leading to build failures when\ninheriting from IString (e.g., in the Name class).\n\nThis change provides an explicit default constructor for IString that\ninitializes the \u0027str\u0027 member, ensuring compatibility across a wider\nrange of compiler versions."
    },
    {
      "commit": "aef8534cd359bd8e811bcd61ca5c874d8bfb407f",
      "tree": "79e6fe94e742414be4f5a9a53e642ad6959e179f",
      "parents": [
        "d3029d2b975488acdf9253eb2994a3fc55bd3549"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Mon May 18 19:27:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 19:27:03 2026"
      },
      "message": "Fix validation error in wasm-reduce (#8715)\n\nWhen removing functions, wasm-reduce replaces calls to those functions\nusing `builder.replaceWithIdenticalType`. That method can modify the\ninput expression in-place to have a different types (e.g. replacing a\nreference with a null), so when the previous code read `curr-\u003etype` to\nset the type of the replacement block, it was possible to get a more\nrefined type, leading to validation failures. Fix the bug by explicitly\nusing the original type.\n\nFixes #8713."
    },
    {
      "commit": "d3029d2b975488acdf9253eb2994a3fc55bd3549",
      "tree": "f16ec443dc956a9fbd17be2c9d0ecce3089d4a6a",
      "parents": [
        "b5b9ebd748027515445ac7f98ffb69ad7204be75"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Fri May 15 22:34:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 22:34:18 2026"
      },
      "message": "[wasm-split] Fix table naming conflicts (#8708)\n\nAfter #8688, we split module elements, including tables, earlier than\n`indirectCallsToSecondaryFunctions`, which calls `getSlot`, which calls\n`makeTable`. But when making a table, we only try to get a valid name\nwithin the primary module:\n\nhttps://github.com/WebAssembly/binaryen/blob/2f1f55aef6d9adfa6fdc2c25e46d202232dbf6e2/src/ir/module-splitting.cpp#L235-L238\n\nIf an existing table\u0027s name was `0` and it was moved to a secondary\nmodule in `shareImportable` already, this will happily create an active\ntable with the name `0` again. And in `setupTablePatching`, because the\nsecondary module already has `0`, the active table will not be exported\n/ imported there:\n\nhttps://github.com/WebAssembly/binaryen/blob/2f1f55aef6d9adfa6fdc2c25e46d202232dbf6e2/src/ir/module-splitting.cpp#L1103-L1117\n\nBut this existing table is NOT the active table, and this table\u0027s type\nmay not even be `funcref`.\n\nThis fixes `makeTable` so that it makes a table name that does not\ncollide with any table names not only in the primary module but all\nsecondary modules.\n\nThis also disables `Split` fuzzer for now; I\u0027m finding more bugs, so\nI\u0027ll reenable it after it is more stabilized."
    },
    {
      "commit": "b5b9ebd748027515445ac7f98ffb69ad7204be75",
      "tree": "9b502b1ed993ac50e2aeeb6537726352b6edd8d5",
      "parents": [
        "e7987f62a5b31cd165cf4ce9fb6ff40633150315"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Fri May 15 21:47:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 21:47:51 2026"
      },
      "message": "[wasm-split] Sync secondary tables\u0027 initial/max (#8714)\n\nWhen an existing table is used as the active table, after we increate\nthe size of the table by placing placeholders, we should sync it to the\nsecondary modules\u0027 imports of the table.\n\nFixes https://github.com/emscripten-core/emscripten/issues/26959."
    },
    {
      "commit": "e7987f62a5b31cd165cf4ce9fb6ff40633150315",
      "tree": "27367a87a22d466b88ee83a22dff2f2675c8be92",
      "parents": [
        "2458c41db802168a3d7f26c060f0332b416d89c7"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Fri May 15 21:01:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 21:01:50 2026"
      },
      "message": "[wasm-split] Use Name() for nonexistent global base (NFC) (#8704)\n\nRather than using an empty string, this uses `Name()` when an active\ntable does not have a base global. This allows us to check for the\nexistence of the global by just\n```cpp\nif (tableManager.activeBase.global)\n```\nrather than\n```cpp\nif (tableManager.activeBase.global.size())\n```"
    },
    {
      "commit": "2458c41db802168a3d7f26c060f0332b416d89c7",
      "tree": "3b1f5775d62c0dc4e6e1cffcc89689f1b6679a52",
      "parents": [
        "332a49f12888baac1479e721187f660dc018e1e4"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Fri May 15 20:57:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 15 20:57:13 2026"
      },
      "message": "Supply fuzz imports to second modules as well (#8705)\n\nUpdate execution-results.h to supply standard fuzzing imports, including\nimported externref globals materialized on demand, to second modules.\nThis matches the behavior of fuzz_shell.js, which already makes these\nimports available to both modules."
    }
  ],
  "next": "332a49f12888baac1479e721187f660dc018e1e4"
}
