feat: 适配 Lua 5.3.6 (lua_5.3.6 分支)

- lib/lua 替换为 Lua 5.3.6 官方源码
- luaconf.h LUA_EXTRASPACE 扩为 272 字节(容纳 iopath 重定向结构, 与 5.4.8 同方案)
- CMakeLists 版本号同步; lbitlib.c 不参与链接(5.3 位运算已内建, bit32 未注册)
- PackagePathConfig 测试跨版本语义适配:
  * Lua 5.3 require 返回 1 值(模块本身) → 栈顶为 'LoadedViaPkgPath'
  * Lua 5.4+ require 返回 2 值(模块+loader data) → 栈顶为文件路径
  断言改为接受两种结果, 并注明差异原因
- 验证: GTest 44/44 通过
This commit is contained in:
JianFeeeee
2026-08-25 09:57:29 +08:00
parent 4af121c1f3
commit 761198e96f
4 changed files with 441 additions and 2 deletions

View File

@ -282,7 +282,12 @@ TEST_F(LuaCjApiTest, PackagePathConfig) {
EXPECT_EQ(ret, 0) << "Require failed, maybe pkgpath not set correctly. Errno: " << get_errno();
char* res = getresult(runner);
EXPECT_STREQ(res, lib_path.c_str());
// 跨版本语义适配:
// - Lua 5.3 的 require 返回 1 个值模块本身run() 读栈顶得模块返回值 "LoadedViaPkgPath"
// - Lua 5.4+ 的 require 返回 2 个值(模块 + loader datarun() 读栈顶得 loader data文件路径
// 两者都表明 require 经 pkgpath 成功定位并加载了模块
EXPECT_TRUE(strcmp(res, lib_path.c_str()) == 0 || strcmp(res, "LoadedViaPkgPath") == 0)
<< "unexpected require result: " << (res ? res : "(null)");
}
// ==================== 新增测试doString 功能 ====================