發佈程式語言翻譯機 Vala 0.54.0

新版本的程式語言翻譯器 Vala 0.54.0 已發布。 Vala 語言是一種物件導向的程式語言,提供類似 C# 或 Java 的語法。 Vala 程式碼翻譯為 C 程序,而 C 程式又由標準 C 編譯器編譯為二進位文件,並以編譯為目標平台目標程式碼的應用程式的速度執行。 可以在腳本模式下執行程式。 該語言是在 GNOME 專案的支援下開發的。 Gobject(Glib 物件系統)用作物件模型。 編譯器程式碼根據 LGPLv2.1 授權分發。

該語言支援內省、lambda 函數、介面、委託和閉包、訊號和槽、異常、屬性、非空類型、局部變數 (var) 的類型推斷。 記憶體管理是基於引用計數進行的。 已經為該語言開發了通用程式庫 libgee,它提供了為自訂資料類型建立集合的能力。 支援使用 foreach 語句列舉集合元素。 圖形程式的程式設計是使用GTK圖形庫進行的。

該套件附帶了大量與 C 語言庫的綁定。Vala 翻譯器提供對 Genie 語言的支持,該語言提供類似的功能,但其語法受到 Python 編程語言的啟發。 Geary 電子郵件用戶端、Budgie 圖形 shell、Shotwell 照片和影片檔案組織程式等程式都是用 Vala 語言編寫的。 該語言被積極用於 Elementary OS 發行版的開發。

主要創新:

  • 增加了對具有可變數量參數的委託的支援;
  • 新增了 LIBC 設定文件,它與 POSIX 設定檔同義;
  • 改進了 POSIX 設定檔模式下的生成;
  • 增加了透過類型推斷聲明可以具有空值的變數的功能(var?);
  • 新增了聲明禁止繼承的類別(密封)的功能;
  • 為可以為 null 的類別欄位新增了安全存取運算子 (a.?b.?c);
  • 允許將結構內容初始化為 null (const Foo[] BARS = { { "bar", 42 }, null };);
  • 對於常數數組禁止resize()操作;
  • 新增了嘗試將函數呼叫轉換為 void ((void)not_void_func();) 時的警告輸出;
  • 刪除了對 GLib.Array 元素類型的限制;
  • 修正了 foreach() 語句中的「unowned var」所有權繼承;
  • 綁定webkit2gtk-4.0已更新至2.33.3版本;
  • 與 gstreamer 的綁定已更新至版本 1.19.0+ git master;
  • 綁定gtk4已更新至版本4.5.0~e681fdd9;
  • gtk+-3.0 的綁定已更新至版本 3.24.29+f9fe28ce
  • 綁定gio-2.0,glib-2.0已更新至2.69.0版本;
  • 對於 Linux,添加了對 SocketCAN 的綁定;
  • 修正了glib-2.0、gio-2.0、gstreamer-rtp-1.0、javascriptcoregtk-4.0、gobject-2.0、pango、linux、gsl、rest-0.7、libusb、libusb-1.0、pixman-1、webkit2gtk-web- 的綁定定擴展 4.0、x11、zlib、gnutls;
  • 刪除了 gedit-2.20 和 webkit-1.0 綁定;
  • 基於GIR更新了綁定;
  • 測試系統增加了檢查產生的C程式碼的能力;
  • 改良了 girparser、girwriter、valadoc、libval​​adoc/girimporter;
  • 各種編譯器元件累積的錯誤和缺點已修復。

來源: opennet.ru

添加評論