如何从Squeak环境运行外部代码?

dan*_*jar 2 programming-languages smalltalk interface

据我所知,Squeak环境与操作系统的其他部分完全隔离.但是,我正在寻找一种执行外部代码的方法,外部代码将使用不同的语言编写.我们需要这个连接到旧的代码库.

这可能吗?我有哪些选择?

Ber*_*erg 6

你基本上有3个选择:

  1. 编写一个插件:您可以使用包含称为"基元"的C函数的模块扩展Squeak VM,然后可以从Squeak代码中使用它.原语是Squeak代码与外界的接口(例如,用于访问文件或互联网或播放声音).您可以将插件与任何库链接,以便可以与任何具有C绑定的语言进行交互.
  2. 使用FFI:外部函数接口是从库中调用C函数的通用方法.这在多个平台上更难以正常工作,但是在构建插件时不需要C编译器,并且您不需要将插件分发给用户.
  3. 使用OSProcess:此包允许您调用外部可执行文件并通过stdin/stdout进行通信.

编写插件是最灵活和高性能的选择,但不是微不足道的.OSProcess最简单,FFI在中间.