Pharo 4 FFI 现状和未来

Pharo 4 FFI current state and the future

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

特别想知道有哪些稳定的FFI回调机制,其限制和限制是什么

抱歉拖了这么久。

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

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

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

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

他们都很稳定,但我们会在不久的将来做一些改变:

我们将为 NativeBoost-FFI 添加一个后端以使用 FFI 插件。原因是我们很难维护当前版本,而且我们可以找到比 ASM 更愿意在 C 中工作的维护者 :)

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

希望此信息对您有用。