Pluto 库

lua-users home
wiki

Pluto 是一个用于 Lua 的重量级持久化库。

(有关该库的改进版本,请参见: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 指针或需要以其他方式准备的情况。


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2013 年 9 月 23 日凌晨 4:37 GMT (差异)