Lua V5.5正式版发布, 更紧凑的数组存储,大型数组内存占用减少约60%

主要改进

https://www.lua.org/manual/5.5/readme.html#changes

1、全局变量声明
2、命名可变参数表
3、for循环变量改为只读属性
4、浮点数以十进制形式输出,确保精度可逆还原
5、构造函数支持更多层级
6、新增table.create函数
7、utf8.offset函数额外返回字符的终止位置
8、支持外部字符串(使用非Lua管理的内存)
9、新增luaL_openselectedlibs和luaL_makeseed函数
10、主垃圾回收采用增量式执行
11、更紧凑的数组存储(大型数组内存占用减少约60%)
12、lua.c动态加载readline库
13、静态(固定)二进制支持(加载内存中的二进制块时,Lua可在部分内部结构中复用原始内存)
14、dump与undump操作复用所有字符串
15、辅助缓冲区在生成最终字符串时复用缓冲空间

5.5手册
https://www.lua.org/manual/5.5/contents.html

5.5与之前版本不兼容的地方
1、语言中的不兼容性
(1)global 是保留字。请勿将其用作常规名称。
(2)for 循环中的控制变量为只读。如需修改,请在循环体中声明一个同名的局部变量。
(3)__call 元方法链最多只能包含 15 个对象。
(4)在错误处理中,nil 作为错误对象会被替换为字符串消息。

2、库中的不兼容性
(1)垃圾回收参数不再通过 "incremental" 和 "generational" 选项设置,而是新增了一个 "param" 选项。此外,参数本身也发生了一些变化。

3、API 中的不兼容性
(1)在 lua_call 及相关函数中,所需结果数量(nresults)的最大值为 250。若确实需要更大的值,请使用 LUA_MULTRET 并在之后调整栈大小。此前,此限制未作明确说明。
(2)lua_newstate 新增了第三个参数,作为字符串哈希计算的种子值。
(3)函数 lua_resetthread 已弃用;其功能等同于以 from 为 NULL 的 lua_closethread。
(4)函数 lua_setcstacklimit 已弃用。调用该函数的代码可直接移除。
(5)函数 lua_dump 修改了在调用写入函数时维护栈的方式(此前的版本未明确说明此行为)。此外,该函数会额外调用一次写入函数,以标识转储操作的结束。
(6)垃圾回收参数不再通过 LUA_GCINC 和 LUA_GCGEN 选项设置,而是新增了一个 LUA_GCPARAM 选项。此外,参数本身也发生了一些变化。
(7)函数 lua_pushvfstring 现在改为报告错误,而非引发错误。

相关推荐
tmax52HZ1 年前
redis分布式锁
redis·分布式锁·redisson·分布式缓存·超卖·lua脚本·缓存穿透、击穿、雪崩
七海健人2 年前
编码技巧——基于RedisTemplate的RedisClient实现、操作Lua脚本
springboot·redistemplate·lua脚本
陈建1112 年前
Redis核心技术与实战【学习笔记】 - 20.Redis原子操作及并发访问
redis·原子操作·lua脚本·redis 单指令