RubyInstaller-3.4.1-2 has been released! It features a brand-new package for Windows on ARM. See the ruby-3.4.0 release post and the RubyInstaller-CHANGELOG for more details.

Last November I started a fundraiser to purchase a new laptop with ARM processor, used to port and maintain the RubyInstaller for ARM. This fundraiser was successful and I started to work on the new port.

Now Ruby-3.4.1 is available as a ARM package, but not only that: Ruby-head is available here.

ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [aarch64-mingw-ucrt]
ruby 3.5.0dev (2025-01-19 master f27ed98eff) +PRISM [aarch64-mingw-ucrt]

The RubyInstaller-Devkit package consists of the LLVM based C and C++ compilers which run natively on ARM. This makes the package almost twice as big than the x64/x86 versions. In contrast the MSYS2 toolset, which provides Unix tools like make and bash, is not yet ported to ARM. It is delivered as x64 code, running on the Prism emulator of Windows-11. That’s why only the RubyInstaller version without Devkit will work on Windows-10.

The ARM version required some changes to the side-by-side DLL loading mechanism and it is solved in such a way, that also fixes a longstanding issue on x64/x86. Unfortunately these changes are too heavy to be backported to ruby-3.3 and older, so that no ARM package of these older ruby versions will be released.

Next steps to the ruby ecosystem will follow like adding aarch64-mingw-ucrt support to rake-compiler-dock. This way binary gems (nokogiri, sqlite3, etc.) can be provided for the new platform. Fixing issues of bundler and some other gems are in the works as well.

Please note, that some gems are not yet compatible with Ruby-3.4 on Windows on ARM. In this case you might use the Ruby-3.3 x64 version, which is well supported.

Beside the work on ARM there’s also some work pending to add RubyInstaller to the Microsoft Store. A first necessary change was made to the uninstaller. It now removes installed gems and MSYS2 per default. So be careful running the unins000.exe file in the ruby install directory! The old behavior can be get with the option /allfiles=no as described in the wiki.

As always: A previous RubyInstaller-3.3.x or 3.2.x installation should not be updated by installing RubyInstaller-3.4.x into the same directory. This is because gems with C extensions are not compatible between ruby-3.3 and 3.4. It’s best to use a new directory for 3.4.x as proposed by the installer.

All binaries are available in the Download section!

PS: I’ve got a Lenovo YOGA notebook with Snapdragon X processor and it has indeed impressive performance. It even outperforms my desktop computer when running compiler tasks. Windows runs fine including WSL2 but also Ubuntu is very usable already.