)]}'
{
  "log": [
    {
      "commit": "9afaf97ba947e8404e520f9282842333015fefbf",
      "tree": "f5df5980219c28d420d832878082b4ebc0a08fd5",
      "parents": [
        "349bde960bd7d4b04d5c31bd95b85e34b356bada"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sat Aug 01 16:36:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Aug 01 16:36:09 2026"
      },
      "message": "Update emsdk version from f1215009 to ed44e9ca (#27474)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: f1215009 \u003d\u003e ed44e9ca\n\nThe following revisions were included in this update:\n\n```\n- ed44e9ca Roll llvm-project from eda2fb2d414a to d9e699957d02 (17 revisions)\n- 569e61d6 Roll emscripten from 7affccecb7d4 to 349bde960bd7 (1 revision)\n- 51e6ad77 Roll llvm-project from 93a1495bccc3 to eda2fb2d414a (33 revisions)\n- cd791fb0 Roll emscripten from b6ca1fe338eb to 7affccecb7d4 (2 revisions)\n- 372c4732 Roll binaryen from b8f91600f547 to 33abc59a3ba7 (1 revision)\n- 22804bf6 Roll emscripten from 7bc2c09998c8 to b6ca1fe338eb (3 revisions)\n- 7d3fd4ac Roll binaryen from d78c2455f33e to b8f91600f547 (2 revisions)\n- 1edb7def Roll llvm-project from d73beb2ee622 to 93a1495bccc3 (59 revisions)\n- 1a1b1ecf Roll v8 from ade6975ecaad to 2ad1b92f41e8 (21 revisions)\n- a0a3ee92 Roll emscripten from 39a0a85c7cf9 to 7bc2c09998c8 (3 revisions)\n- 5a77ab77 Roll binaryen from bbfbb2531cdf to d78c2455f33e (8 revisions)\n- 9143af9c Roll llvm-project from 81cd5b6217f1 to d73beb2ee622 (30 revisions)\n- b3578c46 Roll llvm-project from 7fc837632399 to 81cd5b6217f1 (34 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/f1215009..ed44e9ca\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "349bde960bd7d4b04d5c31bd95b85e34b356bada",
      "tree": "4a0b1ed0bf05133f4644ed1cf1bb064fc4311b13",
      "parents": [
        "7affccecb7d424fc98b6e09c3a08e791f4f740d2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 23:37:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 23:37:34 2026"
      },
      "message": "Use more python f-strings. NFC (#27467)"
    },
    {
      "commit": "7affccecb7d424fc98b6e09c3a08e791f4f740d2",
      "tree": "8ef1ea74ede757b35624893ce9c36055db94a4f9",
      "parents": [
        "a42bfb382e915a8fdedb9a3051e12be8a284c922"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 22:09:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 22:09:04 2026"
      },
      "message": "Use argv[0] to determine em++ vs emcc. NFC (#27465)\n\nThis means that if we were to use a symlink `em++` -\u003e `emcc` that would\nwork as expected."
    },
    {
      "commit": "a42bfb382e915a8fdedb9a3051e12be8a284c922",
      "tree": "ff01cbc8cab1d9652591da815576f1412fb469df",
      "parents": [
        "b6ca1fe338eb1d094fb0a378de96665e1f9b0667"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 20:42:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 20:42:25 2026"
      },
      "message": "[emcc.py] Use get_clang helper. NFC (#27464)"
    },
    {
      "commit": "b6ca1fe338eb1d094fb0a378de96665e1f9b0667",
      "tree": "d545045abc14cd964776c0356bda7c075297a5be",
      "parents": [
        "28c2296e5737673640cabdb1dfe974e23863b7b4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 19:05:09 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 19:05:09 2026"
      },
      "message": "Move EMCC_REPRODUCE handling. NFC (#27462)\n\nAlso, add test for this."
    },
    {
      "commit": "28c2296e5737673640cabdb1dfe974e23863b7b4",
      "tree": "2481679ed2f2cf51bb186d6120503c3b67b91e49",
      "parents": [
        "a11b6cfb2d60d931d8e89949c192aa648ea0adc2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 18:32:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 18:32:26 2026"
      },
      "message": "Add Safari version check around `webkitfullscreenchange`. NFC (#27461)\n\nThis was just missing due an oversight. All other usages of\nwebkit-prefix fullscreen stuff already has this guard."
    },
    {
      "commit": "a11b6cfb2d60d931d8e89949c192aa648ea0adc2",
      "tree": "05ab5a07b1637b9debd5e63192cda1176b57cb8f",
      "parents": [
        "7bc2c09998c83e6a7a9e0b74d4a252668377dbf2"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 17:06:54 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 17:06:54 2026"
      },
      "message": "Extract handle_early_exit_flags in emcc.py. NFC (#27460)\n\nThis change simply moves code out of the top-level `main` function.\n\nFollowup to #27454"
    },
    {
      "commit": "7bc2c09998c83e6a7a9e0b74d4a252668377dbf2",
      "tree": "d2206cd15f5b4ddc2f7290950048e1e3fe608664",
      "parents": [
        "6b7c15cf8f2f1f6ee3533a483687b55dfe0d0e83"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 16:10:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:10:40 2026"
      },
      "message": "Remove unused test files. NFC (#27458)\n\nThese should have been removed back in #14817."
    },
    {
      "commit": "6b7c15cf8f2f1f6ee3533a483687b55dfe0d0e83",
      "tree": "bcaae9e91c2d6d8f823b99c6bca5f3da61279873",
      "parents": [
        "7e97d35a9636e7dd8e84f3b544efd72de5770fb8"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Jul 31 16:10:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 16:10:21 2026"
      },
      "message": "Update emsdk version from ded6d7cb to f1215009 (#27459)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ded6d7cb \u003d\u003e f1215009\n\nThe following revisions were included in this update:\n\n```\n- f1215009 Roll llvm-project from 0879c1092c66 to 7fc837632399 (17 revisions)\n- 6a4d6673 Roll emscripten from d212b13bed0b to 39a0a85c7cf9 (1 revision)\n- 3f9dfda1 Roll llvm-project from b43247627d62 to 0879c1092c66 (350 revisions)\n- ad4c5976 Roll emscripten from 00149c0d8e10 to d212b13bed0b (5 revisions)\n- e13a3e1d Roll emscripten from 6e20fdc51867 to 00149c0d8e10 (4 revisions)\n- 8ecfcefc Roll emscripten from c407b75fcf8e to 6e20fdc51867 (1 revision)\n- 9f713f62 Roll v8 from b80a7539b736 to ade6975ecaad (29 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ded6d7cb..f1215009\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "7e97d35a9636e7dd8e84f3b544efd72de5770fb8",
      "tree": "1d06bfc3311b49dc71be17eb033157227870caaa",
      "parents": [
        "39a0a85c7cf9cac1b32f01f4ac2697454531ecae"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 31 15:50:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 31 15:50:23 2026"
      },
      "message": "[emcc] Defer early exit flag handling until after option parsing (#27454)\n\nMove early exit flags (`--clear-cache`, `--clear-ports`, `--check`, and\n`--show-ports`) out of `cmdline.py` into `emcc.py` so they are evaluated\nafter command-line argument parsing and setup are complete.\n\nThis avoids importing `ports` in `cmdline.py`, fixing a TODO."
    },
    {
      "commit": "39a0a85c7cf9cac1b32f01f4ac2697454531ecae",
      "tree": "f88f6eedba5662babf4b00223cc2ce1c2d448335",
      "parents": [
        "d212b13bed0bcf4cc5c857bdb060e1696248e7cc"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 23:51:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 23:51:29 2026"
      },
      "message": "Handle symbolic links in create_entry_points.py (#27453)\n\nWhen creating the entry points we need to first delete them, in case\nthey are sym links (which they may be once #27401 lands)."
    },
    {
      "commit": "d212b13bed0bcf4cc5c857bdb060e1696248e7cc",
      "tree": "29de6b884273ab1cac5e0b36a539be0021dcf640",
      "parents": [
        "868216669e262f8f3e4d6b07b38f132216150711"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu Jul 30 22:54:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 22:54:38 2026"
      },
      "message": "[EH] Apply Call EH personality fix from LLVM (#27445)\n\nAfter https://github.com/llvm/llvm-project/pull/209282, the user code\ncalls a personality function instead of `Unwind_CallPersonality`. It\nalso changed the signature of Wasm personality function. It had both\ncode generation and library changes, but now our waterfall picks up the\ncodegen changes but our libraries are still from the last release.\n\nThis applies https://github.com/llvm/llvm-project/pull/209282\u0027s library\nside patch here as well. This kind of change is rare enough so I don\u0027t\nthink we necessary should follow LLVM tot for libunwind, unless we\ndecide to do that broadly for all LLVM libraries.\n\nAlso this adds `system/lib/libunwind/include` to libcxx\u0027s `includes`\ndirectory. Turns out so far we have been including Clang\u0027s default\n`unwind.h` and it was OK but now we need to include the correct file.\n\nThis temporarily skips all Wasm EH tests to make the LLVM roll land.\nThey will be reenabled once the roll lands.\n\nFixes #27442."
    },
    {
      "commit": "868216669e262f8f3e4d6b07b38f132216150711",
      "tree": "71117e39c72b6ea987732eb5adf66f6b3c3b0446",
      "parents": [
        "1754f78c55866dac0551f72e05c642fe8f73d09e"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 22:13:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 22:13:19 2026"
      },
      "message": "[test] Parse start hex offset when extracting WAT address in test_dwarf (#27455)\n\nhttps://github.com/WebAssembly/binaryen/pull/8944 changed WAT code\noffset annotations from single addresses `;; code offset: 0x8` to\naddress ranges `;; code offset: 0x8 - 0xa`.\n\nExtracting `.split()[0]` works with both single addresses and address\nranges."
    },
    {
      "commit": "1754f78c55866dac0551f72e05c642fe8f73d09e",
      "tree": "d7884f7cd15a00de73ffbacc5acc123ae49258b6",
      "parents": [
        "c8cfa1e01700dcc97f64479e59b0a20dd4ba2c8a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 21:23:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 21:23:42 2026"
      },
      "message": "Remove all references to webkitAudioContext. NFC (#27444)\n\nWe were only keeping this code around to support older safari versions.\nHowever the oldest safari version we currently support is 14.1, which is\nthe first release to support the modern AudioContext object.\n\nThere is some confusion only about Safari 14.1 was release as part of\niOS 14.5. As far as I can tell Safari 14.1 is the version we should be\ncaring about for AudioContext.\n\nSee https://webkit.org/blog/11648/new-webkit-features-in-safari-14-1/"
    },
    {
      "commit": "c8cfa1e01700dcc97f64479e59b0a20dd4ba2c8a",
      "tree": "6e8a24167e9fb0afe7c5bd125369020ed7275cae",
      "parents": [
        "223995cedbe04a99999db613559757cf4d44cb0a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 20:37:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 20:37:12 2026"
      },
      "message": "Remove errors on ancient EMMAKEN environment variables (#27452)\n\nWhile working on #27401 these seems like errors that were not worth\nreproducing in the native launcher."
    },
    {
      "commit": "223995cedbe04a99999db613559757cf4d44cb0a",
      "tree": "fcf0c4855d5f880a836b3641944b37159a0693db",
      "parents": [
        "00149c0d8e106da9abb6848f15b86b9cb5213b47"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 20:22:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 20:22:01 2026"
      },
      "message": "Remove internal `settings.LTO` in favor of `options.lto` (#27422)\n\nFollowup to #27407\n\nBecause `settings.LTO` was an internal setting not used anywhere in\nJavaScript libraries or runtime code. This change removes `LTO` from\n`src/settings_internal.js` and stores `-flto` / `-fno-lto` state in\n`options.lto` on `EmccOptions` instead.\n\nIn the long run I hope to use internal settings only for values that\nneed to flow out the the JS compiler."
    },
    {
      "commit": "00149c0d8e106da9abb6848f15b86b9cb5213b47",
      "tree": "dcfdf0b9d57a4ca222259c05050fdafa59630fbc",
      "parents": [
        "306c32f1f8f03b55fedf9feab37319172ab75e9c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 19:15:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 19:15:35 2026"
      },
      "message": "Use `cmdline.options` consistently. NFC (#27439)\n\nWe had some parts of the codebase that were using the ambient/global\n`cmdline.options` and other that were passing the options object around\nas as a param.\n\nFor a tool like a compiler it think use the global options options\nobject if pretty reasonable and keeps the code simple."
    },
    {
      "commit": "306c32f1f8f03b55fedf9feab37319172ab75e9c",
      "tree": "0b8a0380da6039e73c0653a36511a64aa472eab0",
      "parents": [
        "eb0aefe6c195e8d9b1713cfffe1d171db90ad332"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 18:57:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 18:57:03 2026"
      },
      "message": "[jslib] Minor cleanups to JS library files. NFC (#27441)\n\nSimilar to #27425 but applied to the whole JS library\n\n- Replace explicit zero checks (`\u003d\u003d\u003d 0`, `!\u003d\u003d 0`) with implicit\ntruthy/falsy checks (`!x`, `x`).\n- Replace `.length \u003d\u003d\u003d 0` checks with `!arr.length`.\n- Simplify null/undefined/zero check in `src/lib/libccall.js` to `if\n(str)`.\n- Use `for (var byte of data)` loop in `src/lib/libbrowser.js`."
    },
    {
      "commit": "eb0aefe6c195e8d9b1713cfffe1d171db90ad332",
      "tree": "919930d449a43f6ca2b9863d58b700f73de0f34e",
      "parents": [
        "f4509e49aa631311614fa75806f3fa38e24bab05"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 30 18:33:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 18:33:59 2026"
      },
      "message": "[html5] Align event_data in callback_args_t to max_align_t (#27450)\n\nAlign `event_data` flexible array member in `callback_args_t` to\n`max_align_t` so that structure members requiring 8-byte alignment\n(e.g., doubles in `EmscriptenWheelEvent`) do not cause misaligned reads\nand trigger alignment faults under `-sSAFE_HEAP\u003d1`.\n\nFixes: #27447"
    },
    {
      "commit": "f4509e49aa631311614fa75806f3fa38e24bab05",
      "tree": "612be12ca81971063ac2c8d90ff3e8afc4e3a5f0",
      "parents": [
        "6e20fdc51867fe2fd5434a008d7f45c045fe209c"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu Jul 30 18:30:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 18:30:23 2026"
      },
      "message": "[EH] Make test_embind_val_coro_catch_cpp_exception use @with_all_eh_sjlj (#27446)\n\n`@with_all_eh_sjlj` also handles skipping for wasm2js."
    },
    {
      "commit": "6e20fdc51867fe2fd5434a008d7f45c045fe209c",
      "tree": "ffa839fb714f7d2067d8546567cae1bf744f9a2f",
      "parents": [
        "c407b75fcf8e832a6c58bc7af181247efc10c8eb"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Jul 30 16:56:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 16:56:10 2026"
      },
      "message": "Update emsdk version from 61d205aa to ded6d7cb (#27451)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 61d205aa \u003d\u003e ded6d7cb\n\nThe following revisions were included in this update:\n\n```\n- ded6d7cb Roll emscripten from 38e35ebf0263 to c407b75fcf8e (1 revision)\n- b95ef602 Roll emscripten from 2768c9fb3c5f to 38e35ebf0263 (2 revisions)\n- 7842cd11 Roll binaryen from a57023617dbc to bbfbb2531cdf (1 revision)\n- 7f930f6b Roll emscripten from 370104ffd08e to 2768c9fb3c5f (1 revision)\n- 24021379 Roll emscripten from c5e54ea789da to 370104ffd08e (1 revision)\n- 2d7493b1 Roll v8 from e3b65b3fed9f to b80a7539b736 (31 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/61d205aa..ded6d7cb\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c407b75fcf8e832a6c58bc7af181247efc10c8eb",
      "tree": "c6eea6c4fd47467207dd474355e87ffc74b3922c",
      "parents": [
        "38e35ebf02631c04d23b0998cd1d90894f1291fd"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Thu Jul 30 00:35:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 30 00:35:31 2026"
      },
      "message": "Remove a stray line from ChangeLog (#27443)\n\nI should have deleted this in #27428."
    },
    {
      "commit": "38e35ebf02631c04d23b0998cd1d90894f1291fd",
      "tree": "7625e324c27d7902fc23908856051c0e62962df0",
      "parents": [
        "86ea17d9ce848d0c3c712f484103e6f5eaa8aca6"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Wed Jul 29 22:57:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 22:57:29 2026"
      },
      "message": "Update libcxx and libcxxabi from LLVM 21.1.8 to 22.1.8 (#27428)\n\nThis updates libcxx and libcxxabi from 21.1.8 to LLVM 22.1.8:\nhttps://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.8\n\nAdditional changes:\n(More detailed descriptions are in the commit messages)\n\n- Don\u0027t copy llvm-libc files in `update_libcxx.py`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/e7af49c2c40d1f6003da7af19a235370863e0ec9,\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/e81407b806bede00d44d202b8fde2c5552c126c4\nIn `update_libcxx.py`, we don\u0027t copy llvm-libc files that libcxx depend\non anymore, because we copy those files in `update_llvm_libc.py` too. We\njust assume llvm-libc has been updated to the same version before doing\nupdate, and I wrote that in the comments.\n\n- Define `_LIBCPP_ASSERTION_SEMANTIC_DEFAULT` in `__config_site`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/b119c8774ee522e8b9735269a984e9ebf8fb39f0\nhttps://github.com/llvm/llvm-project/pull/167636 forces us to define\n`_LIBCPP_ASSERTION_SEMANTIC_DEFAULT`. This defines it to follow the\nhardening mode.\n\n- Undefine `_LIBCPP_FILESYSTEM_USE_COPY_FILE_RANGE`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/e9f729619a2e19d8e6dc5db4ba2d2ec2e36fef06\nAfter https://github.com/llvm/llvm-project/pull/169405,\n`_LIBCPP_FILESYSTEM_USE_COPY_FILE_RANGE` was defined, which caused\nEmscripten to use `copy_file_range`. This commit adds\n`!defined(__EMSCRIPTEN__)` clause at the end to make\n`_LIBCPP_FILESYSTEM_USE_COPY_FILE_RANGE` undefined for Emscripten, as\nwas before this update.\n\n- Make `__cxa_thread_atexit` available for Emscripten:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/638d0e11aa2a22e3bf9ee8a7d253fb967e884c22\nhttps://github.com/llvm/llvm-project/pull/116261 wrapped\n`__cxa_thread_atexit` with `#if defined(__linux__) ||\ndefined(__Fuchsia__)`, which caused it to be undefined in Emscripten.\nThis adds `defined(__EMSCRIPTEN__)` to make it available again.\n\n- Increase size expectations of `test_malloc_size*`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/commits/c818aa22e6819fba6cbe4c80dff503d7c9cf7848\nThis increase seems to be mainly due to the changes of implementation of\n`std::num_get` in `libcxx/include/__locale_dir/num.h` in\nhttps://github.com/llvm/llvm-project/pull/121795. Note that we had a\nsimilar size increase due to changes in `std::num_put` in\nhttps://github.com/llvm/llvm-project/pull/133572 in LLVM 21 update\n(#26058).\n\n- Create `module.modulemap` from `module.modulemap.in`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/be1f0a7a7dad0b0f413351c3f96959830843d8fe\nlibcxx used to have `module.modulemap`, but since LLVM 21, it was\nchanged to `module.modulemap.in` in\nhttps://github.com/llvm/llvm-project/pull/134699. Rather than we copy\nthis manually in each update, this makes `update_libcxx.py` create\n`module.modulemap` from `module.modulemap.in` automaticaly.\n\n- Copy `default_assertion_handler.in` to `__assertion_handler`:\nhttps://github.com/emscripten-core/emscripten/pull/27428/changes/547432f0f330f78993df4acf0f37a8caab19a462\nSince LLVM 18, https://github.com/llvm/llvm-project/pull/77883 started\nto provide a default assertion handler and a way to override it. We have\nbeen using the default handler ever since. Rather than manually copying\nit in each release, this automates the copying of the file in\n`update_libcxx.py`."
    },
    {
      "commit": "86ea17d9ce848d0c3c712f484103e6f5eaa8aca6",
      "tree": "c10f621e8cd125564bae5fa452c698fdb5d5b3e1",
      "parents": [
        "2768c9fb3c5f7573fb5563d77ca97c25efbec571"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 29 20:43:44 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 20:43:44 2026"
      },
      "message": "[OpenAL] Fix sourceSeek crash on stopped sources (#27426)\n\nFix a crash in `sourceSeek` when called on a stopped source by resetting\n`bufsProcessed \u003d 0` before evaluating buffer durations.\n\nThis replaces #26770. Unlike #26770, which added a top-level check on\n`src.bufQueue[0]`, this change handles zero/dummy buffers and empty\nqueues safely anywhere in `bufQueue` via `for .. of` iteration and\n`audioBuf?.duration ?? 0.0`. It also adds assertions to\n`test_openal_error.c` to verify state correctness after seeking.\n\nSee: #26770"
    },
    {
      "commit": "2768c9fb3c5f7573fb5563d77ca97c25efbec571",
      "tree": "9928e52124ba52b3256d1a8245021f2cd93aea0d",
      "parents": [
        "370104ffd08e7f1919887849508940eb0f418ccd"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 29 20:21:56 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 20:21:56 2026"
      },
      "message": "Refactor src/lib/libopenal.js. NFC (#27425)\n\n- Use `for .. of` in a few more places.\n- Remove code duplication in `setSourceParam(AL_BUFFER)`. The `if`\ncondition here had a lot of the same code on each branch."
    },
    {
      "commit": "370104ffd08e7f1919887849508940eb0f418ccd",
      "tree": "d6bd34689adc0b1f734e3b1577f1bcd66309f8ce",
      "parents": [
        "c5e54ea789dac0f250359facf920642884fbc70b"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Jul 29 16:37:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 16:37:55 2026"
      },
      "message": "Update emsdk version from fab320b1 to 61d205aa (#27440)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: fab320b1 \u003d\u003e 61d205aa\n\nThe following revisions were included in this update:\n\n```\n- 61d205aa Roll emscripten from f11cc0b09f08 to c5e54ea789da (2 revisions)\n- d61d02b2 Roll emscripten from 216a19397c67 to f11cc0b09f08 (3 revisions)\n- 9392476c Roll llvm-project from 583a958f83d8 to b43247627d62 (56 revisions)\n- c4220652 Roll binaryen from 55dff6b2430a to a57023617dbc (1 revision)\n- ae95b921 Roll emscripten from f70cc14e9c95 to 216a19397c67 (2 revisions)\n- f8d77eff Roll llvm-project from abd3b3a1445b to 583a958f83d8 (63 revisions)\n- ab29d00f Roll emscripten from 1db513782be2 to f70cc14e9c95 (1 revision)\n- dbd755b5 Version 6.0.5 RC\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/fab320b1..61d205aa\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c5e54ea789dac0f250359facf920642884fbc70b",
      "tree": "c7d620911fa0e945d32a98b50bbfabca82957196",
      "parents": [
        "1ab29509f3fc419917b61305dcc50019a0a7a5d7"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Wed Jul 29 01:22:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 01:22:38 2026"
      },
      "message": "Update OpenMP from LLVM 1823581ecb to 22.1.8 (#27437)\n\nThis updates (?) OpenMP from 1823581ecb to LLVM 22.1.8:\nhttps://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.8\n\nBecause #27073 added OpenMP from then-LLVM-tot 1823581ecb, this is\neffectively not updating but downgrading to make this in sync with our\nother LLVM libraries.\n\nAll `./test/runner *.test_openmp_max_threads` pass, except for\n`strict.test_openmp_max_threads`, which also fails in the main branch.\n\nAdditional changes:\n\n- Apply the fix from #27289:\nhttps://github.com/emscripten-core/emscripten/pull/27437/commits/8f254a050cf9b03ecba3527bf05d26cc6d599361\n\n- Remove `kmp_invoke_microtask.cpp` from build:\nhttps://github.com/emscripten-core/emscripten/pull/27437/changes/b104d0665e4637251f88b1da4553b11062590b27\nThis file was added in https://github.com/llvm/llvm-project/pull/176151\nand didn\u0027t exist in LLVM 22.1.8 release."
    },
    {
      "commit": "1ab29509f3fc419917b61305dcc50019a0a7a5d7",
      "tree": "2b9c2b067306b172333490cc9ccabcd4bc51648c",
      "parents": [
        "f11cc0b09f08c3b2c1061b8f2ea5e4ceb5312a4c"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Jul 29 00:08:05 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 29 00:08:05 2026"
      },
      "message": "Mark 6.0.5 as released (#27438)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "f11cc0b09f08c3b2c1061b8f2ea5e4ceb5312a4c",
      "tree": "5b02e0f7326933462f1a7fb6115093353da192d7",
      "parents": [
        "784b48fc13588eb89747955fa7b6b259c819cd08"
      ],
      "author": {
        "name": "Thomas Lively",
        "email": "tlively@google.com",
        "time": "Tue Jul 28 22:19:18 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 22:19:18 2026"
      },
      "message": "Experimental shared Wasm GC support (#27427)\n\nAdd -sSHARED_WASMGC. This setting assumes the module will import a\nmutable shared anyref global from \"env\" \"_shared_heap_root\" and\nre-export it as \"_shared_heap_root\". On the main thread, a\nWebAssembly.Global containing a null value will be provided as the\nimport. It is expected that the module\u0027s start function will allocate a\nshared object and assign it to the imported global when (and only when)\nthe imported value is null. When the Emscripten pthread runtime\npostMessages the module and other data to new Workers, it will send\nalong the value of the \"_shared_heap_root\" export from the main thread,\nthen wrap this value in a WebAssembly.Global and import it into the\ninstance on the Worker. In this way, all Workers will end up with the\nsame shared object in their \"_shared_heap_root\" globals. This is enough\nto bootstrap arbitrary additional shared state between the Workers.\n\nSince LLVM does not know about most Wasm GC instructions or types, the\nbest way to create a multithreaded Wasm GC program right now is to use\nwasm-merge to combine a runtime Wasm module written in C with a\nhand-written .wat file that uses shared Wasm GC. Add a test\ndemonstrating this workflow."
    },
    {
      "commit": "784b48fc13588eb89747955fa7b6b259c819cd08",
      "tree": "c5c77957cd54778f80b2360ce1fe4eecd95d3e78",
      "parents": [
        "9e8fbbd2db6b8667af6fedbe74fb0a479d652891"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "guybedford@gmail.com",
        "time": "Tue Jul 28 21:47:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 21:47:39 2026"
      },
      "message": "Add AF_UNIX named (pathname) stream socket support under NODERAWSOCKETS (#27424)\n\nNamed unix-domain sockets let POSIX code compiled to wasm participate in\nthe host\u0027s unix-socket IPC as a first-class client or server: connect()\nto a daemon path (docker.sock, postgres/redis) or\nbind()+listen()+accept() a path that native tools connect into. This is\na straight remap of the existing node:net TCP flow from (host, port) to\n(path), reusing the same readiness/poll seam so mio/tokio IPC types work\nunmodified.\n\nThe socket path lives in the host filesystem (node owns it), so it only\nstays coherent with the program\u0027s own file syscalls - bind\u0027s parent\ndirectory, getsockname, unlink - when the program\u0027s FS is the host FS.\nThe family is therefore gated behind NODERAWFS; requesting AF_UNIX\notherwise returns EAFNOSUPPORT rather than half-working against a\ndisjoint MEMFS namespace.\n\n- Address plumbing: add AF_UNIX and sockaddr_un to struct info;\nreadSockaddr/ writeSockaddr encode/decode sun_path (pathname, unnamed,\nand Linux abstract \u0027\\0\u0027 names), and the socket syscalls pass unix paths\nverbatim rather than through the IP DNS layer.\n- createSocket accepts AF_UNIX only under NODERAWFS (datagram -\u003e\nEPROTONOSUPPORT; the IPPROTO_TCP guard is INET-only, unix uses protocol\n0).\n- Backend: synchronous bind reserving the filesystem entry (bind-time\nEADDRINUSE), server.listen on the bound handle, onconnection accept\nqueue, connect-by-path through the shared wireConnection, and\ngetsockname/getpeername reporting the tracked path. Bind prefers\nnet.BoundSocket({ path }) when the node build exposes it (detected via\n\u0027isPipe\u0027 in BoundSocket.prototype), else falls back to the private\npipe_wrap binding - mirroring the existing useBoundSocket() -\u003e tcp_wrap\nseam.\n- Tests (NODERAWSOCKETS + NODERAWFS): self-contained named accept+echo\n(bind/ listen/getsockname/accept/getpeername/connect),\nconnect-to-missing-path -\u003e ENOENT, and rebind -\u003e EADDRINUSE. All also\nbuild and run natively.\n\nsocketpair()/UnixStream::pair() remains unimplemented (ENOSYS) for now."
    },
    {
      "commit": "9e8fbbd2db6b8667af6fedbe74fb0a479d652891",
      "tree": "fd4299e5ca31d6e2f1aad87b57c2ccc0e5c45814",
      "parents": [
        "216a19397c67829113008f002af4dca460047846"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 28 20:44:28 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 20:44:28 2026"
      },
      "message": "[CI] When updating emsdk version, update existing PR. NFC (#27432)\n\nWithout this the CI job would fail if where there is an existing PR:\n\n```\nTo https://github.com/emscripten-core/emscripten\n ! [rejected]            update_emsdk -\u003e update_emsdk (non-fast-forward)\nerror: failed to push some refs to \u0027https://github.com/emscripten-core/emscripten\u0027\n```"
    },
    {
      "commit": "216a19397c67829113008f002af4dca460047846",
      "tree": "f4f7546218685402277863a7a3096e7320518265",
      "parents": [
        "df30adaed9a8e84db2a8565b400a688965ac2a7c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 28 18:54:34 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 18:54:34 2026"
      },
      "message": "Fix benchmark.test_zzz_poppler. NFC (#27434)\n\nThis was broken accidentally in #27415"
    },
    {
      "commit": "df30adaed9a8e84db2a8565b400a688965ac2a7c",
      "tree": "a31ee95f51930a85a34aa275aae5f05f2e7e8ba7",
      "parents": [
        "f70cc14e9c958e2dea4fe25309ece46567e009e6"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Jul 28 17:36:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 17:36:19 2026"
      },
      "message": "Update emsdk version from 5e3cfa38 to fab320b1 (#27433)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 5e3cfa38 \u003d\u003e fab320b1\n\nThe following revisions were included in this update:\n\n```\n- fab320b1 Roll llvm-project from d1ce5f95fb66 to abd3b3a1445b (40 revisions)\n- 709a4147 Roll v8 from 5177b10891e6 to e3b65b3fed9f (28 revisions)\n- 726708e8 Roll binaryen from 0c633e76d977 to 55dff6b2430a (1 revision)\n- 9b6e0c0e Roll llvm-project from 912128312f02 to d1ce5f95fb66 (12 revisions)\n- c8304c7f Roll binaryen from 84529ec807ce to 0c633e76d977 (1 revision)\n- e41f8600 Roll emscripten from fec5d615cc78 to 1db513782be2 (1 revision)\n- 22548d60 Roll llvm-project from 4d14e9641ddf to 912128312f02 (24 revisions)\n- ba062c99 Roll emscripten from d983d28d44d5 to fec5d615cc78 (5 revisions)\n- cf229942 Clobber build.\n- 0089bda0 Roll llvm-project from b071e92ca3d3 to 4d14e9641ddf (189 revisions)\n- 71d43168 Add `CLANG_TIDY_ENABLE_STATIC_ANALYZER\u003dOFF` to llvm build\n- b8779d27 Roll emscripten from 34cf5496e5ed to d983d28d44d5 (1 revision)\n- 2642b599 Roll v8 from 241f63a62a35 to 5177b10891e6 (1 revision)\n- 4cdabfe9 Roll llvm-project from 0bf3638ddfe6 to b071e92ca3d3 (13 revisions)\n- a8182b79 Roll v8 from 23c8862e7805 to 241f63a62a35 (10 revisions)\n- 5022eed9 Roll llvm-project from 43da8ef8d092 to 0bf3638ddfe6 (8 revisions)\n- 2e4e2fb6 Roll llvm-project from 5295852db273 to 43da8ef8d092 (11 revisions)\n- cd820551 Roll llvm-project from 3af6879ba3d6 to 5295852db273 (20 revisions)\n- 4e0f25de Roll binaryen from 51db22337dea to 84529ec807ce (1 revision)\n- 6fb9a129 Roll llvm-project from 0dd2c577357a to 3af6879ba3d6 (60 revisions)\n- fd7e5234 Roll binaryen from ad13059866f2 to 51db22337dea (1 revision)\n- a0122da3 Roll binaryen from 2e035664a74d to ad13059866f2 (1 revision)\n- 14a19321 Roll binaryen from 0a7b1713b9e1 to 2e035664a74d (2 revisions)\n- 32e73603 Roll llvm-project from 9e1be60f660c to 0dd2c577357a (77 revisions)\n- 0ad8dea3 Roll emscripten from ac90a66939a7 to 34cf5496e5ed (1 revision)\n- 085978a8 Roll v8 from 9c1357253e53 to 23c8862e7805 (28 revisions)\n- 7588204b Roll llvm-project from cad3c95a89c4 to 9e1be60f660c (14 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/5e3cfa38..fab320b1\n\nThe following (3) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_wasmfs.json: 179386 \u003d\u003e 179355 [-31 bytes / -0.02%]\ncodesize/test_codesize_files_wasmfs.json: 63585 \u003d\u003e 63554 [-31 bytes / -0.05%]\ncodesize/test_codesize_minimal_pthreads.json: 25967 \u003d\u003e 25967 [+0 bytes / +0.00%]\n\nAverage change: -0.02% (-0.05% - +0.00%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "f70cc14e9c958e2dea4fe25309ece46567e009e6",
      "tree": "c0f699f3bb2664c8e440ace6fe3b5a5a59d991a5",
      "parents": [
        "1db513782be24469589d7cb8a1f1834e9a33f271"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 28 16:28:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 16:28:15 2026"
      },
      "message": "Avoid running wasm-as with `--all-features` (#27431)\n\nThis was fine until recently when the compact imports support was added.\nWith compact imports the presence of the feature now means it will be\nused in almost all cases when the binary is written.\n\nThis is current blocking the roll of emsdk version into emscripten."
    },
    {
      "commit": "1db513782be24469589d7cb8a1f1834e9a33f271",
      "tree": "2a8c7d4ce7c4bfbf266fa790d20eb12f2ae82be0",
      "parents": [
        "fec5d615cc78337a27f5f8b9f6c211440f713d0f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 28 05:00:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 05:00:15 2026"
      },
      "message": "Remove ./tools/scons/ from ruff exclusion list. NFC (#27423)"
    },
    {
      "commit": "fec5d615cc78337a27f5f8b9f6c211440f713d0f",
      "tree": "789c7accb0974e0e4c601b2f08fd687982927a72",
      "parents": [
        "0044857aba130094c684b29e4239ff3bd0fe8cd4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 27 23:11:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 23:11:15 2026"
      },
      "message": "Revert #27397: Use shlex.split for executables in config file (#27421)\n\nThis ended up breaking emsdk in ways that would require more complexity\nto fix. See https://github.com/emscripten-core/emsdk/issues/1752.\n\nThis issue is that if emsdk is installed in the path contains spaces the\nNODE_JS path, for example, then needs to be quoted correctly in the\nconfig file. e.g. `NODE_JS \u003d \u0027\"path with spaces/bin/node\"\u0027.\n\nInstead I think we should just revert this change. It turns out not to\nbe needed for #27401 anyway since the LLVM_ROOT is never a list anyway."
    },
    {
      "commit": "0044857aba130094c684b29e4239ff3bd0fe8cd4",
      "tree": "297bbbe9b2cff43da41f7f6983586abd2c133d06",
      "parents": [
        "7054160605c00898ccff9a5b7d4db7a9588547cc"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 27 19:25:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:25:16 2026"
      },
      "message": "Update ruff to latest version. NFC (#27415)"
    },
    {
      "commit": "7054160605c00898ccff9a5b7d4db7a9588547cc",
      "tree": "f0464f18e06bbac9cbf028615246c70641955cbc",
      "parents": [
        "28030e6604bfccb8ff9740ee9eb4b44476416bb8"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 27 19:20:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:20:12 2026"
      },
      "message": "[openal] Fix AL_SAMPLE_OFFSET and AL_BYTE_OFFSET with buffer 0 (#27420)\n\nWhen `AL_SAMPLE_OFFSET` or `AL_BYTE_OFFSET` is set on a source, the\nlibrary looks up the format of the queued audio data to convert the\noffset into seconds for `sourceSeek`.\n\nPreviously, this iteration used `for (var bufId in src.bufQueue)` and\nchecked `if (bufId)`. Because `for..in` iterates over array index\nstrings (`\"0\"`, `\"1\"`, etc.), `bufId` received `\"0\"` on the first\niteration. In JavaScript, non-empty strings are truthy, so `if (bufId)`\nevaluated `if (\"0\")`, which is always true.\n\nAs a result, the loop never skipped index 0. If `src.bufQueue[0]`\nhappened to be the default placeholder dummy zero buffer (which has\n`frequency: 0`), it would read `frequency \u003d 0` and cause a division by\nzero (`value /\u003d 0`), failing range validation with `AL_INVALID_VALUE`.\n\nThis change replaces both loops in `src/lib/libopenal.js` with `for (var\nbuf of src.bufQueue)` and checks `if (buf.id !\u003d\u003d 0)`. A new test case is\nadded to `test/openal/test_openal_error.c` to verify this behavior.\n\nThe original bug was introduced in fcf8d126a. \n\nIt seems that there was an attempt to fix this in #10466 but I think\nthis code always yield true both before and after this change because\n\"0\" string is truthy."
    },
    {
      "commit": "28030e6604bfccb8ff9740ee9eb4b44476416bb8",
      "tree": "f5be84eccee07cadb0627a6b0cdd85bbf4d42029",
      "parents": [
        "1172b2d2c7f78a46609be150c2abd5e6dfc4e8a2"
      ],
      "author": {
        "name": "Jeremy Nguyen",
        "email": "nguyen.jeremyt@gmail.com",
        "time": "Mon Jul 27 16:13:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:13:59 2026"
      },
      "message": "Fix compiler error when exporting integers while emitting tsd (#27412)\n\n- Replaces concatenation (which can error when snippet is an int) with\nf-string\n- Update test_other.py to include POINTER_SIZE\n\nFixes: #26589"
    },
    {
      "commit": "1172b2d2c7f78a46609be150c2abd5e6dfc4e8a2",
      "tree": "db5a377cb415a5ef955547952a8e1086e9f63363",
      "parents": [
        "d983d28d44d5cdb11537c7cd7527b40c69d0d703"
      ],
      "author": {
        "name": "stephenduong1004",
        "email": "stephenduong@google.com",
        "time": "Mon Jul 27 16:12:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:12:55 2026"
      },
      "message": "Fix missing $_emscriptenWasmWorkerPolicy dependency in wasm workers (#27419)\n\nAdd `$_emscriptenWasmWorkerPolicy` to the\n`_emscripten_create_wasm_worker__deps` array to prevent it from being\nstripped during compilation. This fixes a runtime ReferenceError when\ncreating Wasm workers with Trusted Types enabled."
    },
    {
      "commit": "d983d28d44d5cdb11537c7cd7527b40c69d0d703",
      "tree": "94caf0d2754e7df979bbdace8fe050dba3b6fb35",
      "parents": [
        "34cf5496e5eda1cf07d38b609181a6e4896b0721"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 27 16:09:07 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 16:09:07 2026"
      },
      "message": "Fix warning for link-only flags that contains `\u003d` (e.g. `--closure\u003d1`) (#27410)\n\nI noticed this oversight while implementing the native launcher in\n#27401"
    },
    {
      "commit": "34cf5496e5eda1cf07d38b609181a6e4896b0721",
      "tree": "52b362bc99071bc0847174cb8420c7e38f36fff2",
      "parents": [
        "ac90a66939a79451abb819f0824cc80045303195"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Jul 24 15:31:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 15:31:21 2026"
      },
      "message": "Update emsdk version from 926b6837 to 5e3cfa38 (#27416)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 926b6837 \u003d\u003e 5e3cfa38\n\nThe following revisions were included in this update:\n\n```\n- 5e3cfa38 Roll emscripten from 466e11d651d3 to ac90a66939a7 (1 revision)\n- 29e9fdb8 Roll llvm-project from 59b3a0ce7829 to cad3c95a89c4 (25 revisions)\n- 502be391 Roll binaryen from bbeae83f8455 to 0a7b1713b9e1 (1 revision)\n- 4683811c Roll emscripten from fe5be6afdff4 to 466e11d651d3 (2 revisions)\n- b5d96316 Roll llvm-project from c050c487e9ed to 59b3a0ce7829 (60 revisions)\n- b23272fa Version 6.0.4 RC\n- f8b8326c Roll emscripten from c43384efaa10 to fe5be6afdff4 (6 revisions)\n- 8ace146a Roll binaryen from a54b20b51a61 to bbeae83f8455 (2 revisions)\n- 95a56246 Roll llvm-project from d3fead5912f7 to c050c487e9ed (70 revisions)\n- e8829e8a Roll binaryen from 355863c2168e to a54b20b51a61 (1 revision)\n- 4f5211af Roll v8 from 385b5e2cfdd4 to 9c1357253e53 (37 revisions)\n- 0e4faf3a Roll llvm-project from 074568806993 to d3fead5912f7 (49 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/926b6837..5e3cfa38\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "ac90a66939a79451abb819f0824cc80045303195",
      "tree": "e763a1f05fe68943854fe0491a56e5e3296f3244",
      "parents": [
        "466e11d651d3a0a9e8fb28079789426b3f8fc468"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Jul 24 05:42:08 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 24 05:42:08 2026"
      },
      "message": "Mark 6.0.4 as released (#27413)\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "466e11d651d3a0a9e8fb28079789426b3f8fc468",
      "tree": "287f34a02dc4f0246b9863789e6f66bb86d8cc6d",
      "parents": [
        "3e9a4c06054765d77653cd140f5a1f72a68ba507"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 23 21:12:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 21:12:23 2026"
      },
      "message": "Simplify LTO flag passing in `get_clang_flags` (#27407)\n\nPreviously, `get_clang_flags` in `tools/compile.py` handled LTO and\nnon-LTO modes separately:\n- In non-LTO mode, `building.llvm_backend_args()` was passed to `clang`\nvia `-mllvm`.\n- In LTO mode (`settings.LTO`), `building.llvm_backend_args()` was not\npassed to `clang` (as backend flags are passed to `wasm-ld` at link\ntime). Instead, `-mexception-handling` was explicitly appended when\n`settings.SUPPORT_LONGJMP \u003d\u003d \u0027wasm\u0027` so that `clang` added\n`target-features\u003d+exception-handling` to LLVM IR attributes. Also, if\n`-flto` was not in `user_args`, `-flto\u003d` was appended.\n\nThis change simplifies `get_clang_flags` by unconditionally passing\n`building.llvm_backend_args()` to `clang` via `-mllvm` in both LTO and\nnon-LTO modes. Because `building.llvm_backend_args()` includes\n`-wasm-enable-sjlj` when `settings.SUPPORT_LONGJMP \u003d\u003d \u0027wasm\u0027`, the\n`clang` driver automatically adds `target-features\u003d+exception-handling`\nto LLVM IR, removing the need for the special `-mexception-handling`\ncase. It also removes the fallback `-flto\u003d` injection from\n`get_clang_flags`."
    },
    {
      "commit": "3e9a4c06054765d77653cd140f5a1f72a68ba507",
      "tree": "f896032874420dd73c36b26447f2037d94ab53f9",
      "parents": [
        "fe5be6afdff43ad58860d821fcc8572a23f92d19"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 23 20:13:50 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 20:13:50 2026"
      },
      "message": "Remove redundant llvm args from link_lld. NFC (#27409)\n\nThese flags are already included in `llvm_backend_args` just above.\n\nIt looks like this duplication was added by accident in #23469"
    },
    {
      "commit": "fe5be6afdff43ad58860d821fcc8572a23f92d19",
      "tree": "3da82754863e0495376882346bd70a8db71379bf",
      "parents": [
        "41ec5c7483f340d3dbc46bf273d8465587d0fbef"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 23 18:19:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 18:19:59 2026"
      },
      "message": "Fix config string parsing for windows pathnames (with backslashes) (#27408)\n\nBy using `shlex.shlex(x, posix\u003dTrue)` and clearing `lexer.escape`,\nconfig\nstrings are parsed with POSIX quote handling while allowing Windows\npaths to be specified with backslashes.\n\nSee: #27219"
    },
    {
      "commit": "41ec5c7483f340d3dbc46bf273d8465587d0fbef",
      "tree": "565f74bc664709243cfeb118ee08f372446ce50e",
      "parents": [
        "4e8579a7748fec9cea182828d7993bbc78afa4d9"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Jul 23 15:51:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 23 15:51:25 2026"
      },
      "message": "Update emsdk version from 9308e6ad to 926b6837 (#27406)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 9308e6ad \u003d\u003e 926b6837\n\nThe following revisions were included in this update:\n\n```\n- 926b6837 Roll llvm-project from f2a284b4732b to 074568806993 (31 revisions)\n- 196097cc Roll binaryen from acf302c4ea3b to 355863c2168e (2 revisions)\n- 9e8722df Roll binaryen from 108e796b9b04 to acf302c4ea3b (1 revision)\n- 6b4afe90 Roll llvm-project from 9d2000c24d7b to f2a284b4732b (50 revisions)\n- b53037c6 Roll emscripten from 6d8b2c1707b0 to c43384efaa10 (1 revision)\n- c76518a9 Roll llvm-project from 6f47123da420 to 9d2000c24d7b (47 revisions)\n- 98d1f201 Roll llvm-project from 9925bcf8d945 to 6f47123da420 (38 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/9308e6ad..926b6837\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_mangle.json: 262045 \u003d\u003e 262056 [+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": "4e8579a7748fec9cea182828d7993bbc78afa4d9",
      "tree": "3a23b825f400aa180936476199901d62a9527057",
      "parents": [
        "0b2ed01900aa50e1d27015166cfffc2749e4d6a0"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Wed Jul 22 23:53:41 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 23:53:41 2026"
      },
      "message": "Implement recvmmsg and sendmmsg (#27395)\n\nThis implements `recvmmsg` and `sendmmsg`, which were previously\n`ENOSYS` stubs.\n\nPer review feedback, the implementations now live in musl\u0027s `sendmmsg.c`\nand `recvmmsg.c` rather than the syscall stubs: `sendmmsg.c` already\ncontained the emulation loop (previously gated behind `LONG_MAX \u003e\nINT_MAX`), which is now also enabled under `__EMSCRIPTEN__`, and\n`recvmmsg.c` gains an equivalent `recvmsg` loop supporting\n`MSG_WAITFORONE` (timeouts report `ENOSYS`).\n\nSince nothing references the syscalls anymore, the\n`__syscall_recvmmsg`/`__syscall_sendmmsg` surface is removed entirely:\nthe `UNIMPLEMENTED` stubs, the `SYS_` mappings in\n`arch/emscripten/bits/syscall.h`, the declarations in\n`emscripten/syscalls.h`, and their `native_sigs.py` entries.\n\nThe `recvmsg` msghdr output fixes previously bundled here were split out\ninto #27399.\n\nAdds `sockets.test_noderawsockets_mmsg` batching two datagrams out via\n`sendmmsg` and receiving them back in a single `recvmmsg` call.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "0b2ed01900aa50e1d27015166cfffc2749e4d6a0",
      "tree": "a81f2667d37f264d86fc7f993f5f0a0fc83ba82e",
      "parents": [
        "64b737472503b8b94c586e3b6acd17a97ce3f382"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 22 20:31:11 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 20:31:11 2026"
      },
      "message": "Skip pkg-config tests on windows (#27405)\n\nThe pkgconfiglite package we were using hasn\u0027t been updated in 13 years\nand is causing CI flakiness because its stored on sourceforge.\n\nMove windows users simply won\u0027t have pkg-config available since its\nhighly UNIX-oriented.\n\nSee https://community.chocolatey.org/packages/pkgconfiglite"
    },
    {
      "commit": "64b737472503b8b94c586e3b6acd17a97ce3f382",
      "tree": "db4640e210292412855b97d829941c16e561bfba",
      "parents": [
        "62af666aca7dec3932e8eeca866a85076fc4fc87"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 22 20:12:19 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 20:12:19 2026"
      },
      "message": "Use shlex.split for executables in config file. (#27397)\n\nThis allows simple strings like:\n\n```\nNODE_JS \u003d \u0027/path/to/node --with-arg\u0027\n```\n\nRather than the harder-to-parse:\n\n```\nNODE_JS \u003d [\u0027/path/to/node\u0027, \u0027--with-arg\u0027]\n```\n\nThe idea is that perhaps we can just simplify our existing config format\nrather then converting to completely new one.\n\nSee #27219"
    },
    {
      "commit": "62af666aca7dec3932e8eeca866a85076fc4fc87",
      "tree": "eb0dccabf7a8fa2a087f64b11e662b5060b1cde5",
      "parents": [
        "c43384efaa100bf6c5c9b20b455311ca20e9ecdc"
      ],
      "author": {
        "name": "Kleis Auke Wolthuizen",
        "email": "github@kleisauke.nl",
        "time": "Wed Jul 22 17:48:16 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 17:48:16 2026"
      },
      "message": "Update mimalloc to 3.4.1 (#27380)"
    },
    {
      "commit": "c43384efaa100bf6c5c9b20b455311ca20e9ecdc",
      "tree": "bda9d8e28dcca1f6e61a79750389e4f240e369ae",
      "parents": [
        "6d8b2c1707b0a7c3dab396d064848ad6f4364346"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Jul 22 17:42:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 17:42:52 2026"
      },
      "message": "Update emsdk version from 8adab2e4 to 9308e6ad (#27404)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 8adab2e4 \u003d\u003e 9308e6ad\n\nThe following revisions were included in this update:\n\n```\n- 9308e6ad Roll v8 from 729ce21f82c7 to 385b5e2cfdd4 (32 revisions)\n- fabaa365 Roll llvm-project from 98fe06cb6487 to 9925bcf8d945 (23 revisions)\n- 0c203963 Roll llvm-project from e55d3bca36ff to 98fe06cb6487 (26 revisions)\n- efdcbf1c Roll emscripten from ed36d7ef72fa to 6d8b2c1707b0 (3 revisions)\n- e1ec7842 Roll emscripten from 97bc84a0eec9 to ed36d7ef72fa (1 revision)\n- 1505ab89 Roll llvm-project from 19822360d871 to e55d3bca36ff (51 revisions)\n- 1809330a Roll binaryen from 74ff1eb9cc83 to 108e796b9b04 (2 revisions)\n- 3e7d1ed6 Roll emscripten from c859929c1e10 to 97bc84a0eec9 (2 revisions)\n- a411c8d6 Roll llvm-project from 460778b9d64e to 19822360d871 (55 revisions)\n- 0bf77c64 Roll binaryen from e273451a2cda to 74ff1eb9cc83 (1 revision)\n- 591190c0 Roll llvm-project from 13822d0b1808 to 460778b9d64e (45 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/8adab2e4..9308e6ad\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_hello_dylink_all.json: 856420 \u003d\u003e 856416 [-4 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": "6d8b2c1707b0a7c3dab396d064848ad6f4364346",
      "tree": "30615613db7a2109f4f4e4fda619c933dd43c833",
      "parents": [
        "e5e7313863b468c4f143450183acbd547a5cf327"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Wed Jul 22 01:08:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 01:08:04 2026"
      },
      "message": "Fix recvmsg msghdr outputs (#27399)\n\nThis fixes three issues in the `recvmsg` syscall implementation for\nsockets, split out separately from #27395 per review feedback.\n\nThe bugs:\n\n* Datagram data was written at the wrong offsets when scattered across\nmultiple iovecs — `HEAPU8.set(buf, iovbase + bytesRead)` skipped ahead\nby the bytes already read into previous iovecs, corrupting all iovecs\nafter the first.\n* `msg_namelen` was not updated to reflect the actual source address\nsize.\n* `msg_controllen` and `msg_flags` were left untouched rather than\nzeroed, leaving callers reading uninitialized values as control data /\nflags.\n\nAdds `sockets.test_noderawsockets_udp_recvmsg` covering a datagram\nscattered across two iovecs along with the msghdr output fields,\nverified failing before the fix."
    },
    {
      "commit": "e5e7313863b468c4f143450183acbd547a5cf327",
      "tree": "2186f8db23054a20ef17e4c5aa3d9646367adc20",
      "parents": [
        "dad92aa5e242b7115732df98bf8fc7df691bcd23"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 22 00:18:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 00:18:45 2026"
      },
      "message": "Add design doc for native clang frontend (#27398)\n\nSee #26453"
    },
    {
      "commit": "dad92aa5e242b7115732df98bf8fc7df691bcd23",
      "tree": "c9ac3e0b8c299d7e6dc29bbced37eae946242a2b",
      "parents": [
        "ed36d7ef72fa95e53062a93d3c5024804098b9d9"
      ],
      "author": {
        "name": "Brendan Dahl",
        "email": "brendan.dahl@gmail.com",
        "time": "Wed Jul 22 00:08:49 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 22 00:08:49 2026"
      },
      "message": "Include heap views only when needed (#27269)\n\nPreviously, all standard heap views (HEAP8 through HEAPF64) were\nalways included in the JS bundle and initialized, even when unused.\nClosure Compiler could not eliminate the `new TypedArray(a)`\nexpressions because in JavaScript and Closure Compiler\u0027s standard\nexterns, TypedArray constructors are not considered pure\n(side-effect-free).\n\nRemove heap view symbols from default library inclusions. Only\ninclude and initialize heap views that are required by runtime\nfeatures, exported, or referenced in user code and snippets."
    },
    {
      "commit": "ed36d7ef72fa95e53062a93d3c5024804098b9d9",
      "tree": "3dc8e030c43ff3999a2cca90dcdcbd056c7dcba2",
      "parents": [
        "97bc84a0eec97ef964a9cb56d8d674be93755287"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Jul 21 23:01:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 23:01:04 2026"
      },
      "message": "Automatic rebaseline of codesize expectations. NFC (#27400)\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: 856323 \u003d\u003e 856386 [+63 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": "97bc84a0eec97ef964a9cb56d8d674be93755287",
      "tree": "523209ff22f302f0603c8828c99bd3e988021396",
      "parents": [
        "46ca7ed51930921e14f88c0460a47586c704fb69"
      ],
      "author": {
        "name": "HCL-JasonR",
        "email": "jason.riendeau@hcl-software.com",
        "time": "Tue Jul 21 16:45:27 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 16:45:27 2026"
      },
      "message": "Backport fix for musl\u0027s qsort (CVE-2026-40200) (#27029)\n\nThis is a backport of the patch upstream in musl.\n\nSource: https://www.openwall.com/lists/musl/2026/04/10/3/1 (linked at\nhttps://musl.libc.org/ )"
    },
    {
      "commit": "46ca7ed51930921e14f88c0460a47586c704fb69",
      "tree": "5e582906626687cc148fe314993e07776c0941e9",
      "parents": [
        "c859929c1e1030256e054a1404047787b0adb518"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Jul 21 15:35:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 15:35:30 2026"
      },
      "message": "Update emsdk version from fc776de7 to 8adab2e4 (#27393)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: fc776de7 \u003d\u003e 8adab2e4\n\nThe following revisions were included in this update:\n\n```\n- 8adab2e4 Roll llvm-project from d6790a7fa57c to 13822d0b1808 (21 revisions)\n- 59a29cbc Roll v8 from b51643fca971 to 729ce21f82c7 (34 revisions)\n- 36e8b7e7 Roll llvm-project from f36452f40e84 to d6790a7fa57c (31 revisions)\n- 02322416 Roll emscripten from 597849e00519 to c859929c1e10 (2 revisions)\n- e477b322 Simplify sample emscripten config\n- c26ddd1d Roll emscripten from cdb111e65837 to 597849e00519 (3 revisions)\n- fa04df96 Roll llvm-project from 6f744fb04cf1 to f36452f40e84 (64 revisions)\n- 88a64ba7 Roll emscripten from fbb73a825aed to cdb111e65837 (1 revision)\n- 8ef65681 Roll binaryen from 04bed6a0f86d to e273451a2cda (1 revision)\n- 6441d5ec Roll emscripten from be4262aa1d44 to fbb73a825aed (2 revisions)\n- 3965d260 Roll binaryen from 9563498db902 to 04bed6a0f86d (1 revision)\n- aec4f104 Roll llvm-project from ded79d9ddea4 to 6f744fb04cf1 (61 revisions)\n- d6c7b202 Roll emscripten from 487a3725b6f1 to be4262aa1d44 (1 revision)\n- fc6df4b6 Roll binaryen from acfdce94eae7 to 9563498db902 (1 revision)\n- 7dca3940 Roll llvm-project from 8a119310dae2 to ded79d9ddea4 (28 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/fc776de7..8adab2e4\n\nThe following (1) test expectation files were updated by\nrunning the tests with `--rebaseline`:\n\n```\ncodesize/test_codesize_cxx_mangle.json: 262251 \u003d\u003e 262144 [-107 bytes / -0.04%]\n\nAverage change: -0.04% (-0.04% - -0.04%)\n```\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "c859929c1e1030256e054a1404047787b0adb518",
      "tree": "64043652c3ce0ea7157add4b287113c012fc3746",
      "parents": [
        "c8c8b8ae27ef360e9a5c86169df9d366f2373399"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Tue Jul 21 01:27:15 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 01:27:15 2026"
      },
      "message": "Fix synchronously proxied async JS functions under ASYNCIFY (#27375)\n\nThis fixes the crash from #27291 where calling `poll()` from a pthread\nunder ASYNCIFY aborts with `import _emscripten_receive_on_main_thread_js\nwas not in ASYNCIFY_IMPORTS, but changed the state`.\n\nFunctions marked both `__proxy: \u0027sync\u0027` and `__async` (e.g.\n`__syscall_poll`) are dispatched from pthreads to the main thread using\nPROXY_SYNC_ASYNC (#26000): `_emscripten_receive_on_main_thread_js`\nexpects the library function to return a Promise, and wakes the calling\nthread when it resolves. Under ASYNCIFY, however, the jsifier also wraps\nthese functions in `Asyncify.handleAsync`, so the proxied dispatch on\nthe main thread would start an asyncify unwind of the main thread\u0027s\nproxy-queue frame instead of returning the Promise. With assertions this\nhits the ASYNCIFY_IMPORTS abort; adding the import to ASYNCIFY_IMPORTS\nas the message suggests then fails with `TypeError: rtn.then is not a\nfunction`, since the wrapper returns the asyncify sleep sentinel (0)\nrather than the Promise.\n\nThe fix is for `Asyncify.handleAsync` to return the raw Promise when\nexecuting on behalf of a proxied caller\n(`PThread.currentProxiedOperationCallerThread` is set), satisfying the\nPROXY_SYNC_ASYNC contract.\n\nBehavior for the #27291 repro (blocking `poll()` on a pthread),\nbefore/after this change:\n\n* `-pthread -sPROXY_TO_PTHREAD -sASYNCIFY`: crashed before, works now\n(new test)\n* `-pthread -sPROXY_TO_PTHREAD`: unaffected, worked before and after\n* `-pthread -sASYNCIFY` (the issue as filed): no longer crashes, but\nstill hangs: the PROXY_SYNC_ASYNC completion requires the main thread\nevent loop (the limitation noted in #26000) while the main thread is\nblocked in `pthread_join`. Plain `-pthread` hangs the same way both\nbefore and after this change. Making that configuration either work or\nfail loudly seems worth a separate discussion.\n\nTest coverage: `core.test_poll_blocking_asyncify_pthread` runs the\nexisting test_poll_blocking.c under `-sPROXY_TO_PTHREAD -sASYNCIFY`,\nwhich aborted before this change.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "c8c8b8ae27ef360e9a5c86169df9d366f2373399",
      "tree": "928b612b97f69e873991df74d6efc81310d751d1",
      "parents": [
        "597849e0051942f629c91cc4f932230ef66784a3"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 23:47:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 23:47:30 2026"
      },
      "message": "[sync_deps.py] Error out if target directory is not clean (#27391)"
    },
    {
      "commit": "597849e0051942f629c91cc4f932230ef66784a3",
      "tree": "ec6a4e45f98a80e4e41098b44933f903d903f570",
      "parents": [
        "1c6fa69b93dce22a5ce72249d434ae0dcac5cb5f"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 23:25:57 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 23:25:57 2026"
      },
      "message": "Allow environment variables in config strings. NFC (#27215)\n\nThis allows us to avoid doing things like `os.path.expanduser` and\n`os.path.expandvars` inside the config files themselves.\n\nThis should help pave the way for simplify the config format and one\nday perhaps making them plain text rather than python scripts.\n\nSee #27219"
    },
    {
      "commit": "1c6fa69b93dce22a5ce72249d434ae0dcac5cb5f",
      "tree": "f6994b6192c7eb49f662653f0951cae2ffbe615f",
      "parents": [
        "e9a6e86c2c1bbeaa13eba8fc6f4cd146861a8e90"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 22:14:31 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 22:14:31 2026"
      },
      "message": "Build arm64 version of pylauncher.exe (#27360)\n\nThe executable comes it at just 6144 bytes."
    },
    {
      "commit": "e9a6e86c2c1bbeaa13eba8fc6f4cd146861a8e90",
      "tree": "83424edb0a87f4091979eec17cfb918948d0c835",
      "parents": [
        "cdb111e65837dd0fb18cb2c7ba1dd55f04a01902"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 21:59:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 21:59:45 2026"
      },
      "message": "Second attempt at fixing SkiaPerfBenchmarker (#27389)\n\nIt seems that #27370 did not actually work but I wasn\u0027t patient enough\nto wait for the CI to run."
    },
    {
      "commit": "cdb111e65837dd0fb18cb2c7ba1dd55f04a01902",
      "tree": "bbf4b7771eded0cbe532731364261582ac0a5b01",
      "parents": [
        "fbb73a825aed0cfae7e4498f6c41f3e1b11a2e76"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 20:35:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 20:35:04 2026"
      },
      "message": "[test] Remove duplicate emmake declaration. NFC (#27388)\n\nSplit out from #27215"
    },
    {
      "commit": "fbb73a825aed0cfae7e4498f6c41f3e1b11a2e76",
      "tree": "f55f39a07656b9b93c8882fac1fbe72452e3f235",
      "parents": [
        "7b8fef29363e63a372db41513173f29affc6f178"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Mon Jul 20 17:26:10 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 17:26:10 2026"
      },
      "message": "Update emsdk version from 4bfdde80 to fc776de7 (#27385)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 4bfdde80 \u003d\u003e fc776de7\n\nThe following revisions were included in this update:\n\n```\n- fc776de7 Roll emscripten from 2e023432d3a1 to 487a3725b6f1 (2 revisions)\n- 3bd25e67 Roll llvm-project from 598f15297528 to 8a119310dae2 (6 revisions)\n- 7bd228ce Roll emscripten from c9cdff6c4179 to 2e023432d3a1 (1 revision)\n- cd3c9f6e Roll v8 from 0747938f5c0d to b51643fca971 (1 revision)\n- d5ca679f Roll emscripten from cf1becd9a80b to c9cdff6c4179 (1 revision)\n- b19002b8 Roll llvm-project from 32819927e0c0 to 598f15297528 (4 revisions)\n- ad22ce30 Roll llvm-project from cd9963782109 to 32819927e0c0 (9 revisions)\n- 26ece008 Roll emscripten from 91f02346bdc3 to cf1becd9a80b (1 revision)\n- f66a17b7 Roll llvm-project from ee62806354aa to cd9963782109 (6 revisions)\n- b0233f1b Roll llvm-project from 81ed4d01aa58 to ee62806354aa (6 revisions)\n- 0cefe6fc Roll llvm-project from d89537dd93f6 to 81ed4d01aa58 (9 revisions)\n- d8b6753e Roll v8 from 40466fbf711d to 0747938f5c0d (1 revision)\n- dd3324a7 Roll llvm-project from be68a8829d6d to d89537dd93f6 (9 revisions)\n- 3cb92574 Roll llvm-project from 8c2d7cc3a998 to be68a8829d6d (15 revisions)\n- 9d013471 Roll llvm-project from 6a33b69d8bae to 8c2d7cc3a998 (5 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/4bfdde80..fc776de7\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "7b8fef29363e63a372db41513173f29affc6f178",
      "tree": "bfc5dc9d4cfa19b07ed9acd29628884e8383f4bf",
      "parents": [
        "be4262aa1d449f6073011142f0ae72bb3f1ffa14"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 17:00:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 17:00:42 2026"
      },
      "message": "Fix SkiaPerfBenchmarker (#27370)\n\nI broke this in #27350 but we didn\u0027t have any test coverage."
    },
    {
      "commit": "be4262aa1d449f6073011142f0ae72bb3f1ffa14",
      "tree": "c8f1eea067db286653e3e1f30b0d246b58ddb0c6",
      "parents": [
        "487a3725b6f1fa67541074f014df8e80117fb874"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 14:16:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 14:16:33 2026"
      },
      "message": "[config] Remove support for legacy environment variables (#27381)\n\nRemove support for legacy environment variables (`LLVM`, `BINARYEN`,\n`NODE`, `LLVM_ADD_VERSION`, and `CLANG_ADD_VERSION`) in\n`tools/config.py`.\n\nThese have been generating warnings for over 5 years now (See #13922) to\naid in transitioning to the modern `EM_*` prefixed variables\n(`EM_LLVM_ROOT`, `EM_BINARYEN_ROOT`, `EM_NODE_JS`, etc.)."
    },
    {
      "commit": "487a3725b6f1fa67541074f014df8e80117fb874",
      "tree": "46d86b5ca49b7008f1bcb75244b01ba306d7543f",
      "parents": [
        "3bb2b496e323774ee94a7143f934eb844f8ab347"
      ],
      "author": {
        "name": "Heejin Ahn",
        "email": "aheejin@gmail.com",
        "time": "Mon Jul 20 06:44:25 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 06:44:25 2026"
      },
      "message": "Update llvm-libc from LLVM 21.1.8 to 22.1.8 (#27374)\n\nThis updates llvm-libc from 2l.1.8 to LLVM 22.1.8:\nhttps://github.com/llvm/llvm-project/releases/tag/llvmorg-22.1.8\n\nAdditional changes:\n- Exclude more files using `mbstate_t`:\nhttps://github.com/emscripten-core/emscripten/pull/27374/changes/76f80f4585efcc19991c76cf9d6493da74491e2b\nWe are already excluding some files because the overlay mode doesn\u0027t\nsupport `mbstate_t`. There are new files using this and also some file\nhave moved to `src/stdlib`. This adds those files to the excludes list.\n\n- Exclude more files using `locale_t`:\nhttps://github.com/emscripten-core/emscripten/pull/27374/changes/90f338bf7472f14562f9d86b25c0834431cecbff\nWe are already excluding some file patterns using `locale_t` in\n`update_llvm_libc.py`. This adds more new files to it.\n\n- Add `llvmlibc` test mode to `runner.py`:\nhttps://github.com/emscripten-core/emscripten/pull/27374/changes/58736a9b5ed7da22cfe24f939dd8fa814e2356c5\nWe have `llvmlibc` test mode in `test_core.py` but not in `runner.py`.\nAdds this to `misc_test_modes`.\n\nAll tests pass with\n```console\n./test/runner llvmlibc\n```"
    },
    {
      "commit": "3bb2b496e323774ee94a7143f934eb844f8ab347",
      "tree": "cd53ef17a9f786e86c1e4436991e1a60ec4c8f5b",
      "parents": [
        "2e023432d3a118559c7dc136d71d1237d201cbdd"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 05:27:02 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 05:27:02 2026"
      },
      "message": "Apply ruff checks to files under `system/lib`. NFC (#27384)\n\nRemove `system/lib` exclusions from `pyproject.toml` and fix all lint\nwarnings in `system/lib/*.py`.\n\nInstead of adding `encoding\u003d\u0027utf-8\u0027` to individual `open()` calls, use\n`read_file()` and `write_file()` from `tools/utils.py`."
    },
    {
      "commit": "2e023432d3a118559c7dc136d71d1237d201cbdd",
      "tree": "1dead85be3149c65c798232170b3491765320099",
      "parents": [
        "c9cdff6c41794e4d206d9945515af201e0ed23fd"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Mon Jul 20 04:52:35 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 04:52:35 2026"
      },
      "message": "Fix update_openmp.py, openmp README. NFC (#27383)\n\nThe version of openmp that we imported was based on LLVM commit\n1823581ecb rather than an emscripten-libs branch.\n\nThis change updates the update_openmp.py script, and I verified that\nrunning it against 1823581ecb was a no-op aside from the one-line\ndownstream patch I made in #27289."
    },
    {
      "commit": "c9cdff6c41794e4d206d9945515af201e0ed23fd",
      "tree": "1897bbeef42e4452ecdd4c7590f01086ff4b966f",
      "parents": [
        "cf1becd9a80b88cfa23ca820eed4a7de51a66507"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Sun Jul 19 22:44:26 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 22:44:26 2026"
      },
      "message": "Remove legacy library symbols: $ALLOC_NORMAL, $ALLOC_STACK, $allocate (#27378)\n\nRemove `$ALLOC_NORMAL`, `$ALLOC_STACK`, and `$allocate` from\n`liblegacy.js` and `extraLibraryFuncs` in `libcore.js`.\n\nThese symbols were moved to `library_legacy.js` when the file was first\ncreated in July 2022 (#17390). They have produced `-Wdeprecated`\nwarnings on usage since February 2024 (#21357), over 2 years ago, giving\nexternal users plenty time to transition.\n\nThe `test_legacy_exported_runtime_numbers` test in `test_core.py` is\nalso removed since it specifically tested `$ALLOC_STACK`. The error\nmessages checked by that test are covered elsewhere in `test_other.py`:\n- \"was not exported\" is covered by `test_warn_module_out_err` and\n  `test_exported_runtime_methods_from_js_library`.\n- \"is a library symbol and not included by default\" is covered by\n  `test_removed_runtime_function` and `test_legacy_runtime`."
    },
    {
      "commit": "cf1becd9a80b88cfa23ca820eed4a7de51a66507",
      "tree": "f8af0d9047f74312436d85579aa6bc6c6cf6a842",
      "parents": [
        "91f02346bdc3383f1de4a764275674d652c6e28b"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Sun Jul 19 17:31:42 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 17:31:42 2026"
      },
      "message": "Update emsdk version from c09b2d2f to 4bfdde80 (#27379)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: c09b2d2f \u003d\u003e 4bfdde80\n\nThe following revisions were included in this update:\n\n```\n- 4bfdde80 Roll llvm-project from d00710093a3d to 6a33b69d8bae (12 revisions)\n- bb9d518c Roll emscripten from 3322f0a3634b to 91f02346bdc3 (2 revisions)\n- 8a8c1a18 Roll llvm-project from 93b124030930 to d00710093a3d (44 revisions)\n- 39761686 Roll binaryen from 74c39b9bc3e5 to acfdce94eae7 (5 revisions)\n- 72ac8e6f Roll emscripten from 7143cc128520 to 3322f0a3634b (2 revisions)\n- b79a6833 Roll emscripten from 3f62453168ec to 7143cc128520 (1 revision)\n- 3a755d77 Roll llvm-project from 6cafa889cd39 to 93b124030930 (55 revisions)\n- fd8b317f Roll v8 from 80bcd758a7c3 to 40466fbf711d (29 revisions)\n- 4d6ee34d Roll emscripten from 0b10e353c5c2 to 3f62453168ec (1 revision)\n- 3feb1900 Roll llvm-project from 3c6b4870425e to 6cafa889cd39 (32 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/c09b2d2f..4bfdde80\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "91f02346bdc3383f1de4a764275674d652c6e28b",
      "tree": "4f736cfced8980a3189ee43646fcd98745b5fedc",
      "parents": [
        "dcfb34325c8ec8db74398a938f1392b4f26020a1"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Fri Jul 17 23:22:04 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 23:22:04 2026"
      },
      "message": "NODERAWSOCKETS: socket fstat and SO_TYPE/SO_LINGER/TCP_MAXSEG options (#27306)\n\nFills in some missing socket metadata and options for the node:net\n(`-sNODERAWSOCKETS`) backend, so more standard socket code behaves as it\nwould on Linux.\n\n* `fstat` on a socket now reports `S_IFSOCK` (previously it fell through\nto a generic node), via a SOCKFS `stream_ops.getattr` that plugs into\nthe `FS.fstat` dispatch already present on `main`.\n* `getsockopt`:\n  * `SO_TYPE` reports the type the socket was created with.\n  * `SO_LINGER` round-trips a `struct linger`.\n* `TCP_MAXSEG` reports a default MSS. Node exposes no real MSS, so this\nmirrors Linux: the RFC 879 default (536) before the connection is\nestablished, and the (large) loopback-negotiated value once connected.\n* `setsockopt SO_LINGER` is now honored on close: a zero timeout does an\nabortive RST close (`resetAndDestroy`), a positive timeout ends\ngracefully and forces the connection down once the interval elapses, and\notherwise the connection is destroyed as before.\n\nAdds `test/sockets/test_socket_options.c` (registered as\n`test_noderawsockets_socket_options`) covering socket `fstat`,\n`SO_TYPE`, `SO_LINGER` round-trip, and the pre-connect `TCP_MAXSEG`\ndefault."
    },
    {
      "commit": "dcfb34325c8ec8db74398a938f1392b4f26020a1",
      "tree": "54a86f74dd247a894235dbecd25462004ee71e92",
      "parents": [
        "3322f0a3634bc299638f44fa20a24077a5e34f1a"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Fri Jul 17 23:17:30 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 23:17:30 2026"
      },
      "message": "Simplify NODERAWSOCKETS test output to \u0027done\u0027. NFC (#27373)"
    },
    {
      "commit": "3322f0a3634bc299638f44fa20a24077a5e34f1a",
      "tree": "18c2e3199ca98121e06fdf4c98c105e53e162e80",
      "parents": [
        "44d9f226b0b39aefedebf05cdc64196c0b8407bf"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 17 20:24:13 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 20:24:13 2026"
      },
      "message": "Mark SOCKET_WEBRTC as deprecated (#27371)\n\nSee #27366\n\nIf we don\u0027t get any feedback after a few releases we can followup with #27367."
    },
    {
      "commit": "44d9f226b0b39aefedebf05cdc64196c0b8407bf",
      "tree": "6639de84f1c16c1844e53f2436a64c2a3f213571",
      "parents": [
        "7143cc12852046b9b84383402c7f0024a6d58e5a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 17 19:53:29 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 19:53:29 2026"
      },
      "message": "Update Emscripten Toolchain Requirements docs (#27369)\n\nLLVM requires VS2019 these days:\nhttps://llvm.org/docs/GettingStartedVS.html"
    },
    {
      "commit": "7143cc12852046b9b84383402c7f0024a6d58e5a",
      "tree": "5fa4cfafa5178ad5fd348cdd16be345b3a3c912d",
      "parents": [
        "3f62453168ec29b3008f6f7802c45a73b9ebd590"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Fri Jul 17 18:02:47 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 18:02:47 2026"
      },
      "message": "Add third_party/README.md. NFC (#27365)"
    },
    {
      "commit": "3f62453168ec29b3008f6f7802c45a73b9ebd590",
      "tree": "f165b145e9baeafe43b63c112cc907c2b6005a32",
      "parents": [
        "0b10e353c5c2c3443d2e468cd70038f6094c344e"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Fri Jul 17 15:58:01 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 17 15:58:01 2026"
      },
      "message": "Update emsdk version from ca2b1316 to c09b2d2f (#27368)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: ca2b1316 \u003d\u003e c09b2d2f\n\nThe following revisions were included in this update:\n\n```\n- c09b2d2f Roll llvm-project from 398f2117379f to 3c6b4870425e (15 revisions)\n- b4865982 Roll llvm-project from 85cc99660cf0 to 398f2117379f (43 revisions)\n- e77575fd Roll emscripten from f062699d8063 to 0b10e353c5c2 (2 revisions)\n- 3fc8949f Roll llvm-project from 19595357e32b to 85cc99660cf0 (59 revisions)\n- 7789abeb Roll emscripten from 3f023523f14b to f062699d8063 (1 revision)\n- 17d03af5 Roll emscripten from 7aa3cc4673ff to 3f023523f14b (1 revision)\n- 0aac93e1 Roll v8 from 41abdf1244e1 to 80bcd758a7c3 (39 revisions)\n- b238b966 Roll llvm-project from d94df008e715 to 19595357e32b (30 revisions)\n- 5dda5656 Roll llvm-project from 6705f3d3d2e6 to d94df008e715 (28 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/ca2b1316..c09b2d2f\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "0b10e353c5c2c3443d2e468cd70038f6094c344e",
      "tree": "c10bcecd68f57fee2d412059e288501226f14014",
      "parents": [
        "e463a5dc180f8612b9f1ba2e3a274bea81114bd1"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 16 21:55:39 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 21:55:39 2026"
      },
      "message": "[docs] Update deprecated / incorrect W3C spec URLs (#27262)\n\n- Replace incorrect pointerevents mouse event URLs introduced in #27192\nwith W3C UI Events specification URLs.\n- Update all remaining deprecated dvcs.w3.org (DOM3-Events, fullscreen,\nscreen-orientation) and dev.w3.org URLs to their modern W3C and WHATWG\nspecifications across html5.h.rst, libsdl.js, and browser tests."
    },
    {
      "commit": "e463a5dc180f8612b9f1ba2e3a274bea81114bd1",
      "tree": "f68a1d916df6ea9e56ef5fe0727566cc18179fee",
      "parents": [
        "f062699d80637fe67b5c07bbaf2611174877b271"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Thu Jul 16 21:12:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 21:12:40 2026"
      },
      "message": "Teach metadce about WASM_ESM_INTEGRATION (#27218)\n\nThis makes `-sWASM_ESM_INTEGRATION` work at `-O2` and above. Previously\nsuch builds failed in the JS optimizer\u0027s metadce (dead code elimination)\npass with:\n\n```\nAssertionError: could not find the assignment to \"wasmImports\".\n```\n\nThe reason is that metadce reconstructs the wasm⇄JS def/use graph by\npattern-matching the idioms a normal build emits — the `wasmImports`\nobject literal and `wasmExports[\u0027x\u0027]` member uses. Under ESM integration\nthose don\u0027t exist: the boundary is expressed with native ES module\nsyntax instead, which is exactly the simpler, tooling-visible def/use\ngraph this mode was designed to produce:\n\n```js\n// wasm exports received by the JS:\nimport { main as _main, memory as wasmMemory } from \u0027./a.out.wasm\u0027;\n// JS functions exported to the wasm:\nexport { _fd_write as fd_write };\n```\n\nSo rather than synthesise the old shapes, metadce now reads the real\nmodule bindings directly.\n\n* `emitDCEGraph` recognises `import {..} from \u0027./x.wasm\u0027` as wasm export\nnodes (collapsing aliases such as `memory`/`wasmMemory` onto a single\nnode) and `export { js as wasmName }` as wasm import edges, while\nleaving re-exports (`export { _main }`) to root naturally.\n* `applyDCEGraphRemovals` prunes unused specifiers from those same\n`import`/`export` statements.\n* `applyImportAndExportNameChanges` applies binaryen\u0027s minified names to\nthe wasm-facing side of each specifier, e.g.\n\n  ```js\n  import { malloc as _malloc } from \u0027./a.out.wasm\u0027;\n  export { _fd_write as fd_write };\n  ```\n\n  becomes\n\n  ```js\n  import { c as _malloc } from \u0027./a.out.wasm\u0027;\n  export { _fd_write as d };\n  ```\n\nThe local binding is preserved (an unaliased `memory` becomes `b as\nmemory`, not a broken `b`).\n\nWhen `-sSOURCE_PHASE_IMPORTS` is also enabled, the glue additionally\nemits a source-phase import of the wasm module itself:\n\n```js\nimport source wasmModule from \u0027./a.out.wasm\u0027;\n```\n\nThat specifier is an `ImportDefaultSpecifier` binding the module (not a\nwasm export), so it has no `.imported`. `isImportFromWasm` matched any\nimport whose source ends in `.wasm` and `emitDCEGraph` then threw\n`TypeError: Cannot read properties of undefined (reading \u0027name\u0027)`\nreading `spec.imported.name`. It now gates on `!node.phase` so only\nvalue-phase `.wasm` imports (the export bindings) are treated as export\nedges; source/defer-phase imports are left alone.\n\nTwo supporting changes keep the two module interfaces in sync:\n\n* `building.py` — under ESM integration any export binaryen drops\n(including internal ones like the indirect function table) is also\ndropped from the JS `import`, so the JS never imports something the wasm\nno longer exports.\n* `link.py` — import/export *name* minification stays on for ESM, but\nimport *module name* minification is disabled, since every import is\nrewritten to the single support-module source by `create_esm_wrapper`\nanyway (and minifying `env`→`a` would break that rewrite).\n\nTest coverage:\n\n* New `js_optimizer` fixtures exercising each pass on ESM-shaped input:\n`emitDCEGraph-esm`, `applyDCEGraphRemovals-esm`,\n`applyImportAndExportNameChanges-esm`.\n* New `emitDCEGraph-sourcePhaseImports` fixture covering the combined\n`SOURCE_PHASE_IMPORTS` + `WASM_ESM_INTEGRATION` case that previously\ncrashed.\n* New end-to-end `other.test_metadce_esm_integration` building\n`hello_world.c` with `-O3 -sWASM_ESM_INTEGRATION`, asserting the\ndangling table import is removed and names are minified consistently\n(the run is guarded on Node 25).\n\nResolves #27217.\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "f062699d80637fe67b5c07bbaf2611174877b271",
      "tree": "3a4cf2348662f5e17f415475bf0163de68c7193a",
      "parents": [
        "3f023523f14b03155a8f2fdcf231ee6790761e61"
      ],
      "author": {
        "name": "stephenduong1004",
        "email": "stephenduong@google.com",
        "time": "Thu Jul 16 18:28:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 18:28:53 2026"
      },
      "message": "Support multi-value returns in TS definitions (#27332)\n\n`wasm-bindgen` generates WebAssembly functions with multiple return\nvalues, so we need to remove the assertion that enforces a single return\ntype in tools/emscripten.py. This PR removes the assertion and correctly\nmaps multi-value returns to TypeScript tuples."
    },
    {
      "commit": "3f023523f14b03155a8f2fdcf231ee6790761e61",
      "tree": "9bc351b1f635bd52e46780a245825bd5908f243b",
      "parents": [
        "7aa3cc4673ffe2f23684e041386f04e113b56440"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Thu Jul 16 15:24:55 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 15:24:55 2026"
      },
      "message": "Update emsdk version from 3c1f46b2 to ca2b1316 (#27361)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nExpected Binaryen version updated: 130 \u003d\u003e 131\n\nemsdk version updated: 3c1f46b2 \u003d\u003e ca2b1316\n\nThe following revisions were included in this update:\n\n```\n- ca2b1316 Roll llvm-project from 670841415d3d to 6705f3d3d2e6 (18 revisions)\n- cd05cb75 Roll emscripten from 9cbdf2df663c to 7aa3cc4673ff (1 revision)\n- 0b02a3eb Roll llvm-project from be1b1a77732c to 670841415d3d (43 revisions)\n- ddf1b35f Roll binaryen from 1f903c14babf to 74c39b9bc3e5 (1 revision)\n- e82798db Roll binaryen from 2de84ed25624 to 1f903c14babf (4 revisions)\n- 18d001da Roll llvm-project from a4d12bf0c2ab to be1b1a77732c (87 revisions)\n- 1e465cd0 Roll emscripten from e44858ed1d1b to 9cbdf2df663c (2 revisions)\n- b5156b35 Roll binaryen from 50181d7e7a8d to 2de84ed25624 (1 revision)\n- a0212609 Roll emscripten from 724e288c20a6 to e44858ed1d1b (1 revision)\n- 72fee93f Roll llvm-project from 15776b5cddd4 to a4d12bf0c2ab (63 revisions)\n- 49da8147 Roll v8 from d6cc628ee8e1 to 41abdf1244e1 (26 revisions)\n- 5f57462b Roll llvm-project from 2033c4569af6 to 15776b5cddd4 (26 revisions)\n- 8537f6a4 Roll binaryen from a3f1bc05f4e5 to 50181d7e7a8d (1 revision)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/3c1f46b2..ca2b1316\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "7aa3cc4673ffe2f23684e041386f04e113b56440",
      "tree": "1ed1de77e98342c56c1c949ee1a1b60ab46f76a8",
      "parents": [
        "9cbdf2df663ccb6b8f3ad942dca97b5b3aaf4a97"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Thu Jul 16 01:30:33 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 01:30:33 2026"
      },
      "message": "[docs] Update deprecated specification URLs to https and canonical domains (#27337)\n\nUpdate URLs to https across html5.h.rst, settings_reference.rst,\nsettings.js, libsdl.js, and browser tests.\n\nReplace deprecated draft and repository domains (dvcs.w3.org,\ndev.w3.org, w3c.github.io, whatwg.org/specs/web-apps/current-work, and\nkhronos.org) with their canonical W3C and WHATWG specification URLs\nwithout altering target section anchors or specification names.\n\nSplit out from: #27262"
    },
    {
      "commit": "9cbdf2df663ccb6b8f3ad942dca97b5b3aaf4a97",
      "tree": "9ed1a08d8d6da79440b2e9d80bb598a60eb0e4ae",
      "parents": [
        "f8b30fdf3d63c95876bb9abb865ec6b9aceba01c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 15 16:29:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 16:29:03 2026"
      },
      "message": "Remove mingw build script for pylauncher. NFC (#27357)\n\nThis script was already not working since #27048. Also, IIUC its not\npossible build the same tiny, dependency-free binary with mingw that we\ncan with cl.exe."
    },
    {
      "commit": "f8b30fdf3d63c95876bb9abb865ec6b9aceba01c",
      "tree": "e1553baaed86864406d4a69aa8f214f763774e32",
      "parents": [
        "e44858ed1d1bae7ec759b035375fd0c23d56f405"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 15 16:07:22 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 16:07:22 2026"
      },
      "message": "Bump pip dev dependency: coverage, ruff and mypy. NFC (#27350)"
    },
    {
      "commit": "e44858ed1d1bae7ec759b035375fd0c23d56f405",
      "tree": "12534590935cfe376c30cbe593e4929c734b92a0",
      "parents": [
        "724e288c20a6be40993667d7d6195d6ea66356f7"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Jul 15 15:03:38 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 15:03:38 2026"
      },
      "message": "Update emsdk version from 3baae256 to 3c1f46b2 (#27355)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nemsdk version updated: 3baae256 \u003d\u003e 3c1f46b2\n\nThe following revisions were included in this update:\n\n```\n- 3c1f46b2 Roll emscripten from d50368db1adb to 724e288c20a6 (1 revision)\n- b0c40e2f Roll llvm-project from 5fc69663ad4a to 2033c4569af6 (27 revisions)\n- 4a8e0c6a Roll emscripten from 571371eb9bf8 to d50368db1adb (3 revisions)\n- 5f7116fe Roll emscripten from a325eed9a4f9 to 571371eb9bf8 (4 revisions)\n- 1a9377f6 Roll llvm-project from fdc884f5a5f0 to 5fc69663ad4a (74 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/3baae256..3c1f46b2\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "724e288c20a6be40993667d7d6195d6ea66356f7",
      "tree": "708aa8448ea9650d671cb31d3275e1e232a92a78",
      "parents": [
        "d50368db1adbd6367106701f392e216fc5f0d6a3"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Wed Jul 15 07:06:12 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 07:06:12 2026"
      },
      "message": "Fix string template in rebaseline_tests.py. NFC (#27354)"
    },
    {
      "commit": "d50368db1adbd6367106701f392e216fc5f0d6a3",
      "tree": "6a47b1649b61855078d310aeca3206c5a22ca6bd",
      "parents": [
        "3d621be171cf4ed695f2de3879c2acd11785f627"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Wed Jul 15 00:20:59 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 00:20:59 2026"
      },
      "message": "Update emsdk version from 89f7c6bc to 3baae256 (#27353)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--update-emsdk.\n\nExpected LLVM version updated: 23 \u003d\u003e 24\nExpected Binaryen version updated: 129 \u003d\u003e 130\n\nemsdk version updated: 89f7c6bc \u003d\u003e 3baae256\n\nThe following revisions were included in this update:\n\n```\n- 3baae256 Roll emscripten from 4ef0697d43d7 to a325eed9a4f9 (8 revisions)\n- 3ad26d89 Roll binaryen from c839180673de to a3f1bc05f4e5 (1 revision)\n- 2b26540b Roll llvm-project from a9d295d615a8 to fdc884f5a5f0 (71 revisions)\n- e633d5c4 Roll binaryen from 9cb9f39e4fd8 to c839180673de (1 revision)\n- 0065e91e Roll emscripten from 9bcf516954df to 4ef0697d43d7 (1 revision)\n- 7ad87b39 Roll llvm-project from 44a42e631e5b to a9d295d615a8 (49 revisions)\n- c3675cda Roll binaryen from 99f6fc6315d0 to 9cb9f39e4fd8 (1 revision)\n- 51f29e3d Roll v8 from c02343a118fb to d6cc628ee8e1 (39 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/89f7c6bc..3baae256\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    },
    {
      "commit": "3d621be171cf4ed695f2de3879c2acd11785f627",
      "tree": "555f5e92ee52eecc9c13543acbc19862ed87dc31",
      "parents": [
        "45be81529694a2c1a0d57867c7de10c39479118a"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 23:53:39 2026"
      },
      "committer": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 23:54:33 2026"
      },
      "message": "[CI] Fix branch name update-emsdk.yml\n\nThis should have been included in #27344.\n"
    },
    {
      "commit": "45be81529694a2c1a0d57867c7de10c39479118a",
      "tree": "f167a6d8059f3eb2446968178ecf4b4af28e97f6",
      "parents": [
        "571371eb9bf8255608ca568ef61c29f065ddb641"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 23:42:23 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 23:42:23 2026"
      },
      "message": "Improve `rebaseline_tests.py --update-emsdk` to enable llvm and binaryen version bumps (#27352)\n\nWhen running `tools/maint/rebaseline_tests.py --update-emsdk`, check\nboth the LLVM version and Binaryen version in the currently installed\nSDK (`get_clang_version` and `get_binaryen_version`), and automatically\npatch `EXPECTED_LLVM_VERSION` in `tools/shared.py` and\n`EXPECTED_BINARYEN_VERSION` in `tools/building.py` if they differ.\n\nAlso update `check_binaryen` in `tools/building.py` so it has the same\nbuildbot handling (`BUILDBOT_BUILDNUMBER`) as `check_llvm_version`, only\nallowing `EXPECTED_BINARYEN_VERSION + 1` in CI environments.\n\nWe should probably split up this script since its doing a lot more than\nrebaselining tests at this point, but I\u0027ll leave that for a followup.\n\nSee #27349"
    },
    {
      "commit": "571371eb9bf8255608ca568ef61c29f065ddb641",
      "tree": "e545351c6af9c860fb326edcbd4d6a540f7a3804",
      "parents": [
        "ee5cacb070aa6d299b7e38a7f15b1cdddb590f2c"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 23:34:52 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 23:34:52 2026"
      },
      "message": "Add changelog entry for cleanup of legacy DOM APIs. NFC (#27346)"
    },
    {
      "commit": "ee5cacb070aa6d299b7e38a7f15b1cdddb590f2c",
      "tree": "6ce71ce11d13835cf063080f7eee0bac5401d88e",
      "parents": [
        "35f10b73a349c088b2794594dd604cf37f3b2007"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 22:56:45 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 22:56:45 2026"
      },
      "message": "Remove legacy vendor-prefixed DOM APIs and fallbacks (#27347)\n\nRemove references to `mozRequestFullScreen`, `msRequestFullscreen`,\n`mozCancelFullScreen`, `msExitFullscreen`, `cancelFullScreen`,\n`mozfullscreenchange`, and `MSFullscreenChange` across `libbrowser.js`\nand `libglfw.js`. Convert bracket notation\n(`canvasContainer[\u0027requestFullscreen\u0027]`, `document[\u0027exitFullscreen\u0027]`)\nto standard dot notation.\n\nIn `libhtml5.js`, remove `document.mozFullScreenElement`,\n`document.webkitCurrentFullScreenElement`, and\n`document.msFullscreenElement` from `$getFullscreenElement()`, leaving\n`document.fullscreenElement` and `document.webkitFullscreenElement`\n(guarded by `MIN_SAFARI_VERSION`). Also remove\n`screen.mozLockOrientation`, `screen.webkitLockOrientation`,\n`screen.mozUnlockOrientation`, and `screen.webkitUnlockOrientation`\nfrom `emscripten_lock_orientation` and `emscripten_unlock_orientation`.\n\nIn `libbrowser.js`, `libopenal.js`, and `closure-externs.js`, remove\nobsolete `mozGetUserMedia`, `msGetUserMedia`, and `webkitGetUserMedia`\nfallbacks and extern definitions, and transition `getUserMedia` calls\nfrom the deprecated callback API (`navigator.getUserMedia`) to standard\nPromise-based `navigator.mediaDevices.getUserMedia`.\n\nThese prefixed properties and fallbacks are safe to remove because:\n1. Fullscreen, Screen Orientation, and MediaDevices APIs became\nunprefixed standards across Firefox, Chrome, and Safari years ago\n(e.g. `requestFullscreen` in Firefox 64 / Chrome 71,\n`navigator.mediaDevices.getUserMedia` in Chrome 53 / Firefox 38 / Safari\n11). Emscripten\u0027s minimum supported browser versions\n(`MIN_FIREFOX_VERSION \u003d 79`, `MIN_CHROME_VERSION \u003d 85`) are well beyond\nwhen these unprefixed properties and methods became standard across\nmajor engines.\n2. IE and legacy Edge (`ms` prefix) and Firefox OS (`moz` prefixes) are\nno longer supported.\n3. Safari \u003c 16.4 still requires `webkit` prefixes for Fullscreen, so\n`webkitRequestFullscreen`, `webkitExitFullscreen`,\n`webkitfullscreenchange`, and `webkitFullscreenElement` are retained\nwhere appropriate."
    },
    {
      "commit": "35f10b73a349c088b2794594dd604cf37f3b2007",
      "tree": "2048a7433bbf042c9ce0d16f89b95059222e75f3",
      "parents": [
        "eec3aed6dd6e1ab8f3497fb1bcdbd2a7b83cabe6"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 22:32:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 22:32:58 2026"
      },
      "message": "Remove requestFullScreen assertion. NFC (#27348)\n\nThis assertion is added over 7 years ago: #9861. Seems like its probably\nserved its purpose to help folks transition at this point."
    },
    {
      "commit": "eec3aed6dd6e1ab8f3497fb1bcdbd2a7b83cabe6",
      "tree": "096ca94066c732ec67cc14a489a0a674b1516574",
      "parents": [
        "a325eed9a4f9f0b28b519630cb97c2cdb53bc84c"
      ],
      "author": {
        "name": "Guy Bedford",
        "email": "gbedford@cloudflare.com",
        "time": "Tue Jul 14 20:18:58 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 20:18:58 2026"
      },
      "message": "Report host uid/gid credentials under NODERAWFS (#27319)\n\nReports the real host process credentials for\n`getuid`/`geteuid`/`getgid`/`getegid` under NODERAWFS (via node\u0027s\n`process.get*id()`), rather than the hardcoded `0`.\n\nThese move from weak C stubs into the JS syscall layer, since a weak C\ndefinition otherwise wins over the JS override and the syscall would\nkeep returning `0`. Other backends — and Windows, which has no uid/gid\nconcept — continue to report `0`. The `set*` variants stay `EPERM`: musl\nroutes them all through `__setxid`, which emscripten stubs out because\nit relies on dynamic (numeric) syscall dispatch that the compile-time\nsyscall mapping can\u0027t provide.\n\nTested across MEMFS/NODEFS/NODERAWFS (`test_fs_getuid`).\n\n_Made with AI assistance under my review_"
    },
    {
      "commit": "a325eed9a4f9f0b28b519630cb97c2cdb53bc84c",
      "tree": "e5266cef260cde258271cc1b1736d9e2152ac837",
      "parents": [
        "9619377bb9131b4e028a7917bd8297d9002eac34"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 17:45:43 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 17:45:43 2026"
      },
      "message": "Prefer single quotes for stings in JS library files. NFC (#27322)"
    },
    {
      "commit": "9619377bb9131b4e028a7917bd8297d9002eac34",
      "tree": "cb30f1677aff3cfb87ca5e5035269e4e87ac9f59",
      "parents": [
        "94c12a9a8ba96673a07e6bc412e87b4226d9f178"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 16:45:03 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:45:03 2026"
      },
      "message": "Improve commit message for rebaseline_tests.py emsdk updates. NFC (#27344)\n\n- Include the revision hashes in the commit message\n- Consistently use the \"update\" terminology rather than \"bump\" or\n\"roll\".\n- Use short (8 char) SHAs when referring to git revisions."
    },
    {
      "commit": "94c12a9a8ba96673a07e6bc412e87b4226d9f178",
      "tree": "68419c0d94114ac9bff5894d910dd01ed9b9bd1b",
      "parents": [
        "f01f6956e3cf60a44db13a68d1fa72eef5a9a410"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 16:44:40 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:44:40 2026"
      },
      "message": "Fix location of openmp README.md (#27345)\n\nThe rename of the readme in #27296 raced with #27290."
    },
    {
      "commit": "f01f6956e3cf60a44db13a68d1fa72eef5a9a410",
      "tree": "4c03ebe38b07700dd1217bfd9ac470ac3ddc943c",
      "parents": [
        "141643077de5ab719b143190006834266393deec"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 16:44:24 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:44:24 2026"
      },
      "message": "Remove workarounds for old DOM APIs prior ot event.movementX/Y (#27341)\n\nInline `event.movementX` and `event.movementY` directly into\n`calculateMouseEvent` in `libbrowser.js`, removing the `getMovementX`\nand `getMovementY` helper methods from `LibraryBrowser`.\n\nRemove references to `mozMovementX`, `webkitMovementX`, `mozMovementY`,\nand `webkitMovementY` from `libbrowser.js` and `libsdl.js`. Also update\n`libhtml5.js` and `libsdl.js` to use standard dot notation\n(`e.movementX`, `event.movementX`) instead of bracket notation across\nall mouse event handling.\n\nThese prefixed properties and their workarounds (`if (\u0027mozMovementX\u0027 in\nevent)`) were added between 2012 and 2013 for early implementations of\nthe W3C Pointer Lock API to address Firefox bugs #750111 and #764498.\n\nThis is safe to remove because:\n1. `MouseEvent.movementX` and `MouseEvent.movementY` became standard\nunprefixed properties in Firefox 41 (2015) and Chrome 37 (2014).\n2. Emscripten\u0027s minimum supported browser versions\n(`MIN_FIREFOX_VERSION` and `MIN_CHROME_VERSION`) are well beyond when\nunprefixed `movementX` became universal across all engines.\n3. The vendor-prefixed properties (`mozMovementX`, `webkitMovementX`)\nhave been removed from modern browser engines.\n4. Bugzilla bugs #750111 (`mozMovementX is transient and becomes zero\nlater`) and #764498 (`movementX and movementY have the wrong value for\nmousedown and mouseup`) were both resolved in 2012 (Firefox 15).\n\nSee: https://bugzilla.mozilla.org/show_bug.cgi?id\u003d750111\nSee: https://bugzilla.mozilla.org/show_bug.cgi?id\u003d764498\nSee: https://bugzilla.mozilla.org/show_bug.cgi?id\u003d782777"
    },
    {
      "commit": "141643077de5ab719b143190006834266393deec",
      "tree": "172d8a5bbbb40221daa811de8526cfb9e3e518e0",
      "parents": [
        "5c65e277497108a76d2dd1edc93630fb4cb384a4"
      ],
      "author": {
        "name": "Sam Clegg",
        "email": "sbc@chromium.org",
        "time": "Tue Jul 14 16:32:21 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:32:21 2026"
      },
      "message": "Remove support for old vendor-prefixed screen orientation API (#27339)\n\nSee https://developer.mozilla.org/en-US/docs/Web/API/Screen/orientation"
    },
    {
      "commit": "5c65e277497108a76d2dd1edc93630fb4cb384a4",
      "tree": "f3f0d0c641cf30aa00dc6b56f0dabcec52a4508f",
      "parents": [
        "8d056a6d50254abbe95ac8cbc45b7bdbf2922ce5"
      ],
      "author": {
        "name": "emscripten-bot",
        "email": "179889221+emscripten-bot@users.noreply.github.com",
        "time": "Tue Jul 14 16:23:53 2026"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 14 16:23:53 2026"
      },
      "message": "Update emsdk version used in testing (#27343)\n\nThis is an automatic change generated by tools/maint/rebaseline_tests.py\n--bump-emsdk.\n\nemsdk version updated: 80bb26b7e49f5d1b97ea9536a1cdf6b90843c3e4 \u003d\u003e\n89f7c6bcd976b263992d5f5671a83706ffce237a\n\nThis includes the following revisions:\n\n```\n- 89f7c6bc Roll llvm-project from d8636be51e34 to 44a42e631e5b (37 revisions)\n- 87b5ca58 Roll binaryen from 48858e8db9d8 to 99f6fc6315d0 (2 revisions)\n- 63da09ed Roll llvm-project from 67ebc4b221c3 to d8636be51e34 (37 revisions)\n- 63c6b6ee Roll emscripten from c9c4730c9d61 to 9bcf516954df (1 revision)\n- 21958732 Roll binaryen from 6c1ca53b8932 to 48858e8db9d8 (1 revision)\n- 99c2b13b Roll emscripten from 06e29db0f616 to c9c4730c9d61 (2 revisions)\n- 801e64ef Roll llvm-project from 592953beff73 to 67ebc4b221c3 (65 revisions)\n- ad4807f3 Roll emscripten from 410508e3bb30 to 06e29db0f616 (4 revisions)\n- 6dc43384 Roll binaryen from 1517ea948c09 to 6c1ca53b8932 (1 revision)\n- 1c6d2e35 Roll emscripten from 283e2d130132 to 410508e3bb30 (1 revision)\n- 9074aa51 Version 6.0.3 RC\n- fb8f213e Roll llvm-project from 2de67c330a97 to 592953beff73 (79 revisions)\n- 878597c8 Roll binaryen from 5d050e793d27 to 1517ea948c09 (1 revision)\n- 3cde2891 Roll llvm-project from 461f0b699c8d to 2de67c330a97 (20 revisions)\n```\n\nFull log:\nhttps://chromium.googlesource.com/emscripten-releases/+log/80bb26b7e49f5d1b97ea9536a1cdf6b90843c3e4..89f7c6bcd976b263992d5f5671a83706ffce237a\n\nCo-authored-by: emscripten-bot \u003cemscripten-bot@users.noreply.github.com\u003e"
    }
  ],
  "next": "8d056a6d50254abbe95ac8cbc45b7bdbf2922ce5"
}
