Description
The minimum hardware requirements are updated as follows:
Arm64
| Operating System |
Previous JIT/AOT Minimum |
New JIT/AOT Minimum |
Previous R2R Target |
New R2R Target |
| Apple |
Apple M1 |
(No Change) |
Apple M1 |
(No Change) |
| Linux |
armv8.0-a |
(No Change) |
armv8.0-a |
armv8.0a + LSE |
| Windows |
armv8.0-a |
armv8.0-a + LSE |
armv8.0-a |
armv8.2-a + RCPC |
x86/x64
| Operating System |
Previous JIT/AOT Minimum |
New JIT/AOT Minimum |
Previous R2R Target |
New R2R Target |
| Apple |
x86-64-v1 |
x86-64-v2 |
x86-64-v2 |
(No Change) |
| Linux |
x86-64-v1 |
x86-64-v2 |
x86-64-v2 |
x86-64-v3 |
| Windows |
x86-64-v1 |
x86-64-v2 |
x86-64-v2 |
x86-64-v3 |
Version
.NET 11 Preview 1
Previous behavior
By default .NET would successfully launch and run on older hardware. Individual applications may have opted-in to higher baselines or explicitly used hardware intrinsics that raised the baseline for their scenario.
New behavior
.NET will fail to run on older hardware and may print a message similar to the following. A more descriptive message may be provided in some scenarios that lists the concrete hardware requirements for a given Operating System and architecture.
The current CPU is missing one or more of the baseline instruction sets.
For ReadyToRun (https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) capable assemblies, there may be additional startup overhead on some hardware which is supported but which doesn't meet the expected support for a typical device.
Type of breaking change
Reason for change
.NET supports a broad range of hardware, often above and beyond the minimum hardware requirements put in place by the underlying Operating System, and has built-in support for taking advantage of the hardware it is actively running on for JIT scenarios. However, this support adds significant complexity to the codebase, particularly for much older hardware that is unlikely to still be in use. Additionally, it defines a "lowest common denominator" that AOT targets must default to which can, in some domain specific scenarios, lead to reduced performance for applications.
The update to the minimum baseline was made to reduce the maintenance complexity of the codebase and to better align with the documented (and often enforced) hardware requirements of the underlying Operating System.
Arm64
For Apple, there is no change to the minimum hardware or the ReadyToRun target. The Apple M1 chips are approximately equivalent to armv8.5-a and so provide support for at least the AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2, and RDMA instruction sets.
For Linux, there is no change to the minimum hardware. We continue to support devices such as Raspberry PI which may only provide support for the AdvSimd instruction set. The ReadyToRun target has been updated to include the LSE instruction set which may result in additional jitting overhead if you launch an application
For Windows the baseline is updated to require the LSE instruction set. This is required by Windows 11 (https://learn.microsoft.com/en-us/windows-hardware/design/minimum/minimum-hardware-requirements-overview) and by all Arm64 CPUs officially supported by Windows 10 (https://learn.microsoft.com/en-us/windows-hardware/design/minimum/windows-processor-requirements). It is additionally inline with the Arm SBSA (Server Base System Architecture) requirements. The ReadyToRun target has been updated to be armv8.2-a + RCPC (this provides support for at least AdvSimd, CRC, LSE, RCPC, and RDMA) which covers the majority of hardware officially supported.
x86/x64
For all three operating systems, the baseline is updated from x86-64-v1 to x86-64-v2. This changes the hardware from only guaranteeing CMOV, CX8, SSE, and SSE2 to also guaranteeing CX16, POPCNT, SSE3, SSSE3, SSE4.1, and SSE4.2. This is required by Windows 11 and by all x86/x64 CPUs officially supported on Windows 10. It includes all chips still officially supported by Intel/AMD, with the last older chips having gone out of support around 2013.
The ReadyToRun target has been updated to x86-64-v3 for Windows and Linux, while it remains unchanged for Apple, which additionally includes the AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, and MOVBE instruction sets.
Recommended action
Developers on no longer supported hardware should consider updating. Such hardware is officially out of support and may not boot on Operating System versions that are supported by .NET.
Feature area
Other (please put exact area in description textbox), JIT
Affected APIs
This affects all of .NET
Associated WorkItem - 543461
Description
The minimum hardware requirements are updated as follows:
Arm64
x86/x64
Version
.NET 11 Preview 1
Previous behavior
By default .NET would successfully launch and run on older hardware. Individual applications may have opted-in to higher baselines or explicitly used hardware intrinsics that raised the baseline for their scenario.
New behavior
.NET will fail to run on older hardware and may print a message similar to the following. A more descriptive message may be provided in some scenarios that lists the concrete hardware requirements for a given Operating System and architecture.
For
ReadyToRun(https://learn.microsoft.com/en-us/dotnet/core/deploying/ready-to-run) capable assemblies, there may be additional startup overhead on some hardware which is supported but which doesn't meet the expected support for a typical device.Type of breaking change
Reason for change
.NET supports a broad range of hardware, often above and beyond the minimum hardware requirements put in place by the underlying Operating System, and has built-in support for taking advantage of the hardware it is actively running on for JIT scenarios. However, this support adds significant complexity to the codebase, particularly for much older hardware that is unlikely to still be in use. Additionally, it defines a "lowest common denominator" that AOT targets must default to which can, in some domain specific scenarios, lead to reduced performance for applications.
The update to the minimum baseline was made to reduce the maintenance complexity of the codebase and to better align with the documented (and often enforced) hardware requirements of the underlying Operating System.
Arm64
For Apple, there is no change to the minimum hardware or the
ReadyToRuntarget. TheApple M1chips are approximately equivalent toarmv8.5-aand so provide support for at least theAdvSimd(NEON),CRC,DOTPROD,LSE,RCPC,RCPC2, andRDMAinstruction sets.For Linux, there is no change to the minimum hardware. We continue to support devices such as Raspberry PI which may only provide support for the
AdvSimdinstruction set. TheReadyToRuntarget has been updated to include theLSEinstruction set which may result in additional jitting overhead if you launch an applicationFor Windows the baseline is updated to require the
LSEinstruction set. This is required by Windows 11 (https://learn.microsoft.com/en-us/windows-hardware/design/minimum/minimum-hardware-requirements-overview) and by all Arm64 CPUs officially supported by Windows 10 (https://learn.microsoft.com/en-us/windows-hardware/design/minimum/windows-processor-requirements). It is additionally inline with theArm SBSA(Server Base System Architecture) requirements. TheReadyToRuntarget has been updated to bearmv8.2-a + RCPC(this provides support for at leastAdvSimd,CRC,LSE,RCPC, andRDMA) which covers the majority of hardware officially supported.x86/x64
For all three operating systems, the baseline is updated from
x86-64-v1tox86-64-v2. This changes the hardware from only guaranteeingCMOV,CX8,SSE, andSSE2to also guaranteeingCX16,POPCNT,SSE3,SSSE3,SSE4.1, andSSE4.2. This is required by Windows 11 and by all x86/x64 CPUs officially supported on Windows 10. It includes all chips still officially supported by Intel/AMD, with the last older chips having gone out of support around 2013.The
ReadyToRuntarget has been updated tox86-64-v3for Windows and Linux, while it remains unchanged for Apple, which additionally includes theAVX,AVX2,BMI1,BMI2,F16C,FMA,LZCNT, andMOVBEinstruction sets.Recommended action
Developers on no longer supported hardware should consider updating. Such hardware is officially out of support and may not boot on Operating System versions that are supported by .NET.
Feature area
Other (please put exact area in description textbox), JIT
Affected APIs
This affects all of .NET
Associated WorkItem - 543461