Ruby VM 是否定义了在其上运行的文件格式?
Does the Ruby VM define the file format that runs on it?
就像在 JVM 上运行的“.class”文件一样,Ruby VM(MRI 或 YARV)是否定义了在其上运行的文件格式?
我在一些文章中读到 YARV 字节码被认为是一种内部格式,这意味着关于它的文档或规范很少,是这样吗?
谢谢!
tl;dr 不,ruby 没有定义除语言本身之外的 运行 可用格式。
确实 ruby 没有像 java、etherium 和其他格式那样的标准字节码格式。每个 ruby 实现 JRuby、MRI Ruby、TruffleRuby 等都可以决定它们 运行 ruby 代码的精确程度。
Ruby实现可以选择实现自己的字节码格式。这些格式可能是 ruby 实现的私有格式,不太可能在该生态系统之外看到。 (然而,正如我们看到的那样,随着语言的出现,run on the JVM 如果其他人愿意,他们可以使用你的语言的虚拟机)
在 java 字节码 JVM jruby, to introduce a compilation step to produce native machine code ruby-llvm, or even to sometimes produce native machine code at runtime with a JIT and sometimes use a more traditional interpreter MRI Ruby.
上,ruby 在 JVM 运行 内对 运行 的实现是完全有效的
就像在 JVM 上运行的“.class”文件一样,Ruby VM(MRI 或 YARV)是否定义了在其上运行的文件格式? 我在一些文章中读到 YARV 字节码被认为是一种内部格式,这意味着关于它的文档或规范很少,是这样吗? 谢谢!
tl;dr 不,ruby 没有定义除语言本身之外的 运行 可用格式。
确实 ruby 没有像 java、etherium 和其他格式那样的标准字节码格式。每个 ruby 实现 JRuby、MRI Ruby、TruffleRuby 等都可以决定它们 运行 ruby 代码的精确程度。
Ruby实现可以选择实现自己的字节码格式。这些格式可能是 ruby 实现的私有格式,不太可能在该生态系统之外看到。 (然而,正如我们看到的那样,随着语言的出现,run on the JVM 如果其他人愿意,他们可以使用你的语言的虚拟机)
在 java 字节码 JVM jruby, to introduce a compilation step to produce native machine code ruby-llvm, or even to sometimes produce native machine code at runtime with a JIT and sometimes use a more traditional interpreter MRI Ruby.
上,ruby 在 JVM 运行 内对 运行 的实现是完全有效的