The Wire · Showcase
JIT OPTIMIZER UNLOCKS LARGE-STRIDE ARRAYS, WASM R2R CATCHES EXCEPTIONS
By RepoJournal · Filed · About .NET
The runtime JIT dropped its stride limiter and now clones high-stride array loops with proper bounds checking, while WebAssembly R2R gained exception handling after catch blocks.
The JIT optimizer removed the blanket stride cap that was rejecting array loops with post-step induction variables exceeding INT_MAX [1]. For strides larger than 57, it now emits a runtime bounds check (arr.Length <= INT_MAX - s + 1) instead of skipping the optimization entirely, building on span-loop work from earlier this cycle. This is a concrete win for numeric and data-heavy workloads that iterate arrays with large steps. Separately, WebAssembly R2R now supports resuming after catch blocks by pairing each try_table with an exnref-typed wrapper and per-funclet exception locals [2], closing a gap in exception semantics. On the testing side, Apple CoreCLR mobile test suites had three failures disabled or fixed: Moq's RefEmit codegen breaks on iOS, Tan diverges slightly under FMA on arm64, and one trimmer descriptor issue was resolved [3]. Across the .NET skills ecosystem, two new polyglot testing analyzers shipped: `find-untested-sources` uses Roslyn to map C# files to their test referents in 9 seconds on a 3,900-file repo [4], while `find-untested-sources-polyglot` uses tree-sitter to do the same across Python, TypeScript, JavaScript, Go, Java, Rust, and Ruby with no build step [5]. The xunit-to-mstest migration skill fixed false-negative graders by switching from output-based to file-based assertions, eliminating phantom test failures when the agent explained its changes [6]. MAUI's release tooling got surgical updates: review reruns now only trigger on new author activity, and versioning logic was extracted into shared modules with a new -CloseFixedIssues flag and earliest-release-wins milestone validation [7] [8]. Finally, java-interop decoupled its NuGet dependency updates by removing Dependabot grouping, so each package bump gets its own PR for cleaner bisecting and selective reverts [9].
Action items
- → Test the JIT array-loop cloning changes on large-stride workloads before the next runtime release dotnet/runtime [plan]
- → Integrate find-untested-sources or find-untested-sources-polyglot into your test coverage CI pipeline dotnet/skills [plan]
- → Monitor MAUI's review-rerun and release-tooling PRs for merge; test artifacts if you're waiting on the changes dotnet/maui [monitor]
References
- [1] JIT: clone array loops with stride > 57 ↗ dotnet/runtime
- [2] Wasm R2R: implement support for resume after catch ↗ dotnet/runtime
- [3] [clr-ios] Disable failing tests and fix trimming in Apple CoreCLR mobile test suites (#129226) dotnet/runtime
- [4] Add find-untested-sources skill (C# parse-only test pairing) ↗ dotnet/skills
- [5] Add find-untested-sources-polyglot skill (tree-sitter, 9 languages) ↗ dotnet/skills
- [6] migrate-xunit-to-mstest: switch file-state graders from output to file (no false negatives) ↗ dotnet/skills
- [7] Restrict /review rerun eligibility to author activity ↗ dotnet/maui
- [8] Extract shared versioning module, add -CloseFixedIssues flag, and earliest-release-wins milestone validation ↗ dotnet/maui
- [9] Remove NuGet dependency grouping from Dependabot config (#1459) dotnet/java-interop
FAQ
- What changed in .NET on June 16, 2026?
- The runtime JIT dropped its stride limiter and now clones high-stride array loops with proper bounds checking, while WebAssembly R2R gained exception handling after catch blocks.
- What should .NET teams do about it?
- Test the JIT array-loop cloning changes on large-stride workloads before the next runtime release • Integrate find-untested-sources or find-untested-sources-polyglot into your test coverage CI pipeline • Monitor MAUI's review-rerun and release-tooling PRs for merge; test artifacts if you're waiting on the changes
- Which .NET repositories shipped on June 16, 2026?
- dotnet/runtime, dotnet/skills, dotnet/maui, dotnet/java-interop