The open source Wine project (sometimes stylized WINE, for Wine Is Not an Emulator) has become an important tool for companies and individuals looking to run Windows apps and games on operating systems like Linux or even macOS. The CrossOver software for Mac and Windows, Apple's Game Porting Toolkit, and the Proton project that powers Valve's SteamOS and Steam Deck are all rooted in Wine, and the attention and resources put into the project in recent years have made compatibility and usability improved dramatically. .
Yesterday, the Wine Project announced the stable release of version 10.0, the next major version of the compatibility layer that isn't an emulator. The headliner of this release is support for ARM64EC, the binary application interface (ABI) used for Arm apps in Windows 11, but the release notes state that the release contains “over 6,000 individual changes” that have been produced during “one year of development efforts”.
ARM64EC allows developers to combine Arm and x86 compatible code. If you create an Arm-native version of your app, you can still allow the use of more obscure x86-based plugins or add-ons without having to port everything over once. Wine 10.0 also supports ARM64X, another type of application binary that allowed ARM64EC code to be mixed with older, pre-Windows 11 ARM64 code.
Wine's ARM64EC support has one limitation that prevents it from working on some prominent Arm Linux distributions, at least by default: the release notes say it “requires the system page size to be 4K, since that's what the Windows ABI specifies.” ” Several prominent Linux-on-Arm distributions use a page size of 16K by default because it can improve performance. If the page size is smaller, you'll need more, and managing a larger number of pages can incur additional CPU overhead.
Asahi Linux, the Fedora-based distribution working to bring Linux to Apple Silicon Macs, uses 16K pages because that's the only thing Apple's processors support. Some versions of the Raspberry Pi operating system also have a default page size of 16K, although it is possible to switch to 4K for compatibility reasons. Considering that the Raspberry Pi and Asahi Linux are two of the largest Linux-on-Arm projects going on right now, that at least somewhat limits the appeal of ARM64EC support in Wine. But as we've seen with Proton and other successful Wine-based compatibility layers, laying the groundwork now can pay big dividends.