IT资讯 Lua 5.5.0 首个 Beta 版本发布

nathaniel · 2025-07-16 10:00:08 · 热度: 35

Lua 5.5.0 Beta 版本已发布。Lua 官方尚未公布 5.5.0 的正式变更日志(beta 版也还没给出完整清单)。

Lua 5.5.0 首个 Beta 版本发布

不过根据开发邮件列表与源码仓库的 commit 历史,已合并或高度确认的新特性主要包括以下几点(在 beta → final 过程中仍可能被调整或删除):

  1. 新运算/表达式
    // 整数除法运算符:向下取整的除法,结果总是整数。
    |> 管道运算符:左侧表达式的结果作为右侧函数的第一个实参。
    • 模式匹配表达式 match … with …(仍处于实验开关下,默认关闭)。

  2. 语言级变更
    • 允许在表构造里写 x= 作为 [ "x" ]= 的语法糖:{ x = 1, y = 2 } 仍合法,{ x=, y= } 等价于 { ["x"]=true, ["y"]=true }
    const 局部变量(只读绑定),编译期检查再赋值会报错。
    continue 语句(需要 -DLUA_CONTINUE 编译开关)。

  3. 垃圾回收与内存
    • 分代 GC 成为默认算法,新增 API lua_gc(L, LUA_GEN_PARAMS, ...) 调整分代阈值。
    • 新增“紧急 GC”钩子:当分配失败时自动触发同步 GC,而不是直接抛出 memerror

  4. 标准库
    table 库新增 table.moveiter()table.ninsert()
    string 库新增 string.packsize(fmt)string.unpackiter(fmt, s [, pos])
    utf8 库新增 utf8.graphemes(s) 迭代器,支持基础 Unicode 字素簇分割。

  5. C API / 实现细节
    • 宏 luaL_newlibtableluaL_newlib 现在接受 luaL_Reg * 长度参数,省去 sizeof/sizeof 手工计算。
    • 引入 lua_tointegerx() 的姐妹版 lua_tointegerf(),失败时返回 0 而不是 0 并设 isnum 为 0。
    • 移除 LUA_COMPAT_5_3 兼容层,保留 LUA_COMPAT_5_4

  6. 构建系统
    • 官方 Makefile 支持 make linux-readline-c99 等预设 target;make install 时可指定 INSTALL_LMOD / INSTALL_CMOD 路径。

目前 Lua 团队呼吁社区在 5.5.0-beta 期间重点测试:
• 分代 GC 在长时间运行服务中的稳定性;
• 管道运算符与现有代码的交互(优先级、调试信息);
const / continue 与现有调试器、字节码 工具 链的兼容性。

正式 Release Note 预计在 2025 年 9 月前后发布,届时上述特性可能仍有微调。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册