You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ARM64EC is an ABI with "emulation compatible" ARM64 code, which can not be executed on a real AMD or Intel CPU. ARM64X is native ARM64 code (which is very similar to the ARM64 Linux ABI) and "emulation compatible" ARM64 code combined into one DLL or EXE file. Neither of them can be executed on a AMD or Intel CPU. It makes most sense for system DLLs on Windows on ARM.
Does it make sense to support ARM64EC or ARM64X in RubyInstaller?
The text was updated successfully, but these errors were encountered:
IMHO from a RubyInstaller perspective neither ARM64EC nor ARM64X make much sense to support:
ARM64EC would allow to run ruby and C extensions at almost native speed and still load emulated x64 DLLs into the same ruby process. But it can not load native ARM64 DLLs into the process. In the benchmarks which I executed, the emulated ruby had roughly 80% of the speed of the native ARM64 version. So the emulation runs x64-ruby very well. When the use case requires to run x64 DLLs into the ruby process, than it's best to use the emulated x64 RubyInstaller. If native ARM64 DLLs shall be loaded then the RubyInstaller ARM64 version can be used. It's not possible to mix x64 and native ARM64 into one process.
ARM64X could make sense for the libruby DLL. It would allow to embed ruby into an native ARM64 process as well as into an emulated x64 process. But embedded ruby is not a use case for RubyInstaller. If someone want's to embed ruby, he can compile libruby on its own for the desired architecture/ABI.
So far there is no MSYS2 platform for ARM64EC or ARM64X, but only clangarm64 which contains native ARM64 code. So there's no runtime environment we can use for building and for the Devkit version: https://www.msys2.org/docs/environments/
They are described in https://learn.microsoft.com/en-us/windows/arm/arm64ec and https://learn.microsoft.com/en-us/windows/arm/arm64x-pe . More in-depth descriptions are available here: http://www.emulators.com/docs/abc_arm64ec_explained.htm
ARM64EC
is an ABI with "emulation compatible" ARM64 code, which can not be executed on a real AMD or Intel CPU.ARM64X
is native ARM64 code (which is very similar to the ARM64 Linux ABI) and "emulation compatible" ARM64 code combined into one DLL or EXE file. Neither of them can be executed on a AMD or Intel CPU. It makes most sense for system DLLs on Windows on ARM.Does it make sense to support ARM64EC or ARM64X in RubyInstaller?
The text was updated successfully, but these errors were encountered: