是否可以在没有任何插件的情况下将Squeak VM嵌入C中?

时间:2011-06-14 06:31:21

标签: dsl smalltalk embedding squeak

我想在C中使用Smalltalk作为嵌入式DSL引擎。不需要插件,整个自定义环境将由我制作。因此几乎将保留ObjectEngine。这可能吗?我正在尝试,但是任何帮助都将受到赞赏。

- 编辑 -

任何Smalltalk实现嵌入指南也将受到赞赏。 (除了GNU Smalltalk。因为它的许可......)

3 个答案:

答案 0 :(得分:1)

曾经有一个关于GSoC的提案但从未做过:

将Squeak打包为DLL

使用特定语言编写的库可用于其他语言的传统方法是将库打包为动态加载库或共享对象(此处为dll)。将该方法应用于Squeak既可以允许更广泛的受众使用Smalltalk代码,又可以为Squeak应用程序启用替代部署方法,从而简化为Apache,Web浏览器等系统创建Squeak插件的过程。人们可以采用两种不同的方法,其中一种可以称为被动或主动。在被动体系结构中,Squeak dll在从另一种语言调用之前处于非活动状态,并且仅在向调用者应答结果之前运行。在活动体系结构中,加载dll的行为会导致Squeak在其自己的线程上启动,并以集合形式接受来自其他线程的传入调用。被动方法更容易构建,但不太有用;一个人没有全套的Squeak设施,如轻量级工艺,延迟等。

该项目的目标是实施被动或主动方法,具体取决于学生的兴趣和能力。目标是使Squeak对用户和应用程序部署者更有用。要满足Smalltalk和C编码以及使用编写Squeak VM的Smalltalk-C混合语言Slang存在许多技术挑战。

学生的好处包括深入了解dll,与动态语言,外部函数接口和Squeak VM的接口。通过考虑被动和主动方法之间的许多权衡,学生也将获得对建筑问题的理解。

Squeak社区的好处是能够比以前更广泛地打包和部署Squeak应用程序。

答案 1 :(得分:1)

来自Object Arts的Dolphin Smalltalk可以部署为dll。但是你需要检查你的特定用例的许可证,它只是windows。

答案 2 :(得分:1)

Pharo / Squeak很难做到这一点:

  1. 对象引擎依赖于许多基元,因此需要存在许多插件。一段时间后,大多数插件无法静态编译。我不知道是否仍然如此?
  2. 构建整个自定义环境非常棘手,因为它很可能意味着删除现有图像。有各种项目尝试构建基础架构以引导新映像,但我还没有看到工作解决方案。
  3. Davorin写道,Dolphin Smalltalk可以部署为DLL。同样,这可以通过Cincom Smalltalk和Smalltalk / X实现。所有这些Smalltalk都是商业化的。

    总而言之,你可能最好看看已经多次在你的环境中应用的Lua或Python。