草庐IT

rubinius

全部标签

ruby - 一种语言如何被自身解释(如 Rubinius)?

我使用Ruby编程已经有一段时间了,现在只使用Ruby的标准MRI实现,但我一直对我经常听到的其他实现感到好奇。前几天我在读有关Rubinius的文章,这是一个用Ruby编写的Ruby解释器。我试着在不同的地方查找它,但我很难弄清楚这样的东西到底是如何工作的。我在编译器或语言编写方面从来没有太多经验,但我真的很想弄明白。一门语言究竟如何才能被自己解释?编译中是否有一个我不明白这有意义的基本步骤?有人可以像我是个白痴一样向我解释这个吗(因为无论如何这都不会太离谱) 最佳答案 它比你想象的要简单。Rubinius并非100%用Ruby编

ruby - 为什么尾递归 gcd 比 rubinius 的 while 循环更快

我有这两个gcd函数的实现:defgcd1(a,b)ifa==baelsifa>bif(a%b)==0belsegcd1(a%b,b)endelseif(b%a)==0aelsegcd1(a,b%a)endendenddefgcd2(a,b)if(a==b)returnaelsifb>amin,max=a,belsemin,max=b,aendwhile(max%min)!=0min,max=max%min,minendminend函数gcd1是尾递归的,而gcd2使用while循环。我已经验证rubinius通过对阶乘函数进行基准测试来执行TCO,只有阶乘函数基准测试显示递归版本和迭

ruby - 你期待哪个 ruby​​ 解释器?

目前有多个Ruby实现正在开发中。你期待哪个?为什么?您是否在生产中积极使用非MRI实现?一些选项包括:RubyMRI(original1.8branch)YARV(official1.9)JRubyRubiniusIronRuby-Ironruby.netMagLev(感谢Julian)GithublinkMacRuby(感谢DamienPollet) 最佳答案 Maglev.它将拥有多年来已进入主要SmalltalkVM的所有优化的速度优势。此外,它会几乎自动地自动保留所有数据,因此不再需要使用对象关系映射层等。

ruby - 使用rubinius有什么优势

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。你能给我一些值得使用rubinius的例子吗,比如这篇文章:http://yehudakatz.com/2009/08/31/simplifying-rails-block-helpers-with-a-side-of-rubinius/

ruby - 您如何为该语言编写编译器?

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:Howcanalanguage'scompilerbewritteninthatlanguage?implementingacompilerin“itself”我在看Rubinius,一个使用用Ruby编写的编译器编译为字节码的Ruby实现。我无法理解这个。您如何为语言本身编写编译器?看起来它只是文本,没有任何东西可以将其编译成可执行文件,然后可以编译future用Ruby编写的代码。我只是输入那句话感到困惑。谁能帮忙解释一下?

ruby - RUBY_ENGINE 的哪些值对应于哪些 Ruby 实现?

我所知道的在运行时检测Ruby实现(例如MRI、JRuby、Rubinius等)的方法是检查全局常量RUBY_ENGINE:$ruby-e'putsRUBY_ENGINE'ruby什么是已知Ruby实现及其对应的RUBY_ENGINE值的合理全面列表? 最佳答案 这是我目前发现的:|RUBY_ENGINE|Implementation||:-----------:|:------------------|||MRI=1.9orREE||'jruby'|JRuby||'macruby'|MacRuby||'rbx'|Rubinius|

ruby - Rubinus 或 MRI 1.9.3 (YARV)?

所以,我有几个问题想问,我确实浏览了互联网,但没有太多可靠的答案。大多数博客文章会相互抵消,因为它们都赞扬不同的事物并且有基准来“证明他们的观点”(我一生中从未见过如此多的矛盾基准).无论如何,我的问题是:Rubinius真的更快吗?我对这个看似诚实的人印象深刻pro-Rubiniuspresentation.另一件让我有点困惑的事情是很多Rubinius是用Ruby本身编写的,但不知何故它比C-Ruby更快?那么,这一定是该语言的非常好的实现!EventMachine可以与Ruinius一起使用吗?据我所知,EventMachine部分依赖于Fiber(如果我错了请纠正),直到1.9

ruby - Rubinius:如何以官方方式生成枚举器?

我有这个简单的代码来生成惰性数组:lazy_arr=Enumerator.new{|y|i=1loop{y在官方Ruby1.9.3中,输出是[1,2,3,4,5],这就是我想要的。但是在Rubinius中,它报错并告诉我找不到Enumerator常量。于是查了一下,发现Enumerator定义在Enumerable模块中,而不是kernel中,生成的时候需要括号中的几个参数:http://rubydoc.info/github/evanphx/rubinius/master/Enumerable/Enumerator我尝试将Enumerator.new更改为Enumerable::En

ruby - Rubinius 中的 mixins 在哪里实现?

Rubinius源代码中负责包含模块的代码在哪里?(具体来说,将模块作为对象类的父类(superclass)放置。) 最佳答案 如果您查看Module#include的文档,你会发现它委托(delegate)给Module#append_features:InvokesModule.append_featuresoneachparameterinreverseorder.Module#append_features的文档反过来,(非常简短地)描述了默认的Rubymixin算法是如何工作的:Whenthismoduleisinclud

ruby - Rubinius 和 JRuby 怎么可能这么慢?

我决定看看遍历一个哈希数组需要多长时间。下面是代码:pairs=[{name:"firstname",value:"string"},{name:"lastname",value:"string"},{name:"country",value:"string"},{name:"city",value:"string"},{name:"state",value:"string"},{name:"company",value:"string"},{name:"year",value:"string"},{name:"political_affiliation",value:"string"
12