Back in June 2021, Microsoft announced ARM64EC for Windows 11. It described ARM64EC as a new way to bring your existing x64 applications up to speed with the native performance you would expect on ARM, even if you utilize plugins and dependencies that don"t support the architecture yet. More than a year after initial announcement, ARM64EC is now fully supported on Windows 11.
For those unaware, the "EC" in the name is an abbreviation for "Emulation Compatible". The idea is to offer an application binary interface (ABI) which allows developers to build applications using both x64 and ARM code. What this means is that ARM code will run natively on a Windows 11 on ARM device while x64-specific code will run via emulation. This is a major milestone for Windows 11 on ARM as well since it is the only supported Microsoft OS to feature x64 emulation, which is the backbone of ARM64EC.
Microsoft noted that the ARM64EC ABI is different from the ARM64 ABI in the following way:
The ARM64EC ABI differs slightly from the existing ARM64 ABI in ways that make it binary compatible with x64 code. Specifically, the ARM64EC ABI follows x64 software conventions including calling convention, stack usage, and data alignment, making ARM64EC and x64 interoperable. Apps built as ARM64EC may contain x64 code but do not have to, since ARM64EC is its own complete, first-class ABI for Windows.
After spending over a year on development, Microsoft believes that the ABI is now stable enough to transition from its experimental phase and on to general release. This has happened with the availability of version 17.3 of ARM64EC.
ARM64EC brings major benefits for developers. Instead of following an all-or-nothing approach where they would have to make sure that their entire codebase is ARM-compatible, developers can now incrementally update their code, and have both x64 and ARM functionalities running simultaneously. Of course, on a Windows on ARM device, the latter will have better performance, so the idea is to continuously update the codebase to improve native ARM performance without losing any functionalities in the process.
Microsoft has noted that it is targeting performance improvements in subsequent releases of ARM64EC. You can find out more details about how to get started here.