)]}'
{
  "log": [
    {
      "commit": "d10aa3af1bbc06af6c9ead1cd418237d09ca5353",
      "tree": "fe8ad0c5d18bcfa3727564fb229f5af96ccb6e15",
      "parents": [
        "6fad56c9ccc9175aa13a7bf5751783924102a77c"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Sep 05 23:22:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 23:22:01 2026"
      },
      "message": "Update emsdk version from ada02ef3 to bbd37521 (#27664)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ada02ef3 \u003d\u003e bbd37521\n\nThe following revisions were included in this update:\n\n```\n- bbd37521 Roll llvm-project from b5fe885e5d2d to ef7bfdcfd4e3 (8 revisions)\n- 7c6e5092 Roll emscripten from 48c8498a1530 to e5a00cccf0a1 (1 revision)\n- 7d2dbf37 Roll llvm-project from c3fa882edb34 to b5fe885e5d2d (28 revisions)\n- ebf7283b Roll emscripten from 43248806e422 to 48c8498a1530 (8 revisions)\n- 4e46da97 Roll emscripten from 9eca01833bb9 to 43248806e422 (2 revisions)\n- 0891e7ac Roll binaryen from c75f2ae1a525 to cdb9eaa079d0 (1 revision)\n- 10ef1d07 Roll emscripten from d81369405bfe to 9eca01833bb9 (3 revisions)\n- a4c8bc33 Roll llvm-project from ca7890e9f76d to c3fa882edb34 (38 revisions)\n- 5fd6b17c Roll emscripten from dc0f21dd8aab to d81369405bfe (1 revision)\n- c0ca00f3 Roll llvm-project from 543ac0371f32 to ca7890e9f76d (56 revisions)\n- 7e016196 Roll v8 from ec616fda9fd9 to e3ad665e4604 (25 revisions)\n- 44e171ec Roll llvm-project from c0fb057aad58 to 543ac0371f32 (41 revisions)\n- 6a1891c3 Roll llvm-project from 6ba0802b406e to c0fb057aad58 (15 revisions)\n- f5d4947d Roll llvm-project from e6734a41bb41 to 6ba0802b406e (54 revisions)\n- 60a1f53e Roll emscripten from 855804c1342a to dc0f21dd8aab (1 revision)\n- 95ea5027 Roll binaryen from 180bae3ed42f to c75f2ae1a525 (1 revision)\n- 3a40721b Roll llvm-project from d23b9dbc4e8b to e6734a41bb41 (82 revisions)\n- 80f0c7c3 Roll emscripten from 2bdd1af24187 to 855804c1342a (1 revision)\n- a91a1534 Roll llvm-project from f4ad12c3e437 to d23b9dbc4e8b (43 revisions)\n- 4ae1cf57 Roll v8 from 3e6373bb9f91 to ec616fda9fd9 (39 revisions)\n- 5ece3e68 Roll llvm-project from d79ce87f19d7 to f4ad12c3e437 (20 revisions)\n- 98b0f043 Roll llvm-project from fadd7e640336 to d79ce87f19d7 (21 revisions)\n- d7ae7883 Roll binaryen from 6c4214f7d34d to 180bae3ed42f (1 revision)\n- 197ab55b Roll emscripten from c28f6635a6e6 to 2bdd1af24187 (4 revisions)\n- 46e27fa0 Roll llvm-project from c13e9e15eb00 to fadd7e640336 (55 revisions)\n- 907bdaf6 Roll emscripten from e2ebea0e5f84 to c28f6635a6e6 (3 revisions)\n- b6475a37 Roll binaryen from e7a45512aa26 to 6c4214f7d34d (1 revision)\n- 8b650320 Roll emscripten from 7afdae44d67c to e2ebea0e5f84 (2 revisions)\n- 57d6f920 Roll llvm-project from 5c8ee8eb34e2 to c13e9e15eb00 (59 revisions)\n- 1be08a23 Roll binaryen from 20486056d457 to e7a45512aa26 (2 revisions)\n  ... (and more, see full log)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ada02ef3..bbd37521\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 858908 \u003d\u003e 858834 [-74 bytes / -0.01%]\n\nAverage change: -0.01% (-0.01% - -0.01%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "6fad56c9ccc9175aa13a7bf5751783924102a77c",
      "tree": "85d4d655db72029ad51790cb8816fd53442e164a",
      "parents": [
        "e5a00cccf0a19cc1aadc7206552da42b1018031a"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Sat Sep 05 05:06:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 05:06:38 2026"
      },
      "message": "Pin wasm-bindgen test crate to an exact version (#27678)\n\nThe wasm-bindgen tests pin the crate to the CLI version installed in CI,\nbut `cargo add wasm-bindgen@0.2.N` writes `wasm-bindgen \u003d \"0.2.N\"`,\nwhich cargo treats as the caret range `^0.2.N`. As soon as a newer 0.2.x\npatch is published, cargo resolves to it while the CLI on PATH stays at\nthe older version, and wasm-bindgen rejects the crate/CLI mismatch at\nlink time. This broke CI when 0.2.128 was released while the CLI was\nstill at 0.2.127.\n\n* Use exact requirements (`\u003d0.2.128`) in the `cargo add` calls in\n`test_other.py`\n* Same for `test/rust/bindgen_greeter/Cargo.toml`\n\nVerified that `cargo add wasm-bindgen@0.2.127` locks to 0.2.128 while\n`cargo add wasm-bindgen@\u003d0.2.127` locks to 0.2.127, so future releases\nno longer affect the pinned tests. `other.test_wasm_bindgen_*` pass\nlocally.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "e5a00cccf0a19cc1aadc7206552da42b1018031a",
      "tree": "dcceae6120616cdf03dfe541633879c19c854af2",
      "parents": [
        "48c8498a15300b43a61ba3ae50f3874bf3cfa8fc"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Sat Sep 05 02:40:06 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 02:40:06 2026"
      },
      "message": "Drop the WASM_BINDGEN wasmExports namespace import for ESM integration (#27676)\n\nThis removes the `WASM_ESM_INTEGRATION \u0026\u0026 WASM_BINDGEN` namespace import\nof the wasm module added in #27208, resolves #27658.\n\nwasm-bindgen 0.2.128 no longer reads `wasmExports[...]` inline in its\nemscripten glue; it binds the asmjs-mangled identifiers that\n`assignWasmExports` already provides for every export\n(wasm-bindgen/wasm-bindgen#5270), so the aggregate object is not needed.\n\n* Remove the conditional `import * as wasmExports` from\n`src/postamble.js`, leaving the plain `var wasmExports` declaration for\nall modes.\n* Bump the pinned wasm-bindgen library and CLI from 0.2.127 to 0.2.128\n(test crates, `cargo add` calls, CircleCI install).\n* `test_wasm_bindgen_tsd_multi_return` now asserts the correct public\nsurface: only wasm-bindgen\u0027s unwrapping wrapper `multi_value_return():\nnumber` is typed, and the raw multi-value `Result` ABI export\n`_multi_value_return` stays internal. With 0.2.127 the raw export leaked\ninto `WasmModule`, which is what the old `[number, number, number]`\nassertion was matching.\n\nAll `test_wasm_bindgen_*` tests pass against wasm-bindgen 0.2.128.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "48c8498a15300b43a61ba3ae50f3874bf3cfa8fc",
      "tree": "0ef5a341f22807105d55fbf46a421a382e961d11",
      "parents": [
        "d4bc5cc45b12c954013cd188589891b9350343c6"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Sep 05 01:12:36 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 01:12:36 2026"
      },
      "message": "Remove usage of `shared.EMCC` et al from test code. NFC (#27673)\n\nMove tool paths (such as `EMCC`, `LLVM_COV`, `LLVM_PROFDATA`, and\n`WASM_LD`) from `tools/shared.py` to `test/common.py` or\n`tools/building.py`.\n\nAlso, remove the dead `_is_ar_cache` from `tools/building.py`.\n\nPart of the effort to decouple test code from compiler internals.\n\nSee: #27666"
    },
    {
      "commit": "d4bc5cc45b12c954013cd188589891b9350343c6",
      "tree": "af8c3c8d4601f1c4ce76481faadb71aa7da05b46",
      "parents": [
        "8de9aa023c51dd9a7ac53f249f3b127c6862f1ca"
      ],
      "author": {
        "name": "Deepanshu Upadhyay",
        "email": "105731074+Kammu2000@users.noreply.github.com",
        "time": "Sat Sep 05 00:13:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 00:13:44 2026"
      },
      "message": "[docs] Fix grammar and spelling mistakes in dynamic linking documentation (#27671)\n\nFix a few grammar and spelling issues in the dynamic linking\ndocumentation."
    },
    {
      "commit": "8de9aa023c51dd9a7ac53f249f3b127c6862f1ca",
      "tree": "36c47a68009994d366a457ddbf2d5d4a2ca38445",
      "parents": [
        "ca28245974627d6f84c232360f7e95e080952068"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Sat Sep 05 00:10:46 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 00:10:46 2026"
      },
      "message": "Unify wasm-bindgen output under -sWASM_BINDGEN with marker-based detection (#27208)\n\nThis unifies wasm-bindgen output generation under a single\n`-sWASM_BINDGEN` path, building on the wasm-bindgen side change in\nwasm-bindgen/wasm-bindgen#5210. It supersedes #27179.\n\nPreviously `-sWASM_BINDGEN` was effectively a staticlib-only flow where\nemcc had to discover and own the export set itself. With\nwasm-bindgen/wasm-bindgen#5210, wasm-bindgen hoists its clean exported\nAPI (functions, classes, enums) into top-level library symbols that\nself-register as public exports via the `__export`/`__force` symbol\nattributes (#27436, wasm-bindgen/wasm-bindgen#5253) in its\n`--js-library`. The user-facing API now comes from wasm-bindgen\u0027s own\nlibrary in every flow, so emscripten no longer needs to guess or own\nexports — it just surfaces what wasm-bindgen registered. That lets one\n`-sWASM_BINDGEN` path serve both whether cargo/rustc drives the link\n(bin crate, emcc as the linker, rustc supplies `-sEXPORTED_FUNCTIONS`)\nor emcc drives it (staticlib, exports discovered locally).\n\nThe model for a public export is the union across both systems:\nwasm-bindgen\u0027s self-registered API, plus emscripten\u0027s own\n`EMSCRIPTEN_KEEPALIVE` exports — minus wasm-bindgen\u0027s internal expansion\nglue, which must not spill into the public surface.\n\nWhat\u0027s implemented:\n\n* `-sWASM_BINDGEN` is a no-op unless the linker inputs carry\nwasm-bindgen\u0027s `__wasm_bindgen_emscripten_marker` custom section\n(emitted by the wasm-bindgen crate). The check runs on the inputs before\nthe link (`llvm-objdump --section-headers`, so archive members are\ncovered), so there is a single link and no speculative exports. When the\nmarker is absent wasm-bindgen is never invoked and need not be\ninstalled, so cargo/rustc can pass the flag unconditionally via\n`-Clink-arg` without affecting ordinary builds.\n* The exports the wasm-bindgen expansion reaches by name — the supplied\n`EXPORTED_FUNCTIONS` (method shims, the `__wbindgen_*` runtime, the\nmarker, `main`) plus anything its expansion adds — are captured as\ninternal glue and kept off every export layer: the ESM wrapper\n(`user_requested_exports`), the factory `Module` attachment\n(`EXPORTED_FUNCTIONS`, via `should_export`), and the keepalive pass in\n`finalize_wasm`. `main` still runs automatically on init; `_main` isn\u0027t\nsurfaced.\n* A genuine `EMSCRIPTEN_KEEPALIVE` C/C++ export is **not** in that\ninternal set and remains surfaced, so a hand-written native export\ncomposes with wasm-bindgen\u0027s API in the same module.\n* Placeholder symbols wasm-bindgen consumes (`__wbindgen_describe*`,\n`__externref_*`, ...) are stripped so they aren\u0027t reported as undefined\nexports.\n* nm-based export discovery only runs when no driver supplied\n`EXPORTED_FUNCTIONS`; the rustc-driven link already lists them exactly.\n* Imported JS is wired through: `library_bindgen.extern-pre.js` is fed\nas extern-pre-js and the `snippets/` dir is copied next to the output so\nrelative imports resolve.\n* Under `WASM_ESM_INTEGRATION`, `wasmExports` is provided via a\nnamespace import of the wasm so wasm-bindgen\u0027s by-name export access\nworks. This is gated behind `WASM_BINDGEN` so plain ESM integration\nkeeps per-symbol named imports and their tree-shakability. (The wrapper\nre-export of self-registered JS library symbols itself landed in\n#27436.)\n\nBoth output modes then expose only the clean API (e.g. a `Greeter`\nclass).\n\nTesting:\n\n* End-to-end test parameterized over the ESM (`-sWASM_ESM_INTEGRATION`)\nand factory (`-sMODULARIZE -sEXPORT_ES6`) output modes, built via `cargo\nbuild` with `-sWASM_BINDGEN` passed as a link arg, asserting the clean\n`Greeter` API works, `main` runs on init, and none of the raw wasm\nexports leak.\n* A no-marker test asserting `-sWASM_BINDGEN` is a no-op for an ordinary\n`hello_world.c` build (doesn\u0027t require wasm-bindgen installed).\n* The staticlib integration test is extended to assert an\n`EMSCRIPTEN_KEEPALIVE` native export survives alongside the wasm-bindgen\nAPI (fails under a blanket export wipe).\n* CI installs a pinned `wasm-bindgen-cli` alongside rust so the flow is\nalways exercised.\n\nNot in scope (follow-up): preserving human-supplied `EXPORTED_FUNCTIONS`\nthrough wasm-bindgen linkage (the rustc-supplied set is currently\nindistinguishable from glue, so explicit exports aren\u0027t surfaced)."
    },
    {
      "commit": "ca28245974627d6f84c232360f7e95e080952068",
      "tree": "cb131fc0883d3a7b31b3db03b8f2b7adbc0fbdba",
      "parents": [
        "ae758f2ac2344f678444eebc99ad44a2b64f70a1"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Sep 05 00:10:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 00:10:33 2026"
      },
      "message": "Migrate incompatible settings checks to INCOMPATIBLE_SETTINGS. NFC (#27670)\n\nMove error checks from `tools/link.py` to `INCOMPATIBLE_SETTINGS` in\n`tools/settings.py` for:\n- `WASM2JS` with `SUPPORT_BIG_ENDIAN` and `MEMORY64`\n- `WASM_ESM_INTEGRATION` with `MAIN_MODULE`, `SIDE_MODULE`, `ASYNCIFY`,\n`WASM_WORKERS`, `WASM_ASYNC_COMPILATION\u003d0`, `WASM2JS`, and\n`ABORT_ON_WASM_EXCEPTIONS`\n- `FORCE_FILESYSTEM` with `FILESYSTEM\u003d0`\n- `NODE_CODE_CACHING` with `SINGLE_FILE`\n\nAlso remove redundant checks in `tools/link.py` and add test coverage in\n`test/test_other.py`."
    },
    {
      "commit": "ae758f2ac2344f678444eebc99ad44a2b64f70a1",
      "tree": "c3d4cf584623834b5bf72c82c632c925a2f1ac81",
      "parents": [
        "459eb7ae8ce9b2c49ebb8a443fa657bf57efb34f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Sep 05 00:10:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 00:10:28 2026"
      },
      "message": "Enable f-strings ruff check by default. NFC (#27669)"
    },
    {
      "commit": "459eb7ae8ce9b2c49ebb8a443fa657bf57efb34f",
      "tree": "266cb47b2d2549568cd5f8f2aad3f2502a8b69fb",
      "parents": [
        "a0d0901a32092da58fd55081431623550549e483"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Sep 05 00:04:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 05 00:04:51 2026"
      },
      "message": "[test] Check `CI` environment variable in a single location. NFC (#27672)"
    },
    {
      "commit": "a0d0901a32092da58fd55081431623550549e483",
      "tree": "648d564dcd80c45d8067a6bdf08e90ee37047a96",
      "parents": [
        "a593e008da8c83a9a889a152987d90fe71262f1f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 23:30:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 23:30:24 2026"
      },
      "message": "Remove use of `shared.DEBUG` from test code. NFC (#27667)\n\nPart of my effort to decouple test code from compiler internals.\n\nSee #27666"
    },
    {
      "commit": "a593e008da8c83a9a889a152987d90fe71262f1f",
      "tree": "a7fb83ae10874c3e5dc5ac0c18c78883be075dd0",
      "parents": [
        "43248806e422765590b397cd3a897b77e341207b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 23:12:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 23:12:45 2026"
      },
      "message": "Add design doc for using git subtree to manage external libraries (#27593)\n\nCovers external libraries in `system/lib/` as candidates for\n`git subtree`, recommending `mimalloc` as the initial pilot and\nprimary example, followed by `musl` and LLVM runtime libraries.\n\nThis was done successfully in wasi-libc:\nhttps://github.com/WebAssembly/wasi-libc/pull/797\n\nSee: #27515"
    },
    {
      "commit": "43248806e422765590b397cd3a897b77e341207b",
      "tree": "c84b274476b85a3bcb19f0b13ab4c94ae2f9f4e8",
      "parents": [
        "1841d41d9a09184c3b80dd1c54007c892f6f3ce0"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 22:52:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 22:52:26 2026"
      },
      "message": "Update ruff version from 0.16.0 to 0.16.6. NFC (#27668)"
    },
    {
      "commit": "1841d41d9a09184c3b80dd1c54007c892f6f3ce0",
      "tree": "ad4763f6d861be8bd0d8d509b6a344dce8351925",
      "parents": [
        "9eca01833bb98dc51f31a6c54f61cd71c03e2e89"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 22:43:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 22:43:38 2026"
      },
      "message": "Enable printf-string-formatting ruff check by default. NFC (#27663)\n\nThis change was generated almost exclusively using ruff auto-fixer, with\na couple of manual tweaks."
    },
    {
      "commit": "9eca01833bb98dc51f31a6c54f61cd71c03e2e89",
      "tree": "fb421c294ad063bf1f65afe9060e32cf445bb0fe",
      "parents": [
        "7cd002b5f3de846256fa0130e923bed933d901f8"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Fri Sep 04 17:54:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 17:54:35 2026"
      },
      "message": "Update mimalloc to 3.5.1 (#27662)"
    },
    {
      "commit": "7cd002b5f3de846256fa0130e923bed933d901f8",
      "tree": "47fcf168bfb506ec1a10bb500ec88d030e1c1b9f",
      "parents": [
        "f0cd6739a4a7ffd9d91ee68f18b5d44acb555466"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 17:00:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 17:00:19 2026"
      },
      "message": "Consistent indentation for python multi-line data structures. NFC (#27659)\n\nStandardize on 2-space indentation for multi-line lists, sets, and\ndictionaries across the codebase.\n\nThe reason we have some inconsistency here between out code indentation\nand out data structure indentation is that `.style.yapf` was lacking a\n`continuation_indent_width \u003d 2`, so I added this.\n\nAlso convert `SUPPORTED_LINKER_FLAGS` in `tools/link.py` from a tuple to\na set for O(1) membership lookups."
    },
    {
      "commit": "f0cd6739a4a7ffd9d91ee68f18b5d44acb555466",
      "tree": "f840edc429646ac74f1c5327132640e1237cd010",
      "parents": [
        "d81369405bfefda921fe49d3670eef434ba991ec"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 16:47:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 16:47:42 2026"
      },
      "message": "[libc] Always use __builtin_wasm_memory_fill in memset (#27656)\n\nFollowup to #27653 and #27656.\n\nReplace Musl\u0027s `memset.c` and the `-Oz` logic in `emscripten_memset.c`\nwith `__builtin_wasm_memory_fill`.\n\nUnder ASan, keep `__attribute__((no_sanitize(\"address\")))` on the naive\nscalar loop because ASan\u0027s shadow memory poisoner calls `REAL(memset)`\ndirectly on shadow memory itself, which would otherwise trigger an\nimmediate shadow-on-shadow fault.\n\nMicrobenchmark results (100k iterations across sizes 1B to 16KB):\n\nAligned sets (sizes 1B to 16KB):\n- V8:             30.36ms vs 70.52ms (56.9% faster, 2.3x)\n- SpiderMonkey:   31.91ms vs 67.01ms (52.4% faster, 2.1x)\n- JavaScriptCore: 26.70ms vs 70.44ms (62.1% faster, 2.6x)\n\nUnaligned sets (offsets 1..3 across sizes 1B to 16KB):\n- V8:             30.61ms vs 65.28ms (53.1% faster, 2.1x)\n- SpiderMonkey:   32.94ms vs 64.28ms (48.8% faster, 2.0x)\n- JavaScriptCore: 26.90ms vs 63.24ms (57.5% faster, 2.4x)"
    },
    {
      "commit": "d81369405bfefda921fe49d3670eef434ba991ec",
      "tree": "c7b0ac091db803a184fe73093f5a9eca36fe834d",
      "parents": [
        "dc0f21dd8aab6818d3e9aaae91e2c8b75eb9ac32"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Sep 04 15:59:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 04 15:59:38 2026"
      },
      "message": "Add link to upstream ruff bug. NFC (#27660)\n\nSee https://github.com/astral-sh/ruff/issues/8705"
    },
    {
      "commit": "dc0f21dd8aab6818d3e9aaae91e2c8b75eb9ac32",
      "tree": "a295c6a30b72ebd35b59c5ee5a038d5929c20e5a",
      "parents": [
        "855804c1342a0d47e8e4a40ea0b1c8ff1da33e96"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Sep 03 19:56:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 19:56:15 2026"
      },
      "message": "Mark wasm2js (WASM\u003d0) as deprecated (#27655)\n\nAdd `WASM\u003d0` to `DEPRECATED_SETTINGS` in `tools/settings.py` so that\npassing `-sWASM\u003d0` emits a deprecation warning under `-Wdeprecated`.\n\nAlso update settings documentation, `src/settings.js` comments,\n`ChangeLog.md`, and test runner/tests to ignore the warning where\nwasm2js is tested.\n\nSee: #27608"
    },
    {
      "commit": "855804c1342a0d47e8e4a40ea0b1c8ff1da33e96",
      "tree": "d97ac4fcf0b21f7675917935c3692fdf0b978c1f",
      "parents": [
        "2bdd1af24187f3061da1fac47fc8f3157a6eb543"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Sep 03 17:47:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Sep 03 17:47:21 2026"
      },
      "message": "[libc] Always use __builtin_wasm_memory_copy in memmove (#27654)\n\nFollowup to #27653.\n\nReplace Musl\u0027s `memmove.c` and the `-Oz` manual loop in\n`emscripten_memmove.c` with `__builtin_wasm_memory_copy`.\n\nWebAssembly\u0027s `memory.copy` instruction is specified with overlapping\ncopy (`memmove`) semantics, and engines (V8, SpiderMonkey, JSC)\nimplement it using native host `memmove`.\n\nIn Musl\u0027s C implementation, misaligned overlapping copies fall back to a\nbyte-by-byte scalar loop in wasm, which is 15x to 33x slower than\n`memory.copy`.\n\nOverlapping copy benchmark results (200k iterations across sizes 1B to\n16KB):\n\nShift forward (dest \u003e src):\n- V8:             34.51ms vs  576.50ms (94.0% faster, 16.7x)\n- SpiderMonkey:   33.73ms vs 1129.64ms (97.0% faster, 33.5x)\n- JavaScriptCore: 33.32ms vs  715.26ms (95.3% faster, 21.5x)\n\nShift backward (dest \u003c src):\n- V8:             34.28ms vs  551.30ms (93.8% faster, 16.1x)\n- SpiderMonkey:   33.74ms vs  546.25ms (93.8% faster, 16.2x)\n- JavaScriptCore: 32.90ms vs  535.86ms (93.9% faster, 16.3x)"
    },
    {
      "commit": "2bdd1af24187f3061da1fac47fc8f3157a6eb543",
      "tree": "f86c569cb2566e6343529cc8e15fcb104f5e9533",
      "parents": [
        "d01f0edd12dbb6962ca5896f1b7c94bdf737b575"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 23:24:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 23:24:38 2026"
      },
      "message": "[ports] Pass integer for WASM_LEGACY_EXCEPTIONS when building ports (#27651)\n\nIn #27579, `WASM_LEGACY_EXCEPTIONS` was forwarded to sub-compilations\nwhen building ports with wasm SjLj. However,\n`settings.WASM_LEGACY_EXCEPTIONS` defaults to a boolean (`True`) in\nPython when not explicitly set via `-s` on the command line (e.g. when\nusing `-fwasm-exceptions`). Stringifying it into\n`-sWASM_LEGACY_EXCEPTIONS\u003d{settings.WASM_LEGACY_EXCEPTIONS}` resulted in\n`-sWASM_LEGACY_EXCEPTIONS\u003dTrue`, which `emcc` rejects because boolean\nsettings require 1 or 0.\n\nEnsure we format it as an integer so `1` or `0` is always passed.\n\nAlso, update the variants to set `WASM_LEGACY_EXCEPTIONS` to True/False\nwhich means that the embuilder build of these libraries will fail in the\nsame way.\n\nFixes: #27650"
    },
    {
      "commit": "d01f0edd12dbb6962ca5896f1b7c94bdf737b575",
      "tree": "ffc84d3ce27a7903d7bfb64b0d9c7e8db8a2c83d",
      "parents": [
        "f9d351a071eee387218263df1f246853da8c6067"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 22:32:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 22:32:32 2026"
      },
      "message": "[ports] Clear port build under cache lock to avoid deletion race (#27647)\n\nIn #24303, `Ports.fetch_project` was refactored into\n`Ports.fetch_port_artifact` and `Ports.clear_project_build`. In that\nrefactoring, `Ports.clear_project_build` was moved outside the\n`cache.lock(\u0027unpack port\u0027)` block.\n\nWhen parallel processes both require the same port on a cold cache:\n1. Process A unpacks the port and releases `cache.lock(\u0027unpack port\u0027)`.\n2. Process B sees the port is now unpacked and up-to-date, proceeds to\n   build the port library, and acquires `cache.lock`.\n3. Process A calls `Ports.clear_project_build`, which blocks on the\n   cache lock while Process B compiles the library.\n4. When Process B finishes compiling and releases the lock, Process A\n   acquires the lock and deletes the newly compiled library.\n\nFix this by reverting the split between `fetch_project` and\n`fetch_port_artifact` from #24303, and performing\n`Ports.clear_project_build` inside `fetch_project` while still holding\nthe unpack cache lock.\n\nAlso revert `get_port_by_name` back to `ports_by_name` in\n`Ports.clear_project_build` so it does not trigger recursion during\nexternal port loading, and mock `clear` in `init_external_port`.\n\nNote that external ports no longer have their loaded module\u0027s `.clear()`\nmethod called when updated, but this is safe because:\n1. `Ports.clear_project_build` still deletes the intermediate build\n   directory (`build/\u003cname\u003e`) under the unpack lock.\n2. In-tree ports rely on `clear()` to delete static library filenames\n   (like `libz.a` or `libSDL2.a`) from the cache, but external ports\n   (`contrib.glfw3` and `emdawnwebgpu`) incorporate either the release\n   tag or a content hash of source inputs into their library filenames\n   (e.g. `lib_emscripten-glfw3_\u003cTAG\u003e...` and\n   `libemdawnwebgpu-\u003chash\u003e...`). When updated, the library filename\n   changes, ensuring the new library is built on first use.\n3. In fact, calling `.clear()` on the newly unpacked port module would\n   only attempt to erase the new library name (which does not exist yet)\n   and would never have deleted the previous version\u0027s library anyway.\n4. Explicit clearing via `embuilder clear \u003cport\u003e` or `clear_port()`\n   continues to resolve and invoke `local_port.clear()` as before.\n\nFixes: #27160"
    },
    {
      "commit": "f9d351a071eee387218263df1f246853da8c6067",
      "tree": "415f8e4084a5d62dd41e7a3fa27af88bc9c2fd18",
      "parents": [
        "8993c521d2e6e6053960fb172ff611605db27e0e"
      ],
      "author": {
        "name": "Derek Schuff",
        "email": "dschuff@chromium.org",
        "time": "Wed Sep 02 21:56:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 21:56:22 2026"
      },
      "message": "Refactor system_libs to decouple library calculation from building (#27652)\n\n1. Make Library.get_link_flag() a pure query method without the side\neffect\n   of calling self.build().\n2. Introduce ensure_libraries() and make library building explicit in\n   calculate() and tools/link.py:process_libraries().\n3. Change get_libs_to_link() to return Library objects rather than flag\nstrings, allowing callers to inspect or build libraries independently."
    },
    {
      "commit": "8993c521d2e6e6053960fb172ff611605db27e0e",
      "tree": "c1b8daf967bf5faa1690eec87865dc95b1a745c4",
      "parents": [
        "c28f6635a6e606bf2030717726f6ac2f4f2ce7bb"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 21:50:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 21:50:49 2026"
      },
      "message": "[ci] Enable more tests after update the node v24 in emsdk (#27506)\n\nNow that emsdk ships Node 24\n(https://github.com/emscripten-core/emsdk/pull/1760) we can enable more\ntests."
    },
    {
      "commit": "c28f6635a6e606bf2030717726f6ac2f4f2ce7bb",
      "tree": "a4c7a593142af116be611004a2b51c32b74110e0",
      "parents": [
        "1a785614fc34c02a5e1ab77d3601e65084f8e749"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 21:22:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 21:22:45 2026"
      },
      "message": "[libc] Always use __builtin_wasm_memory_copy in memcpy (#27653)\n\nRemove the manual 32-bit copy loop for sizes \u003c 512 bytes in\n`emscripten_memcpy.c` and always use `__builtin_wasm_memory_copy`\ninstead, matching the behavior previously used only for `-Oz`.\n\nBenchmarking across V8, SpiderMonkey, and JavaScriptCore shows that\n`memory.copy` is consistently faster than the manual loop for small\nsizes, especially for unaligned copies.\n\nHead-to-head microbenchmark comparing the old manual loop against\n`__builtin_wasm_memory_copy` for sizes \u003c\u003d 511 bytes (500k iterations per\nsize):\n\nAligned copies (sizes 1B to 511B):\n- V8:             72.82ms vs 100.87ms (27.8% faster)\n- SpiderMonkey:   93.09ms vs 100.27ms (7.2% faster)\n- JavaScriptCore: 60.04ms vs  91.14ms (34.1% faster)\n\nUnaligned copies (source and dest offsets 0..3):\n- V8:            148.72ms vs 357.02ms (58.3% faster)\n- SpiderMonkey:  186.95ms vs 440.61ms (57.6% faster)\n- JavaScriptCore: 124.16ms vs 372.28ms (66.6% faster)"
    },
    {
      "commit": "1a785614fc34c02a5e1ab77d3601e65084f8e749",
      "tree": "fe47fe2098a582cac5e8319bb474c0671fb461e0",
      "parents": [
        "323a52807a14e83d7bad30d0443cc05c8bfa563d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 20:19:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 20:19:58 2026"
      },
      "message": "[libc] Use Clang bulk memory builtins in memcpy and memset (#27631)\n\nReplace the out-of-line assembly implementations in\n`emscripten_memcpy_bulkmem.S` and `emscripten_memset_bulkmem.S` with\ndirect calls to `__builtin_wasm_memory_copy` and\n`__builtin_wasm_memory_fill`.\n\nThis allows inlining `memory.copy` and `memory.fill` directly into\n`memcpy` and `memset`, eliminating function call overhead and separate\nsymbols in output binaries.\n\nSee: https://github.com/llvm/llvm-project/issues/220086 and\nhttps://github.com/llvm/llvm-project/pull/220111"
    },
    {
      "commit": "323a52807a14e83d7bad30d0443cc05c8bfa563d",
      "tree": "dfeb67f8a857fd6ca86456c0355b3caa44eb7899",
      "parents": [
        "e2ebea0e5f847fec3b4a493648dfce667fbb9025"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Wed Sep 02 19:20:17 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 19:20:17 2026"
      },
      "message": "Fix WasmFS OPFS backend under -pthread with -sJSPI (#27633)\n\nThis fixes the WasmFS OPFS backend when building with `-pthread -sJSPI`,\nresolving #27620.\n\nUnder PTHREADS the OPFS backend always proxies operations to a dedicated\nworker via the proxying queue, with completion signalled by\n`emscripten_proxy_finish` rather than by suspending on the promise\nreturned from the import. Marking the `wasmfs_opfs_*` imports `__async`\nin this mode caused JSPI to wrap them in `WebAssembly.Suspending`, which\nthen trapped with `SuspendError: trying to suspend without\nWebAssembly.promising`, since the proxying queue is entered via\n`_emscripten_proxy_execute_queue` / `__emscripten_check_mailbox` which\nare not promising exports.\n\n* Use a compile-time macro in `libwasmfs_opfs.js` so the `wasmfs_opfs_*`\n`__async` annotations resolve to `\u0027auto\u0027` in non-threaded builds and\n`false` under PTHREADS, since in threaded builds these imports never\nneed to suspend.\n* Add a `pthread_jspi` variant (`-pthread -sPROXY_TO_PTHREAD -sJSPI`) to\n`test_wasmfs_opfs`, which previously hung with the SuspendError and now\npasses.\n\nAll four `test_wasmfs_opfs` variants and `test_wasmfs_opfs_errors` pass\nlocally in Chrome.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "e2ebea0e5f847fec3b4a493648dfce667fbb9025",
      "tree": "b7ac5e59340c0ec3dd9d7013bf0287d1ca0a4f4f",
      "parents": [
        "cf3c78a0203bb8ac5fcab27cd6197c436f0ff5bd"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Wed Sep 02 17:47:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 17:47:41 2026"
      },
      "message": "Revert \"Experimental shared Wasm GC support (#27427)\" (#27648)\n\nThis reverts commit f11cc0b09f08c3b2c1061b8f2ea5e4ceb5312a4c. The shared\nobjects demos now have their own standalone runtime and do not depend on\nEmscripten. Since there is no practical use for this setting in\nEmscripten right now, remove it."
    },
    {
      "commit": "cf3c78a0203bb8ac5fcab27cd6197c436f0ff5bd",
      "tree": "545adcecfd08944086660d02901dc208459c6752",
      "parents": [
        "7afdae44d67ca8169d4c0f30a0d62092a54e23db"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Sep 02 17:45:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 17:45:07 2026"
      },
      "message": "Update emsdk version from f5bf03c7 to ada02ef3 (#27649)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f5bf03c7 \u003d\u003e ada02ef3\n\nThe following revisions were included in this update:\n\n```\n- ada02ef3 Roll emscripten from 2aa6075990fb to 7afdae44d67c (5 revisions)\n- 98ea3057 Roll llvm-project from 4c791a6ff020 to ed1626b9d0ea (48 revisions)\n- ee91e665 Roll binaryen from d036a3b6c3a0 to 3d7eee7a4d2c (1 revision)\n- daa9411b Roll emscripten from a2059f978ed2 to 2aa6075990fb (1 revision)\n- 377c46ba Roll binaryen from 6531a981a86d to d036a3b6c3a0 (1 revision)\n- e54639d9 Roll llvm-project from 07ed92d6987f to 4c791a6ff020 (64 revisions)\n- b8a03456 Roll emscripten from 4e4223852a08 to a2059f978ed2 (9 revisions)\n- 8943b92c Roll llvm-project from 7d3165954f2b to 07ed92d6987f (38 revisions)\n- 94e5e66a Roll binaryen from d03c25ea43d8 to 6531a981a86d (9 revisions)\n- 99455d29 Roll llvm-project from 5bf0dde9bb48 to 7d3165954f2b (34 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f5bf03c7..ada02ef3\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 859376 \u003d\u003e 859337 [-39 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": "7afdae44d67ca8169d4c0f30a0d62092a54e23db",
      "tree": "5a7d8767453446d19d0c7b0161b9f3b5af7df236",
      "parents": [
        "0f6e30371cae4ddf8f113c426c1fd323d1ca3730"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 02 00:37:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 00:37:13 2026"
      },
      "message": "[deps]: Bump actions/checkout from 7.0.0 to 7.0.1 (#27644)"
    },
    {
      "commit": "0f6e30371cae4ddf8f113c426c1fd323d1ca3730",
      "tree": "a3cc07e6e74b90ede086155e9d130daebbca0f5b",
      "parents": [
        "fa4317d078f8bfea0f5364ea32d65e03b17cb122"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 02 00:35:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 00:35:56 2026"
      },
      "message": "[deps]: Bump github/codeql-action/upload-sarif from 3.29.2 to 4.37.9 (#27643)"
    },
    {
      "commit": "fa4317d078f8bfea0f5364ea32d65e03b17cb122",
      "tree": "ff42b3c5b060e3cdc7a8c901f164e531afbd44c2",
      "parents": [
        "74cc3c395041bda4d8f5a243469a4855c562198b"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Sep 02 00:35:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 00:35:22 2026"
      },
      "message": "[deps]: Bump ossf/scorecard-action from 2.4.1 to 2.4.4 (#27645)"
    },
    {
      "commit": "74cc3c395041bda4d8f5a243469a4855c562198b",
      "tree": "ad16b8d2700b87e17ccbb88583503de4d3fa1e3b",
      "parents": [
        "8b38789dad9b2bf830e6537be70eb1be9317b3e3"
      ],
      "author": {
        "name": "NickZh",
        "email": "62114203+mrnickzh@users.noreply.github.com",
        "time": "Wed Sep 02 00:34:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 00:34:38 2026"
      },
      "message": "Add multithreaded variant of lua port (#26886)\n\nFixes: #26885"
    },
    {
      "commit": "8b38789dad9b2bf830e6537be70eb1be9317b3e3",
      "tree": "c5383e51707c3aa0b64d0f9bd5dc6c423fc727d5",
      "parents": [
        "2aa6075990fb692e02f03b640ba4a6909f8248be"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Sep 02 00:14:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 02 00:14:10 2026"
      },
      "message": "Remove experimental warning from SDL3 port (#27646)\n\nWe haven\u0027t had any reports of issues with this port since it was added."
    },
    {
      "commit": "2aa6075990fb692e02f03b640ba4a6909f8248be",
      "tree": "2ca6ce6ff1275c06861b6097760c285dba3dedb8",
      "parents": [
        "a2059f978ed206b688daf4a8774211949610c2aa"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Sep 01 23:55:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 23:55:31 2026"
      },
      "message": "[test] Add test_sdl3_text.c based on test_sdl2_text.c. NFC (#27640)\n\nUpdate `fake_events.js` to derive `event.key` when not explicitly\nprovided.\n\nThis is needed for SDL3, where text input handling in upstream SDL (and\nin SDL2 with commit e64034952) has moved away from the deprecated\n`keyEvent-\u003echarCode` and now requires `keyEvent-\u003ekey`.\n\nExisting tests like `test_sdl3_text.c` and `test_sdl2_text.c` simulate\ntext input using `simulateKeyDown(\u0027a\u0027.charCodeAt(0))`, passing only the\nkey code. Without deriving `key`, `event.key` defaults to an empty\nstring, so `SDL_utf8strlen(keyEvent-\u003ekey) \u003d\u003d 1` fails and no\n`SDL_EVENT_TEXT_INPUT` (or `SDL_TEXTINPUT` in SDL2) events are emitted."
    },
    {
      "commit": "a2059f978ed206b688daf4a8774211949610c2aa",
      "tree": "2446d0346cb842f3809d30fbc00501a3b6855a19",
      "parents": [
        "9200225a31cb9dbea80456e064ec2119c3e22f0a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Sep 01 20:10:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 20:10:37 2026"
      },
      "message": "Revert normalize case of `__rootpath__` on Windows (#27639)\n\nIn #27626, `__rootpath__` was changed to use\n`os.path.normcase(__file__)` to prevent caller-specified casing from\npropagating to `config.LLVM_ROOT` and `sanity.txt`.\n\nHowever, on Windows `normcase` unconditionally converts the entire path\nincluding the drive letter to lowercase (`c:\\...`). This lowercases all\npaths derived from `path_from_root`, including default `config.CACHE`\nand `EMSCRIPTEN_SYSROOT`.\n\nWhen CMake runs on Windows, imported targets and compiler autodetection\npreserve uppercase drive letters (`C:\\...`). Because CMake\u0027s implicit\ninclude directory checks are case-sensitive string comparisons, the\nmismatch between `c:\\...` and `C:\\...` caused CMake to treat the sysroot\ninclude directory as an explicit non-system include, injecting\n`-isystem` and disrupting libc++ header search order in\n`test_cmake_install`. It also caused assertion failures in\n`test_cmake_compile_commands_noforce`.\n\nThe normalization of `config.LLVM_ROOT` in `generate_sanity()` in\n`tools/shared.py` (also added in #27626) is already sufficient to ensure\nthat `sanity.txt` remains consistent regardless of the casing used to\ninvoke `emcc`. Normalizing `__rootpath__` is unnecessary and harmful.\n\nSee: #27626"
    },
    {
      "commit": "9200225a31cb9dbea80456e064ec2119c3e22f0a",
      "tree": "614602283f94d1aae5ab2a46cdf815ac3b9ed3a2",
      "parents": [
        "b0367903c19eac3b24d8339602421fda68bb2c11"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Sep 01 17:38:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 17:38:41 2026"
      },
      "message": "Update min node version comment (#27629)"
    },
    {
      "commit": "b0367903c19eac3b24d8339602421fda68bb2c11",
      "tree": "49081a227e73052b8252ad34f1bd97df28734b5f",
      "parents": [
        "7644a68ccbe689bc1e998174f41eb4e9935164d6"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Sep 01 17:38:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 17:38:24 2026"
      },
      "message": "[CI] Run sanity.test_windows_path_casing in Windows CI (#27630)\n\nSanity tests previously ran on Windows via `--crossplatform-only` after\n#22492, but were removed in #26365 when all tests were combined into a\nsingle parallel test suite (which made mixing parallel and non-parallel\nmodules an error).\n\nRun `sanity.test_windows_path_casing` as a dedicated step in\n`test-windows` so the Windows path casing regression test from #27626 is\nexercised in CI."
    },
    {
      "commit": "7644a68ccbe689bc1e998174f41eb4e9935164d6",
      "tree": "bec4c03903b6f414cadbe74544ac97348a2099e7",
      "parents": [
        "bcd205007d49a39034c2d129bab5d8d2f25cd349"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Sep 01 17:37:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 17:37:52 2026"
      },
      "message": "[test] Mark test_cmake_install as @crossplatform. NFC (#27637)\n\nThis test is failing on emscripten-release on windows only."
    },
    {
      "commit": "bcd205007d49a39034c2d129bab5d8d2f25cd349",
      "tree": "336764b30ecf35d483bb868cc4530fc637d39444",
      "parents": [
        "53cc691b742e83481b0c6f2abab3f0c4df383415"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Sep 01 14:52:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 14:52:05 2026"
      },
      "message": "Update emsdk version from a54ef286 to f5bf03c7 (#27636)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: a54ef286 \u003d\u003e f5bf03c7\n\nThe following revisions were included in this update:\n\n```\n- f5bf03c7 Roll llvm-project from da4883508b84 to 5bf0dde9bb48 (29 revisions)\n- f55b5d88 Roll v8 from 8a55ab2bed3a to 51e4731566c7 (19 revisions)\n- 846396ac Roll llvm-project from b158b0ae6c55 to da4883508b84 (33 revisions)\n- f04ea239 Version 6.0.9 RC\n- 5d5d7306 Roll llvm-project from 510126255f89 to b158b0ae6c55 (55 revisions)\n- 9ee402a9 Roll binaryen back to d03c25ea4 (before Enable ConstraintAnalysis pass (#9010))\n- ebaf6410 Roll emscripten from eac6f6c754e2 to 4e4223852a08 (1 revision)\n- 9867fbfc Roll llvm-project from 466bcf37fd16 to 510126255f89 (30 revisions)\n- 74d12157 Roll llvm-project from d291bcd466ed to 466bcf37fd16 (30 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/a54ef286..f5bf03c7\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 859357 \u003d\u003e 859376 [+19 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": "53cc691b742e83481b0c6f2abab3f0c4df383415",
      "tree": "3ee0032d6b6e05ae4d967f01c5fb6ae54ff66cfa",
      "parents": [
        "f4f5003c3452e195ec1967d11a37f7d3a56f2c93"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Sep 01 06:40:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 06:40:55 2026"
      },
      "message": "Automatic rebaseline of codesize expectations. NFC (#27635)\n\nThis is an automatic change generated by\ntools/maint/rebaseline_tests.py.\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 859356 \u003d\u003e 859357 [+1 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": "f4f5003c3452e195ec1967d11a37f7d3a56f2c93",
      "tree": "bf4531e8a3a2c94f1bb10de8a2c931789b93c2ab",
      "parents": [
        "df5b3aa6f07574b40a5ed25b79b7189d5a2cb694"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Tue Sep 01 06:40:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 06:40:07 2026"
      },
      "message": "Fix fstat on stdio streams under NODERAWFS (#27632)\n\nThis fixes a crash in `fstat` on the standard streams under\n`-sNODERAWFS`, resolving #27628.\n\nThe getattr dispatch added in #27305 for virtual streams (pipes,\nsockets) dereferences `stream.node`, but the standard streams created by\nNODERAWFS carried no node at all — unlike streams from `open()`, which\nsince #23364 carry a synthetic node with the identity of the underlying\nfile. Rather than special-casing the missing node, this gives the\nstandard streams the same synthetic node, built from `fstat` of the\ninherited descriptor, restoring the invariant that every stream has a\nnode:\n\n* `createStandardStreams` now constructs each stdio stream with a node\ncarrying the id and mode of whatever the descriptor refers to (tty,\npipe, file).\n* `fstat` on stdio falls through to `fs.fstatSync` on the raw descriptor\nas before.\n\nAdds `test_fs_fstat_stdio` covering `fstat` on fds 0-2 across all\nfilesystem backends.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "df5b3aa6f07574b40a5ed25b79b7189d5a2cb694",
      "tree": "8881b708d489abf559c87cc3ddb81a5f063747c0",
      "parents": [
        "e88bf435e7a1fb7c32de314502d7446247cb587d"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Sep 01 06:22:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 01 06:22:05 2026"
      },
      "message": "Mark 6.0.9 as released (#27634)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "e88bf435e7a1fb7c32de314502d7446247cb587d",
      "tree": "1cb8f3cc8380f1f8836805b400088caac4523839",
      "parents": [
        "4e4223852a0835923411059a3929907d7df1232e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 31 20:40:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 20:40:32 2026"
      },
      "message": "Normalize case for key config pathnames on Windows (#27626)\n\nOn Windows, file systems are case-insensitive. When tools like VS Code\nCMake Tools invoke the compiler through an all-lowercased path (e.g. via\nits `platformNormalizePath` helper), the caller-specified casing affects\nthe value of `__file__` in Python which then propagates all the way to\n`LLVM_ROOT` and the `sanity.txt` file (at least in the emsdk case):\n`__file__` -\u003e `__rootpath__` -\u003e `EM_CONFIG` -\u003e `CFGDIR` -\u003e `LLVM_ROOT`\n-\u003e `sanity.txt`.\n\nAddress this in two places:\n1. In `tools/utils.py`, normalize `__file__` using `normcase` when\n   initializing `__rootpath__`. This prevents caller-specified casing\n   from polluting paths derived from the script location (default\n   `EM_CONFIG`, `$CFGDIR`, and default `CACHE`).\n2. In `tools/shared.py`, normalize `config.LLVM_ROOT` using `normcase`\n   in `generate_sanity()`. This ensures that even if `LLVM_ROOT` was\n   configured explicitly (e.g. via `EM_LLVM_ROOT` or an absolute path\n   in `.emscripten`), the string written to `sanity.txt` is always\n   canonical on Windows.\n\nThe proximate cause of the issue was that the VS Code CMake Tools\nextension explicitly lowercases compiler paths on Windows:\n\nhttps://github.com/microsoft/vscode-cmake-tools/blob/09dd68b54de06469bd1b81d84d6b8666aa2dce1d/src/util.ts#L113-L115\nBy forcing the command line to all-lowercase, the above chain of events\nkicked in whenever the IDE queried compiler settings.\n\nSee: #27624"
    },
    {
      "commit": "4e4223852a0835923411059a3929907d7df1232e",
      "tree": "d3967f072c02d7c0779fc64e7e19e01002de65c3",
      "parents": [
        "eac6f6c754e213b224c833588cf5bde59b7f2fd9"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Aug 31 18:52:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 31 18:52:35 2026"
      },
      "message": "Update emsdk version from f93cae82 to a54ef286 (#27627)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f93cae82 \u003d\u003e a54ef286\n\nThe following revisions were included in this update:\n\n```\n- a54ef286 Roll llvm-project from afdcd7f828b2 to d291bcd466ed (11 revisions)\n- d63ba739 Roll v8 from ad4cb876174a to 8a55ab2bed3a (2 revisions)\n- 8cda60a5 Roll llvm-project from 492a3a4f44e6 to afdcd7f828b2 (21 revisions)\n- c50e1477 Roll emscripten from 6f85eb3956f9 to eac6f6c754e2 (1 revision)\n- 6edf90e4 Roll llvm-project from e828491f47d9 to 492a3a4f44e6 (8 revisions)\n- d570272e Roll llvm-project from 450ef6da8290 to e828491f47d9 (11 revisions)\n- f0c9e8ce Roll llvm-project from b3a2fa281ee7 to 450ef6da8290 (12 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f93cae82..a54ef286\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 859345 \u003d\u003e 859356 [+11 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": "eac6f6c754e213b224c833588cf5bde59b7f2fd9",
      "tree": "e000711154ab3736ffeb1d8a437a95a93ba7123a",
      "parents": [
        "6f85eb3956f95dfb3afb3412a9127c2523e05649"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sun Aug 30 21:15:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 30 21:15:01 2026"
      },
      "message": "Update emsdk version from b57559d2 to f93cae82 (#27623)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: b57559d2 \u003d\u003e f93cae82\n\nThe following revisions were included in this update:\n\n```\n- f93cae82 Roll llvm-project from dca45adce16e to b3a2fa281ee7 (8 revisions)\n- f78b84ad Roll v8 from 1cdea338fd59 to ad4cb876174a (2 revisions)\n- 80098115 Roll llvm-project from 05da143c63d3 to dca45adce16e (11 revisions)\n- 2bc64bea Roll emscripten from c829a265fb0a to 6f85eb3956f9 (1 revision)\n- cce605c5 Roll llvm-project from d156987d1040 to 05da143c63d3 (8 revisions)\n- 1baeb1cf Roll llvm-project from d34be0ff2eb6 to d156987d1040 (12 revisions)\n- 886c0f0c Roll llvm-project from 48378de650fc to d34be0ff2eb6 (8 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/b57559d2..f93cae82\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "6f85eb3956f95dfb3afb3412a9127c2523e05649",
      "tree": "3ff3f09285beefa7d7195283a2443144d03fa1f3",
      "parents": [
        "c829a265fb0a920b68baedd0c29b7ab739ab2e17"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 29 17:50:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 17:50:32 2026"
      },
      "message": "Update emsdk version from 5ec6e692 to b57559d2 (#27622)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 5ec6e692 \u003d\u003e b57559d2\n\nThe following revisions were included in this update:\n\n```\n- b57559d2 Roll emscripten from 92a1d865e63c to c829a265fb0a (4 revisions)\n- 25a9e054 Roll llvm-project from 3f2274211ab6 to 48378de650fc (18 revisions)\n- 2f48fa78 Roll emscripten from 259c50c36f7a to 92a1d865e63c (1 revision)\n- e05d8263 Roll binaryen from 23c19e240a81 to 8bad4db00f13 (1 revision)\n- 3c4d6d71 Roll llvm-project from 69db8489be2f to 3f2274211ab6 (58 revisions)\n- 6af18c37 Roll binaryen from 0f38ce795e95 to 23c19e240a81 (3 revisions)\n- c4b842cb Roll emscripten from 6c40a2747ca1 to 259c50c36f7a (1 revision)\n- 5069c80e Roll v8 from 6c9063bc8bb7 to 1cdea338fd59 (26 revisions)\n- 24e8852c Roll binaryen from d03c25ea43d8 to 0f38ce795e95 (1 revision)\n- dc30b0ee Roll llvm-project from 5c7095190a97 to 69db8489be2f (39 revisions)\n- d646ebaa Roll llvm-project from a7831dcce988 to 5c7095190a97 (28 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/5ec6e692..b57559d2\n\nThe following (15) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153955 \u003d\u003e 153977 [+22 bytes / +0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 153361 \u003d\u003e 153383 [+22 bytes / +0.01%]\ncodesize/test_codesize_cxx_except.json: 200105 \u003d\u003e 200127 [+22 bytes / +0.01%]\ncodesize/test_codesize_cxx_except_wasm.json: 169467 \u003d\u003e 169493 [+26 bytes / +0.02%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 167327 \u003d\u003e 167353 [+26 bytes / +0.02%]\ncodesize/test_codesize_cxx_lto.json: 119555 \u003d\u003e 119581 [+26 bytes / +0.02%]\ncodesize/test_codesize_cxx_mangle.json: 266435 \u003d\u003e 266457 [+22 bytes / +0.01%]\ncodesize/test_codesize_cxx_noexcept.json: 155865 \u003d\u003e 155887 [+22 bytes / +0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180971 \u003d\u003e 180993 [+22 bytes / +0.01%]\ncodesize/test_codesize_files_wasmfs.json: 63231 \u003d\u003e 63248 [+17 bytes / +0.03%]\ncodesize/test_codesize_hello_O1.json: 8041 \u003d\u003e 8060 [+19 bytes / +0.24%]\ncodesize/test_codesize_hello_dylink.json: 44108 \u003d\u003e 44125 [+17 bytes / +0.04%]\ncodesize/test_codesize_hello_dylink_all.json: 859323 \u003d\u003e 859345 [+22 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_hello_embind.json: 14987 \u003d\u003e 15004 [+17 bytes / +0.11%]\ncodesize/test_minimal_runtime_code_size_hello_embind_val.json: 11714 \u003d\u003e 11731 [+17 bytes / +0.15%]\n\nAverage change: +0.05% (+0.00% - +0.24%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c829a265fb0a920b68baedd0c29b7ab739ab2e17",
      "tree": "aafb1982d99aa031fa0f6d95610c3d12f11c6dea",
      "parents": [
        "4897433683b8adef2c35467a57906d849f400e16"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 29 00:38:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 00:38:21 2026"
      },
      "message": "Update emsdk version from a05bf070 to 5ec6e692 (#27612)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: a05bf070 \u003d\u003e 5ec6e692\n\nThe following revisions were included in this update:\n\n```\n- 5ec6e692 Roll llvm-project from aa332ae6b0c9 to a7831dcce988 (21 revisions)\n- 3e10efdc Roll binaryen from ece5da21a818 to d03c25ea43d8 (1 revision)\n- 0b7893e9 Roll binaryen from e258ff094873 to ece5da21a818 (1 revision)\n- 882f4906 Roll llvm-project from 0c1af4ee5e05 to aa332ae6b0c9 (55 revisions)\n- 71725e47 Roll binaryen from cce27ed19006 to e258ff094873 (1 revision)\n- b45467a7 Roll llvm-project from c30c4f5cd9d3 to 0c1af4ee5e05 (35 revisions)\n- 69205d63 Roll binaryen from b7c050e02648 to cce27ed19006 (1 revision)\n- 0ccf8a1d Roll v8 from 3dbba7b86bcd to 6c9063bc8bb7 (33 revisions)\n- 484069a4 Roll llvm-project from 959e8e7c74a3 to c30c4f5cd9d3 (38 revisions)\n- 3b88a601 Roll llvm-project from dc222c2de559 to 959e8e7c74a3 (16 revisions)\n- 92eb5a53 Roll binaryen from 876015e45e4f to b7c050e02648 (2 revisions)\n- 44c1b410 Roll emscripten from c60181f926ae to 6c40a2747ca1 (1 revision)\n- 4c89ef8d Roll llvm-project from a69a951450e8 to dc222c2de559 (16 revisions)\n- b07bbaa0 Roll binaryen from 0d962bcb6c1c to 876015e45e4f (1 revision)\n- a8f3a4d2 Roll llvm-project from 68f9f8be6e69 to a69a951450e8 (47 revisions)\n- de3da167 Roll binaryen from 67ac1ab072cd to 0d962bcb6c1c (4 revisions)\n- 0c5d61b9 Roll emscripten from 618713f7edd5 to c60181f926ae (1 revision)\n- 075a349d Roll llvm-project from 6f217343afdb to 68f9f8be6e69 (38 revisions)\n- 9ec599e5 Roll binaryen from 9d6a093095a7 to 67ac1ab072cd (1 revision)\n- 30d3f375 Roll v8 from d8a4c1c5d7cc to 3dbba7b86bcd (33 revisions)\n- f9c13a2c Roll llvm-project from a2ac4f6af958 to 6f217343afdb (40 revisions)\n- c12f104a Roll llvm-project from 646f69cafd20 to a2ac4f6af958 (27 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/a05bf070..5ec6e692\n\nThe following (22) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153946 \u003d\u003e 153955 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 153352 \u003d\u003e 153361 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_except.json: 200105 \u003d\u003e 200105 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm.json: 169474 \u003d\u003e 169467 [-7 bytes / -0.00%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 167334 \u003d\u003e 167327 [-7 bytes / -0.00%]\ncodesize/test_codesize_cxx_lto.json: 119544 \u003d\u003e 119555 [+11 bytes / +0.01%]\ncodesize/test_codesize_cxx_mangle.json: 266435 \u003d\u003e 266435 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155856 \u003d\u003e 155865 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180958 \u003d\u003e 180971 [+13 bytes / +0.01%]\ncodesize/test_codesize_files_wasmfs.json: 63223 \u003d\u003e 63231 [+8 bytes / +0.01%]\ncodesize/test_codesize_hello_O0.json: 38580 \u003d\u003e 38580 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink.json: 44108 \u003d\u003e 44108 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink_all.json: 859331 \u003d\u003e 859323 [-8 bytes / -0.00%]\ncodesize/test_codesize_mem_O3_standalone.json: 9140 \u003d\u003e 9140 [+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: 26001 \u003d\u003e 26015 [+14 bytes / +0.05%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26460 \u003d\u003e 26474 [+14 bytes / +0.05%]\ncodesize/test_minimal_runtime_code_size_audio_worklet.json: 16385 \u003d\u003e 16385 [+0 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm.json: 11037 \u003d\u003e 11037 [+0 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17346 \u003d\u003e 17346 [+0 bytes / +0.00%]\ncodesize/test_unoptimized_code_size.json: 172066 \u003d\u003e 172066 [+0 bytes / +0.00%]\n\nAverage change: +0.01% (-0.00% - +0.05%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e\nCo-authored-by: Alon Zakai \u003cazakai@google.com\u003e"
    },
    {
      "commit": "4897433683b8adef2c35467a57906d849f400e16",
      "tree": "ab761f85a1b3a75e592fcb93c86ee9c77175b57f",
      "parents": [
        "f4d9d9c500e5925aeb8c38dd67a770841816db66"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Sat Aug 29 00:38:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 00:38:16 2026"
      },
      "message": "Mark WASM_BINDGEN as an experimental setting (#27616)\n\nThis marks `-sWASM_BINDGEN` as an experimental setting, since the\nwasm-bindgen integration is still evolving and subject to change.\n\n* Adds the `[experimental]` tag in `settings.js` and an\n`EXPERIMENTAL_SETTINGS` entry, so enabling it now emits the standard\n`-Wexperimental` diagnostic:\n\n```\nemcc: warning: -sWASM_BINDGEN is experimental and subject to change [-Wexperimental]\n```\n\n* Regenerates the settings reference docs and adds a ChangeLog entry."
    },
    {
      "commit": "f4d9d9c500e5925aeb8c38dd67a770841816db66",
      "tree": "ccf54a2c357aa309b93423b128124b90a36fb780",
      "parents": [
        "704da900035b655c8aa3bc98fa42736d1ec28495"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sat Aug 29 00:25:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 29 00:25:04 2026"
      },
      "message": "[bootstrap] Honor EMSDK_NODE in bootstrap.py (#27617)\n\nWhen `EMSDK_NODE` is present in the environment, prepend its directory\nto `PATH` before running bootstrap actions.\n\nBy default, emsdk avoids prepending its own node binary to `PATH` if a\nsystem node is already present in `PATH`. However, bootstrap actions\n(such as `npm ci`) may fail if the system node is an older incompatible\nversion or lacks npm.\n\nSee: #27614"
    },
    {
      "commit": "704da900035b655c8aa3bc98fa42736d1ec28495",
      "tree": "c41fbf2a17fc5d3cda9e34a40514d710b6187863",
      "parents": [
        "92a1d865e63c91afab4f2d1d58d7d66f40f6b662"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 28 23:58:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 23:58:52 2026"
      },
      "message": "[pylauncher] Use standard main() entry point with hybrid CRT linking (#27618)\n\nSwitch to standard `int main()` entry point in `pylauncher.c` and use\n`/MT` with `/NODEFAULTLIB:libucrt.lib ucrt.lib` in `build.bat`.\n\nThe goal of this change is to make the binaries less likely to trigger\nfalse positive detections from malware scanners and antivirus tools,\nwhich often flag tiny executables compiled with custom entry points\nand without buffer security checks (`/GS-`).\n\nThis links CRT startup code and compiler runtime support statically\n(so buffer security checks `/GS` and cookie initialization are handled\nautomatically by `mainCRTStartup` without custom entrypoint stubs or\n`vcruntime140.dll` dependencies) while dynamically linking against the\nOS-provided `ucrtbase.dll`.\n\nThis increases binary size by ~16-17 KB (total size ~23 KB) compared\nto the previous `/NODEFAULTLIB /GS-` setup, while avoiding the\n~100-300 KB overhead of statically linking the full Universal CRT."
    },
    {
      "commit": "92a1d865e63c91afab4f2d1d58d7d66f40f6b662",
      "tree": "7de9cd832ffd5068b105bdc55337a9c8e3f481db",
      "parents": [
        "259c50c36f7aa5578c38beac9b18f4b4fce4288f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 28 21:44:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 21:44:33 2026"
      },
      "message": "[CI] Remove `--enable-experimental-web-platform-features` from chrome flags (#27615)\n\nThis flag was originally added in #16813 to test WasmFS OPFS support,\nwhich has shipped in stable Chrome since version 102.\n\nIn Chrome 154, `--enable-experimental-web-platform-features` enables\n`AudioWorklet.port` (https://crbug.com/446920095). However, Chrome\ncannot deserialize `WebAssembly.Module` over a `MessagePort` into\n`AudioWorkletGlobalScope` (https://crbug.com/40210558).\n\nThis causes Emscripten\u0027s feature check in `src/lib/libwebaudio.js` to\nskip the `em-bootstrap` AudioWorkletProcessor and attempt to transfer\nthe Wasm module over `audioWorklet.port`, triggering a `messageerror`\nand breaking all audio worklet tests in Chrome 154."
    },
    {
      "commit": "259c50c36f7aa5578c38beac9b18f4b4fce4288f",
      "tree": "e64c15f03a0d2e8b2d6238337996bf55c7c1e6b3",
      "parents": [
        "6c40a2747ca1586e7a0aef73781c7f37186f5c5b"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 28 20:47:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 28 20:47:16 2026"
      },
      "message": "[pylauncher] Add VERSIONINFO resource file for Windows launcher (#27601)\n\nAdd `tools/pylauncher/pylauncher.rc` containing a `VERSIONINFO` resource\nwith metadata (file description, version, copyright, company) and update\n`build.bat` to compile it with `rc.exe` and link it into\n`pylauncher.exe`.\n\nThis helps properly identify the executable in Windows and reduces\ngeneric heuristic false positive detections from antivirus scanners."
    },
    {
      "commit": "6c40a2747ca1586e7a0aef73781c7f37186f5c5b",
      "tree": "2d61685f6c3fc232b3182daca6dca01179885f89",
      "parents": [
        "c60181f926ae60c68be795b51748e8f85653d364"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Thu Aug 27 04:33:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 27 04:33:13 2026"
      },
      "message": "[NODERAWSOCKETS] Bind-first connect for synchronous getsockname (#27566)\n\nThis fixes an ordering issue in the NODERAWSOCKETS TCP client connect\npath.\n\nAn unbound client connect() created a plain async `net.Socket`, with\n`saddr`/`sport` only recorded on the async `\u0027connect\u0027` event, so\n`getsockname()` immediately after a non-blocking `connect()` returned\n`0.0.0.0:0`. Kernel semantics assign the ephemeral source port\nsynchronously at `connect()`, so callers that read the local address\nright after a non-blocking connect raced the event loop (reliably\nfailing under load).\n\n`connect()` on an unbound socket now binds an ephemeral port first,\nthrough the same eager synchronous `bindHandle` path an explicit\n`bind()` takes, then connects through the bound handle:\n\n* `getsockname()` reports the assigned port synchronously after\n`connect()`, matching kernel behavior\n* the local address updates to the real source address once the\nconnection completes, and the port stays stable\n* both bind primitives (public `net.BoundSocket`, or the `tcp_wrap`\nfallback on older node) are synchronous, so this works across node\nversions\n\nTest coverage: `test_noderawsockets_connect_getsockname` asserts the\nephemeral port is non-zero immediately after a non-blocking `connect()`\nreturns, before any event loop turn, and that it is unchanged once\nconnected. The test is plain POSIX and passes natively against the host\nstack.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "c60181f926ae60c68be795b51748e8f85653d364",
      "tree": "2a2ec1e2948d92ce079bb9aff7a0e5713bf54f0f",
      "parents": [
        "618713f7edd5038510aca284121187e58a9b4151"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Aug 26 16:56:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 26 16:56:04 2026"
      },
      "message": "Update emsdk version from bf14f979 to a05bf070 (#27607)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: bf14f979 \u003d\u003e a05bf070\n\nThe following revisions were included in this update:\n\n```\n- a05bf070 Roll emscripten from 7ee8fcca0331 to 618713f7edd5 (1 revision)\n- 8b9ba9ad Roll llvm-project from 1347901b5358 to 646f69cafd20 (51 revisions)\n- bbf5c97a Roll emscripten from 36feab31ff0f to 7ee8fcca0331 (1 revision)\n- 80d0273a Roll binaryen from c3c30bb9459a to 9d6a093095a7 (1 revision)\n- 212660b9 Roll llvm-project from 9e30a36318c0 to 1347901b5358 (58 revisions)\n- a3b77686 Roll emscripten from 2fb11a0493da to 36feab31ff0f (2 revisions)\n- 3bd474bb Roll binaryen from 3029fbb71739 to c3c30bb9459a (1 revision)\n- e8195cd4 Roll emscripten from 510a74598d4f to 2fb11a0493da (1 revision)\n- be39f6e2 Roll llvm-project from ee82d66261d2 to 9e30a36318c0 (54 revisions)\n- dd20af45 Roll v8 from 12db7cb804c6 to d8a4c1c5d7cc (32 revisions)\n- 2654e382 Roll llvm-project from 145f1447c173 to ee82d66261d2 (39 revisions)\n- 4c3d5c03 Roll llvm-project from 80dfaec65903 to 145f1447c173 (19 revisions)\n- 24ca45e5 Roll emscripten from ef72a4380877 to 510a74598d4f (6 revisions)\n- 43338075 Roll llvm-project from e35b8b991ae5 to 80dfaec65903 (54 revisions)\n- 3b317ed2 Add EMTEST_SKIP_AUTOCONF\n- 951fc891 Roll binaryen from 9af0edf4a78b to 3029fbb71739 (1 revision)\n- 5786681a Roll llvm-project from d1dd066fb3a2 to e35b8b991ae5 (55 revisions)\n- 3bc46097 Roll binaryen from bb0caa3fc547 to 9af0edf4a78b (1 revision)\n- 4c6e0273 Roll emscripten from 100783712d1c to ef72a4380877 (1 revision)\n- 794724c3 Roll llvm-project from afcbd03b9763 to d1dd066fb3a2 (41 revisions)\n- 00b636c7 Roll llvm-project from 4639fa213220 to afcbd03b9763 (10 revisions)\n- 31b3a7c4 Roll v8 from c44b14904a37 to 12db7cb804c6 (4 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/bf14f979..a05bf070\n\nThe following (22) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153959 \u003d\u003e 153946 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 153365 \u003d\u003e 153352 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_except.json: 200109 \u003d\u003e 200105 [-4 bytes / -0.00%]\ncodesize/test_codesize_cxx_except_wasm.json: 169471 \u003d\u003e 169474 [+3 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 167331 \u003d\u003e 167334 [+3 bytes / +0.00%]\ncodesize/test_codesize_cxx_lto.json: 119555 \u003d\u003e 119544 [-11 bytes / -0.01%]\ncodesize/test_codesize_cxx_mangle.json: 266439 \u003d\u003e 266435 [-4 bytes / -0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155869 \u003d\u003e 155856 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180975 \u003d\u003e 180958 [-17 bytes / -0.01%]\ncodesize/test_codesize_files_wasmfs.json: 63231 \u003d\u003e 63223 [-8 bytes / -0.01%]\ncodesize/test_codesize_hello_O0.json: 38586 \u003d\u003e 38580 [-6 bytes / -0.02%]\ncodesize/test_codesize_hello_dylink.json: 44112 \u003d\u003e 44108 [-4 bytes / -0.01%]\ncodesize/test_codesize_hello_dylink_all.json: 859157 \u003d\u003e 859331 [+174 bytes / +0.02%]\ncodesize/test_codesize_mem_O3_standalone.json: 9140 \u003d\u003e 9140 [+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: 26015 \u003d\u003e 26001 [-14 bytes / -0.05%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26474 \u003d\u003e 26460 [-14 bytes / -0.05%]\ncodesize/test_minimal_runtime_code_size_audio_worklet.json: 16389 \u003d\u003e 16385 [-4 bytes / -0.02%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm.json: 11050 \u003d\u003e 11037 [-13 bytes / -0.12%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17354 \u003d\u003e 17346 [-8 bytes / -0.05%]\ncodesize/test_unoptimized_code_size.json: 172084 \u003d\u003e 172066 [-18 bytes / -0.01%]\n\nAverage change: -0.02% (-0.12% - +0.02%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "618713f7edd5038510aca284121187e58a9b4151",
      "tree": "4a95177efe21d19dd1fa42b39ebd95d043214a4d",
      "parents": [
        "7ee8fcca0331b9b892a00c9ad54588a0f793a783"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Aug 25 23:53:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 23:53:21 2026"
      },
      "message": "[CI] Move x86 Windows launcher build job to GitHub Actions (#27606)\n\nMove the `build-windows-launcher` job from CircleCI to GitHub Actions\n(`build-pylauncher-x64`), matching the existing ARM64 launcher build\njob. Remove `build-windows-launcher` from `.circleci/config.yml` and\ndelete the unused `.circleci/setup_vs2022.bat`."
    },
    {
      "commit": "7ee8fcca0331b9b892a00c9ad54588a0f793a783",
      "tree": "c4af24b306e6281fd31a80d2a267b33a90d579ed",
      "parents": [
        "36feab31ff0f5141e078241373d1f09f8c80e4a8"
      ],
      "author": {
        "name": "Brendan Dahl",
        "email": "brendan.dahl@gmail.com",
        "time": "Tue Aug 25 22:01:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 22:01:34 2026"
      },
      "message": "Force __cxa_can_catch in LTO with exceptions (#27578)\n\nDuring LTO code generation, the LLVM backend lowers Emscripten exception\nhandling into calls to __cxa_find_matching_catch_N, which is provided by\nJS library code and requires __cxa_can_catch from libc++abi.\n\nBecause libc++abi is an archive of bitcode files in LTO builds,\n__cxa_can_catch is not extracted before LTO codegen unless explicitly\nreferenced, leading to undefined symbol errors.\n\nThis is needed after the changes to [wasm-ld\nland](https://github.com/llvm/llvm-project/pull/217774)."
    },
    {
      "commit": "36feab31ff0f5141e078241373d1f09f8c80e4a8",
      "tree": "1954508c8e760d63487b165635956b5399d2f46a",
      "parents": [
        "aa768260f1b9ef126fb100279c042ed4751aeec8"
      ],
      "author": {
        "name": "Thomas Steiner",
        "email": "tomac@google.com",
        "time": "Tue Aug 25 19:24:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 19:24:25 2026"
      },
      "message": "Use streaming compilation on both Cross-Origin Storage paths (#27609)\n\nFollow-up to #27066. The Cross-Origin Storage integration read the\nmodule into an `ArrayBuffer` on both the cache-hit and cache-miss paths\nand called `WebAssembly.instantiate()`, so enabling\n`-sCROSS_ORIGIN_STORAGE` lost the download/compile overlap of the\nstandard `instantiateStreaming()` path. Every first-visit user hit the\nslower miss path. (Thanks to @reillyeon for spotting this in\nWICG/cross-origin-storage#74.)\n\n**Cache hit:** `handle.getFile().stream()` is wrapped in a `Response`\nwith an `application/wasm` content type and passed to\n`instantiateStreaming()`. The bytes were hash-verified when written into\nCOS, so the fixed type is safe.\n\n**Cache miss:** the fetch body is `tee()`\u0027d. One branch goes to\n`instantiateStreaming()` immediately; the other is `pipeTo()`\u0027d into the\nCOS writable in the background (`pipeTo()` closes the writable, and COS\nverifies the hash on close). If the store fails before consuming, the\ntee branch is cancelled so the body is not buffered indefinitely.\n\nThe server\u0027s MIME type is deliberately not forwarded on the miss path:\nthe standard path recovers from a bad MIME type by re-downloading, but\nhere the store branch is already consuming the body. A wrong file still\nfails compilation and falls through to the standard path as before. A\nnon-OK response now throws early rather than being handed to the\ncompiler.\n\nDocs, the custom `Module[\u0027instantiateWasm\u0027]` example, and the ChangeLog\nare updated to match. No test changes: the existing\n`test_cross_origin_storage_*` browser tests exercise both paths and the\ninstrumentation callbacks fire at the same points."
    },
    {
      "commit": "aa768260f1b9ef126fb100279c042ed4751aeec8",
      "tree": "5952284d2e0342ee05fe063209929351bb92f616",
      "parents": [
        "2fb11a0493dac4ea03bae8aa7f7a6b0ee12e3452"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Aug 25 19:21:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 19:21:32 2026"
      },
      "message": "Add `getpass` to libc build (#27605)\n\nInclude `getpass.c` in libc and ensure `getpass()` works correctly\nat least under Node.js.\n\nThis includes two bugfixes needed to make `getpass()` work:\n1. In `libtty.js`: In canonical mode (`ICANON`), make `read` return as\n   soon as a newline character (`\\n`) is encountered.\n2. In `libnoderawfs.js`: Properly mark TTY streams as non-seekable when\n   opened via `FS.open`, and remove hardcoded `seekable: false` from\n   standard stream creation.\n\nSee: #27583"
    },
    {
      "commit": "2fb11a0493dac4ea03bae8aa7f7a6b0ee12e3452",
      "tree": "072550bd67b724059f88a18fa809c3417b304a36",
      "parents": [
        "510a74598d4f8b2a34b578b64399c8436ea5f57a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Aug 25 15:59:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 25 15:59:55 2026"
      },
      "message": "[test] Simplify `test_glfw_events.c` using `assert()` (#27604)\n\nReplace manual `g_state` bitmask failure tracking with direct `assert()`\nchecks in callbacks and the test runner loop.\n\nFollowup to  #27597"
    },
    {
      "commit": "510a74598d4f8b2a34b578b64399c8436ea5f57a",
      "tree": "26fe70235f853047e5fc8e057ee010edac8c36a7",
      "parents": [
        "f61e35fe2c76105fc46bba865d61a46fe87f20c4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 24 19:59:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 19:59:44 2026"
      },
      "message": "[test] Fix error reporting and revert key events in `test_glfw_events.c` (#27597)\n\nIn #22915 I inadvertently broke this test but it went unnoticed because\nthe error reporting was broken.\n\nThis change reverts `test_glfw_events.c` to use `injectKeyEvent` via\n`EM_ASM` instead of trying to use `fake_events.js` (which is not\nflexible\nenough yet for this test).\n\nAlso fix the error reporting and add `test_success` and `test_fail`\nhelpers the help keep it simple."
    },
    {
      "commit": "f61e35fe2c76105fc46bba865d61a46fe87f20c4",
      "tree": "9db1e24ced10eb4c284fcccc5529fea2d87b7be2",
      "parents": [
        "544e1ed11ae5a52969ee93ec3e0031f2bbd94e32"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 24 19:59:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 19:59:22 2026"
      },
      "message": "Remove `-fwrapv-pointer` from SDL2 build. NFC (#27595)\n\nThis should have been removed in #24912."
    },
    {
      "commit": "544e1ed11ae5a52969ee93ec3e0031f2bbd94e32",
      "tree": "d73b07419ba1cce53739a127ae10edc648899ba0",
      "parents": [
        "9767960a030fcfd223bd51e8288730677f07327e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 24 16:42:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 16:42:10 2026"
      },
      "message": "Add a simple autoconf test. NFC (#27591)\n\nWe have larger autoconf tests but its good to have a small unit test to\ntest specific things.\n\nSee #27583"
    },
    {
      "commit": "9767960a030fcfd223bd51e8288730677f07327e",
      "tree": "06ecb1709fd0bfed14d3e36a06fc993cf2fababc",
      "parents": [
        "61495d4ef5b4fcbcba8f1602dd3406762fdb3e38"
      ],
      "author": {
        "name": "Derek Schuff",
        "email": "dschuff@chromium.org",
        "time": "Mon Aug 24 16:37:00 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 16:37:00 2026"
      },
      "message": "Update test_export_global_address (#27587)\n\nAdd more cases to cover functions as well as variables.\nAlso switch to C++ and check that exports use the linkage name."
    },
    {
      "commit": "61495d4ef5b4fcbcba8f1602dd3406762fdb3e38",
      "tree": "1f9afb0d2f9f032a0a380f1344c8a78f83b96fb5",
      "parents": [
        "46ff19a4db7412e90391103c332096894f3b30a9"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 24 15:41:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 15:41:47 2026"
      },
      "message": "[noderawfs] Support TTY ioctls and add `test_ioctl_termios_noderawfs` (#27602)\n\nSet `stream.tty` to a TTY device object with `TTY.default_tty_ops` when\n`nodeTTY.isatty(nfd)` is true, allowing termios and window size ioctls\n(`TCGETS`, `TCSETS`, `TIOCGWINSZ`) to work under `NODERAWFS`.\n\nAdd `test_ioctl_termios_noderawfs` to `test/test_other.py`.\n\nSee: #22264"
    },
    {
      "commit": "46ff19a4db7412e90391103c332096894f3b30a9",
      "tree": "b766cce8f69f073dde37cd73641ae719a86d4fac",
      "parents": [
        "ef72a43808773bf90388cfa438a27342ebdb82c5"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 24 15:38:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 15:38:01 2026"
      },
      "message": "Remove explicit `-sUSE_SDL\u003d0` when build sdl2/sdl3 ports. (#27594)\n\nThis should have been remove in #18443."
    },
    {
      "commit": "ef72a43808773bf90388cfa438a27342ebdb82c5",
      "tree": "e3aca7c0aef692258f0d5bfcba536994a54cca06",
      "parents": [
        "100783712d1c2f530446332722ed09a727c90c4c"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Aug 24 14:52:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 24 14:52:02 2026"
      },
      "message": "Update emsdk version from f3956940 to bf14f979 (#27603)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f3956940 \u003d\u003e bf14f979\n\nThe following revisions were included in this update:\n\n```\n- bf14f979 Roll llvm-project from 1f7bed0859cb to 4639fa213220 (3 revisions)\n- ecda095a Roll llvm-project from e124e312e22b to 1f7bed0859cb (4 revisions)\n- 4bae8397 Roll emscripten from a04d0beef36b to 100783712d1c (1 revision)\n- ec33b985 Roll llvm-project from a92b65bbd980 to e124e312e22b (7 revisions)\n- 40208a9c Roll llvm-project from 62b1dce2e660 to a92b65bbd980 (7 revisions)\n- 382e96df Roll llvm-project from f75f48e3ce41 to 62b1dce2e660 (14 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f3956940..bf14f979\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "100783712d1c2f530446332722ed09a727c90c4c",
      "tree": "fb3eb1e3815c39b5e294ce82d653af24cab39ed9",
      "parents": [
        "a04d0beef36bfa7661cee4b8dff7d3909303dabc"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sun Aug 23 16:42:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 23 16:42:19 2026"
      },
      "message": "Update emsdk version from abf420c8 to f3956940 (#27599)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: abf420c8 \u003d\u003e f3956940\n\nThe following revisions were included in this update:\n\n```\n- f3956940 Roll llvm-project from 6e2ed23e1189 to f75f48e3ce41 (9 revisions)\n- 7c57716e Roll v8 from 02077f02e0f1 to c44b14904a37 (1 revision)\n- 5deb559e Roll llvm-project from 1411f47e2297 to 6e2ed23e1189 (17 revisions)\n- 08c13658 Roll llvm-project from 0d18bb67d106 to 1411f47e2297 (9 revisions)\n- bada95ed Roll emscripten from fd13fb0e6b82 to a04d0beef36b (1 revision)\n- 3360e9a2 Roll llvm-project from 2a9b623c95d6 to 0d18bb67d106 (13 revisions)\n- 9ec6af20 Roll llvm-project from 55de668108bc to 2a9b623c95d6 (21 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/abf420c8..f3956940\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "a04d0beef36bfa7661cee4b8dff7d3909303dabc",
      "tree": "1467182f722c1e666a537bdf34033b13e6963f00",
      "parents": [
        "fd13fb0e6b82137e346c2474ed76e8ec9518497b"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 22 17:20:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 22 17:20:58 2026"
      },
      "message": "Update emsdk version from 154c6bf4 to abf420c8 (#27596)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 154c6bf4 \u003d\u003e abf420c8\n\nThe following revisions were included in this update:\n\n```\n- abf420c8 Roll llvm-project from 44e448476ee3 to 55de668108bc (31 revisions)\n- d8b5017e Roll emscripten from cc7c408bf747 to fd13fb0e6b82 (3 revisions)\n- 583af00f Roll binaryen from b899ca2f4c4b to bb0caa3fc547 (2 revisions)\n- 94ff0e9b Roll emscripten from a16643b3598c to cc7c408bf747 (1 revision)\n- 598393f8 Roll binaryen from 9b86340f97dd to b899ca2f4c4b (1 revision)\n- b926d565 Roll v8 from f7e0458d30f7 to 02077f02e0f1 (34 revisions)\n- daf77287 Roll llvm-project from 4ccc07bc4d10 to 44e448476ee3 (53 revisions)\n- f75abb77 Roll emscripten from d0d3829af0bc to a16643b3598c (1 revision)\n- 59fa333a Roll binaryen from 93c3dbf34215 to 9b86340f97dd (3 revisions)\n- fa27d6ec Roll binaryen from 3fe6a5fe0cc3 to 93c3dbf34215 (1 revision)\n- e692c6fb Roll llvm-project from 05bd2d911ece to 4ccc07bc4d10 (41 revisions)\n- dac4bfc6 Roll binaryen from 02cb86f52e94 to 3fe6a5fe0cc3 (2 revisions)\n- a63b04a7 Roll llvm-project from f6ea145aa8e8 to 05bd2d911ece (52 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/154c6bf4..abf420c8\n\nThe following (4) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 858893 \u003d\u003e 858886 [-7 bytes / -0.00%]\ncodesize/test_minimal_runtime_code_size_hello_webgl2_wasm2js.json: 18559 \u003d\u003e 18313 [-246 bytes / -1.33%]\ncodesize/test_minimal_runtime_code_size_hello_webgl_wasm2js.json: 18085 \u003d\u003e 17840 [-245 bytes / -1.35%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17413 \u003d\u003e 17354 [-59 bytes / -0.34%]\n\nAverage change: -0.75% (-1.35% - -0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "fd13fb0e6b82137e346c2474ed76e8ec9518497b",
      "tree": "119491b5ac5abcc5ff995e988664a2cfd6bc7ada",
      "parents": [
        "1c63bdb82ed5519b93f754fc32ea5773ea508418"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Sat Aug 22 01:27:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 22 01:27:02 2026"
      },
      "message": "Remove unnecessary try/catch guards in NODERAWSOCKETS backend (#27351)\n\nThis trims the try/catch guards in the `-sNODERAWSOCKETS` backend down\nto those that are actually needed on Node 18+.\n\nMost of the removed guards wrapped public `net.Socket` / `net.Server`\nstream methods (pause/resume/destroy/end/setNoDelay/setKeepAlive, server\nclose, dgram disconnect) that never throw in the states they are called.\nThe remaining catches all serve a real purpose: translating a Node throw\ninto a POSIX errno, guarding a private (process.binding) or capability\nAPI, or handling a dgram double-close.\n\nWhile here, out-of-range UDP `setsockopt` values (e.g.\n`IP_MULTICAST_TTL\u003d300`) now return `EINVAL` instead of being silently\nswallowed. Both the public dgram path (throws) and the udp_wrap fallback\npath (negative libuv code) are handled, and a rejected value is dropped\nso it neither takes effect nor re-fails a later option replay.\n\ntest_udp_sockopts.c is extended: an out-of-range set now asserts EINVAL\nand a subsequent valid set still succeeds.\n\n_Made with AI assistance, under my review._"
    },
    {
      "commit": "1c63bdb82ed5519b93f754fc32ea5773ea508418",
      "tree": "1cb5f2cf496d031d283522cec351534219223afb",
      "parents": [
        "0dc8f19fbf1fa6686935249b786432396e148666"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 22 01:00:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 22 01:00:45 2026"
      },
      "message": "Update emsdk version from 72e0689c to 154c6bf4 (#27584)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 72e0689c \u003d\u003e 154c6bf4\n\nThe following revisions were included in this update:\n\n```\n- 154c6bf4 Roll llvm-project from 22c13f6db8c9 to f6ea145aa8e8 (84 revisions)\n- 6c74d67a Roll emscripten from 52b64990f58d to d0d3829af0bc (3 revisions)\n- 74bec79e Roll binaryen from 0af42fada13d to 02cb86f52e94 (3 revisions)\n- 250c24cf Roll emscripten from 5730b7ce0fa0 to 52b64990f58d (1 revision)\n- 0ef1484c Roll binaryen from 7836ed6eb3a8 to 0af42fada13d (2 revisions)\n- 0463ab3e Roll emscripten from f617615dd99c to 5730b7ce0fa0 (1 revision)\n- 42683c9b Roll llvm-project from c0125a7bf833 to 22c13f6db8c9 (74 revisions)\n- 165ec013 Roll v8 from d9740b53ddd6 to f7e0458d30f7 (46 revisions)\n- c6eeb6b9 Roll binaryen from 8d546dc4aea1 to 7836ed6eb3a8 (1 revision)\n- 20cefccc Roll emscripten from aeb67926e7de to f617615dd99c (1 revision)\n- 752637bd Fix PATH in trigger_emsdk_release.py\n- 9d70dbe8 Version 6.0.8 RC\n- c2c018ef Roll llvm-project from 020fe197085a to c0125a7bf833 (35 revisions)\n- dda523fc Roll llvm-project from 1c794fbafafe to 020fe197085a (23 revisions)\n- 749e8a17 Roll binaryen from 89a81ef9b72e to 8d546dc4aea1 (2 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/72e0689c..154c6bf4\n\nThe following (4) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_lto.json: 119546 \u003d\u003e 119539 [-7 bytes / -0.01%]\ncodesize/test_codesize_hello_dylink_all.json: 858884 \u003d\u003e 858893 [+9 bytes / +0.00%]\ncodesize/test_codesize_minimal_pthreads.json: 26016 \u003d\u003e 26015 [-1 bytes / -0.00%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26475 \u003d\u003e 26474 [-1 bytes / -0.00%]\n\nAverage change: -0.00% (-0.01% - +0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "0dc8f19fbf1fa6686935249b786432396e148666",
      "tree": "5b6a4bba1d802b742fbf467e38f0a62acba010bc",
      "parents": [
        "cc7c408bf747c6d96f9e7e8b44cddc98701eb9fe"
      ],
      "author": {
        "name": "Brendan Dahl",
        "email": "brendan.dahl@gmail.com",
        "time": "Fri Aug 21 23:59:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 23:59:53 2026"
      },
      "message": "Upgrade TypeScript to v7. (#27571)\n\nThe behavior of TypeScript\u0027s `--emitDeclarationOnly` mode has changed in\nv7 which caused some changes to the definitions that Emscripten outputs\nnow."
    },
    {
      "commit": "cc7c408bf747c6d96f9e7e8b44cddc98701eb9fe",
      "tree": "6120b2777d51e69a173c4a5bf7d8b1f5b2bed48f",
      "parents": [
        "a16643b3598cd00737c4d9e4d44dcf9b0bc68de0"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 21 21:36:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 21:36:44 2026"
      },
      "message": "[CI] Fix test_other after #27579 (#27586)"
    },
    {
      "commit": "a16643b3598cd00737c4d9e4d44dcf9b0bc68de0",
      "tree": "f06ee1639f99ad2b8805e0f9b9e71906ed077841",
      "parents": [
        "d0d3829af0bc890b7eaacae2fdc89ce801c08fbd"
      ],
      "author": {
        "name": "Thomas Steiner",
        "email": "tomac@google.com",
        "time": "Fri Aug 21 19:42:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 21 19:42:02 2026"
      },
      "message": "Fix stale requestFileHandles() call in Cross-Origin Storage docs (#27585)\n\nThe `instantiateWasm` example in\n`site/source/docs/compiling/CrossOriginStorage.rst` called\n`navigator.crossOriginStorage.requestFileHandles(cosHash)` with a bare\nhash and then treated the result as a single `FileSystemFileHandle`\n(`.then(handle \u003d\u003e handle.getFile())`).\n\nThe API is `requestFileHandle()` (singular). The plural form was an\nearly draft that took an array of hashes and returned an array of\nhandles; it was [removed in favor of the singular\nform](https://github.com/WICG/cross-origin-storage/issues/61). The rest\nof this document — and the actual implementation in `src/preamble.js` —\nalready use the singular form, so this example was the only stale call\nsite.\n\nDocs-only, one line."
    },
    {
      "commit": "d0d3829af0bc890b7eaacae2fdc89ce801c08fbd",
      "tree": "ec26d2d29ab05eb4fb2d0bcf70db72d47aff0644",
      "parents": [
        "badaa0e498230247478005a46aa73d3c73e0a23d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Aug 20 23:39:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 23:39:25 2026"
      },
      "message": "Support both legacy and non-legacy EH in ports (#27579)\n\nSplit out from #27575"
    },
    {
      "commit": "badaa0e498230247478005a46aa73d3c73e0a23d",
      "tree": "831577ebe1aed652d240b2b8a9209de09f887a4b",
      "parents": [
        "b9fba9833cebc923352660eb9f2fd6c415218499"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Aug 20 23:37:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 23:37:44 2026"
      },
      "message": "[CI] Pin bun version 1.3.14 for testing (#27581)\n\nSee https://github.com/emscripten-core/emscripten/issues/27580"
    },
    {
      "commit": "b9fba9833cebc923352660eb9f2fd6c415218499",
      "tree": "c4ad9ab5b0e97fd07947293304d791c0ee5fe5df",
      "parents": [
        "52b64990f58dffc6566df84bcff2743bcc2a4c0a"
      ],
      "author": {
        "name": "Brendan Dahl",
        "email": "brendan.dahl@gmail.com",
        "time": "Thu Aug 20 23:30:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 23:30:33 2026"
      },
      "message": "Do not cache JS output when warnings occur (#27577)\n\nWarnings emitted during JS library compilation are printed to stderr and\nnot stored in the cache. Hitting the cache on subsequent builds\nsuppresses these warnings.\n\nDo not cache the generated JavaScript output if warnings occurred so\nthat subsequent builds will recompile and emit the warnings."
    },
    {
      "commit": "52b64990f58dffc6566df84bcff2743bcc2a4c0a",
      "tree": "639d2025029cb767204636cec767f4329a9db034",
      "parents": [
        "5730b7ce0fa08e8aa96ead26ff640f6dae475310"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Aug 20 22:32:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 22:32:22 2026"
      },
      "message": "Covert a couple of EH tests to @parameterize. NFC (#27576)\n\nSplit out from #27575"
    },
    {
      "commit": "5730b7ce0fa08e8aa96ead26ff640f6dae475310",
      "tree": "a2205597275ae24b6e8bd9e2dfeebefa95e94d35",
      "parents": [
        "f617615dd99cda4fc1fd05b22cddbcf9b5487600"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Aug 20 18:21:32 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 18:21:32 2026"
      },
      "message": "Mark 6.0.8 as released (#27574)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "f617615dd99cda4fc1fd05b22cddbcf9b5487600",
      "tree": "55537efe0f0d9eebdd5ec1174800c0f873c1a47a",
      "parents": [
        "aeb67926e7de656da38bc807d83050af93578758"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Aug 20 15:32:37 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 15:32:37 2026"
      },
      "message": "Update emsdk version from 8aa5e86c to 72e0689c (#27573)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 8aa5e86c \u003d\u003e 72e0689c\n\nThe following revisions were included in this update:\n\n```\n- 72e0689c Roll llvm-project from 4bfd08c2d769 to 1c794fbafafe (25 revisions)\n- 1aa74b7a Roll emscripten from 1e0f2af79703 to aeb67926e7de (1 revision)\n- 0c744bea Roll binaryen from daf26d2edc10 to 89a81ef9b72e (2 revisions)\n- 541beb78 Roll emscripten from 2c4b1817d215 to 1e0f2af79703 (3 revisions)\n- 14c0a7bd Roll binaryen from b8c151259b34 to daf26d2edc10 (1 revision)\n- b02156e2 Roll llvm-project from 9715eb993dce to 4bfd08c2d769 (52 revisions)\n- a2c23b4c Roll emscripten from 1b1481ce9e01 to 2c4b1817d215 (2 revisions)\n- 29c0aa82 Roll emscripten from 77dc595f2954 to 1b1481ce9e01 (3 revisions)\n- 4f2fac0c Roll llvm-project from 5f6a32ee292e to 9715eb993dce (60 revisions)\n- 7cdf180f Roll v8 from 0fff700c2de2 to d9740b53ddd6 (68 revisions)\n- 601b794e Simplify `RevisionModifiesFile` to use `git show`\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/8aa5e86c..72e0689c\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "aeb67926e7de656da38bc807d83050af93578758",
      "tree": "c7a87fc34a4a4e2298b4c589172331d7357ef90d",
      "parents": [
        "1e0f2af7970344661e447e0137e1330deeef3b52"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Aug 20 00:23:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 20 00:23:29 2026"
      },
      "message": "Mark WASM_BIGINT as deprecated (#27558)\n\nWith the minimum Safari version bumped to 15 in #27542, WebAssembly\nBigInt integration (`WASM_BIGINT`) is now standard and enabled by\ndefault across all supported engines. The only remaining use case\nfor disabling it is internally for `WASM2JS` (`-sWASM\u003d0`).\n\nUsers should no longer set `-sWASM_BIGINT` directly, so mark\n`WASM_BIGINT` as deprecated."
    },
    {
      "commit": "1e0f2af7970344661e447e0137e1330deeef3b52",
      "tree": "cf025e02ff2c93b6dab21feb73f451a3a69e156a",
      "parents": [
        "9bd5aa27a5d18136b09c005dbba5f75327d67579"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 22:44:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 22:44:48 2026"
      },
      "message": "Remove SOCKET_WEBRTC socket backend and dependencies (#27367)\n\nRemove `-sSOCKET_WEBRTC` setting along with its vendored third-party\ndependencies `third_party/socket.io.js` (Socket.IO client v0.9.11) and\n`third_party/wrtcp.js` (experimental WebRTC P2P broker from 2012).\n\n`SOCKET_WEBRTC` has long been marked as untested and potentially broken\nin `src/settings.js`, and has no test coverage in the test suite.\nFurthermore, the underlying libraries depend on obsolete protocol\nversions, vendor-prefixed WebRTC constructors, and a hardcoded STUN\nserver IP address.\n\n`-sSOCKET_WEBRTC\u003d0` is moved to `LEGACY_SETTINGS` for backwards\ncompatibility, while passing `-sSOCKET_WEBRTC\u003d1` will now produce a\nclear error.\n\nFixes: #27366"
    },
    {
      "commit": "9bd5aa27a5d18136b09c005dbba5f75327d67579",
      "tree": "3fc7d6e9ecec711e4c732a865323d4b9d7f6fe97",
      "parents": [
        "ddff96a72b6f50c63786d7d76ed62a3f1db97ff2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 21:29:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 21:29:56 2026"
      },
      "message": "Simplify handling of `--bigint` in `finalize_wasm`. NFC (#27570)\n\nIn `wasm-emscripten-finalize`, both `--bigint` and\n`--no-legalize-javascript-ffi` have the exact same effect: they prevent\nrunning the `legalize-js-interface` pass (`if (!bigInt \u0026\u0026\nlegalizeJavaScriptFFI)`).\n\nPreviously, when `WASM_BIGINT` was enabled, Emscripten was passing both\n`--bigint` and `--no-legalize-javascript-ffi`. In addition, when\n`AUTODEBUG` was enabled, `--bigint` was appended a second time.\n\nConsolidate the check so `--bigint` is passed once when either\n`WASM_BIGINT` or `AUTODEBUG` is enabled, and remove the redundant\n`--no-legalize-javascript-ffi` flag.\n\nSplit out from #27558."
    },
    {
      "commit": "ddff96a72b6f50c63786d7d76ed62a3f1db97ff2",
      "tree": "ee778843d0835ce51dd5739726b2d862fc7b05e0",
      "parents": [
        "2c4b1817d2153a2af03f26abca61ee4d535831ec"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 19:57:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 19:57:43 2026"
      },
      "message": "Move `LEGALIZE_JS_FFI` to legacy settings list (#27568)\n\nMove `LEGALIZE_JS_FFI` to `LEGACY_SETTINGS` (accepting only `0` for\nbackwards compatibility). JS FFI legalization is no longer needed under\nthe default `WASM_BIGINT` configuration and is now conditioned directly\non `WASM_BIGINT\u003d0`.\n\nSplit out from #27558."
    },
    {
      "commit": "2c4b1817d2153a2af03f26abca61ee4d535831ec",
      "tree": "332478e0f6274e9d3708747bf277621b35ef53ae",
      "parents": [
        "001fc91a6d3d9c337120841c792fea1d333e34d1"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 18:32:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 18:32:08 2026"
      },
      "message": "Remove legacy int64 legalization warning (#27569)\n\nThis warning only really made sense before `WASM_BIGINT` was enabled by\ndefault. The warning was there to hint folks who were just building with\ndefault settings to enabled `WASM_BIGINT`, but since its enable by\ndefault these days it is less useful.\n\nThis really should have been part of #22993."
    },
    {
      "commit": "001fc91a6d3d9c337120841c792fea1d333e34d1",
      "tree": "ec2af612cedd722c5c6e1614e8c6fd236cd74d6a",
      "parents": [
        "1b1481ce9e01b3327422d8d16afa35df9c554276"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Aug 19 17:25:20 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 17:25:20 2026"
      },
      "message": "Update emsdk version from 60241fe0 to 8aa5e86c (#27567)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 60241fe0 \u003d\u003e 8aa5e86c\n\nThe following revisions were included in this update:\n\n```\n- 8aa5e86c Roll llvm-project from 9835f8acf3ba to 5f6a32ee292e (58 revisions)\n- ce5c5d35 Roll llvm-project from 774d70a3068b to 9835f8acf3ba (22 revisions)\n- 5d8c8c60 Roll binaryen from 7dd128dfcdef to b8c151259b34 (2 revisions)\n- d5a2c951 Roll llvm-project from 8b1e3aa6b661 to 774d70a3068b (54 revisions)\n- 1853fede Fix release candidate detection on trybots\n- d216bb12 Roll binaryen from 07a6f35f8ae0 to 7dd128dfcdef (1 revision)\n- 5273c55a Roll emscripten from 2e3e3cc617ae to 77dc595f2954 (1 revision)\n- c8004df5 Roll emscripten from ca200ba646c0 to 2e3e3cc617ae (1 revision)\n- b14c44ee Roll llvm-project from b025f5b75941 to 8b1e3aa6b661 (50 revisions)\n- 9326774a Roll llvm-project from 6394197d7698 to b025f5b75941 (42 revisions)\n- 5f4a447f Roll v8 from fd75eb5d6753 to 0fff700c2de2 (25 revisions)\n- a8c16c0c Roll llvm-project from ecdcdf0577c1 to 6394197d7698 (27 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/60241fe0..8aa5e86c\n\nThe following (20) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153934 \u003d\u003e 153943 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 153340 \u003d\u003e 153349 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_except.json: 200093 \u003d\u003e 200093 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_except_wasm.json: 169462 \u003d\u003e 169455 [-7 bytes / -0.00%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 167322 \u003d\u003e 167315 [-7 bytes / -0.00%]\ncodesize/test_codesize_cxx_lto.json: 119535 \u003d\u003e 119546 [+11 bytes / +0.01%]\ncodesize/test_codesize_cxx_mangle.json: 266423 \u003d\u003e 266423 [+0 bytes / +0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155844 \u003d\u003e 155853 [+9 bytes / +0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180962 \u003d\u003e 180975 [+13 bytes / +0.01%]\ncodesize/test_codesize_files_wasmfs.json: 63223 \u003d\u003e 63231 [+8 bytes / +0.01%]\ncodesize/test_codesize_hello_O0.json: 38586 \u003d\u003e 38586 [+0 bytes / +0.00%]\ncodesize/test_codesize_hello_dylink_all.json: 858910 \u003d\u003e 858884 [-26 bytes / -0.00%]\ncodesize/test_codesize_mem_O3_standalone.json: 9140 \u003d\u003e 9140 [+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: 26002 \u003d\u003e 26016 [+14 bytes / +0.05%]\ncodesize/test_codesize_minimal_pthreads_memgrowth.json: 26461 \u003d\u003e 26475 [+14 bytes / +0.05%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm.json: 11050 \u003d\u003e 11050 [+0 bytes / +0.00%]\ncodesize/test_minimal_runtime_code_size_random_printf_wasm2js.json: 17413 \u003d\u003e 17413 [+0 bytes / +0.00%]\ncodesize/test_unoptimized_code_size.json: 172084 \u003d\u003e 172084 [+0 bytes / +0.00%]\n\nAverage change: +0.01% (-0.00% - +0.05%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "1b1481ce9e01b3327422d8d16afa35df9c554276",
      "tree": "1ac4ec177e258b4cda0329d1b33ffcc300a67e25",
      "parents": [
        "5f6b81bc7d00e43a5a281ff856dd6f7ae4d4be82"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 16:10:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 16:10:31 2026"
      },
      "message": "Flip the default for LEGALIZE_JS_FFI. NFC (#27563)\n\nThis setting has already been deprecated for a long time. Flipping its\ndefault is really no-op here but it makes the followup changes to remove\nit simpler.\n\nSplit out from #27558."
    },
    {
      "commit": "5f6b81bc7d00e43a5a281ff856dd6f7ae4d4be82",
      "tree": "0f667f2d659e54082b32da7c36abe2edf42a288f",
      "parents": [
        "49dbb96a39a440b17264ae07ab6cfe0c0646a067"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 15:55:48 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 15:55:48 2026"
      },
      "message": "Update comments around node + instantiateStreaming. NFC (#27562)\n\nSee\nhttps://github.com/emscripten-core/emscripten/pull/27560/changes#r3806199803"
    },
    {
      "commit": "49dbb96a39a440b17264ae07ab6cfe0c0646a067",
      "tree": "14f762845bfe62d859fbc1ed840fbef80544095f",
      "parents": [
        "77dc595f295427f8a010fb8de8d67925c254d91d"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Aug 19 15:53:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 19 15:53:15 2026"
      },
      "message": "Cleanup and re-enable JS FFI legalization tests. NFC (#27564)\n\nI\u0027m likely about to delete these forever, but for some reason I would\nstill like to land this cleanup first."
    },
    {
      "commit": "77dc595f295427f8a010fb8de8d67925c254d91d",
      "tree": "65a31bd77cdea3bb746876e38cd3f0eae2506c1a",
      "parents": [
        "2e3e3cc617ae9f3549072eb9a292015d594605d3"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Aug 18 18:13:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 18:13:50 2026"
      },
      "message": "Update emsdk version from ae6cb9c1 to 60241fe0 (#27561)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ae6cb9c1 \u003d\u003e 60241fe0\n\nThe following revisions were included in this update:\n\n```\n- 60241fe0 Roll emscripten from bd3bbeab717d to ca200ba646c0 (1 revision)\n- fb721d95 Roll emscripten from c333eb49ae50 to bd3bbeab717d (1 revision)\n- 7e7edeb3 Roll llvm-project from 9a1c6e561697 to ecdcdf0577c1 (33 revisions)\n- 45d98340 Roll binaryen from 081f8cbb1a13 to 07a6f35f8ae0 (1 revision)\n- 8a817fae Roll emscripten from c6285f2a3c15 to c333eb49ae50 (2 revisions)\n- 1fe48939 Roll binaryen from 8d9412ef6431 to 081f8cbb1a13 (1 revision)\n- 11204535 Roll emscripten from 4b47df092ec9 to c6285f2a3c15 (1 revision)\n- d10e6ea3 Roll llvm-project from 4cc02503f584 to 9a1c6e561697 (271 revisions)\n- c8fb05a8 Roll emscripten from 4e8b63eac594 to 4b47df092ec9 (1 revision)\n- a2e0030d Version 6.0.7 RC\n- f983dbd0 Roll v8 from 5280f012d5ce to fd75eb5d6753 (1 revision)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ae6cb9c1..60241fe0\n\nThe following (15) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_ctors1.json: 153947 \u003d\u003e 153934 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_ctors2.json: 153353 \u003d\u003e 153340 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_except.json: 200106 \u003d\u003e 200093 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_except_wasm.json: 169475 \u003d\u003e 169462 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_except_wasm_legacy.json: 167335 \u003d\u003e 167322 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_lto.json: 119548 \u003d\u003e 119535 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_mangle.json: 266436 \u003d\u003e 266423 [-13 bytes / -0.00%]\ncodesize/test_codesize_cxx_noexcept.json: 155857 \u003d\u003e 155844 [-13 bytes / -0.01%]\ncodesize/test_codesize_cxx_wasmfs.json: 180975 \u003d\u003e 180962 [-13 bytes / -0.01%]\ncodesize/test_codesize_files_wasmfs.json: 63240 \u003d\u003e 63223 [-17 bytes / -0.03%]\ncodesize/test_codesize_hello_O1.json: 8060 \u003d\u003e 8041 [-19 bytes / -0.24%]\ncodesize/test_codesize_hello_dylink.json: 44113 \u003d\u003e 44096 [-17 bytes / -0.04%]\ncodesize/test_codesize_hello_dylink_all.json: 858927 \u003d\u003e 858910 [-17 bytes / -0.00%]\ncodesize/test_minimal_runtime_code_size_hello_embind.json: 15004 \u003d\u003e 14987 [-17 bytes / -0.11%]\ncodesize/test_minimal_runtime_code_size_hello_embind_val.json: 11731 \u003d\u003e 11714 [-17 bytes / -0.14%]\n\nAverage change: -0.04% (-0.24% - -0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "2e3e3cc617ae9f3549072eb9a292015d594605d3",
      "tree": "cea2585490358280544b64ced3f8eed0326fc3f7",
      "parents": [
        "ca200ba646c042d7d0e2ad415ece84b36458c1ed"
      ],
      "author": {
        "name": "Brendan Dahl",
        "email": "brendan.dahl@gmail.com",
        "time": "Tue Aug 18 17:27:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 17:27:40 2026"
      },
      "message": "Fix poppler benchmark environment flags (#27544)\n\nPreserve existing environment flags in the test library builder instead\nof overwriting them. This ensures caller-provided optimization settings\nare maintained.\n\nSet CXXFLAGS alongside CFLAGS to ensure C++ dependencies compile with\nthe correct settings. Pass environment overrides to the freetype\ndependency to fix the poppler benchmark build with LTO."
    },
    {
      "commit": "ca200ba646c042d7d0e2ad415ece84b36458c1ed",
      "tree": "082bba066333319e05aba48745f56b5d2ed32ed9",
      "parents": [
        "bd3bbeab717dc6914705fb6a8e22e5a98f8a2358"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Tue Aug 18 03:41:51 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 03:41:51 2026"
      },
      "message": "Implement epoll APIs in the JS filesystem (#27207)\n\nAdds `epoll_create1`, `epoll_ctl`, `epoll_wait` and `epoll_pwait` on a\nsingle fd readiness model shared with `poll()`.\n\nBuilds off of the existing event-driven readiness model in the JS FS\nsystem with the integration point as the per-inode wait-queue, having\neach FS node carrying a `listeners` set and producers calling\n`notifyNodeListeners(node, flags)` on ready transitions. There is no\nseparate or parallel readiness machinery - it integrates directly with\nthe existing model. `pollOne(fd, events)` is reused on the same\nreadiness definition.\n\nPer standard epoll semantics - `epoll_ctl ADD` installs a new listener\non the watched node. If items are already ready they are added to the\nready list. That listener then appends the registration to the epoll\u0027s\nready list for waking. The epoll_wait consumes the ready list,\nre-checking each item against its current mask via `pollOne`.\n\n* `EPOLLONESHOT` clears listeners to avoid unnecessary callback firing.\n`EPOLL_CTL_MOD` can then re-arm them again.\n* `EPOLLET` is implemented correctly to avoid refiring items that remain\nready\n* `EPOLLEXCLUSIVE` is passed for listeners allowing only one wake for\nmultiple epoll listeners to avoid the \"thundering herd\".\n* When exceeding `maxevents`, draining follows Linux-like semantics in\nsupporting round-robin ready calling. To achieve this without losing\nperformance, a doubly-linked list is used for the registrations. A\nsimpler set / array with copying could be used alternatively if we don\u0027t\nwant to use this approach.\n* Registrations key on the open file description (the dup-shared stream\nstate): closing a watched fd and reusing its number for a different open\ndoes not resurrect the registration onto the new fd (matching Linux).\n* `dup(2)` of an epoll fd yields another reference to the same epoll\ninstance (registrations and ready list shared, per Linux eventpoll\nsemantics); only the last close reclaims it.\n\nMost of the diff is tests, covering these semantics in depth including\nerror handling, level versus edge reporting, nesting and ELOOP, fd-close\nauto-removal, dup instance sharing, JSPI and pthreads, real sockets,\nderegistration, deterministic round-robin fairness, and multi-threaded\nwaits on a shared epoll fd (per-edge exactly-once wakeup under\n`EPOLLET`, herd wakeup under level triggering, and `EPOLLONESHOT`\ndisarm/re-arm and exactly-once delivery against racing waiter threads).\n\nMinor semantic divergences to note:\n* `epoll_pwait` ignores `sigmask`\n* `epoll_create1` accepts and ignores `EPOLL_CLOEXEC` (unknown flags are\nrejected with `EINVAL`)\n* closing a watched fd evicts its registration even when a dup of the\nopen description survives; Linux keeps the registration alive through\nthe file and continues delivering events (the classic epoll footgun)\n* nesting is capped at 5 levels\n* `epoll_event` under Wasm in Musl is laid out as aligned 16 rather than\nx86-64\u0027s packed 12 bytes.\n\nFixes: #5033, #10556"
    },
    {
      "commit": "bd3bbeab717dc6914705fb6a8e22e5a98f8a2358",
      "tree": "96ee5915906b0e5d3ac4f7ed31e3352dd0c225c7",
      "parents": [
        "c333eb49ae500e070e2b442bc9e756ef7bcece79"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Aug 18 01:29:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Aug 18 01:29:13 2026"
      },
      "message": "Remove experimental warning from `-sJSPI` (#27559)\n\nNow that JSPI has reached Phase 4 and is shipping (enabled by default\nwithout a flag since Chrome 137 and Node 26), remove the diagnostic\nwarning when linking with `-sJSPI`. Also update documentation and clean\nup `-Wno-experimental` suppressions in test files."
    },
    {
      "commit": "c333eb49ae500e070e2b442bc9e756ef7bcece79",
      "tree": "d0fec767a6fcd8d8fd4a693c5efa9474e7a465cd",
      "parents": [
        "5f9f690d02e6974b1ec26a59c8490797dc050020"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Mon Aug 17 22:58:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 22:58:30 2026"
      },
      "message": "Split test_sockets.py into node and browser suites (#27555)\n\nThis splits the `sockets` test suite into `sockets_node` and\n`sockets_browser`, as suggested by @sbc100 in #27207. A pure test\nrefactor with no test content changes, so that the node socket tests no\nlonger run under a browser-based suite.\n\n* `test/sockets_common.py`: shared server harnesses and helpers\n(websockify/compiled harnesses, echo server processes, IPv6 loopback\nprobe, skip decorators)\n* `test/test_sockets_node.py`: `sockets_node`/`sockets_node64` on\n`RunnerCore` (previously these ran under `BrowserCore`) - the nodejs\necho, connect-failure, subprotocol, and NODERAWSOCKETS tests\n* `test/test_sockets_browser.py`: `sockets_browser`/`sockets_browser64`\non `BrowserCore` - all btest-based tests, unchanged\n* `test/runner.py`, CircleCI config, and the test-suite docs updated;\nthe chrome CI job now runs both suites, preserving existing coverage\n\nVerified that every test method in the old file appears exactly once\nacross the new files."
    },
    {
      "commit": "5f9f690d02e6974b1ec26a59c8490797dc050020",
      "tree": "d4e5583b5dd23fe55a49046d84b5aa6cb370d47d",
      "parents": [
        "c6285f2a3c15516372b5c380f809add75360dcac"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Aug 17 22:45:14 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 22:45:14 2026"
      },
      "message": "Mark 6.0.7 as released (#27557)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c6285f2a3c15516372b5c380f809add75360dcac",
      "tree": "221e40b507fc7b6152688f28230def6ad0b3f3a9",
      "parents": [
        "4b47df092ec9b4d6498a9891d51e447d378a72d4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Aug 17 19:24:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 19:24:58 2026"
      },
      "message": "Remove support for non-standard -no-pthreads command line flag (#27546)\n\nIt turns out this was never really supported by LLVM in the way I\nthought it was when I added support here:\nhttps://github.com/llvm/llvm-project/pull/216378\n  \nI\u0027m pretty we never advertised the availability of this non-standard\nflag anywhere so I think removing it should be low risk. See #20723 for\nwhere it was added."
    },
    {
      "commit": "4b47df092ec9b4d6498a9891d51e447d378a72d4",
      "tree": "5ad6ec89c651c7ff4d44f6561c1d66830526634c",
      "parents": [
        "4e8b63eac59458c57583b59da9851c9a718bc073"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Aug 17 19:07:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Aug 17 19:07:08 2026"
      },
      "message": "Update emsdk version from ad5e904b to ae6cb9c1 (#27554)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ad5e904b \u003d\u003e ae6cb9c1\n\nThe following revisions were included in this update:\n\n```\n- ae6cb9c1 Roll emscripten from ea0b9f272789 to 4e8b63eac594 (1 revision)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ad5e904b..ae6cb9c1\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "4e8b63eac59458c57583b59da9851c9a718bc073",
      "tree": "5ccb4778474afc26021e6274b02401bdf07d5b24",
      "parents": [
        "ea0b9f272789117249a59a7cebed07de7f5c7ce2"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sun Aug 16 19:31:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Aug 16 19:31:11 2026"
      },
      "message": "Update emsdk version from ee36f30f to ad5e904b (#27550)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ee36f30f \u003d\u003e ad5e904b\n\nThe following revisions were included in this update:\n\n```\n- ad5e904b Roll v8 from 311d0e193f70 to 5280f012d5ce (3 revisions)\n- f7a7fdbe Roll emscripten from 4483d70a7809 to ea0b9f272789 (1 revision)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ee36f30f..ad5e904b\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "ea0b9f272789117249a59a7cebed07de7f5c7ce2",
      "tree": "6ee0056ab4c1ca0bfe3ed392bb0e47edd196815a",
      "parents": [
        "4483d70a78098ed5d860dff2dc21f3025b2da2ee"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 15 15:07:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 15 15:07:12 2026"
      },
      "message": "Update emsdk version from 614bcd22 to ee36f30f (#27548)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 614bcd22 \u003d\u003e ee36f30f\n\nThe following revisions were included in this update:\n\n```\n- ee36f30f Roll binaryen from dae272c71a46 to 8d9412ef6431 (1 revision)\n- b58523ea Roll emscripten from 8aca6b0a212c to 4483d70a7809 (1 revision)\n- 15cbaf62 Roll emscripten from 85b2c5bb57ec to 8aca6b0a212c (3 revisions)\n- ef20b745 Roll v8 from d315af3d83cf to 311d0e193f70 (28 revisions)\n- 5ad431de Roll binaryen from 3444b9772f39 to dae272c71a46 (2 revisions)\n- 0e470258 Roll llvm-project from 6baa105d7995 to 4cc02503f584 (40 revisions)\n- 2c38f98f Roll binaryen from 1bca181ef95a to 3444b9772f39 (1 revision)\n- aeaac473 Roll emscripten from 8fd74d6a84c2 to 85b2c5bb57ec (1 revision)\n- 55db39f5 Roll llvm-project from f0070530bfa4 to 6baa105d7995 (18 revisions)\n- 153c32f6 Roll llvm-project from 5f33e4f07a67 to f0070530bfa4 (11 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/614bcd22..ee36f30f\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "4483d70a78098ed5d860dff2dc21f3025b2da2ee",
      "tree": "2dfaa330454c0fd505fb84c051714e0bfb38b3c0",
      "parents": [
        "8aca6b0a212c7ee0b0c326bedd214149f0b48438"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 14 23:43:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 23:43:50 2026"
      },
      "message": "[docs] Remove old comment regarding nascent DOM Level 3 Events spec (#27363)\n\nThis was added back in cef72b48d5."
    },
    {
      "commit": "8aca6b0a212c7ee0b0c326bedd214149f0b48438",
      "tree": "12c2e89f2030770eec4424e6542a57478bda2c7c",
      "parents": [
        "6313a2d67a92c3e3b449f48e2fc9882d7e45ff3c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Aug 14 21:31:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 14 21:31:02 2026"
      },
      "message": "Bump oldest supported safari version from v14.1 to v15 (#27542)\n\nSafari 15 has been the default for a while now. This change means it is\nno longer possible to target anything older.\n\nToolchain and runtime impact:\n- Drops Binaryen lowering passes for `bulk-memory` and\n`nontrapping-fptoint` because all supported engines (Chrome \u003e\u003d 85,\nFirefox \u003e\u003d 79, Safari \u003e\u003d 15, Node \u003e\u003d 18.3) support them.\n- `JS_BIGINT_INTEGRATION` (`WASM_BIGINT`) is now unconditionally\nsupported across all target engines.\n- Removes legacy JS polyfills (e.g. `bigint64array.js`) and Safari\n14-specific workarounds.\n\nMarket share and device compatibility (AI-assisted):\n- Global usage: Safari 14 holds \u003c0.1% global market share and is below\nstandard reporting thresholds: https://caniuse.com/usage-table\nhttps://gs.statcounter.com/browser-version-market-share\n- iOS / iPadOS: iOS 15 supported all devices that ran iOS 14 (including\niPhone 6s/7, SE 1st gen, iPad Air 2, iPad mini 4, and iPod touch 7th\ngen), meaning zero active iOS devices were stranded on iOS 14:\nhttps://support.apple.com/100366\nhttps://en.wikipedia.org/wiki/IOS_15#Supported_devices\n- macOS: Safari 15 was released for macOS Catalina (10.15) and Big Sur\n(11.0), and shipped with Monterey (12.0). Only macOS Mojave (10.14) and\nolder were capped at Safari 14.1 (Mojave reached EOL in 2021):\nhttps://developer.apple.com/documentation/safari-release-notes/safari-15-release-notes\n\n---------\n\nCo-authored-by: Alon Zakai \u003calonzakai@gmail.com\u003e"
    }
  ],
  "next": "6313a2d67a92c3e3b449f48e2fc9882d7e45ff3c"
}
