« 在 C 中设置 Lua 回调函数引起的一处 bug | 返回首页 | 开发笔记(22) : 背包系统 »

Lua 5.2.1 的一处改变

Lua 5.2.1 正式发布有段时间了。虽然相对于 5.2.0 只是一个小版本的提升,但也是有些东西可以拿出来讲讲的。

比如,在这次小版本更新中,字符串类型被分为了长字符串和短字符串两类。长字符串(大于 40 字节的字符串),不再做内部化处理了。

一开始我以为这是为了性能的一处小改进,可以在字符串处理比较多的场合,少做一些 hash 计算和 hash 表插入。后来查了一下邮件列表发现,其实是为了安全性,防止别人做 hash dos 攻击。一起改变的是字符串的 hash 过程使用了一个随机种子。默认设定和时间有关。值得注意的是,这处改变可能会使得嵌入 lua 的程序每次运行的内存状态不一致,有可能给调试带来一定的麻烦。

今天的源码阅读收获,我已经记录在我那本想慢慢完成的书,《Lua 源码欣赏》中了。以前写过两章中断了。这几天新写的两章在这里 。因为想在最后再综合整理,所以就独立输出 pdf 了。

Comments

希望能云风能有时间把书写快点.

支持,希望快点出来啊,期待!!

看过第一本书,支持新书

支持新书,期待出版之日快些来临!

支持了,国内讲lua的书至今还是少之又少

支持出新书 还是与Lua相关的

Post a comment

非这个主题相关的留言请到:留言本