红宝石中ffi和mri c扩展之间的权衡是什么?

jsh*_*hen 4 ruby ffi

红宝石中ffi和mri c扩展之间的权衡是什么?

Jör*_*tag 5

一个显而易见的权衡是MRI C扩展仅适用于MRI,而FFI扩展目前适用于MRI,YARV,Rubinius和JRuby,并且将来可能也适用于IronRuby,MagLev,MacRuby,SmallRuby,tinyrb和RubyGoLightly.

  • @jshen:你失去的主要是解释器和扩展之间没有边界.MRI C扩展可以访问和操作解释器的私有内部存储器的每个字节.这是不可能的FFI,a)因为API不支持它和b)因为很明显JRuby的私有内部数据结构与MRI有很大的不同,所以无论如何它都不可能工作.请注意,这实际上是一件好事:这种紧密耦合实际上是更快的MRI的最大障碍,因为即使是最微小的变化也会破坏许多MRI出口. (2认同)