Skip to content

[11.0p6] Upgrade Emscripten to 5.0.6 & LLVM to 23 #129925

Merged
akoeplinger merged 10 commits into
release/11.0-preview6from
port-emsdk-upgrade-p6
Jun 27, 2026
Merged

[11.0p6] Upgrade Emscripten to 5.0.6 & LLVM to 23 #129925
akoeplinger merged 10 commits into
release/11.0-preview6from
port-emsdk-upgrade-p6

Conversation

@akoeplinger

Copy link
Copy Markdown
Member

Backport of #129299

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR backports the WebAssembly toolchain upgrade to the 11.0p6 branch, moving the repo’s WASM build from Emscripten 3.1.56 / LLVM 19 to Emscripten 5.0.6 / LLVM 23, and updating related runtime, loader, packaging, tests, and CI wiring to match the new toolchain’s behavior (notably around wasm exception handling / exnref and pthread worker bootstrapping).

Changes:

  • Upgrade Emscripten/LLVM and refresh the associated dependency versions, build flags, and pipeline container/images.
  • Update the WASM JS loader / boot config generation to align with the newer Emscripten pthread model (no separate dotnet.native.worker.mjs) and newer feature detection (exceptionsFinal).
  • Adjust Mono runtime/backend for LLVM 23 compatibility and add/enable regression coverage while updating test expectations/annotations and CI execution paths.

Reviewed changes

