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

添加評論