深入探究 Rubinius:用 Ruby 实现的 Ruby
1. Rubinius 简介
Rubinius 是 Ruby 的一种替代实现,与 JRuby 类似。它的许多内部源代码是用 Ruby 编写的,而不是仅用 C 或 Java。Rubinius 像开发者一样使用 Ruby 代码实现内置类,如 Array
、 String
和 Integer
。这为学习 Ruby 内部机制提供了独特机会,无需特殊的 C 或 Java 编程知识,就能查看代码了解特定 Ruby 特性或方法的工作原理。
Rubinius 还包含一个用 C++ 编写的复杂虚拟机,该虚拟机执行 Ruby 程序,支持即时编译(JIT)和真正的并发,并使用复杂的垃圾回收算法。
2. Rubinius 的组成
Rubinius 主要由两部分组成:
- Rubinius 内核 :用 Ruby 编写,实现了很多语言特性,包括许多内置核心类的定义,如 String
和 Array
。它被编译成字节码指令并安装到计算机上。
- Rubinius 虚拟机 :用 C++ 编写,执行来自 Rubinius 内核的字节码指令,并执行一系列其他底层任务,如垃圾回收。Rubinius 可执行文件包含此虚拟机的编译机器语言版本。
使用两种语言实现 Ruby 的原因:
- C++ 加速了 Rubinius 程序,并允许它们在底层直接与操作系统交互。使用