与MRI相比,mruby的主要遗漏是什么?
我对这个项目很感兴趣,但与其他更完整的Ruby实现(最重要的是MRI)相比,我没有幸运地找到mruby中主要遗漏的总结 该项目中的自述文件说mruby实现了Ruby的“部分”,但没有详细说明省略了哪些功能与MRI相比,mruby的主要遗漏是什么?,ruby,mruby,Ruby,Mruby,我对这个项目很感兴趣,但与其他更完整的Ruby实现(最重要的是MRI)相比,我没有幸运地找到mruby中主要遗漏的总结 该项目中的自述文件说mruby实现了Ruby的“部分”,但没有详细说明省略了哪些功能 是否有人知道此类遗漏的列表,或者是否有人对实现足够熟悉以进行总结 因此,我没有仔细阅读源代码,但在构建了mruby并运行了一点解释器之后,我发现缺少了以下内容(这绝对不是一个完整的列表,我也不知道这些内容是故意遗漏还是尚未编写): 背虱 eval String#scan (实例|模块|类)_
是否有人知道此类遗漏的列表,或者是否有人对实现足够熟悉以进行总结 因此,我没有仔细阅读源代码,但在构建了mruby并运行了一点解释器之后,我发现缺少了以下内容(这绝对不是一个完整的列表,我也不知道这些内容是故意遗漏还是尚未编写):
- 背虱
eval
String#scan
带有(实例|模块|类)_eval
参数字符串
Module.constants
Regexp
过程
Bignum
、IO
和文件
Dir
编码
和线程
互斥体
Marshal
如果有人有一个更完整的列表,或者知道关于这些位是尚未实现还是故意省略的详细信息,我仍然很想知道。看看所谓的mrbgems()。您缺少的一些功能(即RegExp、eval、File)可以作为额外的GEM提供。我只是用mruby运行了简单的代码剪辑,并从MRI获得了不同的结果
class Fixnum
def +(b)
self * b
end
end
puts 3+4
mruby输出7,而MRI输出12Ruby MRI和mruby之间的部分但最新的差异列表可在中找到 截至2020年3月,以下是列出的差异:
给出了1/2
,因为mruby不支持BignumFloat(0.5)
- 将数组传递给
会产生不同的输出puts
不带参数不会在rescue子句中引发当前异常Kernel.raise
- 光纤执行无法跨越C函数边界
不支持实例变量数组
- 不支持方法可见性(
/public
/private
)protected
缺失已定义?
- 全局变量的别名在CRuby中有效,但不是ISO标准的一部分
- 操作员不能被用户覆盖
- 不支持内核绑定
- 关键字参数splat(
)的解析方式不同def foo(a,b,**k)
- 参数不能默认为其他析构函数参数(
无效)def foo(a,(b,c),d=b)
- 在条件表达式中忽略对
方法的任何重新定义nil?