Lua 5.4

經過兩年的開發,Lua 程式語言的新版本 29 於 5.4 月 XNUMX 日悄悄發布。

Lua 是一種簡單的解釋型程式語言,可以輕鬆嵌入應用程式中。由於這些特性,Lua 被廣泛用作擴展或描述程式(尤其是電腦遊戲)配置的語言。 Lua 是在 MIT 許可證下發布的。

上一版本(5.3.5)於 10 年 2018 月 XNUMX 日發布。

新版本的主要變化

  • 新一代垃圾收集器。在collectgarbage函數中,setpause和setstepmul參數已經棄用,建議使用incremental參數來取代;

  • 發出警告的新功能,並可停用其顯示;

  • math.random 的新實作使用 xoshiro256** 演算法而非 libc 提供的演算法,並以隨機數初始化產生器;

  • 常量變數;

  • 「待關閉」變數是局部常數,離開作用域時會執行__close方法;

  • 新功能 lua_resetthread - 清除堆疊並關閉所有「已關閉」的變數;

  • 新功能 coroutine.close - 關閉指定的協程及其所有「關閉」的變數;

  • userdata可以包含一組透過索引存取的值。為了與它們協同工作,我們引入了新的函數:lua_newuserdatauv、lua_setiuservalue 和 lua_getiuservalue;

  • 可以獲得有關函數參數和返回值的調試資訊;

  • 如果在 for 迴圈中使用整數索引並且發生溢出,則循環終止;

  • string.gmatch 函數中新增了一個可選參數,指定從字串開頭搜尋匹配項的偏移量;

  • 隱式字串到數字的轉換函數已移至字串庫,其行為已改變。例如,「1」+「2」運算的結果現在是整數而不是浮點數;

  • 在記憶體分配函數中,減少記憶體區塊時可能會發生錯誤;

  • string.format 函數中的新格式化符號 - %p(用於指標);

  • utf8 庫接受最多 2³¹ 個字元代碼(如果指定了特殊標誌,則沒有它,只允許最多 0x10FFFF 的程式碼,而不允許代理);

  • 超出範圍的整數常數會被轉換為浮點數(之前會發生位元截斷);

  • __lt 元方法不再用於模擬 __le 元方法;如果有必要,必須明確指定__le元方法;

  • 如果目前作用域中已經存在同名的標籤(即使它是在外部作用域中定義的),則無法建立 goto 語句的標籤;

  • __gc 元方法不只可以是一個函數。如果嘗試呼叫方法失敗,則會顯示警告;

  • print 函數不會為每個參數呼叫 tostring,而是使用它自己的內部轉換;

  • io.lines 函數傳回一組四個值而不是一個,為了模擬舊的行為,如果在呼叫另一個函數時將其作為參數替換,請將呼叫括在括號中。

來源: linux.org.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster