The Wire · Showcase
RUNTIME FIXES PODMAN BUILDS, JIT INTRINSIFIES ASYNC FACTORIES
By RepoJournal · Filed · About .NET
dotnet build now works inside rootless podman containers after a fix for chmod failures on bind-mounted filesystems, while the JIT compiler gains direct recognition of Task and ValueTask factory methods for faster async code.
The runtime team shipped a critical fix [1] addressing a long-standing pain point for developers using rootless podman devcontainers. The issue: bind-mounted Windows folders appear root-owned to non-root container users, causing `File.SetUnixFileMode` to fail with permission errors during apphost and single-file publish operations. This blocks the entire `dotnet build` pipeline in environments like VS Code devcontainers. The fix detects chmod-hostile filesystems and skips the mode-setting step when it's not supported.
In a major performance win for async code, the JIT now intrinsifies Task and ValueTask factory methods [2], directly recognizing `Task.FromResult`, `Task.CompletedTask`, `ValueTask.FromResult`, `ValueTask.CompletedTask`, and their instantiation patterns when used in async context. This eliminates method call overhead for the most common async patterns, a substantial improvement for high-throughput code.
The runtime also landed calling-convention fixes [3] for small straddling value types on amd64, resolving corruption in generic shared code paths where struct layouts crossed the 8-byte boundary. On the WASM front [4], the browser runtime upgraded to standardized exception handling using the exnref proposal, moving away from legacy V8-specific encodings.
EF Core shipped fixes for left-join projections of non-entities [6], which now correctly materialize as null on no-match rows instead of throwing. The team also added Half type support for SQLite [7] and refactored element-type handling to be a creation-time concern [8], cleaning up deferred initialization bugs. Coverage reporting is now wired into the EF Core PR workflow [5].
On the MAUI side, the simulator install step that was timing out macOS official builds is now skipped [10], and the release merge workflow got a branch guard [9] to prevent silent failures.
Action items
- → If running VS Code devcontainers on rootless podman, pull the latest runtime immediately dotnet/runtime [immediate]
- → Review your hot-path async code for Task/ValueTask factory calls; JIT intrinsics are now automatic dotnet/runtime [monitor]
- → Validate EF Core left-join projections if you use LEFT JOIN with non-entity DTOs dotnet/efcore [plan]
- → MAUI maintainers: pull the simulator install skip for your official pack pipeline dotnet/maui [plan]
References
- [1] Fix apphost/bundle creation failure on chmod-hostile filesystems (#129342) dotnet/runtime
- [2] JIT: Intrinsify Task/ValueTask factory methods ↗ dotnet/runtime
- [3] [mono][amd64] Fix calling-convention mismatch for small straddling vtypes in shared generics ↗ dotnet/runtime
- [4] [browser] WASM exception handling to use the standardized exnref ↗ dotnet/runtime
- [5] Generate and upload code coverage reports ↗ dotnet/efcore
- [6] Materialize a left-joined non-entity projection as null on no-match (#30915) ↗ dotnet/efcore
- [7] Add Half type support for SQLite ↗ dotnet/efcore
- [8] Make primitive collection element type a creation-time concern ↗ dotnet/efcore
- [9] Add branch guard to merge-net11-to-release workflow ↗ dotnet/maui
- [10] Skip simulator install in official pack pipeline ↗ dotnet/maui
FAQ
- What changed in .NET on June 27, 2026?
- dotnet build now works inside rootless podman containers after a fix for chmod failures on bind-mounted filesystems, while the JIT compiler gains direct recognition of Task and ValueTask factory methods for faster async code.
- What should .NET teams do about it?
- If running VS Code devcontainers on rootless podman, pull the latest runtime immediately • Review your hot-path async code for Task/ValueTask factory calls; JIT intrinsics are now automatic • Validate EF Core left-join projections if you use LEFT JOIN with non-entity DTOs
- Which .NET repositories shipped on June 27, 2026?
- dotnet/runtime, dotnet/efcore, dotnet/maui