|
|
https://github.com/lua/lua
1、锚定机制重构(ldo.c / lparser.c / lundump.c):新增 luaD_anchorobj 函数,用统一的锚定表替代之前散落在多个栈槽里的 GC 固定逻辑,解析器/反序列化器签名都加了 Table *anchor 参数。
2、CallInfo 分配容错(lstate.c):luaE_extendCI 新增 int err 参数,分配失败时可选择返回 NULL 而非直接抛错;同时维护 ci->previous 双向链表。
3、luaD_checkminstack 增强:不仅检查栈空间,还预检查是否有至少两个可用 CallInfo,并尝试预分配。
4、load 函数简化(lbaselib.c):移除了 RESERVEDSLOT 机制,改用 firstcall 标志通过 userdata 传给 reader;默认模式从 "bt" 改为 NULL。同时 loadfile 明确用 "bt",loadstring/dofile 明确用 "t"。
5、LUA_NODEBUGLIB 编译选项(lua.c):启用后 debug 库不自动打开但会预加载,需要显式 require 才能用——适合对启动安全敏感的嵌入场景。
6、环境变量统一控制(lua.c):引入 l_getenv 函数指针,-E 选项时切到 no_getenv,不再对 LUA_INIT 做特殊跳过。
7、readline 库可配置:新增环境变量 LUA_READLINELIB(LUA_RLLIB_VAR)指定库名;macOS 不再自动链接 -lreadline,需要时自行加 LUA_USE_READLINE。
8、LUA_COMPAT_GLOBAL 可覆盖:从无条件 #define 改为 #if !defined(...) 保护,global 现在默认是常规词;语法上 global attnamelist 扩展为 global attnamelist ['=' explist],支持直接赋值。
9、GCObject 转换宏重构(lstate.h):所有 gco2* 宏从走 union GCUnion * 中间转换改为直接 cast(T*, o),引用标准条款也从 6.7.2.1 换成 6.3.2.2(指针转换)。
10、OP_VARARGPREP 操作模式修正:从 opmode(0,0,1,0,1,iABC) 改为 opmode(0,0,0,0,0,iABC),移除错误的 IT/OT 位;luaP_isOT 改为内联宏。
https://www.lua.org/manual/5.5/

|
|