rubinius在RubySL中

时间:2015-03-08 19:20:40

标签: ruby rubinius

我从用户级别使用Ruby,并且真的不处理内部。我知道Rubinius是“Ruby in Ruby”,我认为这是一种概括。最近,我在RubySL中遇到了Rubinius的错误(不,我没有错误消息)。

我开始关注RubySL,看到Rubinius到处都有点惊讶。我真的很喜欢Ruby,只是好奇为什么Rubinius在大多数RubySL中?它似乎与锁定/解锁(如https://github.com/rubysl/rubysl-thread/blob/2.0/lib/rubysl/thread/thread.rb)之类的东西一起使用。绝对不会质疑它,只是好奇。

1 个答案:

答案 0 :(得分:3)

RubySL是Ruby标准库的缩写。它是已发布的代码包的基本部分,它形成了通常称为Ruby的东西。标准库提供了您经常需要的基本内容,但并不需要成为核心语言的一部分。

例如,Hash或Array的实现,语言关键字,赋值如何工作,......是核心语言的一部分。这些通常用Ruby以外的语言实现。 MRI(常见的C-Ruby)主要在C中实现,JRuby在Java中实现它。 Rubinius在C ++中实现了这种方式,但主要是在Ruby本身。它可以通过从一个非常简单的基础VM引导自己并逐渐添加更多东西来实现这一点。

然而,标准库主要在所有实现中都在Ruby中实现(出于性能原因,一些例外)。现在,所有Ruby实现现在都有自己的Ruby标准库实现,因此可以在细节方面有所不同。

Rubinius的'实施标准库的方法是将其作为单独的宝石实现。这个想法有一天提供了一个可以被其他实现(包括MRI)使用的通用标准库。这符合esp的努力。 Rubinius社区推动RubySpec项目,以便为所有Ruby实现提供通用语言规范和测试套件。

RubySpec项目最终被放弃了,而且现在似乎没有其他Ruby实现似乎转向使用RubySL gems来实现他们的标准库。

因此,(这是 TL; DR ),RubySL gems为Rubinius项目实现了Ruby标准库。因此,预计会在那里看到Rubinius项目:它们的代码通常不被其他Ruby实现使用。