硬汉嵌入式论坛

 找回密码
 立即注册
查看: 304|回复: 1
收起左侧

[Lua] Lua V5.5正式版发布, 更紧凑的数组存储,大型数组内存占用减少约60%(2025-12-25)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-12-25 09:57:18 | 显示全部楼层 |阅读模式
主要改进

https://www.lua.org/manual/5.5/readme.html#changes

1、全局变量声明
2、命名可变参数表
3、for循环变量改为只读属性
4、浮点数以十进制形式输出,确保精度可逆还原
5、构造函数支持更多层级
6、新增table.create函数
7、utf8.offset函数额外返回字符的终止位置
8、支持外部字符串(使用非Lua管理的内存)
9、新增luaL_openselectedlibs和luaL_makeseed函数
10、主垃圾回收采用增量式执行
11、更紧凑的数组存储(大型数组内存占用减少约60%)
12、lua.c动态加载readline库
13、静态(固定)二进制支持(加载内存中的二进制块时,Lua可在部分内部结构中复用原始内存)
14、dump与undump操作复用所有字符串
15、辅助缓冲区在生成最终字符串时复用缓冲空间

5.5手册
https://www.lua.org/manual/5.5/contents.html

234.png

5.5与之前版本不兼容的地方
1、语言中的不兼容性
(1)global 是保留字。请勿将其用作常规名称。
(2)for 循环中的控制变量为只读。如需修改,请在循环体中声明一个同名的局部变量。
(3)__call 元方法链最多只能包含 15 个对象。
(4)在错误处理中,nil 作为错误对象会被替换为字符串消息。

2、库中的不兼容性
(1)垃圾回收参数不再通过 "incremental" 和 "generational" 选项设置,而是新增了一个 "param" 选项。此外,参数本身也发生了一些变化。

3、API 中的不兼容性
(1)在 lua_call 及相关函数中,所需结果数量(nresults)的最大值为 250。若确实需要更大的值,请使用 LUA_MULTRET 并在之后调整栈大小。此前,此限制未作明确说明。
(2)lua_newstate 新增了第三个参数,作为字符串哈希计算的种子值。
(3)函数 lua_resetthread 已弃用;其功能等同于以 from 为 NULL 的 lua_closethread。
(4)函数 lua_setcstacklimit 已弃用。调用该函数的代码可直接移除。
(5)函数 lua_dump 修改了在调用写入函数时维护栈的方式(此前的版本未明确说明此行为)。此外,该函数会额外调用一次写入函数,以标识转储操作的结束。
(6)垃圾回收参数不再通过 LUA_GCINC 和 LUA_GCGEN 选项设置,而是新增了一个 LUA_GCPARAM 选项。此外,参数本身也发生了一些变化。
(7)函数 lua_pushvfstring 现在改为报告错误,而非引发错误。
回复

使用道具 举报

82

主题

1417

回帖

1663

积分

至尊会员

积分
1663
发表于 2025-12-25 10:46:19 | 显示全部楼层
群主真厉害,啥都会,lua学不了了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-1-9 17:38 , Processed in 0.093830 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表