Microsoft has released its first Dev Channel Build of Windows 11, Build 22000.51 today and unlike the leaked build of Windows 11 this new build supports Arm-powered PCs like Surface Pro X, Galaxy Book Go and others. Along with the new Windows 11 on Arm build, Microsoft is announcing ARM64EC to make developing for Windows 11 on Arm easier.
So, what is ARM64EC anyway? “ARM64EC is a new application binary interface (ABI) for Windows 11 on ARM that runs with native speed and is interoperable with x64. An app, process, or even a module can freely mix and match ARM64EC and x64 as needed. The ARM64EC code in the app will run natively while any x64 code will run using Windows 11 on ARM’s built-in emulation.”
Wasn’t there something like this for Windows 10 on Arm? “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.”
In the past, rebuilding an app for ARM has meant recompiling the entire app and the result is a great native experience for customers that unlocks the full power of their Arm PC. From a developer perspective, porting an app can be what Microsoft calls “all-or-nothing, since all the binaries within a process need to be rebuilt before a customer can see the benefit.”
Microsoft says with “ARM64EC, you can choose to start small and build incrementally. You can identify a part of your codebase that would benefit most from native performance and rebuild it as ARM64EC. The rest of the app will remain fully functional as emulated x64, but the recompiled ARM64EC parts will now have native speed. Over time, you can recompile more of the app as ARM64EC to further improve performance and conserve battery life for your app’s customers.”
Developers will be able to mix and match x64 and ARM64EC, making it possible to build an app for Windows 11 on ARM even if it depends on x64 code outside of the developer’s control. “Projects with third-party dependencies that don’t support ARM can leave them as x64.”
“Apps with an in-proc plugin ecosystem can build as ARM64EC to get native speed, while continuing to load and use x64 plugins.”
Internally, Microsoft rebuilt the binaries of the Windows 11 on ARM operating system itself with ARM64EC so that any system code loaded by x64 apps runs with native speed. In addition, the Office team is using ARM64EC in the coming 64-bit Office for ARM so that existing x64 plugins will work seamlessly.