经过五年的发展
Lua 通过使用关联数组和语言的可扩展语义,将简单的过程语法与强大的数据描述功能结合起来。 Lua 使用动态类型,将语言结构转换为字节码,在基于寄存器的虚拟机上运行,并具有自动垃圾收集功能。 解释器本身被设计为一个库,可以轻松集成到 C 和 C++ 语言的项目中。
- 垃圾收集器的新操作模式已经实现——“
代 ”,这补充了之前可用的增量垃圾收集模式。 新模式涉及更频繁地运行缩短的爬网,仅覆盖最近创建的对象。 仅当短暂遍历后无法达到所需的内存消耗时,才会执行所有对象的完整遍历。 这种方法允许您在存储大量短期存在的对象时实现更高的性能并减少内存消耗。 - 添加了定义使用“const”属性定义的常量变量的功能。 此类变量只能分配一次,并且一旦初始化就无法更改。
- 添加了对变量的支持“
待关闭 ”,它们使用“close”属性进行赋值,类似于常量局部变量(具有 const 属性),与它们的不同之处在于,只要该值离开作用域,就会关闭该值(调用“__close”方法),例如,块正常完成后,使用break/goto/return进行转换,或者在发生错误时退出。 - 类型 ”
用户数据 ”,它提供了在 Lua 变量中存储任何 C 数据的能力(表示内存中的数据块或包含 C 指针),现在可以包含多个值(具有多个元表)。 - 提出了生成伪随机数函数的新实现 - math.random。
- 添加了使用表达式确定的警告系统
警告 并且,与错误不同,不会影响程序的进一步执行。 - 添加了有关函数参数和返回值的调试信息。
- 已经提出了一种新的语义来枚举循环中的整数“
- 在函数 '
字符串.gmatch ' 添加了一个新的可选参数 'init',它确定从哪个位置开始搜索(默认情况下,从 1 个字符开始)。 - 添加了新功能'
lua_resetthread '(重置线程,清除整个调用堆栈并关闭所有“要关闭”的变量)和'协程.close '(关闭协程和所有关联的“待关闭”变量)。 - 将字符串转换为数字的函数已移至“字符串”库。
- 如果内存块大小减小,对内存分配函数的调用现在可能会失败。
- 在函数 '
字符串格式 ' 添加了对新格式说明符“%p”(由 lua_topointer 返回的指针)的支持。 - utf8库提供支持
字符代码 数字最大为 2^31。
来源: opennet.ru