Pluto 库 |
|
(有关该库的改进版本,请参见: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 错误页面中列出的 pc 修补程序,否则在未持久化线程从函数返回时,您将在 luaV_execute
中收到断言。遇到困难的用户强烈建议在调试模式下编译时将 lua_assert
在 llimits.h 中定义为有用的内容,以捕获 Pluto 和 Lua 的断言。
联系方式: 请将问题、评论、错误报告、功能请求、死亡威胁和巧克力曲奇食谱发送至 mailto:sneftel.at.gmail.dot.com。
作者: BenSunshineHill
Pluto 对词法闭包的行为是什么?
简而言之,正确。
词法作用域变量是否被持久化,变量和函数之间的关系是否也持久化?
是的。
例如,多个函数可以访问同一个词法作用域变量。如果它们被持久化并恢复,它们是否仍然可以一起工作,在同一个变量上?
当然可以。
如果是,怎么做到的?是否使用了调试接口?
它现在对它们进行了正确的处理。更改相对简单。
哦,Pluto 根本不使用调试接口(除了它尽力让调试接口保持正常运行之外)。相反,它直接操作内部机制。使用 Pluto 进行此操作的好处在于我已经完成了,所以您不必再做。;)
userdata 和 lightuserdata 怎么样?
这些可以被直接持久化,或者你可以提供持久化/反持久化函数来处理例如 userdata 引用 c 指针或需要以其他方式准备的情况。