Repository navigation
Conversation
✅ Deploy Preview for webkit-jetstream-preview ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Build dotnet-interp-wasm and dotnet-aot-wasm with .NET SDK 11.0.100-rc.3.26522.148 (was 9.0.305). The runtime pack's Emscripten moves from 3.1.56 to 6.0.3. .NET 11 compiles the runtime and the AOT code with -fwasm-exceptions -sWASM_LEGACY_EXCEPTIONS=0, so the binaries use the standard exception handling instructions (try_table, throw_ref) directly. build.sh no longer rewrites dotnet.native.wasm with `wasm-opt --translate-to-exnref`. - src/global.json selects SDK 11.0.100-rc.3.26522.148, and dotnet.csproj targets net11.0. - The trimmed library set changed: System.Collections.Concurrent.wasm is gone and System.Security.Cryptography.wasm is new. JetStreamDriver.js and benchmark.js preload the new set. - The AOT build's boot config lists every assembly as a core assembly, so benchmark.js marks all assemblies isCore for AOT. - The minifier renamed the function that logs the ArrayBuffer instantiation warning (w -> v), so the perl command that strips the warning now matches any one-letter name. - README.md: drop the stale notes about installing wasm-tools from build.sh and patching import.meta.url for jsc. The C# benchmark code is unchanged. Score change, d8 (15.9.60) / jsc (325217) / SpiderMonkey (160.0b3) (each test alone in a fresh shell, 6 rounds): dotnet-interp-wasm +1.3% / +3.7% / +2.1% dotnet-aot-wasm +3.5% / -1.7% / +0.8% The AOT dotnet.native.wasm is 19% larger, so the first iteration, which compiles it, takes longer (d8 -2.8%, jsc -9.2%, SpiderMonkey -7.4%), while later iterations improve (+6.7% / +1.4% / +5.7%). .NET 11 GA is expected on November 10, 2026. Then switch global.json to 11.0.100 and rebuild. Part of WebKit#277.
danleh
force-pushed
the
wasm-dotnet-11
branch
from
November 3, 2026 23:19
0be2dfa to
ff4f556
Compare
maraf
approved these changes
Nov 4, 2026
maraf
left a comment
Contributor
There was a problem hiding this comment.
Looks good to me!
Just a note, .NET 11 GA is coming soon in case you would prefer a more official version (not that there will be any change in the WebAssembly workload).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #277. Follow-up to #188. cc @pavelsavara @maraf
Build
dotnet-interp-wasmanddotnet-aot-wasmwith .NET SDK 11.0.100-rc.3.26522.148 (was 9.0.305). The runtime pack's Emscripten moves from 3.1.56 to 6.0.3..NET 11 compiles the runtime and the AOT code with
-fwasm-exceptions -sWASM_LEGACY_EXCEPTIONS=0, so the binaries use the standard exception-handling instructions (try_table,throw_ref) directly.build.shno longer rewritesdotnet.native.wasmwithwasm-opt --translate-to-exnref, the workaround from #188.To review (6 files, +27/−27;
build.shwrites the other 52:build.log,dotnet_sdk_info.txtand 50 files inbuild-interp/andbuild-aot/):src/global.jsonselects SDK 11.0.100-rc.3.26522.148, anddotnet.csprojtargetsnet11.0.System.Collections.Concurrent.wasmis gone andSystem.Security.Cryptography.wasmis new.JetStreamDriver.js(one line) andbenchmark.jspreload the new set.benchmark.jsmarks all AOT assembliesisCore.w→v), so the perl command inbuild.shthat strips the warning now matches any one-letter name.README.mddrops stale notes about installing wasm-tools and patchingimport.meta.urlforjsc.The C# benchmark code does not change.
Binaries: a browser loads 2.6 MB more for the two tests (19.4 MB instead of 16.8 MB); most of it is the AOT
dotnet.native.wasm, which grows by 1.56 MB (19%). With the.symbolsfiles and the ICU data files that the tests do not load, the repository grows by 4.2 MB.Scores (measured on a Linux x64 workstation with
jsvushells, each test alone in a fresh shell, 6 rounds; change of the mean score, rounds won in parentheses, bold = statistically significant at 95% confidence; @kmiller68 may want to check on macOS / arm64):d8(15.9.60)jsc(325217)dotnet-interp-wasmdotnet-aot-wasmd8First / AveragejscFirst / Averagedotnet-interp-wasmdotnet-aot-wasmThe AOT
dotnet.native.wasmis 19% larger, so the first iteration, which compiles it, takes longer (d8−2.8%,jsc−9.2%, SpiderMonkey −7.4%), while later iterations improve (+6.7% / +1.4% / +5.7%)..NET 11 GA is due on November 10, inside this PR's review window. I'll switch
global.jsonto 11.0.100, rebuild and update the numbers before merging.