.NET 11 raises the minimum CPU baseline to more modern instruction sets. On x86/x64, JIT and AOT apps now require x86-64-v2 across Apple, Linux, and Windows; Windows and Linux ReadyToRun targets move to x86-64-v3, while Apple’s target is unchanged. Arm64 minimums stay the same for Apple and Linux, but Windows now requires LSE; ReadyToRun targets also gain newer instructions on Linux and Windows. Apps on older CPUs will fail to run, while some supported machines may see extra startup overhead. The change reduces support complexity and aligns .NET with operating-system hardware requirements.
The major runtime feature is Runtime Async V2, a preview model that replaces compiler-generated async state machines with runtime-managed suspension and resumption. Enabled through a project property, it produces clearer live stack traces - showing five real call frames rather than 13 frames containing state-machine machinery - and improves debugger stepping, allocations, and async performance. Exception stack traces are unchanged. Runtime Async supports JIT, NativeAOT, and ReadyToRun, with optimizations including continuation reuse, tiered compilation, inlining, and faster task-factory paths. .NET 11 also avoids capturing and restoring ExecutionContext when a continuation has no ambient state to preserve, reducing overhead in async-heavy code. JIT updates include eliminating bounds checks in common indexed-length patterns and improving code generation for ARM SVE vectors.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.