Lua 5.4 程式語言的發布

經過五年的發展 有空 釋放 Lua 5.4,一種快速且緊湊的腳本程式語言,廣泛用作嵌入式語言(例如,用於定義配置或編寫擴充功能)。 Lua解釋器程式碼是用C寫的 分發者 在麻省理工學院的許可下。

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

添加評論