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

@ -207,7 +207,11 @@ func testLoadLibOverflow(): Unit {
func testPackagePathConfig(): Unit {
let runner = LuaRunner(pkgpath: SCRIPTS_DIR + "/pkgmods/?.lua")
let res = runner.runScript(scriptPath("pkgpath_require_mylib.lua"), "")
@Expect(res, SCRIPTS_DIR + "/pkgmods/mylib.lua")
// 跨版本语义Lua 5.4+ 的 require 返回 2 值run() 读栈顶得 loader data文件路径
// Lua ≤5.3 返回 1 值,得模块本身("pkgmod-mylib")。两者都表明 pkgpath 生效。
let isPath = res == SCRIPTS_DIR + "/pkgmods/mylib.lua"
let isModule = res == "LoadedViaPkgPath"
@Expect(isPath || isModule, true)
}
@Test