Pharo 4 FFI目前的状态和未来

时间:2015-05-19 10:00:23

标签: ffi pharo

我想知道Pharo 4支持哪些FFI接口和功能,推荐使用哪些接口(如果有的话),以及未来Pharo版本是否计划进行一些重大更改。

特别是我想知道哪种稳定的FFI回调机制可用,它的限制和局限是什么。

1 个答案:

答案 0 :(得分:2)

抱歉这么久。

目前,在Pharo你有两种可能性(和三个包 - 项目 - 解决它们)。

  • 在Pharo 4中开箱即用,你有NativeBoost-FFI,它使用ASMJIT作为后端来生成本机调用。这意味着超级快速调用,但没有那么快的回调(因为它使用了一些硬技巧来使VM正常回调)。 您可以在源代码周围找到它的示例,您可以专门查看NBBasicExamples类。

  • 您还有FFI插件,它实现了更传统的方法。你必须打包处理这个:

    • FFI,使用编译指示实现标注(无回调)。您可以从配置浏览器安装它,它附带一组示例。
    • AlienFFI,另一个处理相同库FFI句柄的包,但是实现了一种更“异类”的方法(每个函数都是一个对象,而不是一个方法)。这可以正确实现回调并具有良好的性能。 安装有点棘手,因为它尚未在Pharo 4中进行测试(因此它不在配置浏览器中),但它应该加载正常。 你可以在这里找到它:http://catalog.pharo.org,以及如何安装它的说明(名称是OldAlien,因为历史原因)。

所有这些都非常稳定,但我们会在不久的将来做一些改变:

我们将为NativeBoost-FFI添加后端以使用FFI插件。原因是我们难以维护当前版本,事实上我们可以找到更多愿意在C中工作的维护人员而不是ASM:)

此更改应向后兼容,以便您可以安全地使用NativeBoost。

希望此信息适合您。