From 6b8617aef50c78557599732dbb8827d20c9e7b72 Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Wed, 9 Sep 2026 18:24:34 +0000 Subject: [PATCH] Bump google-closure-compiler to 20260831.0.0 Update google-closure-compiler dependency to version 20260831.0.0. Remove the WebAssembly.Memory.prototype.toResizableBuffer extern definition, which is now provided natively by Closure Compiler. Update the fixedGetContext return type annotation to RenderingContext to match Closure's updated HTMLCanvasElement getContext extern. Filter out webgpu-externs.js when building with emdawnwebgpu because Closure Compiler now includes native WebGPU externs (w3c_webgpu.js). Rebaseline codesize test expectations for the updated compiler output. --- package-lock.json | 48 +++++++++---------- package.json | 2 +- src/closure-externs/closure-externs.js | 4 -- src/lib/libwebgl.js | 2 +- test/codesize/test_codesize_cxx_ctors1.json | 8 ++-- test/codesize/test_codesize_cxx_ctors2.json | 8 ++-- test/codesize/test_codesize_cxx_except.json | 8 ++-- .../test_codesize_cxx_except_wasm.json | 8 ++-- .../test_codesize_cxx_except_wasm_legacy.json | 8 ++-- test/codesize/test_codesize_cxx_mangle.json | 8 ++-- test/codesize/test_codesize_cxx_noexcept.json | 8 ++-- test/codesize/test_codesize_cxx_wasmfs.json | 4 +- test/codesize/test_codesize_file_preload.json | 8 ++-- test/codesize/test_codesize_hello_O0.json | 4 +- test/codesize/test_codesize_hello_dylink.json | 8 ++-- .../test_codesize_hello_dylink_all.json | 4 +- .../test_codesize_minimal_pthreads.json | 8 ++-- ...t_codesize_minimal_pthreads_memgrowth.json | 8 ++-- ...ntime_code_size_random_printf_wasm2js.json | 2 +- tools/building.py | 10 ++++ 20 files changed, 87 insertions(+), 81 deletions(-) diff --git a/package-lock.json b/package-lock.json index 997c0035e4b02..2e52724947e26 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "dependencies": { "acorn": "^8.18.0", "acorn-import-phases": "^1.0.4", - "google-closure-compiler": "20260726.0.0", + "google-closure-compiler": "20260831.0.0", "html-minifier-terser": "7.2.0" }, "devDependencies": { @@ -2637,13 +2637,13 @@ } }, "node_modules/google-closure-compiler": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20260726.0.0.tgz", - "integrity": "sha512-MkDkGdQOE7mRPHqcvj9hvaHsbcOBu5Y9TSBi/R91Ozx5AiWylwpNSDSlJGnZybCDCX+Q+0jZjRtcb0Xzl8gDaA==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20260831.0.0.tgz", + "integrity": "sha512-MYpFWZ+YYIe2YA1qcHOktfWkYTf50fq61hHUiM8NTrXq+wQSyhVrvuoJ2ZvDEs8mkWsy9HkxorMuYCVVVsxjdQ==", "license": "Apache-2.0", "dependencies": { "chalk": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 <5.6.1 || ^5.6.2 >5.6.1", - "google-closure-compiler-java": "^20260726.0.0", + "google-closure-compiler-java": "^20260831.0.0", "minimist": "^1.0.0", "vinyl": "^3.0.1", "vinyl-sourcemaps-apply": "^0.2.0" @@ -2655,22 +2655,22 @@ "node": ">=18" }, "optionalDependencies": { - "google-closure-compiler-linux": "^20260726.0.0", - "google-closure-compiler-linux-arm64": "^20260726.0.0", - "google-closure-compiler-macos": "^20260726.0.0", - "google-closure-compiler-windows": "^20260726.0.0" + "google-closure-compiler-linux": "^20260831.0.0", + "google-closure-compiler-linux-arm64": "^20260831.0.0", + "google-closure-compiler-macos": "^20260831.0.0", + "google-closure-compiler-windows": "^20260831.0.0" } }, "node_modules/google-closure-compiler-java": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20260726.0.0.tgz", - "integrity": "sha512-2Y681DFP8E/Mrmb3ZxVBoeP8MVLIrIQ72XPU1ot44/VZua/f7oQv2IIg9RsAKWDX8a/uYzS3JHkoFIudHhE+tg==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20260831.0.0.tgz", + "integrity": "sha512-EQ0cEDOuxDcVVIwQKmTNr/fnDH0mCKKR+DY0lED/hBqncbben1f0gQ9+Lcnese3NCeJIo1UgRPTBLawAXt0wcQ==", "license": "Apache-2.0" }, "node_modules/google-closure-compiler-linux": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20260726.0.0.tgz", - "integrity": "sha512-wqefEjdMZIzlpsG9DoOwhTJvN296gmO0nytWPtl4rKTNQjUwwNqhLhnrCGPhJjg6Rij5EYTXl9irGKLTNfaSLQ==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20260831.0.0.tgz", + "integrity": "sha512-CsJ7ZfrJ4ObeKzqbr/XCIujPrbqHVvKNQ8zmJaVUXiszzyLdGh+tT0M0XhYAyZXXIa/XL0rfM468QugQ98MtPw==", "cpu": [ "x32", "x64" @@ -2682,9 +2682,9 @@ ] }, "node_modules/google-closure-compiler-linux-arm64": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux-arm64/-/google-closure-compiler-linux-arm64-20260726.0.0.tgz", - "integrity": "sha512-Elr1XmBVDH7QUYHGKSF78Eb/GVV1xd91YyR27JcOayuQiZdvPZkdTH6kE/2xyGrLeQSBfvhS/Wmvk0GFJhOtyg==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux-arm64/-/google-closure-compiler-linux-arm64-20260831.0.0.tgz", + "integrity": "sha512-5+nolZYk8tFR5vaBrFYnd1cdSDbOrDWc0uOEMZeMMiXufLR1HESQuuf09d0UFuu+KnZ+Vrphtkwl7EPM1Aag3w==", "cpu": [ "arm64" ], @@ -2695,9 +2695,9 @@ ] }, "node_modules/google-closure-compiler-macos": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-macos/-/google-closure-compiler-macos-20260726.0.0.tgz", - "integrity": "sha512-Aek1FeNRCntCBKmhHBCbkR0HmRkDMfBB4YJy1TRIElUApAjONwvkUmW070J6+Cur1cteKZEBOePRRbU5udpLqg==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-macos/-/google-closure-compiler-macos-20260831.0.0.tgz", + "integrity": "sha512-VVyutKNIChNCEKz5pN4a0ivdqUW1N6KNjO/vHSL+F6+P5zUi8zq8N/uhcJ3OR9vwpGAmYnsT5p3PwLNMQtX8wg==", "cpu": [ "arm64" ], @@ -2708,9 +2708,9 @@ ] }, "node_modules/google-closure-compiler-windows": { - "version": "20260726.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20260726.0.0.tgz", - "integrity": "sha512-Alg9hH8c+qo9PFrPn12TzUjfBE10gphvgDyTrj2TMmrwkZnHd3BwPKEQrkucIxwNSL3FmHwGG7MwLB7/c/YPtg==", + "version": "20260831.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20260831.0.0.tgz", + "integrity": "sha512-O53LMQFMWV11x5qMGkcET752iKbR+1O4DfJmtUW+Olb+F9jgeorcrrmZ2MQfSx2W22fQoVJbY9smayObcPw9hA==", "cpu": [ "x32", "x64" diff --git a/package.json b/package.json index dc313a4bbe0a1..04236129c8d83 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dependencies": { "acorn": "^8.18.0", "acorn-import-phases": "^1.0.4", - "google-closure-compiler": "20260726.0.0", + "google-closure-compiler": "20260831.0.0", "html-minifier-terser": "7.2.0" }, "scripts": { diff --git a/src/closure-externs/closure-externs.js b/src/closure-externs/closure-externs.js index 54484b15cca31..dd885a32f954b 100644 --- a/src/closure-externs/closure-externs.js +++ b/src/closure-externs/closure-externs.js @@ -68,10 +68,6 @@ WebAssembly.Exception.stack; * Note: Closure compiler does not support function overloading, omit this overload for now. * {function(!WebAssembly.Module, Object=):!Promise} */ -/** - * @returns {ArrayBuffer} - */ -WebAssembly.Memory.prototype.toResizableBuffer = function() {}; /** * @param {!Function} func * @returns {Function} diff --git a/src/lib/libwebgl.js b/src/lib/libwebgl.js index 32f5b8e4b6657..c457008557f11 100644 --- a/src/lib/libwebgl.js +++ b/src/lib/libwebgl.js @@ -769,7 +769,7 @@ for (/**@suppress{duplicate}*/var i = 0; i <= {{{ GL_POOL_TEMP_BUFFERS_SIZE }}}; // version field in above check. if (!canvas.getContextSafariWebGL2Fixed) { canvas.getContextSafariWebGL2Fixed = canvas.getContext; - /** @type {function(this:HTMLCanvasElement, string, (Object|null)=): (Object|null)} */ + /** @type {function(this:HTMLCanvasElement, string, (Object|null)=): (RenderingContext|null)} */ function fixedGetContext(ver, attrs) { var gl = canvas.getContextSafariWebGL2Fixed(ver, attrs); return ((ver == 'webgl') == (gl instanceof WebGLRenderingContext)) ? gl : null; diff --git a/test/codesize/test_codesize_cxx_ctors1.json b/test/codesize/test_codesize_cxx_ctors1.json index 260ebecda68ac..f450c43a4f6fa 100644 --- a/test/codesize/test_codesize_cxx_ctors1.json +++ b/test/codesize/test_codesize_cxx_ctors1.json @@ -1,10 +1,10 @@ { - "a.out.js": 19213, - "a.out.js.gz": 8126, + "a.out.js": 19214, + "a.out.js.gz": 8131, "a.out.nodebug.wasm": 133999, "a.out.nodebug.wasm.gz": 51253, - "total": 153212, - "total_gz": 59379, + "total": 153213, + "total_gz": 59384, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_ctors2.json b/test/codesize/test_codesize_cxx_ctors2.json index ba4dbd2709a46..c0d0b4627de0c 100644 --- a/test/codesize/test_codesize_cxx_ctors2.json +++ b/test/codesize/test_codesize_cxx_ctors2.json @@ -1,10 +1,10 @@ { - "a.out.js": 19190, - "a.out.js.gz": 8111, + "a.out.js": 19191, + "a.out.js.gz": 8114, "a.out.nodebug.wasm": 133427, "a.out.nodebug.wasm.gz": 50945, - "total": 152617, - "total_gz": 59056, + "total": 152618, + "total_gz": 59059, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_except.json b/test/codesize/test_codesize_cxx_except.json index caf5ba498705b..af43835b4c8ca 100644 --- a/test/codesize/test_codesize_cxx_except.json +++ b/test/codesize/test_codesize_cxx_except.json @@ -1,10 +1,10 @@ { - "a.out.js": 22906, - "a.out.js.gz": 9087, + "a.out.js": 22908, + "a.out.js.gz": 9091, "a.out.nodebug.wasm": 176407, "a.out.nodebug.wasm.gz": 58762, - "total": 199313, - "total_gz": 67849, + "total": 199315, + "total_gz": 67853, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_except_wasm.json b/test/codesize/test_codesize_cxx_except_wasm.json index c0b3a859ac6ef..80f9f023fb47f 100644 --- a/test/codesize/test_codesize_cxx_except_wasm.json +++ b/test/codesize/test_codesize_cxx_except_wasm.json @@ -1,10 +1,10 @@ { - "a.out.js": 19012, - "a.out.js.gz": 8042, + "a.out.js": 19013, + "a.out.js.gz": 8043, "a.out.nodebug.wasm": 149664, "a.out.nodebug.wasm.gz": 56301, - "total": 168676, - "total_gz": 64343, + "total": 168677, + "total_gz": 64344, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_except_wasm_legacy.json b/test/codesize/test_codesize_cxx_except_wasm_legacy.json index d8fcb815c1b1e..fb06ceba39516 100644 --- a/test/codesize/test_codesize_cxx_except_wasm_legacy.json +++ b/test/codesize/test_codesize_cxx_except_wasm_legacy.json @@ -1,10 +1,10 @@ { - "a.out.js": 19090, - "a.out.js.gz": 8067, + "a.out.js": 19091, + "a.out.js.gz": 8068, "a.out.nodebug.wasm": 147446, "a.out.nodebug.wasm.gz": 55965, - "total": 166536, - "total_gz": 64032, + "total": 166537, + "total_gz": 64033, "sent": [ "_abort_js", "_tzset_js", diff --git a/test/codesize/test_codesize_cxx_mangle.json b/test/codesize/test_codesize_cxx_mangle.json index 62434b44b551d..7a826c6217410 100644 --- a/test/codesize/test_codesize_cxx_mangle.json +++ b/test/codesize/test_codesize_cxx_mangle.json @@ -1,10 +1,10 @@ { - "a.out.js": 22956, - "a.out.js.gz": 9107, + "a.out.js": 22958, + "a.out.js.gz": 9111, "a.out.nodebug.wasm": 242687, "a.out.nodebug.wasm.gz": 80983, - "total": 265643, - "total_gz": 90090, + "total": 265645, + "total_gz": 90094, "sent": [ "__cxa_begin_catch", "__cxa_end_catch", diff --git a/test/codesize/test_codesize_cxx_noexcept.json b/test/codesize/test_codesize_cxx_noexcept.json index 6c778bd39790c..0de053e9d9b37 100644 --- a/test/codesize/test_codesize_cxx_noexcept.json +++ b/test/codesize/test_codesize_cxx_noexcept.json @@ -1,10 +1,10 @@ { - "a.out.js": 19213, - "a.out.js.gz": 8126, + "a.out.js": 19214, + "a.out.js.gz": 8131, "a.out.nodebug.wasm": 135906, "a.out.nodebug.wasm.gz": 51864, - "total": 155119, - "total_gz": 59990, + "total": 155120, + "total_gz": 59995, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_cxx_wasmfs.json b/test/codesize/test_codesize_cxx_wasmfs.json index d331395dc4a31..ac56df4d8eb30 100644 --- a/test/codesize/test_codesize_cxx_wasmfs.json +++ b/test/codesize/test_codesize_cxx_wasmfs.json @@ -1,10 +1,10 @@ { "a.out.js": 6593, - "a.out.js.gz": 3146, + "a.out.js.gz": 3145, "a.out.nodebug.wasm": 173631, "a.out.nodebug.wasm.gz": 64613, "total": 180224, - "total_gz": 67759, + "total_gz": 67758, "sent": [ "__cxa_throw", "_abort_js", diff --git a/test/codesize/test_codesize_file_preload.json b/test/codesize/test_codesize_file_preload.json index 1bde46ef7e6b1..c6f26d277449c 100644 --- a/test/codesize/test_codesize_file_preload.json +++ b/test/codesize/test_codesize_file_preload.json @@ -1,10 +1,10 @@ { - "a.out.js": 22192, - "a.out.js.gz": 9264, + "a.out.js": 22194, + "a.out.js.gz": 9267, "a.out.nodebug.wasm": 1198, "a.out.nodebug.wasm.gz": 730, - "total": 23390, - "total_gz": 9994, + "total": 23392, + "total_gz": 9997, "sent": [ "a (fd_write)" ], diff --git a/test/codesize/test_codesize_hello_O0.json b/test/codesize/test_codesize_hello_O0.json index d01346138bd13..de4ef956a4e68 100644 --- a/test/codesize/test_codesize_hello_O0.json +++ b/test/codesize/test_codesize_hello_O0.json @@ -1,10 +1,10 @@ { "a.out.js": 23580, - "a.out.js.gz": 8577, + "a.out.js.gz": 8579, "a.out.nodebug.wasm": 14279, "a.out.nodebug.wasm.gz": 7101, "total": 37859, - "total_gz": 15678, + "total_gz": 15680, "sent": [ "fd_write" ], diff --git a/test/codesize/test_codesize_hello_dylink.json b/test/codesize/test_codesize_hello_dylink.json index 69cc8e03031d9..c329b87720ae0 100644 --- a/test/codesize/test_codesize_hello_dylink.json +++ b/test/codesize/test_codesize_hello_dylink.json @@ -1,10 +1,10 @@ { - "a.out.js": 26410, - "a.out.js.gz": 11258, + "a.out.js": 26413, + "a.out.js.gz": 11259, "a.out.nodebug.wasm": 16986, "a.out.nodebug.wasm.gz": 8676, - "total": 43396, - "total_gz": 19934, + "total": 43399, + "total_gz": 19935, "sent": [ "__syscall_stat64", "emscripten_resize_heap", diff --git a/test/codesize/test_codesize_hello_dylink_all.json b/test/codesize/test_codesize_hello_dylink_all.json index 111708d6655e8..b3f956c0d0cba 100644 --- a/test/codesize/test_codesize_hello_dylink_all.json +++ b/test/codesize/test_codesize_hello_dylink_all.json @@ -1,7 +1,7 @@ { - "a.out.js": 271876, + "a.out.js": 272021, "a.out.nodebug.wasm": 587947, - "total": 859823, + "total": 859968, "sent": [ "IMG_Init", "IMG_Load", diff --git a/test/codesize/test_codesize_minimal_pthreads.json b/test/codesize/test_codesize_minimal_pthreads.json index e6e2a7bf035fc..5f41bd898d56f 100644 --- a/test/codesize/test_codesize_minimal_pthreads.json +++ b/test/codesize/test_codesize_minimal_pthreads.json @@ -1,10 +1,10 @@ { - "a.out.js": 6913, - "a.out.js.gz": 3430, + "a.out.js": 6925, + "a.out.js.gz": 3435, "a.out.nodebug.wasm": 19139, "a.out.nodebug.wasm.gz": 8820, - "total": 26052, - "total_gz": 12250, + "total": 26064, + "total_gz": 12255, "sent": [ "a (memory)", "b (exit)", diff --git a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json index f54f3c6b6f304..7da5e0275fbff 100644 --- a/test/codesize/test_codesize_minimal_pthreads_memgrowth.json +++ b/test/codesize/test_codesize_minimal_pthreads_memgrowth.json @@ -1,10 +1,10 @@ { - "a.out.js": 7371, - "a.out.js.gz": 3646, + "a.out.js": 7383, + "a.out.js.gz": 3649, "a.out.nodebug.wasm": 19140, "a.out.nodebug.wasm.gz": 8827, - "total": 26511, - "total_gz": 12473, + "total": 26523, + "total_gz": 12476, "sent": [ "a (memory)", "b (exit)", diff --git a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json index 34375cc02976f..f9cc11728df7b 100644 --- a/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json +++ b/test/codesize/test_minimal_runtime_code_size_random_printf_wasm2js.json @@ -1,4 +1,4 @@ { - "a.html": 17341, + "a.html": 17344, "a.html.gz": 7632 } diff --git a/tools/building.py b/tools/building.py index f2e34a5feb119..d92ce991975bc 100644 --- a/tools/building.py +++ b/tools/building.py @@ -22,6 +22,7 @@ diagnostics, feature_matrix, js_optimizer, + ports, response_file, shared, utils, @@ -567,6 +568,13 @@ def version_split(v): return f'{int(major)}.{int(minor)}.{int(rev)}' +def filter_closure_args(args): + # Closure compiler includes WebGPU externs natively (w3c_webgpu.js). + # Exclude webgpu-externs.js (provided by emdawnwebgpu) to avoid duplicate definition errors. + # TODO: Remove this after https://g-issues.chromium.org/issues/562078433 is resolved. + return [a for a in args if not (a.startswith('--externs=') and a.endswith('webgpu-externs.js'))] + + @ToolchainProfiler.profile() def closure_compiler(filename, advanced=True, extra_closure_args=None): user_args = [] @@ -575,6 +583,8 @@ def closure_compiler(filename, advanced=True, extra_closure_args=None): user_args += shlex.split(env_args) if extra_closure_args: user_args += extra_closure_args + if any('emdawnwebgpu' in p.name for p in ports.get_needed_ports(settings)): + user_args = filter_closure_args(user_args) closure_cmd, env = get_closure_compiler_and_env(user_args)