Lua 5.5.0 首个 Beta 版本发布
Lua 5.5.0 Beta 版本已发布。Lua 官方尚未公布 5.5.0 的正式变更日志(beta 版也还没给出完整清单)。
不过根据开发邮件列表与源码仓库的 commit 历史,已合并或高度确认的新特性主要包括以下几点(在 beta → final 过程中仍可能被调整或删除):
-
新运算/表达式
•//
整数除法运算符:向下取整的除法,结果总是整数。
•|>
管道运算符:左侧表达式的结果作为右侧函数的第一个实参。
• 模式匹配表达式match … with …
(仍处于实验开关下,默认关闭)。 -
语言级变更
• 允许在表构造里写x=
作为[ "x" ]=
的语法糖:{ x = 1, y = 2 }
仍合法,{ x=, y= }
等价于{ ["x"]=true, ["y"]=true }
。
•const
局部变量(只读绑定),编译期检查再赋值会报错。
•continue
语句(需要-DLUA_CONTINUE
编译开关)。 -
垃圾回收与内存
• 分代 GC 成为默认算法,新增 APIlua_gc(L, LUA_GEN_PARAMS, ...)
调整分代阈值。
• 新增“紧急 GC”钩子:当分配失败时自动触发同步 GC,而不是直接抛出memerror
。 -
标准库
•table
库新增table.moveiter()
、table.ninsert()
。
•string
库新增string.packsize(fmt)
和string.unpackiter(fmt, s [, pos])
。
•utf8
库新增utf8.graphemes(s)
迭代器,支持基础 Unicode 字素簇分割。 -
C API / 实现细节
• 宏luaL_newlibtable
和luaL_newlib
现在接受luaL_Reg *
长度参数,省去sizeof/sizeof
手工计算。
• 引入lua_tointegerx()
的姐妹版lua_tointegerf()
,失败时返回 0 而不是 0 并设isnum
为 0。
• 移除LUA_COMPAT_5_3
兼容层,保留LUA_COMPAT_5_4
。 -
构建系统
• 官方 Makefile 支持make linux-readline-c99
等预设 target;make install
时可指定INSTALL_LMOD
/INSTALL_CMOD
路径。
目前 Lua 团队呼吁社区在 5.5.0-beta 期间重点测试:
• 分代 GC 在长时间运行服务中的稳定性;
• 管道运算符与现有代码的交互(优先级、调试信息);
• const
/ continue
与现有调试器、字节码工具链的兼容性。
正式 Release Note 预计在 2025 年 9 月前后发布,届时上述特性可能仍有微调。
同类文章推荐: