feat: 适配 Lua 5.5.1 最新版 (lua_5.5.1 分支)

- lib/lua 替换为 Lua 5.5.1 官方源码(2026-07 发布, 当前最新)
- luaconf.h LUA_EXTRASPACE 扩为 272 字节(与 5.4.8 同方案)
- C API 完全兼容, 桥接层零改动
- PackagePathConfig 测试沿用跨版本语义断言(5.4+ require 返回 loader data 路径)
- 验证: GTest 44/44 通过
This commit is contained in:
JianFeeeee
2026-08-25 10:07:07 +08:00
parent 4af121c1f3
commit 80880edbce
65 changed files with 6094 additions and 3791 deletions

18
lib/lua/lmem.c Executable file → Normal file
View File

@ -95,7 +95,7 @@ static void *firsttry (global_State *g, void *block, size_t os, size_t ns) {
void *luaM_growaux_ (lua_State *L, void *block, int nelems, int *psize,
int size_elems, int limit, const char *what) {
unsigned size_elems, int limit, const char *what) {
void *newblock;
int size = *psize;
if (nelems + 1 <= size) /* does one extra element still fit? */
@ -126,10 +126,10 @@ void *luaM_growaux_ (lua_State *L, void *block, int nelems, int *psize,
** error.
*/
void *luaM_shrinkvector_ (lua_State *L, void *block, int *size,
int final_n, int size_elem) {
int final_n, unsigned size_elem) {
void *newblock;
size_t oldsize = cast_sizet((*size) * size_elem);
size_t newsize = cast_sizet(final_n * size_elem);
size_t oldsize = cast_sizet(*size) * size_elem;
size_t newsize = cast_sizet(final_n) * size_elem;
lua_assert(newsize <= oldsize);
newblock = luaM_saferealloc_(L, block, oldsize, newsize);
*size = final_n;
@ -151,7 +151,7 @@ void luaM_free_ (lua_State *L, void *block, size_t osize) {
global_State *g = G(L);
lua_assert((osize == 0) == (block == NULL));
callfrealloc(g, block, osize, 0);
g->GCdebt -= osize;
g->GCdebt += cast(l_mem, osize);
}
@ -184,7 +184,7 @@ void *luaM_realloc_ (lua_State *L, void *block, size_t osize, size_t nsize) {
return NULL; /* do not update 'GCdebt' */
}
lua_assert((nsize == 0) == (newblock == NULL));
g->GCdebt = (g->GCdebt + nsize) - osize;
g->GCdebt -= cast(l_mem, nsize) - cast(l_mem, osize);
return newblock;
}
@ -203,13 +203,13 @@ void *luaM_malloc_ (lua_State *L, size_t size, int tag) {
return NULL; /* that's all */
else {
global_State *g = G(L);
void *newblock = firsttry(g, NULL, tag, size);
void *newblock = firsttry(g, NULL, cast_sizet(tag), size);
if (l_unlikely(newblock == NULL)) {
newblock = tryagain(L, NULL, tag, size);
newblock = tryagain(L, NULL, cast_sizet(tag), size);
if (newblock == NULL)
luaM_error(L);
}
g->GCdebt += size;
g->GCdebt -= cast(l_mem, size);
return newblock;
}
}