Copilot reviewed 92 out of 94 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/tests/Loader/classloader/MethodImpl/CovariantReturns/UnitTest/UnitTest_GVM_TypeLoadException.il Remove Mono ActiveIssue gating
src/tests/JIT/Regression/JitBlue/WPF_3226/CSharpRepro/WPF_3226.cs Remove Mono ActiveIssue gating
src/tests/JIT/Regression/JitBlue/Runtime_105619/Runtime_105619.cs Remove MonoFULLAOT ActiveIssue gating
src/tests/JIT/Regression/CLR-x86-JIT/V1.1-M1-Beta1/b143840/b143840.il Remove Mono ActiveIssue gating
src/tests/JIT/jit64/localloc/call/call05_small.il Remove Mono ActiveIssue gating
src/tests/JIT/jit64/localloc/call/call05_large.il Remove Mono ActiveIssue gating
src/tests/JIT/Directed/StructABI/StraddlingVtypeAbi.csproj New directed test project
src/tests/JIT/Directed/StructABI/StraddlingVtypeAbi.cs New regression test for gshared ABI
src/tests/JIT/Directed/nullabletypes/Desktop/boxunboxvaluetype.cs Remove Mono ActiveIssue gating
src/tests/JIT/Directed/nullabletypes/castclassvaluetype.cs Remove Mono ActiveIssue gating
src/tests/Common/CLRTest.Execute.Batch.targets Add node exnref flag for wasm runs
src/tests/Common/CLRTest.Execute.Bash.targets Add node exnref flag for wasm runs
src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/GenerateWasmBootJson.cs Pass parsed TFM version into helper
src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonData.cs Keep jsModuleWorker for compat
src/tasks/Microsoft.NET.Sdk.WebAssembly.Pack.Tasks/BootJsonBuilderHelper.cs Gate worker resource mapping by TFM
src/native/libs/Common/JavaScript/types/public-api.ts Remove jsModuleWorker/threads behavior types
src/native/libs/Common/JavaScript/loader/dotnet.d.ts Remove jsModuleWorker/threads behavior types
src/native/libs/Common/JavaScript/loader/config.ts Drop worker resource normalization/merge
src/native/libs/Common/JavaScript/loader/bootstrap.ts Switch to exceptionsFinal feature check
src/native/libs/Common/JavaScript/loader/assets.ts Drop worker module asset plumbing
src/mono/wasm/Wasm.Build.Tests/WasmSdkBasedProjectProvider.cs Stop expecting worker module file
src/mono/wasm/Wasm.Build.Tests/ProjectProviderBase.cs Stop enumerating worker assets
src/mono/wasm/Wasm.Build.Tests/Common/BuildEnvironment.cs MT pack availability check update
src/mono/wasm/Wasm.Build.Tests/Blazor/EventPipeDiagnosticsTests.cs Remove Mono ActiveIssue gating
src/mono/wasm/build/WasmApp.Common.targets Add multivalue/reference-types to wasm-opt
src/mono/sample/wasm/wasm.mk Add exnref flag for sample runs
src/mono/sample/wasm/console-v8/Wasm.Console.V8.Sample.csproj Add exnref engine arg
src/mono/sample/wasm/console-node/Wasm.Console.Node.Sample.csproj Add exnref engine arg
src/mono/mono/offsets/x86_64-none-linux-android.h Update TLS struct offsets/sizes
src/mono/mono/offsets/x86_64-apple-maccatalyst.h Update TLS struct offsets/sizes
src/mono/mono/offsets/x86_64-apple-darwin10.h Update TLS struct offsets/sizes
src/mono/mono/offsets/wasm32-unknown-wasip2.h Update TLS struct offsets/sizes
src/mono/mono/offsets/wasm32-unknown-none.h Update TLS struct offsets/sizes
src/mono/mono/offsets/i686-none-linux-android.h Update TLS struct offsets/sizes
src/mono/mono/offsets/armv7-none-linux-androideabi.h Update TLS struct offsets/sizes
src/mono/mono/offsets/aarch64-v8a-linux-android.h Update TLS struct offsets/sizes
src/mono/mono/offsets/aarch64-apple-maccatalyst.h Update TLS struct offsets/sizes
src/mono/mono/offsets/aarch64-apple-darwin10.h Update TLS struct offsets/sizes
src/mono/mono/mini/mini-runtime.h Remove raw exception ptr field
src/mono/mono/mini/mini-llvm.c Remove NaN-safe narrowing helper path
src/mono/mono/mini/mini-exceptions.c Root exception across resumes via GCHandle
src/mono/mono/mini/mini-amd64.c ABI fix for straddling <=16B vtypes
src/mono/mono/mini/method-to-ir.c AOT tailcall + typeload error handling tweaks
src/mono/mono/mini/iltests.il Remove FULLAOT category annotation
src/mono/mono/mini/CMakeLists.txt Set wasm EH legacy exceptions flags
src/mono/mono/mini/aot-compiler.c Marshal recursion guard + CLASS embedding support
src/mono/mono/metadata/memory-manager.c Chunk size calc alignment adjustment
src/mono/mono/metadata/assembly-load-context.c Add TLS recursion guard for resolve hooks
src/mono/mono/eventpipe/ep-rt-mono-runtime-provider.c Clamp sampler recompute on coarse timers
src/mono/mono.proj Update emscripten python pack path
src/mono/CMakeLists.txt Enforce LLVM API 2300 + update lib lists
src/mono/browser/runtime/types/internal.ts Rename EH feature/loader helper fields
src/mono/browser/runtime/types/index.ts Remove worker asset types/behaviors
src/mono/browser/runtime/startup.ts Use exceptionsFinal feature flag, worker init
src/mono/browser/runtime/pthreads/ui-thread.ts Allocate worker from main script URL
src/mono/browser/runtime/loader/run.ts Worker bootstraps via main module; dispatch load
src/mono/browser/runtime/loader/globals.ts Update sidecar detection + feature detect wiring
src/mono/browser/runtime/loader/config.ts Remove threads asset behavior mapping
src/mono/browser/runtime/loader/assets.ts Drop worker module asset handling; preload via script
src/mono/browser/runtime/jiterpreter-support.ts Add try_table/tag index support for EH
src/mono/browser/runtime/jiterpreter-opcodes.ts Update opcode enum for exnref EH
src/mono/browser/runtime/jiterpreter-jit-call.ts Use try_table-based EH wrapper
src/mono/browser/runtime/dotnet.d.ts Remove worker asset types/behaviors
src/mono/browser/runtime/CMakeLists.txt Link selected EH static lib + wasm-opt flags
src/mono/browser/runtime/assets.ts Remove threads behavior in instantiation
src/mono/browser/emscripten-version.txt Bump emscripten version to 5.0.6
src/mono/browser/build/BrowserWasmApp.targets Add exnref flags; stop copying worker module
src/mono/browser/build/BrowserWasmApp.CoreCLR.targets Add legacy exceptions flag
src/mono/browser/browser.proj Add EH lib selection + remove worker module copy
src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/FileInfo/GetSetTimes.cs Refactor temporal-resolution tests
src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/File/GetSetTimes.cs Remove browser ActiveIssue; update conditions
src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/File/Copy.cs Remove browser-specific time check carve-out
src/libraries/System.Runtime/tests/System.IO.FileSystem.Tests/Base/BaseGetSetTimes.cs New temporal-resolution model flags
src/libraries/System.Private.CoreLib/src/System/IO/FileStatus.Unix.cs Remove browser/wasi futimens special case
src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props Remove worker module from manifest
global.json Update arcade/helix/sdk versions
eng/Versions.props Bump EmsdkVersion to 5.0.6
eng/Version.Details.xml Refresh dependency versions (LLVM/Arcade/etc.)
eng/Version.Details.props Refresh dependency versions (LLVM/Arcade/etc.)
eng/testing/WasmRunnerTemplate.sh Add exnref to default JS engine args
eng/testing/WasmRunnerTemplate.cmd Add exnref to default JS engine args
eng/testing/tests.browser.targets Stop tracking/copying worker module asset
eng/testing/linker/trimmingTests.targets Add SkipTrimmingTestsRun gate
eng/testing/BrowserVersions.props Bump V8 versions
eng/pipelines/runtime.yml Disable WasmTestOnV8 scenario (commented)
eng/pipelines/runtime-llvm.yml Expand PR path filters for LLVM pipeline
eng/pipelines/runtime-linker-tests.yml Skip trimming run on V8; keep publish coverage
eng/pipelines/performance/runtime-wasm-perf.yml Disable PR runs due to V8 exnref mismatch
eng/pipelines/common/templates/wasm-runtime-tests.yml Disable sending runtime tests to Helix on V8
eng/pipelines/common/templates/runtimes/build-runtime-tests-and-send-to-helix.yml Add compile-time sendToHelix switch
eng/pipelines/common/templates/pipeline-with-resources.yml Update webassembly container digests
eng/native/tryrun.browser.cmake Update tryrun cache version to 5.0.6
eng/native/configureplatform.cmake Update browser wasm flags/libs for EH
eng/liveBuilds.targets Remove worker module from livebuild runtime files

@akoeplinger

Copy link
Copy Markdown
Member Author

/ba-g unrelated test failure on Windows

@akoeplinger akoeplinger merged commit be559e6 into release/11.0-preview6 Jun 27, 2026
189 of 195 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-Build-mono Servicing-approved Approved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants