)]}'
{
  "log": [
    {
      "commit": "83fb993ea5f6e3d5c62bc0e4e70fcd39b7fbbb1c",
      "tree": "32f76d0b43650721540d69d1f0387b944e461df0",
      "parents": [
        "049ff04ce3c0f10f7f4fcde317a4da9d209212e9"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sun Oct 25 17:36:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 17:36:30 2026"
      },
      "message": "Update emsdk version from acf87ea4 to 90bbe03b (#28067)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: acf87ea4 \u003d\u003e 90bbe03b\n\nThe following revisions were included in this update:\n\n```\n- 90bbe03b Roll llvm-project from a48ab421cf08 to 57f5cdfad718 (10 revisions)\n- 53595e20 Roll llvm-project from bfe094117ba8 to a48ab421cf08 (24 revisions)\n- 360930ac Roll llvm-project from 612b8b1661a4 to bfe094117ba8 (14 revisions)\n- 7da147fd Roll v8 from f40519251e55 to 7a801ff6b4cf (30 revisions)\n- 22e535b2 Roll llvm-project from bbbc1cb90955 to 612b8b1661a4 (15 revisions)\n- 821d6c92 Roll llvm-project from 9b2201bd0e35 to bbbc1cb90955 (21 revisions)\n- 557dad91 Roll emscripten from a67c39f8843a to cc1b638f4232 (1 revision)\n- 1b60276f Roll emscripten from 1978fec7bfe4 to a67c39f8843a (1 revision)\n- e054af81 Roll binaryen from ac62280c6a4b to f1f3a483efe9 (1 revision)\n- c69aa22a Roll llvm-project from 43d19aaf193e to 9b2201bd0e35 (51 revisions)\n- 8d454360 Roll binaryen from ed6b93e66660 to ac62280c6a4b (1 revision)\n- be0ff802 Roll emscripten from 3bd068cce395 to 1978fec7bfe4 (2 revisions)\n- 4b38ce5e Roll binaryen from 10b1b0dc815f to ed6b93e66660 (1 revision)\n- 7edb2318 Roll emscripten from d5c8b4e7d0fb to 3bd068cce395 (1 revision)\n- f16e19ea Roll llvm-project from 3fdac7de5496 to 43d19aaf193e (90 revisions)\n- d3f2bf7f Roll emscripten from 96abee148acb to d5c8b4e7d0fb (1 revision)\n- 22670c3d Roll llvm-project from 7550009a0c54 to 3fdac7de5496 (49 revisions)\n- ccc321bd Roll llvm-project from e6afa098d147 to 7550009a0c54 (32 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/acf87ea4..90bbe03b\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "049ff04ce3c0f10f7f4fcde317a4da9d209212e9",
      "tree": "35d089da09018f8dff733db24c3505c45c2f68f8",
      "parents": [
        "cc1b638f4232e5d965400042d6ead56c73d1daba"
      ],
      "author": {
        "name": "Rusty Conover",
        "email": "rusty@conover.me",
        "time": "Sun Oct 25 17:10:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Oct 25 17:10:38 2026"
      },
      "message": "Avoid copying all exports in applySignatureConversions (#27996)\n\napplySignatureConversions copied the entire exports object just to wrap\nthe few functions that need pointer conversions. Instead, build an\nobject\nholding only the wrappers and give it the original exports as its\nprototype. With 40k exports this step goes from ~39 ms to ~2 ms.\n\nThis only applies when wrapping happens (MEMORY64, or MAXIMUM_MEMORY\nover\n2GB). In that case Object.keys(Module[\u0027wasmExports\u0027]) now lists only the\nwrapped exports; lookups by name, `in`, and for...in are unchanged. The\nexport-name minifier now also renames `origExports`.\n\n---------\n\nCo-authored-by: Rusty Conover \u003crusty@query.farm\u003e\nCo-authored-by: Claude Opus 5.5 (1M context) \u003cnoreply@anthropic.com\u003e"
    },
    {
      "commit": "cc1b638f4232e5d965400042d6ead56c73d1daba",
      "tree": "a7a57d699393db3ca1e43b4c2fc16838edc209ed",
      "parents": [
        "a67c39f8843a7a10f2264338efaeaf5dd8a7f81b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Oct 24 00:51:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 24 00:51:46 2026"
      },
      "message": "Add missing direct `__deps` entries across JS libraries. NFC (#28060)\n\nAdd missing direct `__deps` declarations for JS library symbols that\npreviously relied on other callers pulling in their dependencies later\nin the dependency graph.\n\nWith `__deps` sorted alphabetically (#28059), adding these missing\ndirect edges ensures that automatically computing JS-to-JS dependencies\n(#27995) produces identical declaration ordering and zero diffs across\n`test/codesize/`.\n\nSee: #19098"
    },
    {
      "commit": "a67c39f8843a7a10f2264338efaeaf5dd8a7f81b",
      "tree": "b94c90060a92cb30bfcf11590bfc0042d69accce",
      "parents": [
        "1978fec7bfe48e30817a9ba265d5f60a24477015"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 23 23:37:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 23:37:17 2026"
      },
      "message": "Sort JS library dependencies alphabetically in `jsifier.mjs`. NFC (#28059)\n\nSort string entries in `__deps` alphabetically inside `addFromLibrary`\nso that emitted JS library symbol order is deterministic and independent\nof the order in which dependencies are declared or discovered.\n\nKeep function callbacks in `__deps` after string dependencies in their\noriginal order so callbacks that reference depended-on symbols at load\ntime (such as `$GLImmediateSetup__deps` in `src/lib/libglemu.js`) still\nrun after those symbols are defined.\n\nI\u0027m landing this in preparation for #19098 which makes dependencies\nautomatic, and I want that change to be clearly NFC WRT code size."
    },
    {
      "commit": "1978fec7bfe48e30817a9ba265d5f60a24477015",
      "tree": "07ec26b4e011ab2c553d1697803241efa05c6d35",
      "parents": [
        "6583f78e43690dabb5b04eb0ec4fc98117e44488"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Fri Oct 23 20:23:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 20:23:28 2026"
      },
      "message": "Improve changelog entry for #27940 (#28050)\n\nSee discussion in #27940"
    },
    {
      "commit": "6583f78e43690dabb5b04eb0ec4fc98117e44488",
      "tree": "ba66b9e8427aeeb9b83236c717fbb88cf8f0e2f4",
      "parents": [
        "3bd068cce395c6dadb589e87fd3cd9976042cb5a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 23 20:11:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 20:11:30 2026"
      },
      "message": "Calculate transitive JS library deps after `symbolHandler` in `--symbols-only` mode. NFC (#28052)\n\nPreviously, `getTransitiveDeps` was called inside `addFromLibrary` while\n`symbolHandler` was still iterating through `symbolsNeeded` and mutating\n`__deps` (such as adding `setTempRet0` for i64-returning functions\nwithout `WASM_BIGINT`).\n\nCompute `symbolDeps` in the `if (symbolsOnly)` block after\n`symbolHandler` completes so that all direct `__deps` are populated\nbefore traversing the dependency graph.\n\nSplit out from #27995."
    },
    {
      "commit": "3bd068cce395c6dadb589e87fd3cd9976042cb5a",
      "tree": "e66797cb6572852589928886e6c72c05463a6e98",
      "parents": [
        "d5c8b4e7d0fbfe5d234678a49be6b80bfe431486"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 23 16:54:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 16:54:08 2026"
      },
      "message": "Pass `-dumpdir` to `clang` in compile-and-link mode (#28045)\n\nIn Clang 17+ (matching GCC 11), compiling and linking in a single\ncommand passes `-dumpdir \u003coutput\u003e-` to `clang -cc1` so that auxiliary\noutput files (such as `.dwo` from `-gsplit-dwarf` or `.json` from\n`-ftime-trace`) are named `\u003coutput\u003e-\u003cinput\u003e.\u003cext\u003e` in the current\nworking directory rather than being written to `/tmp` alongside the\ntemporary object file.\n\nPass `-dumpdir \u003ctarget\u003e-` for all non-assembly compilations in\n`phase_compile_inputs` instead of manually passing\n`-Xclang -split-dwarf-file` and `-Xclang -split-dwarf-output`."
    },
    {
      "commit": "d5c8b4e7d0fbfe5d234678a49be6b80bfe431486",
      "tree": "1c949ae22ffe0a09913e59c74049ef53bc5549fb",
      "parents": [
        "96abee148acb98030847a49bb75164bd30cad55c"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Oct 23 15:29:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 23 15:29:40 2026"
      },
      "message": "Update emsdk version from c31f295d to acf87ea4 (#28057)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: c31f295d \u003d\u003e acf87ea4\n\nThe following revisions were included in this update:\n\n```\n- acf87ea4 Roll v8 from 6f8cd3cd5844 to f40519251e55 (52 revisions)\n- 6b459c26 Roll emscripten from 3e1c35bf296d to 96abee148acb (1 revision)\n- 33fdca25 Roll llvm-project from b4ff3fec62b7 to e6afa098d147 (50 revisions)\n- e1dca3d8 Roll emscripten from 45a6cffdbdf0 to 3e1c35bf296d (2 revisions)\n- d0ef3b46 Roll binaryen from b6720c020a0e to 10b1b0dc815f (1 revision)\n- 7bc9ab34 Roll llvm-project from 58936cb3678b to b4ff3fec62b7 (70 revisions)\n- 725ee696 Roll emscripten from e52f8cfd2b3b to 45a6cffdbdf0 (2 revisions)\n- aacbb78a Roll binaryen from 06cdc1796183 to b6720c020a0e (1 revision)\n- 92f1000d Roll llvm-project from 6519eee75a87 to 58936cb3678b (47 revisions)\n- 00d85e74 Roll llvm-project from dba80dcdcd2c to 6519eee75a87 (48 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/c31f295d..acf87ea4\n\nThe following (16) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153124 \u003d\u003e 153107 [-17 bytes / -0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 152529 \u003d\u003e 152512 [-17 bytes / -0.01%]\ncodesize/test_codesize_cxx_except.json: 197197 \u003d\u003e 197176 [-21 bytes / -0.01%]\ncodesize/test_codesize_cxx_except_wasm.json: 168588 \u003d\u003e 168551 [-37 bytes / -0.02%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 166448 \u003d\u003e 166411 [-37 bytes / -0.02%]\ncodesize/test_codesize_cxx_lto.json: 119498 \u003d\u003e 119482 [-16 bytes / -0.01%]\ncodesize/test_codesize_cxx_mangle.json: 263447 \u003d\u003e 263426 [-21 bytes / -0.01%]\ncodesize/test_codesize_cxx_noexcept.json: 155031 \u003d\u003e 155014 [-17 bytes / -0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180229 \u003d\u003e 180212 [-17 bytes / -0.01%]\ncodesize/test_codesize_hello_O0.json: 37812 \u003d\u003e 37808 [-4 bytes / -0.01%]\ncodesize/test_codesize_hello_dylink.json: 43214 \u003d\u003e 43214 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink_all.json: 860884 \u003d\u003e 862148 [+1264 bytes / +0.15%]\ncodesize/test_minimal_runtime_code_size_audio_worklet.json: 16361 \u003d\u003e 16361 [+0 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm.json: 10994 \u003d\u003e 10994 [+0 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17323 \u003d\u003e 17315 [-8 bytes / -0.05%]\ncodesize/test_unoptimized_code_size.json: 165159 \u003d\u003e 165147 [-12 bytes / -0.01%]\n\nAverage change: -0.00% (-0.05% - +0.15%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "96abee148acb98030847a49bb75164bd30cad55c",
      "tree": "a18335fb004c5612c73a189712cbf17293942d7a",
      "parents": [
        "3e1c35bf296dda9d50e82893dcdadedebee84c8f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 22 23:51:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 23:51:01 2026"
      },
      "message": "[test] Check LLVM and Binaryen versions when rebaselining codesize tests (#28053)\n\nWhen running `codesize` tests with `--rebaseline`, check that the active\nLLVM and Binaryen revisions match the revisions specified by\n`test/emsdk_version.txt` via `emscripten-releases`.\n\nThis should help prevent confusion when folks get a different results\nlocally to the CI"
    },
    {
      "commit": "3e1c35bf296dda9d50e82893dcdadedebee84c8f",
      "tree": "99df9992467722ce36db23e3977923ce45f7721a",
      "parents": [
        "da779b54b5e61ff9441df5c95e281f98d80a85c5"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 22 23:06:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 23:06:55 2026"
      },
      "message": "Add a Best Practices section to the website. NFC (#27334)"
    },
    {
      "commit": "da779b54b5e61ff9441df5c95e281f98d80a85c5",
      "tree": "000fcf3425e7a098239581b9cedb2874f732dbc0",
      "parents": [
        "45a6cffdbdf003665c7f48072191ce5a860fd0f4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 22 22:54:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 22:54:29 2026"
      },
      "message": "Avoid emitting extra blank lines for JS library items in `jsifier.mjs` (#28044)\n\nThis change is mostly about cleaning up the code in `addFromLibrary`.\n\nPreviously, `depsText` in `src/jsifier.mjs` had two issues that caused\nextra blank lines in unoptimized JS output:\n\n1. When `addFromLibrary` was called on an already-emitted dependency, it\n   returned `undefined`. Using `.filter((x) \u003d\u003e x !\u003d \u0027\u0027)` did not filter\n   out `undefined`, causing `.join(\u0027\\n\u0027)` to emit an empty line for each\n   already-emitted dependency.\n2. Because `deps` is always an array (`??\u003d []`), the `deps ? ... : \u0027\u0027`\n   ternary always took the truthy branch and appended `\u0027\\n\u0027`, even when\n   no dependencies were emitted. This gave every `addFromLibrary` return\n   value a leading `\u0027\\n\u0027`.\n\nUse a `joinChunks` helper (`chunks.filter(Boolean).join(\u0027\\n\u0027)`) to join\nnon-empty dependency, doc comment, and content strings without extra\nnewlines.\n\nAlso update `indentify` in `src/parseTools.mjs` to indent the first line\nof non-empty strings, which previously only happened because of the\naccidental leading `\u0027\\n\u0027` on each item."
    },
    {
      "commit": "45a6cffdbdf003665c7f48072191ce5a860fd0f4",
      "tree": "10c36bbc63f9811ad583fa898b0cdbdb8d5c0958",
      "parents": [
        "1c31a613dc4dfe08c8c13559d4e5e8a1a64c10c5"
      ],
      "author": {
        "name": "JesusFileto",
        "email": "91223391+JesusFileto@users.noreply.github.com",
        "time": "Thu Oct 22 17:05:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 17:05:50 2026"
      },
      "message": "Map code without a DWARF line to no location in wasm source maps (#28033)\n\n`wasm-sourcemap.py` drops DWARF rows with line 0, which LLVM uses for\ncode that does not come from a single source line, for example when it\nmerges several calls to `abort()` into one. The previous mapping then\ncovers that code too, so it is reported at an unrelated line.\n\nThis writes an entry with only the wasm offset at these rows instead. An\nentry without a source location ends the previous mapping, so the code\ngets no location. Binaryen does the same when it writes source maps\n(WebAssembly/binaryen#5906): one such entry for each run of code without\na location, and none before the first mapping. Binaryen and emsymbolizer\nalready read these entries. When this tool was written, Binaryen could\nnot, which is likely why the rows were dropped.\n\nEach entry adds about two bytes. The new test checks that code at line 0\nmaps to no location and that consecutive line 0 rows share one entry."
    },
    {
      "commit": "1c31a613dc4dfe08c8c13559d4e5e8a1a64c10c5",
      "tree": "013fcd34b67aadb1f11c57ae8a9c09813b70cfdf",
      "parents": [
        "e52f8cfd2b3bf420ac35a2b47496cc775ad26a1d"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Oct 22 16:53:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 16:53:21 2026"
      },
      "message": "Update emsdk version from 55035bb0 to c31f295d (#28046)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 55035bb0 \u003d\u003e c31f295d\n\nThe following revisions were included in this update:\n\n```\n- c31f295d Roll llvm-project from 784eb2c62570 to dba80dcdcd2c (23 revisions)\n- de4e3a86 Roll emscripten from 11093ed456a6 to e52f8cfd2b3b (1 revision)\n- ff178b59 Roll v8 from 06409073dd39 to 6f8cd3cd5844 (61 revisions)\n- 15d6793c Roll binaryen from 4c6b554ecc1f to 06cdc1796183 (1 revision)\n- 7d663296 Roll llvm-project from 0e42735b0df2 to 784eb2c62570 (86 revisions)\n- c41ef7b4 Roll emscripten from 68340518704b to 11093ed456a6 (4 revisions)\n- 38aa88fb Roll binaryen from 6e5257bd5360 to 4c6b554ecc1f (1 revision)\n- 2af2e636 Roll emscripten from 278ba27f57e2 to 68340518704b (3 revisions)\n- 0a874280 Roll binaryen from a631c1445ced to 6e5257bd5360 (16 revisions)\n- bc7ca41b Roll llvm-project from afee4adae612 to 0e42735b0df2 (123 revisions)\n- 0581e27c Roll llvm-project from deae56302506 to afee4adae612 (57 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/55035bb0..c31f295d\n\nThe following (12) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153116 \u003d\u003e 153124 [+8 bytes / +0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 152521 \u003d\u003e 152529 [+8 bytes / +0.01%]\ncodesize/test_codesize_cxx_except.json: 197189 \u003d\u003e 197197 [+8 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm.json: 168580 \u003d\u003e 168588 [+8 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 166440 \u003d\u003e 166448 [+8 bytes / +0.00%]\ncodesize/test_codesize_cxx_lto.json: 119490 \u003d\u003e 119498 [+8 bytes / +0.01%]\ncodesize/test_codesize_cxx_mangle.json: 263439 \u003d\u003e 263447 [+8 bytes / +0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155023 \u003d\u003e 155031 [+8 bytes / +0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180221 \u003d\u003e 180229 [+8 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink_all.json: 860857 \u003d\u003e 860884 [+27 bytes / +0.00%]\ncodesize/test_codesize_minimal_pthreads.json: 26028 \u003d\u003e 26028 [+0 bytes / +0.00%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26487 \u003d\u003e 26487 [+0 bytes / +0.00%]\n\nAverage change: +0.00% (+0.00% - +0.01%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "e52f8cfd2b3bf420ac35a2b47496cc775ad26a1d",
      "tree": "4dd95ca6e66dbf5074b46f74bb88a92957828d29",
      "parents": [
        "11093ed456a625e66596c15778f35e391e0a3a41"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 22 03:07:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 22 03:07:17 2026"
      },
      "message": "Warn when `-x` is specified after the last input file (#28042)\n\nMatch `clang` by emitting an `unused-command-line-argument` warning when\n`-x` is not followed by any input file on the command line.\n\nAlso fix `RunnerCore.build` in `test/common.py` to pass `all_cflags`\nbefore the input filename so that flags like `-x c++` (as used in\n`other.test_xlocale`) precede the source file."
    },
    {
      "commit": "11093ed456a625e66596c15778f35e391e0a3a41",
      "tree": "b96c5735ab5a79c39d5c4c020f5a036888eb6aef",
      "parents": [
        "d9cd75bf7799cc4f85be65c5e843f840bd3ce817"
      ],
      "author": {
        "name": "Ioulios P.",
        "email": "ipat@hotmail.gr",
        "time": "Wed Oct 21 22:18:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 22:18:40 2026"
      },
      "message": "[WasmFS] Return truncation errors from open with O_TRUNC (#28039)\n\n`doOpen` ignored the result of `setSize(0)` for `O_TRUNC`, so `open`\ncould succeed without truncating the file. Linux and the old FS both\nfail the open when the truncation fails (see `FS.truncate` inside\n`FS.open`), and both skip the truncation for devices and FIFOs.\n\nChanges:\n- `doOpen` returns the error from `setSize`, closing the backend file\nfirst.\n- Truncation is skipped for non-regular files.\n- Fixed a small leak where the `EISDIR` and `EACCES` checks for\n`O_TRUNC` returned without closing the backend file. Now the checks are\ndone before the file is opened.\n- Node backend: when a file was only open read-only, `setSize` called\n`ftruncate` on the read-only host fd, which failed with `EINVAL`. This\ncaused two issues:\n- `open(O_RDONLY | O_TRUNC)` succeeded but left the file unchanged (the\nerror was ignored).\n- `truncate(path)` failed with `EINVAL` if the file was already open\nread-only.\n \n  `setSize` now truncates by path when the host fd is read-only.\n\nTests:\n- `wasmfs_opfs.c`: opening a blob-backed file with `O_RDONLY | O_TRUNC`\nnow fails with `EIO`.\n- `wasmfs_open.c`: opening `/dev/null` with `O_TRUNC` succeeds.\n- `truncate.c`: `truncate(path)` on a file that is open read-only\nsucceeds. I also changed `assert(f)` to `assert(f \u003e\u003d 0)` for the\n`open()` fds, since `-1` would pass `assert(f)`.\n\n`ftruncate()` on an `O_RDONLY` fd still succeeds on WasmFS (Linux\nreturns `EINVAL`). I can fix that separately in `__syscall_ftruncate64`.\n\nSplit out from #27937"
    },
    {
      "commit": "d9cd75bf7799cc4f85be65c5e843f840bd3ce817",
      "tree": "1304d0afc2f9f92be766319d1afcc03bf3578178",
      "parents": [
        "d202bda92e971f7788e6022349f2448de283cdeb"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 21 22:09:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 22:09:48 2026"
      },
      "message": "Pass `-target` when running internal `clang` helper queries (#28038)\n\nWhen `-target` is omitted and `clang` was built without overriding\n`LLVM_DEFAULT_TARGET_TRIPLE`, the `clang` driver defaults to the host\ntarget triple and initializes the host toolchain (such as GCC\ninstallation detection on Linux). This performs unnecessary host\nfilesystem probing and can emit driver warnings such as\n`-Wgcc-install-dir-libstdcxx`. At least since\nhttps://github.com/llvm/llvm-project/pull/154487.\n\nMove `get_target_flags()` to `tools/shared.py` so it can be used across\nall internal `clang` invocations, and use it in `PASSTHROUGH_FLAGS`\nhandling in `emcc.py` instead of passing the full `get_cflags()`.\n\nFixes: #28036"
    },
    {
      "commit": "d202bda92e971f7788e6022349f2448de283cdeb",
      "tree": "20d4f777b623e122d955baba7b98babf4b5b26d1",
      "parents": [
        "be0bb9578c2f4ccaf7155512d0c3211cbeefbf81"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 21 20:42:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:42:48 2026"
      },
      "message": "Fix false-positive `$SYSCALLS` dependency in `wrapSyscallFunction`. NFC (#28034)\n\nIn `src/lib/libcore.js`, check `t.includes(\u0027SYSCALLS.\u0027)` instead of\n`t.includes(\u0027SYSCALLS\u0027)` in `wrapSyscallFunction` so comments and\nstrings mentioning `SYSCALLS_REQUIRE_FILESYSTEM` (such as in `fd_write`)\ndo not pull in `$SYSCALLS` and `$UTF8ToString` when\n`SYSCALLS_REQUIRE_FILESYSTEM\u003d0`.\n\nSplit out from #27999"
    },
    {
      "commit": "be0bb9578c2f4ccaf7155512d0c3211cbeefbf81",
      "tree": "6d003e60901fe0c7fbde1de672febcee52365a78",
      "parents": [
        "68340518704b01c74c557bdcfaae90bdb2343e7d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 21 20:41:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 20:41:16 2026"
      },
      "message": "[GL] Fix unused and overly-broad `__deps` entries in WebGL JS libraries. NFC (#28037)\n\nAlign the preprocessor guards on `__deps` arrays with the actual call\nsites in the corresponding function bodies so symbols are only pulled in\nwhen referenced:\n\n- In `src/lib/libwebgl.js`:\n- Guard `\u0027$webglBufferSubData\u0027` in `$GL__deps` and\n`glDrawElements__deps` with `#if FULL_ES2`. In `$GL`,\n`webglBufferSubData` is only called from\n`preDrawHandleClientVertexAttribBindings` (which is guarded by `#if\nFULL_ES2`, not `LEGACY_GL_EMULATION`). Similarly, `glDrawElements` only\ncalls `webglBufferSubData` inside its `#if FULL_ES2` client-side index\nbuffer block.\n- Guard `\u0027$heapObjectForWebGLType\u0027` and `\u0027$toTypedArrayIndex\u0027` in\n`glTexImage2D__deps`, `glTexSubImage2D__deps`, and `glReadPixels__deps`\nwith `#if WEBGL_USE_GARBAGE_FREE_APIS` instead of `#if MAX_WEBGL_VERSION\n\u003e\u003d 2`. Those functions only call `heapObjectForWebGLType` and\n`toTypedArrayIndex` directly inside `#if WEBGL_USE_GARBAGE_FREE_APIS`\nblocks; otherwise they delegate to `emscriptenWebGLGetTexPixelData`\n(which declares its own `__deps`).\n- Guard `$webglGetProgramUniformLocation__deps` with `#if\nGL_EXPLICIT_UNIFORM_LOCATION`, matching the sole call to\n`webglPrepareUniformLocationsBeforeFirstUse` inside\n`$webglGetProgramUniformLocation`.\n- In `src/lib/libwebgl2.js`:\n- Guard `\u0027$toTypedArrayIndex\u0027` in `glTexImage3D__deps` and\n`glTexSubImage3D__deps` with `#if WEBGL_USE_GARBAGE_FREE_APIS`, since\n`toTypedArrayIndex` is only called in that branch (the `#else` branch\ndelegates to `emscriptenWebGLGetTexPixelData`).\n- Remove `glGetVertexAttribIuiv__deps`. `glGetVertexAttribIuiv` is a\nstring alias for `\u0027glGetVertexAttribIiv\u0027`, which already declares\n`glGetVertexAttribIiv__deps: [\u0027$emscriptenWebGLGetVertexAttrib\u0027]`.\n\nSplit out from #27999"
    },
    {
      "commit": "68340518704b01c74c557bdcfaae90bdb2343e7d",
      "tree": "1439ed62024408b1aa7ce1da69ee797b65e86e7b",
      "parents": [
        "fb940cae56a1c77366eab0bd8ea988b93937c1cd"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 21 19:55:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 19:55:30 2026"
      },
      "message": "Fix unused and overly-broad `__deps` entries in JS libraries. NFC (#27999)\n\n- In `src/lib/libcore.js`, check `t.includes(\u0027SYSCALLS.\u0027)` instead of\n`t.includes(\u0027SYSCALLS\u0027)` in `wrapSyscallFunction` so comments and\nstrings mentioning `SYSCALLS_REQUIRE_FILESYSTEM` (such as in `fd_write`)\ndo not pull in `$SYSCALLS` and `$UTF8ToString` when\n`SYSCALLS_REQUIRE_FILESYSTEM\u003d0`.\n- In `src/lib/libpthread.js`, guard `\u0027$addOnPreRun\u0027` in `$PThread__deps`\nwith `#if !MINIMAL_RUNTIME \u0026\u0026 PTHREAD_POOL_SIZE`.\n- Guard or remove other unused and overly-broad `__deps` entries across\n`src/lib/*.js` (`libasync.js`, `libbrowser.js`, `libdylink.js`,\n`libemval.js`, `libfetch.js`, `libfs.js`, `libglemu.js`, `libglew.js`,\n`libglut.js`, `libhtml5.js`, `libnoderawfs.js`, `libsdl.js`,\n`libsockfs_node.js`, `libwasmfs.js`, `libwebgl.js`, `libwebgl2.js`).\n\nSplit out from #27995"
    },
    {
      "commit": "fb940cae56a1c77366eab0bd8ea988b93937c1cd",
      "tree": "02a2a0cb3ef742d1999fc5a30998c547ab9d5bbe",
      "parents": [
        "7ce153561c94927741542a8d590293ed622984d2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 21 19:15:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 19:15:25 2026"
      },
      "message": "[test] Fix flake in `test_dlopen_binary_not_retained` (#28041)\n\nIn V8, `--concurrent-array-buffer-sweeping` is enabled by default, so a\nsingle synchronous `gc()` call spawns a background `SweepingJob` and\nreturns before `ArrayBufferSweeper::FinalizeAndDelete` frees dead\n`ArrayBuffer` backing stores and updates\n`process.memoryUsage().arrayBuffers`. Under CPU contention on CI bots,\nthe main thread can read `process.memoryUsage().arrayBuffers` before the\nbackground sweep job completes.\n\nCall `gc()` twice before each measurement so that the start of the\nsecond `gc()` (`ArrayBufferSweeper::EnsureFinished()`) waits for the\nfirst `gc()`\u0027s background sweep job to finish.\n\nSee: #28002"
    },
    {
      "commit": "7ce153561c94927741542a8d590293ed622984d2",
      "tree": "4c593ea5dccdfda6d270114dfda2744756779106",
      "parents": [
        "278ba27f57e28053748b9c844c0f180f71643ffb"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Oct 21 17:37:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 21 17:37:42 2026"
      },
      "message": "Update emsdk version from eb132757 to 55035bb0 (#28040)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: eb132757 \u003d\u003e 55035bb0\n\nThe following revisions were included in this update:\n\n```\n- 55035bb0 Roll emscripten from 0306168d03b1 to 278ba27f57e2 (4 revisions)\n- 43898170 Roll v8 from 22c424141bb9 to 06409073dd39 (105 revisions)\n- 3d1edc77 Roll llvm-project from 5f47feeedda0 to deae56302506 (554 revisions)\n- 10b93359 Roll emscripten from 5f63ff2e370d to 0306168d03b1 (17 revisions)\n- f3bb79a9 Set EMTEST_LACKS_NATIVE_CLANG on linux too\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/eb132757..55035bb0\n\nThe following (3) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_except.json: 199218 \u003d\u003e 197189 [-2029 bytes / -1.02%]\ncodesize/test_codesize_cxx_lto.json: 119507 \u003d\u003e 119490 [-17 bytes / -0.01%]\ncodesize/test_codesize_cxx_mangle.json: 265548 \u003d\u003e 263439 [-2109 bytes / -0.79%]\n\nAverage change: -0.61% (-1.02% - -0.01%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "278ba27f57e28053748b9c844c0f180f71643ffb",
      "tree": "412f9c3d664f97b1f3feb9b3e49184f4a400270e",
      "parents": [
        "fed1eca0f5df6611e6d982d8ea56f1f976bfd499"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue Oct 20 23:48:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 23:48:27 2026"
      },
      "message": "Replace issue numbers with PR numbers in ChangeLog (#28030)\n\nThis replaces issue numbers cited in ChangeLog with the corresponding PR\nnumbers (or remove redundant issue numbers when cited alongside the PR\nnumber).\n\nGemini-generated and human-verified."
    },
    {
      "commit": "fed1eca0f5df6611e6d982d8ea56f1f976bfd499",
      "tree": "364db07e1ada2a02a97d4944b4d448df3e453a8d",
      "parents": [
        "b106347d58933c4566b39343f0d43c47f168424c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 22:31:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 22:31:07 2026"
      },
      "message": "Handle `DEPS.tagged-release` in `sync_deps.py` (#28031)\n\nWhen a release candidate commit in `emscripten-releases` modifies\n`DEPS.tagged-release`, the waterfall builds that revision using\n`DEPS.tagged-release` (which may be branched from an older revision)\nrather than `DEPS`.\n\nTeach `tools/maint/sync_deps.py` to fetch `DEPS.tagged-release` when\nthe target `emscripten-releases` revision modifies that file, matching\nwhat the corresponding prebuilt `emsdk` archive was built from.\n\nThis is needed because we actually did sync to tagged release in #28031."
    },
    {
      "commit": "b106347d58933c4566b39343f0d43c47f168424c",
      "tree": "222312602e1a1991167e790e7ab0d0feb6718172",
      "parents": [
        "d7642b5b97cfc22960170c603c2ad8f3bbbce9c4"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue Oct 20 22:23:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 22:23:15 2026"
      },
      "message": "Update libunwind from LLVM 22.1.8 to 23.1.3 (#28014)\n\nThis updates libunwind from 22.1.8 to LLVM 23.1.3:\nhttps://github.com/llvm/llvm-project/releases/tag/llvmorg-23.1.3"
    },
    {
      "commit": "d7642b5b97cfc22960170c603c2ad8f3bbbce9c4",
      "tree": "89111bc28de5f2941fcb3b5e013872d88a66e922",
      "parents": [
        "0306168d03b125e8211a7d8b86138ef2bf0922f8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 21:50:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 21:50:07 2026"
      },
      "message": "Emit JS library aliases after non-aliases (#28032)\n\nWhen a JS library alias target (e.g. `foo`) is visited first and\ntransitively depends on its own alias (e.g. `foo_alias: \u0027foo\u0027`),\n`addedLibraryItems[\u0027foo\u0027]` is marked as visited before `var _foo \u003d ...`\nis emitted. Emitting `var _foo_alias \u003d _foo;` inline during dependency\ntraversal causes it to appear before `var _foo \u003d ...`, leaving\n`_foo_alias` initialized to `undefined` for arrow functions and\nnon-hoisted values.\n\nCollect JS library alias assignments in `libraryAliases` and emit them\nafter `libraryItems` (and before `postSets`) so all target symbols are\ndefined before any alias assignment runs.\n\nSplit out from #27995 where this issue was first spotted."
    },
    {
      "commit": "0306168d03b125e8211a7d8b86138ef2bf0922f8",
      "tree": "252be740c8eb65a9a75cacc40e36d0117e510f18",
      "parents": [
        "97370e8912ffaa8a8afed7ea27f105040dbf6846"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 19:20:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 19:20:48 2026"
      },
      "message": "[GL] Prefix internal WebGL functions with an underscore (#27998)\n\nPrefix internal WebGL helper functions (`_emscripten_webgl_do_*`,\n`_emscripten_webgl_make_context_current_calling_thread`, and\n`_emscripten_webgl_create_context_proxied`) with a leading underscore to\nmake it clear that they are internal symbols."
    },
    {
      "commit": "97370e8912ffaa8a8afed7ea27f105040dbf6846",
      "tree": "38bb8f6b6efd460b6cd4d0c4f236c7a9a74fb044",
      "parents": [
        "119421b0d9452bc6ac69bb342a569f53b628c4a8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 18:46:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 18:46:39 2026"
      },
      "message": "Use `codePointAt` in `lengthBytesUTF8` to match `stringToUTF8Array` (#28009)\n\nIn #24356, `stringToUTF8Array` was updated to use `str.codePointAt(i)`\ninstead of `str.charCodeAt(i)`, causing lone surrogates to be encoded as\n3 bytes without skipping the following code unit. `lengthBytesUTF8` was\nnot updated, so it still counted lone surrogates as 4 bytes and skipped\nthe next code unit.\n\nUpdate `lengthBytesUTF8` to also iterate using `str.codePointAt(i)` so\nthat `lengthBytesUTF8` and `stringToUTF8Array` always agree, while also\nsaving a few bytes of JS code size.\n\nFixes: #28008"
    },
    {
      "commit": "119421b0d9452bc6ac69bb342a569f53b628c4a8",
      "tree": "d52dadef350fefd55e65849a2192f42781006f23",
      "parents": [
        "429128c5ba0e5635da35d87347ac0d9debf9072c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 17:13:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 17:13:00 2026"
      },
      "message": "[dylink] Refactor `loadWebAssemblyModule` to avoid retaining wasm bytes. NFC (#28021)\n\nSplit `instantiateModule`, `addEmAsm`, and `addEmJs` out of\n`loadWebAssemblyModule` and replace the async IIFE with `.then()` so\nthat long-lived import stub closures do not capture and retain the side\nmodule\u0027s `binary` buffer in their shared closure context.\n\nThis also ends up saving a few bytes of code size which is nice.\n\nSee: #28002"
    },
    {
      "commit": "429128c5ba0e5635da35d87347ac0d9debf9072c",
      "tree": "251289098a1210a15cb77ce3eacc84d5f12826ec",
      "parents": [
        "767910656d51fa0a2582784e305ebab5231a0766"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Oct 20 15:59:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:59:13 2026"
      },
      "message": "Update emsdk version from ee1f7ce8 to eb132757 (#28027)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ee1f7ce8 \u003d\u003e eb132757\n\nThe following revisions were included in this update:\n\n```\n- eb132757 Version 6.0.13 RC\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ee1f7ce8..eb132757\n\nThe following (2) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_lto.json: 119499 \u003d\u003e 119516 [+17 bytes / +0.01%]\ncodesize/test_codesize_cxx_mangle.json: 265550 \u003d\u003e 265557 [+7 bytes / +0.00%]\n\nAverage change: +0.01% (+0.00% - +0.01%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "767910656d51fa0a2582784e305ebab5231a0766",
      "tree": "fbf72365c80968620a9f0f631319d6cf88b245d3",
      "parents": [
        "d96ef72b34829eb04539a00dce35959639879f87"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Tue Oct 20 15:43:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:43:24 2026"
      },
      "message": "Fix erroneous PR links and formatting in ChangeLog (#28025)\n\nThese include\n- Typos in PR numbers\n- Missing PR numbers (like `(#)` or `()`)\n- Missing `#` or closing `)` in PR/issue references\n- Missing a follow-up PR when two PRs comprise a single ChangeLog entry\n- Copy-paste mistakes (mistakenly copying a number from the line above)\n- Closed/unmerged PRs superseded by another PR, or split-out PRs. e.g.,\nyou start a PR and close it and reimplemented it in another PR, but the\nChangeLog points to the old PR. Also you start a PR and split-out the\nchange that\u0027s in ChangeLog into another smaller PR but the ChangeLog\nstil points to the old PR.\n\nGemini-generated and manually verified."
    },
    {
      "commit": "d96ef72b34829eb04539a00dce35959639879f87",
      "tree": "cfca10b882f9c7e6bdf86a0840039fe8c3f1a2b0",
      "parents": [
        "01ec0885dead7e56b757252927d38210218a7e34"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Tue Oct 20 15:37:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:37:27 2026"
      },
      "message": "Update mimalloc to 3.5.3 (#28026)"
    },
    {
      "commit": "01ec0885dead7e56b757252927d38210218a7e34",
      "tree": "35e27296066760ff6ba0299e70fa62550cec4ef0",
      "parents": [
        "8dbda46632d4ea7f712c8314a4626c650ccc82b3"
      ],
      "author": {
        "name": "arsnyder16",
        "email": "asnyder@minitab.com",
        "time": "Tue Oct 20 15:32:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 15:32:51 2026"
      },
      "message": "Re-enable test_fcoverage_mapping (#28019)\n\nRe-enable `test_fcoverage_mapping` now that #28011 has updated\ncompiler-rt to LLVM 23.1.3, resolving the profile-format incompatibility\nthat required disabling it.\n\nThis restores regression coverage for profile generation, merging with\n`llvm-profdata`, and coverage reporting with `llvm-cov`."
    },
    {
      "commit": "8dbda46632d4ea7f712c8314a4626c650ccc82b3",
      "tree": "2254168795985aa0940e47d34489b79bc45fd850",
      "parents": [
        "283d1b16a253625d3f9b2af778bce7a5bcdaf0d2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 20 01:00:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 01:00:45 2026"
      },
      "message": "Remove `--no-test-only-unsafe` from d8 flags. NFC (#28020)\n\nSee https://github.com/GoogleChromeLabs/jsvu/issues/178"
    },
    {
      "commit": "283d1b16a253625d3f9b2af778bce7a5bcdaf0d2",
      "tree": "d7c9e6f03ea409f90736b01cba15fef41edc04ba",
      "parents": [
        "ade908a9804890185419af5ce6ad0db805d136b7"
      ],
      "author": {
        "name": "Rusty Conover",
        "email": "rusty@conover.me",
        "time": "Tue Oct 20 00:16:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 20 00:16:32 2026"
      },
      "message": "Don\u0027t keep side-module wasm bytes alive after dlopen (#28002)\n\nIn the synchronous dlopen path, the side module\u0027s bytes stayed reachable\nafter compilation: the lazy import stubs created by proxyHandler share\nloadWebAssemblyModule\u0027s scope, so they kept `binary` alive for the life\nof the program. Drop the reference once the module is compiled, as the\nasync path already does.\n\nLoading a 26 MB side module previously retained all 26 MB."
    },
    {
      "commit": "ade908a9804890185419af5ce6ad0db805d136b7",
      "tree": "d8cdf4673f77472700f495f20527fa7767a960ef",
      "parents": [
        "3de6b9628b3deb4be008063c588892ed9ab607b6"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Oct 19 19:57:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:57:31 2026"
      },
      "message": "Mark 6.0.13 as released (#28018)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "3de6b9628b3deb4be008063c588892ed9ab607b6",
      "tree": "ba888b4030beb91c7ded770fc3bfeba1dd87d0d8",
      "parents": [
        "f302ee7b78fca634540ec5184fa0c28d01d10528"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Mon Oct 19 19:53:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:53:33 2026"
      },
      "message": "Update compiler-rt from LLVM 22.1.8 to 23.1.3 (#28011)\n\nThis updates compiler-rt from 22.1.8 to LLVM 23.1.3:\nhttps://github.com/llvm/llvm-project/releases/tag/llvmorg-23.1.3\n\nAdditional changes:\n- Exclude profiling runtime files from build:\nhttps://github.com/emscripten-core/emscripten/pull/28011/commits/2242caed655a4834da79fef13078c17c903f7595\nThis excludes `InstrProfilingPlatformROCm.cpp` and\n`InstrProfilingPlatformROCmHSA.cpp`. LLVM 23 builds these only as part\nof its separate opt-in `profile_rocm` runtime."
    },
    {
      "commit": "f302ee7b78fca634540ec5184fa0c28d01d10528",
      "tree": "c20ec3486c40798ab975a457abe68f52506ddd96",
      "parents": [
        "98895f5e53f7b327d2e887b5d223d58f120a5a66"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 19 19:31:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 19:31:29 2026"
      },
      "message": "Add config file for Gemini Code Assist. NFC (#28017)\n\nThis was mostly just copied from the one in binaryen.\n\nSee https://github.com/WebAssembly/binaryen/pull/9273"
    },
    {
      "commit": "98895f5e53f7b327d2e887b5d223d58f120a5a66",
      "tree": "6b6625310018327660530a30b756ef0232c100dc",
      "parents": [
        "305a79c5447867b05b2c2bf3849fc4a5bd2f6453"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 19 17:09:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:09:18 2026"
      },
      "message": "Mark test_wasm_worker_futex_wait_pthreads as flaky. NFC (#28003)\n\nSee test_wasm_worker_futex_wait_pthreads"
    },
    {
      "commit": "305a79c5447867b05b2c2bf3849fc4a5bd2f6453",
      "tree": "f993ac49268bb29cd4dff3048637782166489085",
      "parents": [
        "30bbb45939d0136eae1637dd17146cc02ee1658f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 19 17:07:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 17:07:07 2026"
      },
      "message": "[test] Avoid relying on NaN sign bit in `test_em_asm.cpp`. NFC (#28004)\n\nThe first two `FUNC` calls in `TEST()` lacked a `return` statement,\ncausing the JS snippet to return `undefined`. When invoked via\n`EM_ASM_DOUBLE`, JS `ToNumber(undefined)` produces `NaN`, and formatting\nit with `%f` in musl depends on the `NaN` sign bit (`nan` vs `-nan`).\n\nStarting in V8 14.8 (`v8_enable_undefined_double`), V8 represents\n`undefined` in double arrays using a `NaN` bit pattern with the sign bit\nset (`0xfff6fffffff6ffff`), which causes `printf(\"%f\", ...)` to output\n`-nan` instead of `nan`.\n\nReturn `0` explicitly in those two `FUNC` calls so the test does not\ndepend on the engine\u0027s `NaN` bit pattern for `undefined`.\n\nFixes: #27984"
    },
    {
      "commit": "30bbb45939d0136eae1637dd17146cc02ee1658f",
      "tree": "c4d9f54038790c4663a1f6941ab438d7fec145a6",
      "parents": [
        "8f9f6a400f20225d840b224376733df963afba6c"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Oct 19 05:25:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 05:25:27 2026"
      },
      "message": "Update emsdk version from df22a5e4 to ee1f7ce8 (#28005)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: df22a5e4 \u003d\u003e ee1f7ce8\n\nThe following revisions were included in this update:\n\n```\n- ee1f7ce8 Roll emscripten from e13ee988ce3d to 5f63ff2e370d (2 revisions)\n- 54e4a102 Roll llvm-project from 3b4070919092 to 5f47feeedda0 (14 revisions)\n- b18bfbc3 Roll llvm-project from 83ee07799c34 to 3b4070919092 (15 revisions)\n- 4556be0c Roll llvm-project from 53b8cb0d03a1 to 83ee07799c34 (41 revisions)\n- 7649fbae Roll binaryen from c8a002dde872 to a631c1445ced (2 revisions)\n- 15a00b68 Roll emscripten from fb115aaf2251 to e13ee988ce3d (2 revisions)\n- 29e87c9d Roll v8 from 18101f3f5f7b to 22c424141bb9 (57 revisions)\n- 282806ac Roll binaryen from b459ff822321 to c8a002dde872 (1 revision)\n- 890311da Roll llvm-project from e924218b76d8 to 53b8cb0d03a1 (71 revisions)\n- c651455a Roll emscripten from becb298488ae to fb115aaf2251 (1 revision)\n- 22e91f27 Roll binaryen from 29765863a603 to b459ff822321 (1 revision)\n- d2cd9adb Roll emscripten from 84a0bde0f29d to becb298488ae (1 revision)\n- 7c5cb3f3 Roll llvm-project from b289978d1e13 to e924218b76d8 (65 revisions)\n- baa45682 Roll llvm-project from 424c73a402df to b289978d1e13 (32 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/df22a5e4..ee1f7ce8\n\nThe following (2) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_lto.json: 119516 \u003d\u003e 119499 [-17 bytes / -0.01%]\ncodesize/test_codesize_cxx_mangle.json: 265557 \u003d\u003e 265550 [-7 bytes / -0.00%]\n\nAverage change: -0.01% (-0.01% - -0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "8f9f6a400f20225d840b224376733df963afba6c",
      "tree": "ec9912f024da4cabdf11f75a0214b06f07054526",
      "parents": [
        "20fd879bb7060515e184b3fbf5da76f7743622db"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 19 05:23:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 05:23:39 2026"
      },
      "message": "[SDL] Use `pagehide` instead of deprecated `unload` event for `SDL_QUIT` (#28010)\n\nChrome 158 (starting in 158.0.8110.0) enabled `DeprecateUnload` by\ndefault on all origins, blocking `window.addEventListener(\u0027unload\u0027,\n...)` via Permissions Policy (`unload\u003d()`) and causing `test_sdl_quit`\nto fail in CI.\n\nSwitch `libsdl.js` and `test_sdl_quit.c` from `\u0027unload\u0027` to\n`\u0027pagehide\u0027`, which is the standard replacement for the deprecated\n`\u0027unload\u0027` event."
    },
    {
      "commit": "20fd879bb7060515e184b3fbf5da76f7743622db",
      "tree": "17fd8748f71998d2c7dd94edbf5ac3436a5f2708",
      "parents": [
        "5f63ff2e370da7e6fffd8f54379860bdd18118f9"
      ],
      "author": {
        "name": "Dimokritos",
        "email": "dkolitsos@protonmail.com",
        "time": "Mon Oct 19 05:22:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 19 05:22:42 2026"
      },
      "message": "[embind] Drop the try/finally around stack-framed invokers (#27750)\n\nFollows sbc100\u0027s review on #27610. The invoker no longer restores the\nstack frame on an exception path, since callers that catch an exception\nfrom the module and carry on own the stackSave/stackRestore (#27748\nmakes the docs say so). The frame is released on the normal return path\nonly. The throwing-conversion section of test_embind_trivial_value_stack\ngoes with it, and the hello_embind codesize expectation drops by 23\nbytes."
    },
    {
      "commit": "5f63ff2e370da7e6fffd8f54379860bdd18118f9",
      "tree": "cd967a2bb5fde46bedb582ccd574eecf4a103e0b",
      "parents": [
        "ef8515b08f5857e22a42161d75f33dd3bd908308"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Sat Oct 17 13:23:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 13:23:44 2026"
      },
      "message": "[CI] Ensure coverage for mimalloc + WasmFS (#27988)\n\nFollow-up to: #27982."
    },
    {
      "commit": "ef8515b08f5857e22a42161d75f33dd3bd908308",
      "tree": "1bf156126a84311d64ca790e9c2710cdbb52b056",
      "parents": [
        "e13ee988ce3d87a738dd8f3661d02223308c412a"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Sat Oct 17 13:21:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Oct 17 13:21:04 2026"
      },
      "message": "[WasmFS] Fix inaccurate line number mapping (#27983)\n\nThese line numbers need to be increased by 4 after commit 3f476687."
    },
    {
      "commit": "e13ee988ce3d87a738dd8f3661d02223308c412a",
      "tree": "58a8bc0a80dbbaeaee932e0220257d52247c906b",
      "parents": [
        "d726e5dc27c3167d7239221019b6ff4ff39ce924"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 16 20:09:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 20:09:08 2026"
      },
      "message": "Minor cleanup and refactoring in `src/jsifier.mjs`. NFC (#27997)\n\n- Skip scanning `PRE_JS_FILES`, `POST_JS_FILES`, and `EM_JS_SNIPPETS` in\n`--symbols-only` mode, and use `getIncludeFile` so preprocessed files\nare handled consistently.\n- Avoid mutating `LibraryManager.library[symbol]` when creating stub\nfunctions and remove the unused `original` variable.\n- Add `timer.start`/`timer.stop` around the `symbolHandler` loop.\n\nSplit out from #27995"
    },
    {
      "commit": "d726e5dc27c3167d7239221019b6ff4ff39ce924",
      "tree": "d2182b95b22b6d6eaf19a1ae0a30c9735a1b717a",
      "parents": [
        "fb115aaf22510f106560d6698a2c1874c16b8487"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 16 18:43:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 18:43:13 2026"
      },
      "message": "Move `__syscall_uname` to JS library and support Node.js (#27989)\n\nMove `__syscall_uname` from the native weak stubs in `libstubs` into a\nnew `libsyscalls_shared.js` library (which is linked in both default FS\nand `WASMFS` builds), and also move the `get*id32` syscalls there so\nthey are shared with `WASMFS`.\n\nWhen running under Node.js (`ENVIRONMENT_IS_NODE`), populate `utsname`\nfields from `require(\u0027node:os\u0027)` (`type`, `hostname`, `release`,\n`version`, and `machine`), falling back to the default Emscripten values\nin non-Node environments.\n\nFixes: #27985"
    },
    {
      "commit": "fb115aaf22510f106560d6698a2c1874c16b8487",
      "tree": "90f613a4228f6340f018238b5ce8bfbfde52c06a",
      "parents": [
        "becb298488aef1e9e3b13a482e9260e2ac486f1c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 16 17:17:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 17:17:22 2026"
      },
      "message": "[GL] Fix unbinding of current context in `emscripten_webgl_destroy_context` with pthreads + `-sOFFSCREEN_FRAMEBUFFER` (#27986)\n\nWhen `-pthread` and `-sOFFSCREEN_FRAMEBUFFER` are enabled, the current\nWebGL context is tracked in thread-local storage in `webgl1.c`.\nPreviously, `$emscripten_webgl_destroy_context_before_on_calling_thread`\nattempted to unbind the context on the calling thread in JS before\nproxying, but this hook was broken by a missing `$` prefix check in\n`handleWebGLProxying` (#19112) and was also never invoked when\n`-sOFFSCREENCANVAS_SUPPORT` was not enabled (#11356).\n\nInstead, implement `emscripten_webgl_destroy_context` in `webgl1.c`\nalongside `emscripten_webgl_create_context`,\n`emscripten_webgl_get_current_context`, and\n`emscripten_webgl_commit_frame` so that it unbinds the context if\ncurrent on the calling thread before calling\n`emscripten_webgl_do_destroy_context`, and remove the unused\n`_before_on_calling_thread` mechanism from `libhtml5_webgl.js`.\n\nFixes: #27891"
    },
    {
      "commit": "becb298488aef1e9e3b13a482e9260e2ac486f1c",
      "tree": "45951ff8e263c351306dd80509bf2c68ef3d6884",
      "parents": [
        "84a0bde0f29d0699c82a56510dc1a3fea2ce5217"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Oct 16 16:29:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 16 16:29:30 2026"
      },
      "message": "Update emsdk version from 9aa80542 to df22a5e4 (#27991)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 9aa80542 \u003d\u003e df22a5e4\n\nThe following revisions were included in this update:\n\n```\n- df22a5e4 Roll llvm-project from 2138b6cd509b to 424c73a402df (34 revisions)\n- 719b303a Roll llvm-project from 53a3d6ae6cc6 to 2138b6cd509b (57 revisions)\n- 7aac856c Roll emscripten from 38a5bec7bc3f to 84a0bde0f29d (3 revisions)\n- a7d31bd6 Roll llvm-project from f869d0ba4031 to 53a3d6ae6cc6 (108 revisions)\n- ea870214 Roll v8 from a34fe5bcf98f to 18101f3f5f7b (94 revisions)\n- 5471b3df Roll binaryen from 57ee9917b8dc to 29765863a603 (1 revision)\n- ceb1dbaf Roll emscripten from aada25650bf8 to 38a5bec7bc3f (1 revision)\n- 6799db27 Roll llvm-project from b49d43cb82f8 to f869d0ba4031 (45 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/9aa80542..df22a5e4\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "84a0bde0f29d0699c82a56510dc1a3fea2ce5217",
      "tree": "4f3e8684839b2db66c175ae9eee414db70b262d2",
      "parents": [
        "fa46a1d882f03c8fa85ef1f44329fd542bf614d4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 15 18:21:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 18:21:38 2026"
      },
      "message": "Enable `toplevel: true` in `acorn-optimizer.mjs` Terser pass (#27987)\n\nTerser\u0027s `reduce_vars: true` inlines top-level `const` declarations into\ntheir use sites during `minify_sync`, which runs after `JSDCE`. Without\n`toplevel: true`, Terser\u0027s `unused: true` pass refuses to drop top-level\ndeclarations, leaving inlined top-level `const` declarations and other\nunused top-level variables in the output.\n\nThis has negligible link-time performance impact (~1-3 ms on\n`minify_sync`), since `reduce_vars` and `unused` already walk the full\n`AST_Toplevel` tree regardless of the `toplevel` setting.\n\nThis should really have been part of #27949."
    },
    {
      "commit": "fa46a1d882f03c8fa85ef1f44329fd542bf614d4",
      "tree": "1e9ca7031057b4fdbcd4e2e3266d8b273b8cb06d",
      "parents": [
        "61b8d612f2e8d7c727341e299bda697c6fdaa11d"
      ],
      "author": {
        "name": "Dasa Paddock",
        "email": "dpaddock@esri.com",
        "time": "Thu Oct 15 16:54:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 16:54:11 2026"
      },
      "message": "Update libpng port to v1.6.59 (#27956)\n\nFixes [CVE-2026-46675](https://www.cve.org/CVERecord?id\u003dCVE-2026-46675).\nThe `libpng-1.6.59.tar.gz` file and the list of changes are available at\nhttps://sourceforge.net/projects/libpng/files/libpng16/1.6.59/"
    },
    {
      "commit": "61b8d612f2e8d7c727341e299bda697c6fdaa11d",
      "tree": "d402f3645ee65d0a2b2a548bc63d1be7cc5cac9d",
      "parents": [
        "38a5bec7bc3f4dcd6d6a47b2de043e475334299b"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Thu Oct 15 15:42:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 15:42:40 2026"
      },
      "message": "[mimalloc] Define `MI_FREE_USE_PAGEMAP` (#27982)\n\nUpstream commit microsoft/mimalloc@0d17826 renamed `MI_OPT_FREE` to\n`MI_FREE_USE_PAGEMAP`, with its meaning reversed.\n\nAs we did not previously define `MI_OPT_FREE`, define\n`MI_FREE_USE_PAGEMAP` instead. This also matches the upstream\nconfiguration for WASI targets.\n\nFixes: #27978"
    },
    {
      "commit": "38a5bec7bc3f4dcd6d6a47b2de043e475334299b",
      "tree": "1805f4a9734390ac051d9baa882f290ae14d8533",
      "parents": [
        "aada25650bf8ccf44cf45e4512e60e0d32692738"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Oct 15 15:27:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 15 15:27:31 2026"
      },
      "message": "Update emsdk version from 4db0da32 to 9aa80542 (#27971)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 4db0da32 \u003d\u003e 9aa80542\n\nThe following revisions were included in this update:\n\n```\n- 9aa80542 Roll llvm-project from f432af682a46 to b49d43cb82f8 (23 revisions)\n- 59a456b8 Roll emscripten from 488ddc112b9e to aada25650bf8 (3 revisions)\n- 4d2ef75b Roll llvm-project from 6b804fdec943 to f432af682a46 (55 revisions)\n- 77def98f Roll binaryen from a885222570e7 to 57ee9917b8dc (1 revision)\n- 8cc41059 Roll emscripten from 6882a79eedf0 to 488ddc112b9e (3 revisions)\n- f1d62ff8 Roll llvm-project from 5d79cec75c9f to 6b804fdec943 (65 revisions)\n- 16ea5fba Roll emscripten from 77b5f2f54d63 to 6882a79eedf0 (1 revision)\n- 49176bdb Roll binaryen from 74d78de607e0 to a885222570e7 (1 revision)\n- bf375bb1 Roll llvm-project from 50eb53f01dfb to 5d79cec75c9f (58 revisions)\n- 39dd3db8 Roll v8 from 8290bd3597e4 to a34fe5bcf98f (97 revisions)\n- 70debd3e Roll llvm-project from d925f39805d7 to 50eb53f01dfb (41 revisions)\n- 836c83f2 Roll emscripten from fddbbc666bf2 to 77b5f2f54d63 (1 revision)\n- 9a43669e Roll llvm-project from 9d18ac3e7264 to d925f39805d7 (19 revisions)\n- 889e2791 Roll binaryen from 91d343741e6e to 74d78de607e0 (1 revision)\n- 1eef2ef2 Roll emscripten from 0fc8d0c8090d to fddbbc666bf2 (2 revisions)\n- 5263237b Roll binaryen from 0b8d88ee62b8 to 91d343741e6e (2 revisions)\n- b5597bf7 Roll llvm-project from a1c84751fed9 to 9d18ac3e7264 (31 revisions)\n- b7cd398b Roll emscripten from 5c61a6d01912 to 0fc8d0c8090d (4 revisions)\n- f8317388 Roll binaryen from 99482c7a18f4 to 0b8d88ee62b8 (1 revision)\n- 7b191914 Roll emscripten from 14fd5a03ef54 to 5c61a6d01912 (1 revision)\n- d0b3a8b5 Roll binaryen from eb441bad531d to 99482c7a18f4 (1 revision)\n- 113bc12a Roll llvm-project from e69542d200fa to a1c84751fed9 (92 revisions)\n- d90d4f23 Roll binaryen from 0edef6462d5c to eb441bad531d (1 revision)\n- 1b7fb76f Roll emscripten from 0bb26c10d3cd to 14fd5a03ef54 (2 revisions)\n- ef7f2a26 Roll llvm-project from 168202c5e16a to e69542d200fa (66 revisions)\n- 5b2666b6 Roll v8 from 38931b7702cd to 8290bd3597e4 (68 revisions)\n- 2354237f Roll llvm-project from 6c2da1b8ac4b to 168202c5e16a (17 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/4db0da32..9aa80542\n\nThe following (4) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 860606 \u003d\u003e 860603 [-3 bytes / -0.00%]\ncodesize/test_minimal_runtime_code_size_audio_worklet.json: 16378 \u003d\u003e 16361 [-17 bytes / -0.10%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm.json: 11015 \u003d\u003e 10994 [-21 bytes / -0.19%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17344 \u003d\u003e 17323 [-21 bytes / -0.12%]\n\nAverage change: -0.10% (-0.19% - -0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "aada25650bf8ccf44cf45e4512e60e0d32692738",
      "tree": "e29c70d33997d49cdbc607e172dd464b7d622a43",
      "parents": [
        "f90acd3635b42fefebc0059a7c8654d3518b11e2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 14 23:41:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 23:41:51 2026"
      },
      "message": "[ports] Add retry logic to port downloads (#27975)\n\nRetry failed port downloads in `tools/ports/__init__.py` up to 3 times\nwith exponential backoff (`1s`, `2s`, `4s`) and a 30-second timeout\nbefore failing with an error. Also pass `-f` to `curl` (`curl -sSfL`) so\nHTTP server errors trigger retries rather than returning an HTML error\npage that fails the hash check.\n\nThis addresses transient network issues such as isolated HTTP 5xx/429\nresponses (e.g. from GitHub), connection resets, hung connections, and\nmid-stream disconnects. It does not address extended multi-minute or\nmulti-hour outages of upstream hosts (such as `lua.org`), which would\nstill require mirroring archives or caching to avoid.\n\nSee: #27500"
    },
    {
      "commit": "f90acd3635b42fefebc0059a7c8654d3518b11e2",
      "tree": "1248946f4ba8d6180caf4d3c2947751bb1e3023d",
      "parents": [
        "e40b26a21a4f2ec1271ecfbe09c6adeb88bea077"
      ],
      "author": {
        "name": "juj",
        "email": "jujjyl@gmail.com",
        "time": "Wed Oct 14 23:01:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 23:01:24 2026"
      },
      "message": "Fix bigendian build support (#27980)\n\nAfter #27269, HEAPU16 and HEAPU32 must be included in deps list. The PR\nmissed one spot in bigendian build support."
    },
    {
      "commit": "e40b26a21a4f2ec1271ecfbe09c6adeb88bea077",
      "tree": "630fe50e8b253daf045372fc4dd3248e0914da31",
      "parents": [
        "488ddc112b9e77a868609442147b755f2bac8f3c"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Wed Oct 14 22:57:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 22:57:14 2026"
      },
      "message": "Resolve gethostbyname through getaddrinfo, with real reverse lookups under NODERAWSOCKETS (#27973)\n\nThis routes the `gethostbyname` family through `getaddrinfo`, resolving\n#27887.\n\n`gethostbyname*` goes through musl\u0027s `gethostbyname2_r` into our\n`__lookup_name`, which called `_emscripten_lookup_name` and so always\nresolved via the fake `DNS` table. Since #27693, `getaddrinfo` uses\n`node:dns` under `NODERAWSOCKETS`, but `gethostbyname` still returned\nfake `172.29.x.y` addresses that `node:net` cannot connect to.\n\n* `__lookup_name` is now a C adapter over `getaddrinfo()`, returning up\nto `MAXADDRS` IPv4/IPv6 addresses and passing `EAI_*` errors through\n(which `gethostbyname2_r` already maps to `HOST_NOT_FOUND` /\n`TRY_AGAIN`). `gethostbyname` therefore follows whichever resolver\n`getaddrinfo` uses: the fake table, `node:dns` under `NODERAWSOCKETS`,\nor the proxy under `PROXY_POSIX_SOCKETS`. `_emscripten_lookup_name` is\nremoved.\n* Under `NODERAWSOCKETS`, `getnameinfo` (and so `gethostbyaddr`) does a\nreal reverse lookup via `dns.lookupService`, waiting on it the same way\n`getaddrinfo` does (sync-proxied pthreads, ASYNCIFY / JSPI). Where the\ncaller cannot wait, it returns the numeric host, or `EAI_AGAIN` with\n`NI_NAMEREQD`.\n* `$DNS` is no longer linked under `NODERAWSOCKETS`, since\n`writeSockaddr` and `getSocketAddress` only ever see numeric addresses\nwith real sockets.\n\n`test/sockets/test_dns.c` now covers `gethostbyname` for numeric, real\nand unknown hosts, `gethostbyaddr`, and `getnameinfo` with `NI_NAMEREQD`\n/ `NI_NUMERICHOST`, across the existing PROXY_TO_PTHREAD, JSPI, ASYNCIFY\nand no-wait variants. The PTR name for 127.0.0.1 depends on the host\nresolver, so the test checks that a name is returned and that\n`gethostbyaddr` agrees with `getnameinfo`."
    },
    {
      "commit": "488ddc112b9e77a868609442147b755f2bac8f3c",
      "tree": "23763547e1ac30dcf24d5dca6402d6e96fe2a34c",
      "parents": [
        "3db4fed5b5eb32d045a0d6453f578d9c6612a9ec"
      ],
      "author": {
        "name": "juj",
        "email": "jujjyl@gmail.com",
        "time": "Wed Oct 14 22:00:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 22:00:14 2026"
      },
      "message": "Extend EMTEST_AUTOSKIP to cover test skips in test_other.py. (#27972)\n\nExtend EMTEST_AUTOSKIP to cover test skips in test_other.py. Fix\nEMTEST_SKIP_... \u003d 0 to be not silently treated as EMTEST_SKIP_... \u003d 1."
    },
    {
      "commit": "3db4fed5b5eb32d045a0d6453f578d9c6612a9ec",
      "tree": "9f2e6c2b5317629b8eab4b6a3a6ada988164bf11",
      "parents": [
        "c46e2c73222026cc4ecc592fd0b4710a441febf6"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 14 21:23:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 21:23:40 2026"
      },
      "message": "Use `for..of` loops in debug and profiling JS files. NFC (#27977)\n\nReplace indexed `for` loops, `for..in` loops, and `.forEach()` calls\nwith `for..of` loops across `cpuprofiler.js` and `memoryprofiler.js`,\nand remove an unused `.entries()` index in `source_map_support.js`.\n\nFollow-up to #27968."
    },
    {
      "commit": "c46e2c73222026cc4ecc592fd0b4710a441febf6",
      "tree": "cf5ac536e807a2f779a39663b4443618dfbe5f60",
      "parents": [
        "6882a79eedf0d48bf2375d193d8e469598b8894b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 14 20:35:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 20:35:26 2026"
      },
      "message": "[WasmFS] Return ESPIPE from fallocate and fadvise on non-seekable fds (#27976)\n\nPR #27305 updated `__syscall_fallocate` and `__syscall_fadvise64` in the\nJS filesystem to return `ESPIPE` on non-seekable file descriptors (such\nas pipes) and added `test_fs_fadvise_fallocate`, but did not update\nWasmFS.\n\nCheck `isSeekable()` in WasmFS\u0027s `__syscall_fallocate` and\n`__syscall_fadvise64` (along with validating the fd in\n`__syscall_fadvise64`), and enable `wasmfs.test_fs_fadvise_fallocate*`\nin `.circleci/config.yml`.\n\nFixes: #27969"
    },
    {
      "commit": "6882a79eedf0d48bf2375d193d8e469598b8894b",
      "tree": "2b8b43d93d10a4acbb4c458298bb02fcfbfd59db",
      "parents": [
        "77b5f2f54d63cd751a0d4f3abd6bb9c078044f8b"
      ],
      "author": {
        "name": "Hood Chatham",
        "email": "roberthoodchatham@gmail.com",
        "time": "Wed Oct 14 19:03:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 19:03:32 2026"
      },
      "message": "Fix roundtrip behavior for utimesat and stat (#27941)\n\nThis partially reverts #27794 and #27890. They break the Python test\nsuite because it expects that if it calls `utimesat` and then `stat`,\nthe time read back by `stat` is exactly identical to the time set by\n`utimesat`. I think this is a contradictory goal to the goal of\ntest_fs_subms_times.c because node\u0027s `fs.utimesSync()` function takes a\nfloat argument so with sub-millisecond times, we get floating precision\nerrors. On the other hand, it would be possible to support\nsub-millisecond times without breaking round trips for the memfs.\n\nThis is a second attempt, #27896 was the first."
    },
    {
      "commit": "77b5f2f54d63cd751a0d4f3abd6bb9c078044f8b",
      "tree": "ea2e9dc2ebbca3eab1f4d3e716ba3aac8e85ef0e",
      "parents": [
        "fddbbc666bf21c68bd3e3d540c3b34fb1c2064c5"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 14 02:29:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 02:29:51 2026"
      },
      "message": "Use `let` and `const` in debug and profiling JS files. NFC (#27968)\n\nConvert `var` declarations to modern `let` / `const` across debug-only\nand profiling JS files (`cpuprofiler.js`, `deterministic.js`,\n`emrun_postjs.js`, `memoryprofiler.js`, `minimum_runtime_check.js`,\n`runtime_debug.js`, `runtime_safe_heap.js`, `runtime_stack_check.js`,\n`source_map_support.js`, and `threadprofiler.js`)."
    },
    {
      "commit": "fddbbc666bf21c68bd3e3d540c3b34fb1c2064c5",
      "tree": "58668c5ffcae9f8b731b6d4ac705c0fb70587b91",
      "parents": [
        "59d7b45a9ede8b1cfe1bce74df309d58b22bd138"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 14 00:16:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 14 00:16:25 2026"
      },
      "message": "Use `const` in JS library code where values can be inlined (#27871)\n\nNow that Terser `reduce_vars` and `unused` are enabled in optimized\nbuilds, we can use `const` in JS library code without paying a code size\ncost, as Terser inlines `const` values into their uses and drops the\nunused `const` declarations.\n\nSome constants inside nested block scopes (such as `BUFSIZE` inside\n`if (ENVIRONMENT_IS_NODE)` in `libfs_shared.js`, or constants in\n`libsyscall.js` where syscall bodies are wrapped in `try`/`catch`) are\nleft as `var` due to https://github.com/terser/terser/issues/1756,\nwhere Terser\u0027s `reduce_vars` fails to inline `const` declarations inside\nnested blocks.\n\nSee: #27949"
    },
    {
      "commit": "59d7b45a9ede8b1cfe1bce74df309d58b22bd138",
      "tree": "08a4161f5c3196131fb25098b508a51b4ffc253c",
      "parents": [
        "0fc8d0c8090db71d7788d40928338e74b4d9c595"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 23:17:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 23:17:04 2026"
      },
      "message": "Remove windows .bat and .ps1 launchers (#27359)\n\nWe have been using the .exe launchers for a few releases now, with no\noutstanding issues\n\nWe should probably wait a little longer for it to bake but eventually I\nwould like to land this change.\n\nSee #24858"
    },
    {
      "commit": "0fc8d0c8090db71d7788d40928338e74b4d9c595",
      "tree": "cb5f53b40a239bcef08266f3268d0aec40d6a2e8",
      "parents": [
        "572c3c5a73ed05cc5a7751a9abfa5ccfd54f1772"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 22:32:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 22:32:33 2026"
      },
      "message": "[emrun] Fix premature server exit when browser is already running (#27950)\n\nWhen a browser instance is already running at `emrun` startup\n(`previous_browser_processes` is non-empty), launching the browser\ntypically spawns a short-lived stub process (`browser_process`) that\nhands off the URL to the existing browser instance and then exits. An\nexception is `--safe-firefox-profile`, which passes `-no-remote` and a\nfresh `--profile` to Firefox so that `browser_process` runs as a\nseparate, long-lived browser instance.\n\nIn the handoff case, `detect_browser_processes()` expects\n`current_browser_processes` to end up empty so that\n`is_browser_process_alive()` falls back to waiting for the page to call\n`exit()`. However, if the existing browser navigates to the page before\nthe handoff stub has finished exiting, `detect_browser_processes()`\nwould record `browser_process.pid` in `current_browser_processes`.\nMoments later, when the stub finishes exiting,\n`is_browser_process_alive()` would see that `browser_process.pid` no\nlonger exists (via `psutil`) and immediately shut down the web server.\n\nExclude `browser_process.pid` from `current_browser_processes` in this\ncase so its exit is not mistaken for the user closing the browser. Even\nif `browser_process` is not a short-lived stub and remains running,\n`is_browser_process_alive()` and `kill_browser_process()` already check\n`browser_process.poll()` directly.\n\nFixes: #27504"
    },
    {
      "commit": "572c3c5a73ed05cc5a7751a9abfa5ccfd54f1772",
      "tree": "4b1e40f206e9259feffbb01da1b2aab55d73d035",
      "parents": [
        "f10d72b11c52b1fa820ebaf45108e4116a59493b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 21:45:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 21:45:58 2026"
      },
      "message": "Clean up stale Closure externs and mismatched `#endif` comments. NFC (#27963)\n\n- Remove `WebAssembly.Exception.*` and `Math.*` externs from\n`src/closure-externs/closure-externs.js`, as these are now provided\nnatively by Closure Compiler\u0027s built-in externs.\n- Remove unused `FunctionType`, `WebAssembly.Function`, `define`, and\n`worker` externs and orphaned comments from `closure-externs.js`.\n- Remove duplicate `print` and `printErr` declarations from\n`src/closure-externs/spidermonkey-externs.js`.\n- Remove dead check for `src/closure-externs/browser-externs` in\n`tools/building.py` (the directory was removed in #16199).\n- Remove dangling comment from `src/runtime_init_memory.js` and fix\nmismatched `#else`/`#endif` comments across `src/`."
    },
    {
      "commit": "f10d72b11c52b1fa820ebaf45108e4116a59493b",
      "tree": "d79f8c606ded28d0611f4e5164a7b9737bdf3540",
      "parents": [
        "4d91aaa31d971ced73659291fd4a389468dc42d8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 20:46:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 20:46:32 2026"
      },
      "message": "Handle `const` when merging declarations in `unsafe_optimizations.mjs` (#27964)\n\nWhen merging `var` or `let` declarators into a preceding `const`\n`VariableDeclaration` in `tools/unsafe_optimizations.mjs`, downgrade the\ntarget declaration kind from `const` to the merged declaration\u0027s kind so\nthat mutable or uninitialized declarators do not become `const`.\n\nI ran into this bug while working on some changes that use `const` more."
    },
    {
      "commit": "4d91aaa31d971ced73659291fd4a389468dc42d8",
      "tree": "bada5dbbda77ec085a3314cd744be0d5650d05e3",
      "parents": [
        "5c61a6d01912f574245a8aceb1da4642de789dda"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 20:42:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 20:42:26 2026"
      },
      "message": "[test] Remove dead PROXY_TO_WORKER code in reftest.js. NFC (#27965)\n\n`WebGLClient` and `-sPROXY_TO_WORKER` were removed in #25645, so the\n`typeof WebGLClient !\u003d\u003d \u0027undefined\u0027` branch in `setupRefTest()` is dead\ncode and `setupRefTest()` can be replaced with setting\n`Module[\u0027postRun\u0027] \u003d doReftest` directly."
    },
    {
      "commit": "5c61a6d01912f574245a8aceb1da4642de789dda",
      "tree": "4cd649a335ccfd60074cf80b9bb477299f79b606",
      "parents": [
        "14fd5a03ef54c6e1e31cb3cd0141ac8cf4ffbde5"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 18:54:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 18:54:41 2026"
      },
      "message": "Remove stale comment and temporary variable in `abort()`. NFC (#27962)\n\nThe comment and intermediate `e` variable were added in #11615 when\n`abort()` also called `readyPromiseReject(e)` under `MODULARIZE`. That\ncall was removed in #27059, making the comment and variable redundant.\n\nAlso remove the `@suppress {checkTypes}` annotation on `new\nWebAssembly.RuntimeError(what)`, which was added in #16199 and is no\nlonger needed since https://github.com/google/closure-compiler/pull/3913\nwas merged upstream and picked up in #17029."
    },
    {
      "commit": "14fd5a03ef54c6e1e31cb3cd0141ac8cf4ffbde5",
      "tree": "270f6d860707d1a6831574bd3012d13c3f9d7038",
      "parents": [
        "31f8dfa2346f6ec1f8f0827a0497392a4e151565"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Oct 13 16:18:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 16:18:17 2026"
      },
      "message": "Mark `MEMORY64\u003d2` as deprecated (#27953)\n\nAdd `MEMORY64\u003d2` to `DEPRECATED_SETTINGS` in `tools/settings.py` so that\npassing `-sMEMORY64\u003d2` emits a deprecation warning under `-Wdeprecated`.\n\nAlso update settings documentation, `ChangeLog.md`, and tests.\n\nSee: #27952"
    },
    {
      "commit": "31f8dfa2346f6ec1f8f0827a0497392a4e151565",
      "tree": "e6f7888fed4894ec0d98bd696a8eb1cc7c582ebf",
      "parents": [
        "0bb26c10d3cd7d9327cf95c1d1cf8fd1252ea3bb"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Oct 13 16:14:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 13 16:14:17 2026"
      },
      "message": "Update emsdk version from 43da5425 to 4db0da32 (#27959)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 43da5425 \u003d\u003e 4db0da32\n\nThe following revisions were included in this update:\n\n```\n- 4db0da32 Roll llvm-project from 1f0a52995f37 to 6c2da1b8ac4b (23 revisions)\n- 4b59c234 Roll emscripten from 0479680d8e69 to 0bb26c10d3cd (1 revision)\n- 8da156a3 Roll binaryen from 5c4a31dcf023 to 0edef6462d5c (1 revision)\n- bb522568 Roll llvm-project from 2af79d87c16d to 1f0a52995f37 (58 revisions)\n- 70593df9 Roll emscripten from 313ff16a5053 to 0479680d8e69 (1 revision)\n- 15f27479 Roll binaryen from 6de3a0bd2655 to 5c4a31dcf023 (1 revision)\n- a8ccaf35 Roll emscripten from ac0c9059fb1d to 313ff16a5053 (2 revisions)\n- f2b3e67a Roll llvm-project from cc453052cf5b to 2af79d87c16d (47 revisions)\n- 0e8898b2 Configure rewrapper via CMake flags and remove WRAP_RECLIENT mode\n- bdbb19bb Roll llvm-project from e725ea126269 to cc453052cf5b (71 revisions)\n- e2842a8c Roll v8 from a74948bb81a5 to 38931b7702cd (1 revision)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/43da5425..4db0da32\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 860627 \u003d\u003e 860613 [-14 bytes / -0.00%]\n\nAverage change: -0.00% (-0.00% - -0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "0bb26c10d3cd7d9327cf95c1d1cf8fd1252ea3bb",
      "tree": "82867243007421778a77e41008a7502ccf9da72f",
      "parents": [
        "0479680d8e69d284baab5ac9d50387e078385d0f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 12 22:29:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 22:29:56 2026"
      },
      "message": "Enable Terser `reduce_vars` and `unused` in `acorn-optimizer.mjs` (#27949)\n\nSplit out from #27871\n\nEnable `reduce_vars` and `unused` in Terser `--compress` (added in\n#27926) in `tools/acorn-optimizer.mjs`.\n\nThis inlines `const` values into their expression uses and drops the\nresulting unused local `const` declarations (along with unused function\nparameters and single-use inner functions) in optimized builds that do\nnot run Closure Compiler.\n\nThis allows us to use `const` in JS library code without paying a code\nsize cost, while reducing total JS code size in\n`test_no_closure_code_size` by 611 bytes.\n\nTiming highlights (`test/hello_world.c` with `-sINCLUDE_FULL_LIBRARY`,\n~247 KB minified JS):\n- `minify_sync` with `compress: {defaults: false, evaluate: true,\nkeep_fargs: false}`: 165.1 ms (250,514 B)\n- `minify_sync` adding `reduce_vars: true, unused: true`: 224.3 ms\n(+59.2 ms, or +26.7 ms for `unused` and +28.8 ms for `reduce_vars`),\nsaving ~3.2 KB (247,346 B).\n\nOn a standard `-O2` `hello_world.c` build (~8.4 KB JS), `minify_sync`\ngoes from 3.9 ms to 6.2 ms (+2.3 ms), saving 92 B."
    },
    {
      "commit": "0479680d8e69d284baab5ac9d50387e078385d0f",
      "tree": "6722a852ddddc8ee52039620677f79ffd4c04da1",
      "parents": [
        "313ff16a505310949fdee616fa93d9c9a04f4f40"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Oct 12 18:40:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 18:40:27 2026"
      },
      "message": "Remove stale asm.js and fastcomp references and dead tests. NFC (#27935)\n\nRemove leftover `asm.js` and `fastcomp` references and tests that are no\nlonger used:\n\n- Remove `test/invoke_i.cpp`, two `fastcomp` `invoke_*` tests, and the\n  disabled `test_global_inits` test in `test/test_other.py` that have\n  been skipped since the `fastcomp` era.\n- Remove `test_preallocated_heap`\n(`test/browser/test_preallocated_heap*`)\n  and `Module.buffer` documentation in `module.rst` and\n  `Deploying-Pages.rst`, which tested and documented the `asm.js`-only\n  `Module.buffer` feature (`Module.buffer` is not used by Wasm or\n  `wasm2js`).\n- Remove stale `asm.js`, `.mem`, and `fastcomp` references in\n  `SINGLE_FILE`, `--closure`, and `--emit-symbol-map` documentation and\n  comments across `tools/` and `test/`."
    },
    {
      "commit": "313ff16a505310949fdee616fa93d9c9a04f4f40",
      "tree": "cc8f360e4b79bcad5f9145b6d9a3709da3b6f677",
      "parents": [
        "3b38f0fd732c0bed79a36bb0ba42ae2ec438c3e5"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Oct 12 18:01:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 18:01:12 2026"
      },
      "message": "Update emsdk version from d68fe7d3 to 43da5425 (#27938)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: d68fe7d3 \u003d\u003e 43da5425\n\nThe following revisions were included in this update:\n\n```\n- 43da5425 Roll llvm-project from ce2a4984a3f4 to e725ea126269 (7 revisions)\n- fa1ed755 Roll llvm-project from 5e68ef96cc1d to ce2a4984a3f4 (15 revisions)\n- 7d2af9c8 Roll llvm-project from 7f6afc56cd05 to 5e68ef96cc1d (28 revisions)\n- d19fc6ab Roll llvm-project from cb23a36311f5 to 7f6afc56cd05 (24 revisions)\n- 2aca5aac Roll llvm-project from c23622fd7283 to cb23a36311f5 (11 revisions)\n- 1d2a32cc Roll llvm-project from 86d42a0dcf12 to c23622fd7283 (16 revisions)\n- 1fc3d2ec Roll v8 from 164b5ceefe38 to a74948bb81a5 (7 revisions)\n- 34cebc13 Roll llvm-project from 46cf0b8c9adc to 86d42a0dcf12 (9 revisions)\n- 475f34e7 Roll llvm-project from 5588749b29b2 to 46cf0b8c9adc (14 revisions)\n- 8740cae1 Roll llvm-project from 88e3d6b0a846 to 5588749b29b2 (15 revisions)\n- b0995058 Roll llvm-project from 53191d4a39ea to 88e3d6b0a846 (13 revisions)\n- 17dab17c Roll llvm-project from 44d92cb5c10a to 53191d4a39ea (33 revisions)\n- 34dfc7b4 Roll binaryen from 7be09684aae1 to 6de3a0bd2655 (3 revisions)\n- d6bdcaee Roll emscripten from b5ce70507bc3 to ac0c9059fb1d (2 revisions)\n- 44e9e374 Roll llvm-project from 14ba076142eb to 44d92cb5c10a (81 revisions)\n- 024781b1 Roll v8 from c92edfb38167 to 164b5ceefe38 (72 revisions)\n- 3e72b0e1 Roll binaryen from 7a65f762ddcb to 7be09684aae1 (10 revisions)\n- 56b7a19e Roll emscripten from 8c1f371e65ba to b5ce70507bc3 (2 revisions)\n- a13dc6b6 Roll binaryen from 3eff819e3bed to 7a65f762ddcb (1 revision)\n- a0a13b58 Roll emscripten from e1413c34b671 to 8c1f371e65ba (1 revision)\n- 9612d1f1 Roll llvm-project from 3f098e03b084 to 14ba076142eb (68 revisions)\n- fe87a652 Roll llvm-project from 39944cc35862 to 3f098e03b084 (40 revisions)\n- a62e0cd7 Roll binaryen from 207bbaec4b30 to 3eff819e3bed (1 revision)\n- dd92835c Roll llvm-project from c4bbc6e50978 to 39944cc35862 (21 revisions)\n- 85e71a36 Roll binaryen from 611832f3397d to 207bbaec4b30 (1 revision)\n- ad998ee1 Roll llvm-project from 4c668a389988 to c4bbc6e50978 (27 revisions)\n- 7247d395 Roll binaryen from c2b304d8c327 to 611832f3397d (1 revision)\n- c9513449 Roll emscripten from 19ad2dcc07ae to e1413c34b671 (4 revisions)\n- 901f6f57 Roll binaryen from 57bc6bad9898 to c2b304d8c327 (1 revision)\n- a44e23ba Roll llvm-project from 239c882df8aa to 4c668a389988 (83 revisions)\n  ... (and more, see full log)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/d68fe7d3..43da5425\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "3b38f0fd732c0bed79a36bb0ba42ae2ec438c3e5",
      "tree": "709b3123e0605c0642c8a56f0f6a980fc8fe1b8c",
      "parents": [
        "ac0c9059fb1d62af2be2ab75388d08cf5e91a883"
      ],
      "author": {
        "name": "Alon Zakai",
        "email": "azakai@google.com",
        "time": "Mon Oct 12 17:47:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 12 17:47:52 2026"
      },
      "message": "Fully remove unused FS.filesystems property from libfs.js. NFC (#27940)\n\nReplaces #27918 which did not go far enough."
    },
    {
      "commit": "ac0c9059fb1d62af2be2ab75388d08cf5e91a883",
      "tree": "81eaf57be2b7f67a7fbd298047640c15e925d927",
      "parents": [
        "017098f5d612d683f9a0fe01246a3933af9b625e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 09 23:07:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 23:07:31 2026"
      },
      "message": "[cmake] Use `STATIC_LIBRARY` in `CheckTypeSize.cmake` (#27934)\n\nSupersedes #22304.\n\nInstead of linking an executable with `--oformat\u003dwasm` or\n`--oformat\u003dbare`, set `CMAKE_TRY_COMPILE_TARGET_TYPE` to\n`STATIC_LIBRARY` so `try_compile` only compiles and archives the object\nfile without running the linker.\n\nPass `-fno-lto` so that even when `-flto` is present in `CFLAGS`, a\nstandard Wasm object file (containing the plain ASCII `INFO:size[...]`\nstring) is emitted rather than LLVM bitcode.\n\nAlso add `-sWASM_WORKERS`, `-sEXIT_RUNTIME`, and `-flto` coverage to\n`test_cmake_check_type_size`.\n\nFixes: #27932\n\n---------\n\nCo-authored-by: Marc Burns \u003cm4burns@uwaterloo.ca\u003e"
    },
    {
      "commit": "017098f5d612d683f9a0fe01246a3933af9b625e",
      "tree": "bf2bbfecd8358b80b7107127f0ac93efcb9a66d7",
      "parents": [
        "b5ce70507bc3ff5b6734c8acd4950bec3384b1b1"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 09 23:02:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 23:02:11 2026"
      },
      "message": "Pass --no-test-only-unsafe to v8 in testing. NFC (#27943)\n\nA recent v8 change means the jsvu wrapper for v8 no generates a warning\non startup due to its use of --snapshot_blob argument.\n\nSee https://chromium-review.googlesource.com/c/v8/v8/+/8529769 \nSee https://github.com/GoogleChromeLabs/jsvu/issues/178"
    },
    {
      "commit": "b5ce70507bc3ff5b6734c8acd4950bec3384b1b1",
      "tree": "09092b307627d10cebcf96f8d52d36471558c1b7",
      "parents": [
        "30df0e845d11a5232706f577976a58c596cbbeaf"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 09 19:15:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 19:15:36 2026"
      },
      "message": "[test] Add `misc` test alias for `other` + `jslib`. NFC (#27929)\n\nThis alias is intended to expand to include additional test suites as\nthey are split out from `test_other.py`, and replaces `test-other` in\nCircleCI with `test-misc`."
    },
    {
      "commit": "30df0e845d11a5232706f577976a58c596cbbeaf",
      "tree": "d60795d55563cf08e9d31dd32b26e3941b4a9189",
      "parents": [
        "8c1f371e65ba692bd51b9d7633874b95b91d1392"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 09 18:18:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 18:18:27 2026"
      },
      "message": "Replace `stripDefaultUndefined` with Terser `--compress` (#27926)\n\nInstead of a dedicated `stripDefaultUndefined` Acorn AST pass (added in\ncompression (`{defaults: false, evaluate: true, keep_fargs: false}`)\nwhen minifying JS without Closure Compiler. In addition to stripping\n`\u003d undefined` default parameter values, this performs lightweight Terser\ncleanups (`undefined` -\u003e `void 0`, single-statement block brace\nremoval, and constant folding).\n\nIn general, this prevents us from needing to replicate compression\npasses that already exist in upstream Terser (see #27871).\n\nTiming highlights (`test/hello_world.c` with `-sINCLUDE_FULL_LIBRARY`,\n~252 KB minified JS):\n- `minify_sync` with `compress: false`: 105.5 ms\n- `minify_sync` with `compress: {defaults: false, evaluate: true,\n  keep_fargs: false}`: 188.3 ms (+82.8 ms, or ~+63 ms net after\n  removing the `stripDefaultUndefined` AST walk), saving ~1.4 KB.\n- On a standard `-O2` `hello_world.c` build (~8.5 KB JS), `minify_sync`\n  goes from 3.2 ms to 5.5 ms (+2.3 ms).\n\nThis change, in general, should prevent us from being tempted to\nreplicate compression passes that already exist in upstream terser\n(See #27871, for example).\n\nSee: #27839"
    },
    {
      "commit": "8c1f371e65ba692bd51b9d7633874b95b91d1392",
      "tree": "2b97addae4c642320017340b63ba6aa760142cd5",
      "parents": [
        "e1413c34b671e5932e0a77618c3224cf73152b56"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Oct 09 16:35:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 09 16:35:04 2026"
      },
      "message": "[test] Remove unreferenced test files. NFC (#27936)\n\nRemove orphaned test source, output, and codesize expectation files\nunder `test/` that are no longer referenced by any tests.\n\nSplit out from #27935"
    },
    {
      "commit": "e1413c34b671e5932e0a77618c3224cf73152b56",
      "tree": "8fb7bb3105f1e4b242c0f5a5cd3c1ac51f73b673",
      "parents": [
        "661afafb9b35247d1877cd19033f7f663cd266c4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 08 23:37:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:37:00 2026"
      },
      "message": "Consolidate `acorn_optimizer` calls in `minify_wasm_js`. NFC (#27928)\n\nPreviously, at `-O3`/`-Os`/`-Oz` (`expensive_optimizations`),\n`minify_wasm_js` invoked `acorn-optimizer.mjs` up to four separate times\nto parse and reprint JS:\n1. Pre-`metadce` (`AJSDCE`, `stripDefaultUndefined`,\n`--minify-whitespace`)\n2. Inside `metadce` (`applyDCEGraphRemovals`, `--minify-whitespace`)\n3. Post-`metadce` (`AJSDCE`, `--minify-whitespace`)\n4. Inside `minify_wasm_imports_and_exports`\n(`applyImportAndExportNameChanges`, `--minify-whitespace`)\n\nHave `metadce` and `minify_wasm_imports_and_exports` return their\nremoval/renaming metadata instead of invoking `acorn_optimizer`\ndirectly, and consolidate `applyDCEGraphRemovals`, post-`metadce`\n`AJSDCE`, `applyImportAndExportNameChanges`, `stripDefaultUndefined`,\nand `--minify-whitespace` into a single final `acorn_optimizer` pass.\n\nSplit out from #27926"
    },
    {
      "commit": "661afafb9b35247d1877cd19033f7f663cd266c4",
      "tree": "59fd268cef14a8b72fa75f3338ee7f3fc33b5d09",
      "parents": [
        "6c0aed6896308b20041c91b26fb329b3cb4ddaa6"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 08 23:36:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 23:36:14 2026"
      },
      "message": "[test] Enable `other.test_dot_a_all_contents_invalid` on macOS. NFC (#27930)\n\nSince #21114 (and llvm/llvm-project#78658), `wasm-ld` inspects all\narchive members upfront rather than relying on the archive symbol index,\nand warns whenever an archive member is neither a Wasm object file nor\nLLVM bitcode regardless of the host object or archive format.\n\nFixes: #16649"
    },
    {
      "commit": "6c0aed6896308b20041c91b26fb329b3cb4ddaa6",
      "tree": "71aefbf3f5432f45604287fb55b2fd49301c2dfe",
      "parents": [
        "fc889644b47caae0e85801bb12d5b1a921f984ea"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Oct 08 22:50:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 22:50:53 2026"
      },
      "message": "Mark 6.0.12 as released (#27931)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "fc889644b47caae0e85801bb12d5b1a921f984ea",
      "tree": "ff3a6c860e2313a6286ff834b2061039c2269220",
      "parents": [
        "19ad2dcc07aeb3329398d2d537d141c564ea8bab"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Thu Oct 08 22:17:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 22:17:34 2026"
      },
      "message": "NODERAWSOCKETS: make setsockopt/getsockopt symmetric (#27921)\n\nThis makes `setsockopt` and `getsockopt` consistent under\n`-sNODERAWSOCKETS`, resolves #27888.\n\nPreviously `setsockopt` accepted any unknown option silently while\n`getsockopt` returned `ENOPROTOOPT` for it, so a value that had just\nbeen set successfully could not be read back (e.g. `SO_RCVTIMEO`).\n`SO_REUSEADDR` also always read back as 1 but was never actually applied\nto UDP binds.\n\n* `SO_RCVTIMEO`/`SO_SNDTIMEO` are stored and reported as a `struct\ntimeval`, validated as the kernel does (`EINVAL` on a short length,\n`EDOM` on an out-of-range `tv_usec`). Nothing blocks in this backend, so\nthis matches kernel semantics for an `O_NONBLOCK` socket, where the\ntimeout is stored but never fires.\n* `SO_REUSEADDR` and `SO_REUSEPORT` are now passed to the UDP bind (both\nthe public `dgram` and `udp_wrap` paths), so datagram sockets can share\na port. `IPV6_V6ONLY` is passed through for UDP too.\n* `SO_ACCEPTCONN`, `SO_DOMAIN` and `SO_PROTOCOL` are reported.\n* Options that are not modelled now fail with `ENOPROTOOPT` in\n`setsockopt` as well, so everything accepted can be read back.\n\n`test_socket_options.c` is extended to cover the above and a new\n`test_udp_reuseaddr.c` checks that two UDP sockets with the option can\nbind the same port while a third without it gets `EADDRINUSE`. Both\ntests also pass natively on Linux.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "19ad2dcc07aeb3329398d2d537d141c564ea8bab",
      "tree": "e350b95d26c931b5b7c7224037dc68cf2490dbb9",
      "parents": [
        "5488e0871d46d19a3209988190fa6a653126256f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Oct 08 20:12:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 20:12:55 2026"
      },
      "message": "Use strict equality (`\u003d\u003d\u003d`/`!\u003d\u003d`) for `typeof` checks (#27927)\n\nIn Emscripten we historically have used loose equality checks when\ncomparing `typeof xxx` with a string constant. This was done because it\nsaved a few bytes of output size without any runtime cost (since the\nengine knows that both sides are strings, it will do a strict check\nanyway). See #21708, for example.\n\nHowever, this is not considered modern JS style. Instead, strict checks\nare preferred.\n\nThis change converts all remaining loose `typeof` comparisons across\n`src/` and `tools/` to use `\u003d\u003d\u003d` and `!\u003d\u003d`, accepting the small code\nsize increase in generated JS output (+0.08% average across codesize\ntests).\\\n\nSee #27851 for the version of this change the preserves the codesize but\nat the cost of adding an acorn pass."
    },
    {
      "commit": "5488e0871d46d19a3209988190fa6a653126256f",
      "tree": "5363325f2ab9e1fbb42431f835853c1f04ca984f",
      "parents": [
        "7deb8a07b5cea06fc304ebf7e4951cdff0bdd773"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Oct 08 15:26:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 15:26:15 2026"
      },
      "message": "Update emsdk version from f7eab863 to d68fe7d3 (#27924)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f7eab863 \u003d\u003e d68fe7d3\n\nThe following revisions were included in this update:\n\n```\n- d68fe7d3 Roll binaryen from 6fddddf71fab to 93d6e9de7e1d (1 revision)\n- 4cc4e1fc Roll llvm-project from 55c58be525fd to 97aa2aeb3b0b (49 revisions)\n- b89f22e1 Roll emscripten from a8d736e977d6 to d23d98befa18 (1 revision)\n- f553a429 Roll binaryen from bee0b57cf3b6 to 6fddddf71fab (4 revisions)\n- c20dbdde Roll emscripten from 0ff60ccb1dc0 to a8d736e977d6 (12 revisions)\n- da91b79e Roll binaryen from a63f313c1bda to bee0b57cf3b6 (1 revision)\n- e4f3677b Roll llvm-project from 65cb0aa9afee to 55c58be525fd (219 revisions)\n- cfb5c632 Roll binaryen from b8e22b47d303 to a63f313c1bda (3 revisions)\n- ef11e4eb Roll emscripten from 5372a12809f8 to 0ff60ccb1dc0 (1 revision)\n- 8fa24709 Roll binaryen from a7a6b52c69f3 to b8e22b47d303 (2 revisions)\n- 6c13295f Roll v8 from a6723a2f8e8c to 56d94ea65ee3 (57 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f7eab863..d68fe7d3\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "7deb8a07b5cea06fc304ebf7e4951cdff0bdd773",
      "tree": "2040134b1ed7d86283fa7c39c95426f375cdd037",
      "parents": [
        "d23d98befa18f92fa0f3b89f921c75cbc94628cf"
      ],
      "author": {
        "name": "Ioulios P.",
        "email": "ipat@hotmail.gr",
        "time": "Thu Oct 08 15:24:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Oct 08 15:24:34 2026"
      },
      "message": "[WasmFS] Fix statfs inode counts and fsid to match JS FS (#27925)\n\n`doStatFS` set `f_files` to the file\u0027s inode number and `f_ffree` to\n1000000. WasmFS inode numbers are the address of the `File` object, so\n`f_files` was a relatively small value that changed depending on the\npath passed to `statfs`, and `f_ffree` was larger than `f_files` (which\nmeant `doStatFS` was reporting more free inodes than total inodes).\n`f_fsid` was also 0, while `test_statvfs` expects 42.\n\nThese values were copied from the JS FS when `doStatFS` was added in\n#16971, using the file\u0027s inode in place of `FS.nextInode`. #22932 later\nchanged the JS FS to report `f_ffree \u003c\u003d f_files` and updated\n`test_statvfs` to check this. WasmFS was not updated, so the test failed\nand was ultimately skipped.\n\nThis change uses fixed placeholder values (`f_files \u003d 1000000`, `f_ffree\n\u003d 500000`), the same as the other counts in `doStatFS`, and sets\n`f_fsid` to 42 to match the JS FS.\n\nThis re-enables `test_statvfs` and `test_fs_nodefs_statvfs` under\nWasmFS.\n\nPart of #25035"
    },
    {
      "commit": "d23d98befa18f92fa0f3b89f921c75cbc94628cf",
      "tree": "9d9ccc243973e50e4ed77b0d437f071f606c3714",
      "parents": [
        "a8d736e977d6d755ad138aba01e2362a30f3f231"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 21:50:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 21:50:49 2026"
      },
      "message": "[SDL] Remove unused methods and properties from `libsdl.js`. NFC (#27913)\n\n- Remove unused `loadColorToCSSRGBA`, `translateRGBAToColor`, and\n`debugSurface` from `$SDL`.\n- Remove write-only `mixerFormat` and `mixerChunkSize` properties from\n`$SDL`."
    },
    {
      "commit": "a8d736e977d6d755ad138aba01e2362a30f3f231",
      "tree": "20ff7df25026807e8b04252e6edb16f4ede245c9",
      "parents": [
        "f61e737509116cd3a2235b95df1dac53ca04d332"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 20:36:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:36:28 2026"
      },
      "message": "[SDL2] Remove explicit export of `createContext`. NFC (#27914)\n\nThis was fixed upstream in https://github.com/libsdl-org/SDL/pull/12970"
    },
    {
      "commit": "f61e737509116cd3a2235b95df1dac53ca04d332",
      "tree": "3b28db237e3279e279e2af62b21d5c9d95a904a5",
      "parents": [
        "d4851bdc94ce7b3f1e3005d28f911fe25d825544"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 20:35:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:35:06 2026"
      },
      "message": "Remove unused `$Sockets` object from `libcore.js`. NFC (#27915)\n\n`$Sockets` was leftover from the legacy pre-`SOCKFS` / `SOCKET_WEBRTC`\nsocket implementation and is no longer referenced anywhere in the\ncodebase."
    },
    {
      "commit": "d4851bdc94ce7b3f1e3005d28f911fe25d825544",
      "tree": "e24f5b131b09bcf438626c0771885fa618ab0899",
      "parents": [
        "c73f1ed8eac737200aa7a63e90b6f1112775141e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 20:07:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 20:07:31 2026"
      },
      "message": "Remove legacy `cpuprofiler_add_hooks` and `memoryprofiler_add_hooks`. NFC (#27912)\n\nThese backwards-compatibility shims were added in 2016 (`e4fa671645`)\nand are no longer called anywhere."
    },
    {
      "commit": "c73f1ed8eac737200aa7a63e90b6f1112775141e",
      "tree": "bdf4242351b45bdf997a8638925197e307f5d8d9",
      "parents": [
        "7946564694d6ebb4cf5766c99678a0cb0476d0c8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 19:53:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:53:40 2026"
      },
      "message": "Remove unused `GL.usedTempBuffers` from `libwebgl.js`. NFC (#27917)\n\n`GL.usedTempBuffers` has been unused since 1951e2b803."
    },
    {
      "commit": "7946564694d6ebb4cf5766c99678a0cb0476d0c8",
      "tree": "cecf62c2b94ee8aa566f18a793d45a51568e76a7",
      "parents": [
        "4e364a6988e7c8e6bd299e218804ae1781faa4f3"
      ],
      "author": {
        "name": "Thomas Steiner",
        "email": "tomac@google.com",
        "time": "Wed Oct 07 19:47:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 19:47:38 2026"
      },
      "message": "Check for `getFileHandle()` before taking the Cross-Origin Storage path (#27916)\n\nFollow-up to #27907: checking only for `navigator.crossOriginStorage`\nmisses implementations without `getFileHandle()`, so this checks for the\nmethod itself."
    },
    {
      "commit": "4e364a6988e7c8e6bd299e218804ae1781faa4f3",
      "tree": "52ddf3385bbd92b1e4d572acc6f8d806df00a32a",
      "parents": [
        "e57eaeab845cd1c7dab84c4c369678acd73c3956"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 18:20:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 18:20:17 2026"
      },
      "message": "Remove unused properties from `libglemu.js`. NFC (#27910)\n\nRemove unused `GLEmulation.lightModelLocalViewer`,\n`GLImmediate.tempMatrix`, `GLImmediate.initted`, and write-only\n`GLImmediate.indexData` (which also allocated an unused `Uint16Array` at\ninitialization time)."
    },
    {
      "commit": "e57eaeab845cd1c7dab84c4c369678acd73c3956",
      "tree": "016bcc33c99e571f1e4c2d089e03b0555ff0b87c",
      "parents": [
        "ccc0fe2fb54068ba72af2949d20b8c70ddb45527"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 18:18:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 18:18:47 2026"
      },
      "message": "[glut] Clean up unused properties and legacy fullscreen listeners. NFC (#27911)\n\n- Remove write-only `windowX` and `windowY` properties from `$GLUT`.\n- Remove obsolete `mozfullscreenchange` listeners and guard\n`webkitfullscreenchange` listeners with `#if MIN_SAFARI_VERSION \u003c\n160400`, matching `#27347`."
    },
    {
      "commit": "ccc0fe2fb54068ba72af2949d20b8c70ddb45527",
      "tree": "30bbbc1e0304c8791d8d6576a8265df40d2187e7",
      "parents": [
        "d85969f47adba9eae67d5b339f70553acb6b82fe"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 18:16:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 18:16:57 2026"
      },
      "message": "Remove unused `Browser.getUserMedia` and `$getUserMedia`. NFC (#27909)\n\n`Browser.getUserMedia` was originally added in `4fb9a41526` for the\nnow-removed `SOCKET_WEBRTC` socket backend and has no remaining callers\nor references in the codebase."
    },
    {
      "commit": "d85969f47adba9eae67d5b339f70553acb6b82fe",
      "tree": "286ce409c7fdc3cb4baaac1731fad3a367878103",
      "parents": [
        "1559c53533541a6d96fdb584bfad17f43fd96b75"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 18:15:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 18:15:52 2026"
      },
      "message": "Replace vendored `third_party/terser` with npm `terser` package (#27902)\n\nAdd `terser` to `package.json` and use Terser\u0027s public\n`minify_sync` API in `tools/acorn-optimizer.mjs` and\n`tools/unsafe_optimizations.mjs`.   We already had an\nindirect dependency on terser so that node_modules\ndirectory is actually unchanged here.\n\nPreviously we maintained a custom fork of Terser in `third_party/terser`\nsolely for `AST_ParenthesizedExpression` support. With `makeSequence`\nupdated in #27903 to emit a standard `SequenceExpression` directly, the\nonly remaining `ParenthesizedExpression` nodes come from Acorn in\n`--closure-friendly` mode (`preserveParens`). Instead of custom Terser\nAST support, unwrap those `ParenthesizedExpression` nodes after parsing\nwhile recording their source spans so `reattachComments` can wrap their\n`_codegen` in `output.with_parens`, keeping JSDoc `@type` cast comments\noutside the parentheses for Closure Compiler."
    },
    {
      "commit": "1559c53533541a6d96fdb584bfad17f43fd96b75",
      "tree": "d0c53ebbb9ed41494e89728c320712dd06e2581e",
      "parents": [
        "6fdcd6e91ca2e22f2582f394e798a30bd3e0573b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 18:05:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 18:05:57 2026"
      },
      "message": "Add a codesize test that does not use closure compiler (#27908)\n\nThis allows is to track the size of our builds for users who are not\nusing closure compiler.Add a codesize test that does not use closure\ncompiler\n\nSplit out from #27871"
    },
    {
      "commit": "6fdcd6e91ca2e22f2582f394e798a30bd3e0573b",
      "tree": "be44808885a4920b218332eb74466146c0124092",
      "parents": [
        "d6f5c0a249b6a459352ba8ae447017fe41b051ed"
      ],
      "author": {
        "name": "Thomas Steiner",
        "email": "tomac@google.com",
        "time": "Wed Oct 07 17:28:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 17:28:35 2026"
      },
      "message": "Rename `requestFileHandle()` to `getFileHandle()` for Cross-Origin Storage (#27907)\n\nThe Cross-Origin Storage API renamed `requestFileHandle()` to\n`getFileHandle()` in\nhttps://github.com/WICG/cross-origin-storage/pull/86. This updates the\n`-sCROSS_ORIGIN_STORAGE` runtime and its docs to match."
    },
    {
      "commit": "d6f5c0a249b6a459352ba8ae447017fe41b051ed",
      "tree": "e70d9139d2e048bdc2a317faa765560487a4f3fb",
      "parents": [
        "0ff60ccb1dc07e0b74bf4954dc569f62f852e1c7"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Oct 07 16:46:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 16:46:45 2026"
      },
      "message": "Update emsdk version from f97bc361 to f7eab863 (#27905)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f97bc361 \u003d\u003e f7eab863\n\nThe following revisions were included in this update:\n\n```\n- f7eab863 Roll emscripten from 86cb7e78cc6a to 5372a12809f8 (1 revision)\n- d2dc03d1 Roll emscripten from 5ddd9265c264 to 86cb7e78cc6a (3 revisions)\n- 24b19113 Roll binaryen from 84692ae3d15e to a7a6b52c69f3 (1 revision)\n- c2ed2bfb Roll llvm-project from 18f9e623e4c8 to 65cb0aa9afee (67 revisions)\n- a044e325 Roll emscripten from 05672c5c9ec5 to 5ddd9265c264 (3 revisions)\n- e91dc98e Roll binaryen from 1d7748aa4ef4 to 84692ae3d15e (1 revision)\n- 854d03a5 Roll emscripten from d38fd5a360e2 to 05672c5c9ec5 (4 revisions)\n- 2ee90d01 Roll llvm-project from 28f349c30963 to 18f9e623e4c8 (75 revisions)\n- 2770a036 Roll emscripten from 7c3a7a9a08cb to d38fd5a360e2 (3 revisions)\n- 0cc7d282 Roll emscripten from c5b9b37fb7d9 to 7c3a7a9a08cb (1 revision)\n- 9e3f1978 Roll llvm-project from 6973db57ff08 to 28f349c30963 (33 revisions)\n- bd5baec3 Roll v8 from 5c52bfb643b2 to a6723a2f8e8c (53 revisions)\n- 5a60ad84 Roll llvm-project from f42afb122770 to 6973db57ff08 (22 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f97bc361..f7eab863\n\nThe following (17) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153159 \u003d\u003e 153159 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_ctors2.json: 152564 \u003d\u003e 152564 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_except.json: 199261 \u003d\u003e 199261 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm.json: 168623 \u003d\u003e 168623 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 166483 \u003d\u003e 166483 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_lto.json: 119550 \u003d\u003e 119550 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155066 \u003d\u003e 155066 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink.json: 43344 \u003d\u003e 43344 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink_all.json: 860764 \u003d\u003e 860761 [-3 bytes / -0.00%]\ncodesize/test_codesize_mem_O3.json: 9134 \u003d\u003e 9134 [+0 bytes / +0.00%]\ncodesize/test_codesize_mem_O3_grow.json: 9469 \u003d\u003e 9469 [+0 bytes / +0.00%]\ncodesize/test_codesize_mem_O3_standalone.json: 9140 \u003d\u003e 9140 [+0 bytes / +0.00%]\ncodesize/test_codesize_mem_O3_standalone_lib.json: 8334 \u003d\u003e 8334 [+0 bytes / +0.00%]\ncodesize/test_codesize_mem_O3_standalone_narg.json: 8455 \u003d\u003e 8455 [+0 bytes / +0.00%]\ncodesize/test_codesize_mem_O3_standalone_narg_flto.json: 7386 \u003d\u003e 7386 [+0 bytes / +0.00%]\ncodesize/test_codesize_minimal_pthreads.json: 26064 \u003d\u003e 26064 [+0 bytes / +0.00%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26523 \u003d\u003e 26523 [+0 bytes / +0.00%]\n\nAverage change: -0.00% (-0.00% - +0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "0ff60ccb1dc07e0b74bf4954dc569f62f852e1c7",
      "tree": "c8c23faa2f61b41c4fa9304cc416cef45ecacf66",
      "parents": [
        "5372a12809f8f73c77c1940832eed570b7077d7d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Oct 07 16:18:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 16:18:33 2026"
      },
      "message": "Simplify `makeSequence` and `reattachComments` in `acorn-optimizer.mjs`. NFC (#27903)\n\n- Return a `SequenceExpression` directly from `makeSequence` without\nwrapping it in a non-standard `ParenthesizedExpression` node; Terser\u0027s\n`AST_Sequence` printer already emits parentheses wherever operator\nprecedence requires them.\n- Push plain `{type, value, nlb}` comment objects into `comments_before`\nin `reattachComments` instead of constructing internal\n`terser.AST_Token` instances.\n\nSplit out from #27902"
    },
    {
      "commit": "5372a12809f8f73c77c1940832eed570b7077d7d",
      "tree": "a04c8d87600e35f3e82ede6aed260c9c1c704012",
      "parents": [
        "86cb7e78cc6a025eabb31a894a989cadf355d4c3"
      ],
      "author": {
        "name": "Josep Maria Blasco",
        "email": "124881707+JosepMariaBlasco@users.noreply.github.com",
        "time": "Wed Oct 07 03:39:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Oct 07 03:39:50 2026"
      },
      "message": "Proxy `_emscripten_lookup_name` and `getnameinfo` to the main thread (#27889)\n\nThe fake DNS table of the socket emulation lives in JS, so every thread\nhas its\nown copy. `getaddrinfo` and the socket syscalls are proxied to the main\nthread,\nbut `_emscripten_lookup_name` (used by `gethostbyname`) and\n`getnameinfo` were\nnot. Under `PROXY_TO_PTHREAD` they used the calling worker\u0027s table:\n`gethostbyname` returned an address that `connect` could not map back to\nthe\nhost name (opening e.g. `ws://172.29.1.0:8080/`), and `getnameinfo`\ncould not\nreverse an address that `getaddrinfo` had handed out.\n\n`getnameinfo` was not in the issue: it has the same cause and showed up\nwhile\nwriting the test (with only `_emscripten_lookup_name` proxied, the new\ntest\nstill fails there with \"Name does not resolve\").\n\nThe new test (`test_dns_table`, with and without `PROXY_TO_PTHREAD`)\nresolves\nnames through `getaddrinfo` and `gethostbyname` and checks that they\nagree and\nthat `getnameinfo` maps both addresses back. Without this change the\npthreads\nvariant fails; with it both pass.\n\nFixes: #27886"
    }
  ],
  "next": "86cb7e78cc6a025eabb31a894a989cadf355d4c3"
}
