> somehow, the Ruby community [...] think it's acceptable to have a standard implementation that does neither AOT nor JIT native code compilation
Ruby have YJIT, which is a production ready JIT compiler that generates native machine code. But it requires enabling via flag "--yjit" rather than running by default.
Why? I think it's primarily to avoid build time dependencies on Rust and prevent unexpected overhead for users. This keeps binary light and avoids forcing Rust installation on users, especially for those who run interpreter only, where YJIT adds no value.
Note that including YJIT also bloat binaries by 5 to 10MB (Rust static lib + code cache structures) for source builds and complicates cross compilation since Rust targets vary by architecture (focus x86-64 and arm64, not all platforms).
Also, Rails 7.1+ enables YJIT by default, so JIT (to native code) in Ruby is being utilized when actually needed.