Lua 5.2.1 正式发布有段时间了。虽然相对于 5.2.0 只是一个小版本的提升,但也是有些东西可以拿出来讲讲的。
比如,在这次小版本更新中,字符串类型被分为了长字符串和短字符串两类。长字符串(大于 40 字节的字符串),不再做内部化处理了。
一开始我以为这是为了性能的一处小改进,可以在字符串处理比较多的场合,少做一些 hash 计算和 hash 表插入。后来查了一下邮件列表发现,其实是为了安全性,防止别人做 hash dos 攻击。一起改变的是字符串的 hash 过程使用了一个随机种子。默认设定和时间有关。值得注意的是,这处改变可能会使得嵌入 lua 的程序每次运行的内存状态不一致,有可能给调试带来一定的麻烦。
今天的源码阅读收获,我已经记录在我那本想慢慢完成的书,《Lua 源码欣赏》中了。以前写过两章中断了。这几天新写的两章在这里 。因为想在最后再综合整理,所以就独立输出 pdf 了。
希望能云风能有时间把书写快点.
为了验证您是人类,请将六加一的结果(阿拉伯数字七)填写在下面: