Swig Lua 草案 |
|
来自正在进行的工作的评论摘录
Lua 的一个座右铭是“机制,而不是策略”。事实上,Lua 没有预定义的对象模型。相反,它提供了一层薄薄的语法糖(: 和 self)以及一组强大的机制(环境、元表、闭包和协程),这些机制共同允许广泛的对象风格。
由于这是 Lua 的方式,我们必须在设计 SWIG/Lua 时遵循它。这意味着我们必须在 SWIG 和 Lua 之间提供一定程度的**灵活性**。另一方面,我们应该注意不要使 Lua 在其模块接口方面与其他 SWIG 目标语言有太大差异,这会降低可重用性。
SWIG 在灵活性方面确实提供了很多,但依赖于 SWIG 类型映射和指令技巧会使接口混乱。它还涉及编写一些 C 代码,而这通常不是 SWIG 和 Lua 用户感兴趣的!
这导致了在 Lua 本身中实现 Lua 侧包装细节的自然解决方案 [1]。
我们提供以下基本机制
阶段 1 和 2 很简单。阶段 3 和 4 依赖于**声明式**技术以实现清晰度和强大功能。
[1] 相比之下,SWIG/Lua 的当前官方实现使用了一种单一的任意对象方案,该方案在运行时 SWIG 库中的某个地方用 C 硬编码。是的,生成的模块仍然可以进行调整,但高级信息已经丢失,这是一种脆弱的方法。
欢迎评论。