将 Pharo 编译为 C?

Compiling Pharo to C?

据说 Pharo 的 VM (CogVM) 是在 Smalltalk 中开发、测试、分析等,但随后 Smalltalk 代码被转编译为 C,然后与一些 OS 抽象 C 一起编译使用默认系统 C 编译器的代码。

好吧,我想做类似的事情,我不想使用 Pharo 开发、测试和分析代码,而是将其编译为 C。我该怎么做? C 的编译如何工作? Pharo 是否带有 Smalltalk to C 转译器?我怎样才能调用它?它编译完整的 Smalltalk,还是我必须使用某种 Smalltalk 子集?有什么好的文档吗?

Pharo VM 是 hosted on github。 按照步骤构建它,您将获得一个名为“generator.image”的 Smalltalk 图像,您可以 运行(它是一个常规图像)。在该图像中,您会找到 VMMaker 包,它负责从用于此目的的特殊 Smalltalk 方言(称为 Slang;它是 Smalltalk 的子集)生成 C 代码。查看生成器图像中的代码,了解它的作用。首次打开图像时打开的工作区中还包含一些信息。

一旦你有了 C 源代码,它基本上就是直接的 C 编译(我们用 Cmake + gcc / clang 来做)。

至于文档:您可能应该阅读 Blue Book

澄清

正如@Leandro Caniglia 在评论中指出的那样,俚语的目的是为 VM 生成 C 源代码。它旨在简化到 C 的翻译。 并不 意味着:

  • 可以使用生成机制将任意 Smalltalk 代码翻译成 C
  • 可以用俚语重写任意 Smalltalk 代码(至少不是“容易”)