Vala 程式語言的新版本編譯器 0.50.4 已發布。長期支援(LTS)分支 Vala 0.48.14(針對 Ubuntu 18.04 打包)和實驗分支 Vala 0.51.3 也已更新。
Vala 語言是一種物件導向的程式語言,提供類似 C# 或 Java 的語法。 Gobject(Glib 物件系統)用作物件模型。記憶體管理透過所有權(擁有/無主連結)或使用 ARC(在編譯階段取代析構函數和減少物件參考計數器)來執行。
該語言支援內省、lambda 函數、介面、委託和閉包、訊號和槽、異常、屬性、非空類型、局部變數的類型推斷。此套件附帶大量與 C 語言庫的綁定(vala-girs、vala-extra-vapis)。 Vala程式被翻譯成C表示,然後由標準C編譯器編譯,可以以腳本模式執行程式。
變更清單:
- 增加了對建構子 params 關鍵字的額外支援 class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
- 程式碼產生器:
- 改進了對 SimpleType 結構建構函數的支援(例如用於綁定 typedef uint32_t people_inside; 來自 C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- 改進了“NoWrapper”屬性的處理。
- 類別允許 CCode.type_cname 和 get_ccode_type_name()。
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE 總是用於外部符號。
- 在 free-wrapper 中使用 g_boxed_free 在堆上分配 GLib.Value。
- 修復了 GLib.Value(任何值類型的通用容器)隱式拆箱期間的記憶體洩漏。
- 修復了將堆分配的結構移動到堆疊時的記憶體洩漏。
- 確保父結構析構函數的繼承
- 嵌套轉換表達式的 symbol_reference 的正確檢索已得到改進。
- 刪除了所有巢狀的 CCodeCastExpression。
- 停止錯誤地呼叫預設訊號處理程序。
- 連接 strcmp() 的“string.h”(POSIX 設定文件,Vala 僅使用標準 C 庫產生程式碼的模式)。
- 瓦拉:
- 改進了對重複包源文件的檢測。
- GtkChild 欄位/屬性必須宣告為無主。
- 禁止重新分配 GtkChild 欄位/屬性。
- 委派分配時,對 lambda 應用了更嚴格的條件。
- 禁止使用一次性的 SimpleType 結構。
- GLib.Value 拆箱可確保傳回無主值。
- 禁止將 GLib.Value 轉換為可為 null 的結構/簡單型別。
- 在基底類型/類別/介面前提條件中新增了類型參數檢查。
- 禁止捕獲 va_list 參數/變數。
- 包含結構指標的泛型在存取時必須轉換為正確的類型,以避免 C UB。
- 實現了枚舉內部“in”的類型推斷。
- 改進了對可寫字段分配的上下文檢查。
- 包含 Enum.to_string() (POSIX) 的「stdlib.h」。
- 為隱式變數“this”和“result”設定正確的source_reference
- 提供了有關一元表達式的無效內部操作數的錯誤訊息。
- Сodewriter:停止加入尾隨“;”在主體 WithStatement 之後。
- 吉爾帕瑟:
- 提供了對不受虛擬方法或訊號支援的匿名委託的處理。
- 為方法和參數應用了“delegate_target”元數據
- 將「destroy_notify_cname」元資料套用至字段
- 對類別和介面應用「type_get_function」元數據
- 如果不是預設值,請為類別設定 CCode.type_cname。
- girwriter:確保寫入實例參數元素。
- girwriter:實作了預設訊號處理程序輸出。
- libvaladoc/html:刪除了結構欄位的排序,以在產生 html 文件 valadoc.org 時保留其原始順序
- libvaladoc:確保正確檢索 Api.Class.is_compact 的值
- libvaladoc:新增了「agege」graphviz 庫的包裝器
- 綁定:
- 產生綁定時的小修復:cairo、gobject-2.0、pango、goocanvas-2.0、curses、alsa、bzlib、sqlite3、libgvc、posix、gstreamer-1.0、gdk-3.0、gdk-x11-3.0、gtk+-3.0、gtk+-4、 gtk2.0、保險絲,libxml-XNUMX
- gdk-pixbuf-2.0:修正 Pixbuf.save_to_streamv_async()
- gio-2.0:PollableOutputStream.write*_nonblocking() 綁定修復
- gio-2.0,gtk+-3.0,gtk4: va_list 參數的明確 c 類型屬性被丟棄
- gio-2.0:為某些 AppInfo/File.*() 方法選擇了缺少的呼叫程式
- glib-2.0:為非空白新增了 GLib.[S]List.is_empty() 便利方法
- glib-2.0:綁定assert_cmp*函數[#395]
- glib-2.0:改進的 OptionEntry.flags 欄位類型
- glib-2.0:PtrArray 現在是 GenericArray 的子類
- gstreamer-1.0:MiniObject 的 CCode.type_id 設定為 G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0:修正了 CCode.type_cname 屬性的使用
- gtk+-3.0,gtk4:修復了一些委託回傳值和參數
- gtk4:更新至版本4.0.2。
來源: opennet.ru