我想使用 Smalltalk 作为 C 中的嵌入式 DSL 引擎。不需要插件,整个自定义环境将由我制作。所以几乎 ObjectEngine 将被保留。这可能吗?我目前正在尝试,但是任何帮助将不胜感激。
- 编辑 -
任何 Smalltalk 实现嵌入指南也将不胜感激。(除了 GNU Smalltalk。因为它的许可证......)
曾经有过关于 GSoC 的提案,但从未做过:
将 Squeak 打包为 DLL
使以特定语言编写的库可用于其他语言的传统方法是将库打包为动态加载库或共享对象(从这里开始的 dll)。将这种方法应用于 Squeak 将允许更广泛的受众使用 Smalltalk 代码,并为 Squeak 应用程序启用替代部署方法,从而简化为 Apache、Web 浏览器等系统创建 Squeak 插件。人们可以采取两种不同的方法,可以称为被动或主动。在被动架构中,Squeak dll 在从另一种语言调用之前处于非活动状态,并且仅在调用者响应结果之前运行。在活动架构中,加载 dll 的行为会导致 Squeak 在自己的线程上启动,并以集合的形式接受来自其他线程的传入调用。被动方法更容易构建,但用处不大;一个没有全套 Squeak 设施,例如轻量级流程、延迟等。
该项目的目标是实施被动或主动方法,具体取决于学生的兴趣和能力。目标是让 Squeak 对用户和应用程序部署者等更广泛有用。有许多技术挑战需要解决,这将涉及 Smalltalk 和 C 编码以及使用编写 Squeak VM 的 Smalltalk-C 混合语言俚语。
对学生的好处包括深入了解 dll、与动态语言的接口、外部函数接口和 Squeak VM。通过考虑被动和主动方法之间的许多权衡,学生还将获得对架构问题的理解。
Squeak 社区的好处在于能够比以前更广泛地打包和部署 Squeak 应用程序。
Object Arts 的 Dolphin Smalltalk 可以部署为 dll。但是您需要检查您的特定用例的许可证,并且它仅适用于 Windows。
这对 Pharo/Squeak 来说是一件困难的事情:
正如 Davorin 所写,Dolphin Smalltalk 可以部署为 DLL。同样,这对于 Cincom Smalltalk 和 Smalltalk/X 也是可能的。不过,所有这些 Smalltalk 都是商业的。
总而言之,您最好查看已经在您的上下文中多次应用的 Lua 或 Python。