From: eregontp@... Date: 2020-11-19T18:51:18+00:00 Subject: [ruby-core:100947] [Ruby master Bug#17021] "arm64" and "arm" are mixed in RbConfig on Apple silicon Issue #17021 has been updated by Eregon (Benoit Daloze). nobu (Nobuyoshi Nakada) wrote in #note-5: > First of all, `$host_cpu` and others are used only for cross-compilers and nonsense in the other cases. > Why do they matter? I think RbConfig `host_*` values should be correct no matter whether cross-compiling or not. Notably, `RbConfig::CONFIG["host_os"]` is well known as the portable way to get the OS. So it follows that `RbConfig::CONFIG["host_cpu"]` would be the portable way to get the processor architecture. Both are used here: https://github.com/ffi/ffi/blob/fbe2cf851f426cc55b3b76eca7b10e37aa220b47/lib/ffi/platform.rb Should another RbConfig::CONFIG key be used? Which one? ---------------------------------------- Bug #17021: "arm64" and "arm" are mixed in RbConfig on Apple silicon https://bugs.ruby-lang.org/issues/17021#change-88602 * Author: watson1978 (Shizuo Fujita) * Status: Open * Priority: Normal * ruby -v: ruby 2.8.0dev (2020-07-09T09:14:53Z master addbb7d16e) [arm64-darwin20] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- When I checked the value of `RbConfig::CONFIG` on the Apple silicon macOS,e I found "arm64" and "arm" are mixed as following. ``` $ ruby -v ruby 2.8.0dev (2020-07-09T09:14:53Z master addbb7d16e) [arm64-darwin20] $ ruby -e 'require "rbconfig"; pp RbConfig::CONFIG' | grep "arm" "/Users/watson/.rbenv/versions/2.8.0/include/ruby-2.8.0/vendor_ruby/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/include/ruby-2.8.0/site_ruby/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/include/ruby-2.8.0/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/vendor_ruby/2.8.0/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/site_ruby/2.8.0/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/2.8.0/arm64-darwin20", "sitearch"=>"arm64-darwin20", "arch"=>"arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/include/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/include/arm64-darwin20", "sitearchlibdir"=>"/Users/watson/.rbenv/versions/2.8.0/lib/arm64-darwin20", "archlibdir"=>"/Users/watson/.rbenv/versions/2.8.0/lib/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/arm64-darwin20", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/arm64-darwin20", "Target: arm64-apple-darwin20.0.0\n" + "target_cpu"=>"arm64", "target"=>"arm64-apple-darwin20", "host_cpu"=>"arm", "host"=>"arm-apple-darwin20.0.0", "build_cpu"=>"arm", "build"=>"arm-apple-darwin20.0.0", "/Users/watson/.rbenv/versions/2.8.0/lib/ruby/2.8.0/arm64-darwin20", "topdir"=>"/Users/watson/.rbenv/versions/2.8.0/lib/ruby/2.8.0/arm64-darwin20"} ``` "target_cpu" indicates "arm64", however, "host_cpu" has "arm"... I'd like to know whether this behavior is the right thing. -- https://bugs.ruby-lang.org/ Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>