Pluto Library |
|
(有关该库的改进版本,请参阅:TamedPluto;有关为Lua 5.2重写/移植的版本,请参阅:[Eris])
网站: http://luaforge.net/projects/pluto/ 。 (旧版本位于不同位置 [1]。)
描述: Pluto是一个库,它允许用户将“Lua宇宙”中任意大的部分写入一个扁平文件,然后将其读回同一个或不同的Lua宇宙中。对象引用会被妥善处理,因此文件包含重现这些对象所需的一切。
Pluto具有以下主要功能:
有关更多信息,请参阅README文件。
依赖: Pluto 2.0需要Lua 5.1。Pluto 1.2需要Lua 5.0.x,其中x为2或更高版本。如果您有Lua 5.0或Lua 5.0.1,您将需要应用官方Lua bug页面上列出的pc补丁,否则当未持久化的协程从函数返回时,您将收到`luaV_execute`中的断言。建议遇到困难的用户在编译debug模式时,将llimits.h中的`lua_assert`定义为一个有用的值,以捕获Pluto和Lua的断言。
联系方式: 请将您的问题、评论、bug报告、功能请求、死亡威胁和巧克力曲奇食谱发送至 mailto:sneftel.at.gmail.dot.com。
作者: BenSunshineHill
Pluto对于词法闭包的行为如何?
简而言之,正确。
是否持久化了词法作用域变量,变量与函数之间的关系是否也持久化了?
是的。
例如,多个函数可能访问同一个词法作用域变量。如果它们被持久化并恢复,它们是否仍然协同工作,访问同一个变量?
当然是的。
如果是,如何实现的?是否使用了debug接口?
它现在可以正确处理。这个改动相对简单。
哦,而且Pluto根本不使用debug接口(除非它竭力让debug接口保持正常)。相反,它直接操作内部结构。使用Pluto进行此操作的好处是,我已经完成了,所以您不必做。;)
userdata和lightuserdata怎么样?
这些可以被字面持久化,或者您可以提供persist/unpersist函数来处理例如userdata引用c-ptrs或需要其他准备的情况。