目前的状态truffleruby
说:
TruffleRuby正在快速发展,但目前可能尚未准备好尝试运行完整的Ruby应用程序.缺少对OpenSSL和Nokogiri等关键C扩展的支持.
为什么truffleruby
需要C扩展?它建立在构建于JVM之上的GraalVM之上,它实际上是JRuby的一个分支:
TruffleRuby是JRuby的一个分支,它将它与Rubinius项目的代码结合在一起,并且还包含来自Ruby,MRI标准实现的代码.
难道他们不能使用JRuby世界宝石而不是依赖于他们的C变种吗?
编辑链接到github上的问题
运行C扩展很难,因为C扩展API只是作为头文件暴露的整个MRI内部.您没有针对干净的API编程 - 您正在针对MRI的所有实现细节和内部设计决策进行编程.
JRuby的Java扩展具有完全相同的问题!JRuby Java扩展API只是JRuby的整个内部结构,并且您不是针对API进行编程,而是针对JRuby的所有实现细节和设计决策进行编程.
我们计划最终以同样的方式解决这两个问题 - 即使用解释器在C或Java代码上添加另一个抽象级别,我们可以在需要时拦截和重定向,以便它认为它是针对MRI或JRuby内部运行的,但我们确实将这些重定向到我们的内部.
我们认为C扩展更重要,所以我们首先解决这些问题.我们还没有真正开始使用Java扩展,但是我们已经开始使用我们将使用的Java底层解释器.
这个视频解释了所有
https://youtu.be/YLtjkP9bD_U?t=1562