Lua 5.4

经过两年的开发,29月5.4日,Lua编程语言新版本XNUMX悄然悄然发布。

Lua 是一种简单的解释性编程语言,可以轻松集成到应用程序中。 由于这些品质,Lua 被广泛用作扩展或描述程序(特别是计算机游戏)配置的语言。 Lua 是根据 MIT 许可证分发的。

上一版本 (5.3.5) 于 10 年 2018 月 XNUMX 日发布。

新版本主要变化

  • 新一代垃圾收集器。 在collectgarbage函数中,setpause和setstepmul参数已被弃用,推荐使用incremental参数;

  • 发出警告的新功能,并能够禁用其显示;

  • math.random 的新实现使用 xoshiro256** 算法而不是提供的 libc,并使用随机数初始化生成器;

  • 常量变量;

  • “待关闭”变量是局部常量,在离开作用域时将执行 __close 方法;

  • 新函数 lua_resetthread - 清除堆栈并关闭所有“关闭”变量;

  • 新函数 coroutine.close - 关闭指定的协程及其所有“关闭”变量;

  • 用户数据可以包含一组通过索引访问的值。 引入了新函数来使用它们:lua_newuserdatauv、lua_setiuservalue 和 lua_getiuservalue;

  • 提供函数参数和返回值的调试信息;

  • 如果for循环中使用了整数索引,并且发生溢出,则循环结束;

  • string.gmatch 函数中添加了一个可选参数,指定从字符串开头的偏移量以搜索匹配项;

  • 用于隐式将字符串转换为数字的函数已移至字符串库,并且它们的行为已更改。 例如,运算“1”+“2”的结果现在是整数而不是浮点数;

  • 内存分配函数中,减少内存块时可能会出现错误;

  • string.format 函数中的新格式化字符 - %p(用于指针);

  • utf8 库接受最多 2^0 个字符代码(如果指定了特殊标志,没有它,则只允许最多 10xXNUMXFFFF 的代码,并且不允许代理);

  • 取值范围之外的整数常量被转换为浮点数(之前发生了位裁剪);

  • __lt 元方法不再用于模拟 __le 元方法;如有必要,必须显式指定 __le 元方法;

  • 如果当前作用域中已存在同名标签(即使它是在外部作用域中定义的),则无法创建 goto 语句的标签;

  • __gc 元方法不仅仅是一个函数。 如果尝试调用方法失败,则会打印警告;

  • print 函数不会为每个参数调用 tostring,而是使用它自己的内部转换;

  • io.lines 函数返回一组四个值而不是一个;为了模拟旧行为,如果要将其作为参数传递给另一个函数调用,请将调用括在括号中。

来源: linux.org.ru

添加评论