Current status of truffleruby
says :
TruffleRuby is progressing fast but is currently probably not ready for you to try running your full Ruby application on. Support for critical C extensions such as OpenSSL and Nokogiri is missing.
为什么 truffleruby
需要 C 扩展?它建立在 GraalVM 之上,GraalVM 建立在 JVM 之上,it is in fact a fork of JRuby :
TruffleRuby is a fork of JRuby, combining it with code from the Rubinius project, and also containing code from the standard implementation of Ruby, MRI.
他们不能使用 JRuby world gems 而不是依赖于他们的 C 变体吗?
编辑链接到issue on github
最佳答案
运行 C 扩展很困难,因为 C 扩展 API 只是作为头文件公开的 MRI 的整个内部结构。您不是针对干净的 API 进行编程 - 您是针对 MRI 的所有实现细节和内部设计决策进行编程。
JRuby 的 Java 扩展有完全相同的问题! JRuby Java 扩展 API 只是 JRuby 的全部内部结构,您不是针对 API 进行编程,而是针对 JRuby 的所有实现细节和设计决策进行编程。
我们计划最终以相同的方式解决这两个问题 - 即使用解释器在 C 或 Java 代码上添加另一个抽象级别或 JRuby 内部,但实际上我们将这些重定向到我们的内部。
我们认为 C 扩展更重要,所以我们首先处理这些。我们还没有真正开始 Java 扩展,但我们已经开始了我们将使用的 Java 的底层解释器。
这个视频解释了一切
关于ruby - 为什么 truffleruby 需要 C 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779349/