Finally, it's done! #rust officially supports #arm64ec https://github.com/rust-lang/rust/pull/123144

Of course there's still more work to do - file an MCP to promote to tier 2, add tests to various dependencies...

#RustLang #Windows

Add support for Arm64EC to the Standard Library by dpaoliello · Pull Request #123144 · rust-lang/rust

Adds the final pieces so that the standard library can be built for arm64ec-pc-windows-msvc (initially added in #119199) Bumps windows-sys to 0.56.0, which adds support for Arm64EC. Correctly set ...

GitHub
@TehPenguin @yosh I love that support was added but I’m sad the target doesn’t begin with the CPU instruction set, unlike literally every other target. Yes I know it’s what Microsoft calls it, but I’d still have preferred aarch64-pc-windows-arm64ec. The new arm64e target for Mac also offends my delicate sensibilities.

@thejpster @yosh except that Arm64EC doesn't just use the AArch64 instruction set. Yes, that's what LLVM generates for it, but a single Arm64EC binary can contain a mixture of (modified) AArch64 and x64. It'd also be legit for LLVM to produce only x64 and then have the linker link that as Arm64EC (such that it wouldn't run on x64 Windows).

Arm64EC is... weird. I've tried my best to provide guidance on how to think about it: https://doc.rust-lang.org/nightly/rustc/platform-support/arm64ec-pc-windows-msvc.html#reusing-code-from-other-architectures---x86_64-or-aarch64

arm64ec-pc-windows-msvc - The rustc book

@TehPenguin @yosh naming things is the hardest problem in computer science after all

@thejpster @yosh just to confuse things more, there's also Arm64X, which is where you mush AArch64 and Arm64EC into a single binary: https://learn.microsoft.com/en-us/windows/arm/arm64x-pe

It also has my favorite diagram from any Microsoft tech docs:

Arm64X PE Files

Arm64X are a type of PE file in the Windows 11 SDK used for x64 compatibility on Arm64. Arm64X may be a good solution for developers of middleware or plugins, where code could get loaded into x64 or Arm64 processes.