Vala 是一個開源,免費和現代的編程語言和軟件項目,從偏移量設計,為GNOME開發人員帶來了新的編程功能。它是GObject類型系統的編譯器,允許GNOME開發人員創建令人驚訝的應用程序。
功能一目了然
主要功能包括接口,屬性,信號,foreach,lambda表達式,局部變量的類型推斷,泛型,非null類型,輔助內存管理,異常處理,以及類型模塊a.k.a. plugins。
輕鬆編寫複雜的面向對象代碼
使用Vala編譯器,作為開發人員,您將能夠毫不費力地編寫複雜的面向對象代碼,同時保持較低的內存要求,並維護標準的C ABI和API。
允許訪問現有的C庫
該項目的設計方式允許訪問現有的C庫,尤其是基於GObject的庫,而無需運行時綁定。
它非常適合GTK +和GNOME
Vala是一種命令行編譯器和編程語言。使用GTK +和GNOME的開發人員將能夠使用Vala編寫代碼並進行編譯。
它受C ++,C,C#,Python,D和Java的影響
Vala編程語言受到眾所周知且廣泛使用的C,C ++,D,Python,C#和Java編程語言的影響。它是一種跨平台的軟件,可以輕鬆移植到其他操作系統上。
它受到各種IDE程序的支持
另一個有趣的功能是兼容各種IDE(集成開發環境)程序,包括Anjuta,Valencia,Geany,Emacs,MonoDevelop,NetBeans,Val(a)IDE,Sublime Text,Vim,Vala Toys for Gedit,Euclide, RedCar,TextMate和Valama。
可用性和支持的體系結構
Vala僅作為源存檔分發。這意味著用戶必須在安裝之前配置和編譯代碼。當然,它也可以很容易地安裝在默認軟件存儲庫的任何GNU / Linux發行版上。目前支持32位和64位架構。
此版本中的新功能:
- 各種錯誤修復:
- codegen:對傳遞給泛型類型[#655] 的對象調用ref_sink
- codegen:在GDBusMethodInvocation上返回後出現免費錯誤[#657]
- girparser:實際上解決了類型參數,以便能夠在需要時將它們裝箱
- vala:添加consts /方法以檢索和檢查庫版本[#304]
- 綁定:
- glib-2.0:添加Array.remove *()包裝以避免洩漏通用元素
- glib-2.0:添加(u)long.parse / try_parse()[#649]
- gstreamer:從1.15+ git master 更新
- gtk + -3.0:更新至3.23.2 + 6b6e53fd
- gtk + -4.0:更新至3.94.0 + 4e868584
版本0.40.7中的新功能:
- 各種改進和錯誤修復:
- 更新錯誤跟踪鏈接至https://gitlab.gnome.org/GNOME/vala/issues
- 代碼生成:
- 處理字段[#520] 的delegate_target屬性
- glib集合的免費通用元素[#694765]
- 修復g_source_new() 的source_funcs參數警告
- 實際上將GLib.Source視為緊湊類
- GLib.Source的自定義抽象方法的處理方式不同[#641]
- 始終使用gpointer代表目標
- 統一一些委託類型檢查模式
- 註冊接口時使用default_init而不是base_init [#699550]
- girparser:添加對bool delegate_target的支持[#520]
- girwriter:
- 棄用輸出=" 1"
- 僅構造屬性沒有setter方法
- 不要寫任何自定義屬性[#608]
- valadoc:修復堆疊數組的TreeBuilder.create_array()
- 綁定:
- 油嘴-2.0:
- 不要將簡單類型的out-parameters標記為可為空[#634]
- Make Source.attach()默認使用默認的MainContext
- Make Bytes.slice()使用內存效率高的Bytes.from_bytes()[#638]
- 修復Bytes.with_free_func()
- GIO-2.0:
- 將ActionEntry.parameter_type / state字段標記為可為空[#632]
- DBus * VTable的委託字段沒有隱式目標字段
- 在ActionEntry回調中應用delegate_target = false並使它們變弱[#630]
- 為所有io_priority參數添加默認值
- gstreamer:Cherry-從0.42中挑選一些修復,添加gst-editing-services-1.0
- gtk + -3.0:更新至3.22.30 + 9ac7f906
- gtk + -4.0:更新至3.93.0 + 29fee2e8
- webkit2gtk-4.0:更新至2.21.4
- 更新基於GIR的綁定
版本中的新功能:
- 各種錯誤修復:
- 使用真正的非null結構參數修復鍊式回歸[#791785]
- 在使用[#712694]後釋放對CodeContext的引用並保持parse_file()的自定義調用[#791936]
- parser:在開關的case-statement [#614015] 中接受以逗號分隔的列表
- 綁定:
- 刪除上游運輸多年的綁定
- gedit 3 [#776021],libgnome-keyring [#776022],
- gtksourceview-3.0 [#776023],libgdata [#776024],librsvg-2.0 [#776025]
- glib-2.0:添加GLib.OPTION_REMAINING和GLib.OptionFlags.NONE
- gstreamer-1.0:從1.13+ git master 更新
- gtk + -2.0:將Message MessageDialog構造函數參數message_format標記為可為空[#791570]
- gtk + -4.0:更新至3.93.0 + 6aeae2c8
- webkit2gtk-4.0:更新至2.19.3
版本0.39.1中的新功能:
- 亮點
- 如果屬性類型與GLib.Object [#693932] 不兼容,則報告警告
- 允許將兼容的委託傳遞給signal.connect()[#787521]
- 盡可能允許未範圍的枚舉值
- 避免對返回ValueType的某些calla使用temp-var並訪問/ ref參數[#789071]
- 重新格式化生成的源聲明和定義以提高可讀性[#688447]
- 各種錯誤修復:
- 使用array_length_cexpr支持返回值的固定數組[#784691]
- 正確解析vala interpeter-mode的參數[#663070]
- 使用GType [#764041] 對結構體強制使用名稱長度> = 3
- 在封閉類型[#587905] 上報告缺少類型參數的錯誤
- 為方法添加布爾“use_inplace”ccode-attribute [#750840]
- 改善無主/擁有關鍵字出現的處理
- 如果目標委託拋出一個 ,則方法需要拋出兼容錯誤
- 發現無效的成員訪問實例字段[#790903]
- 改善不匹配覆蓋方法的錯誤輸出
- Valadoc
- 確認結構中的可能屬性[#784705]
- 修復GtkdocRenderer.visit_symbol_link()中的致命拼寫錯誤[#790266]
- 綁定:
- glib-2.0:使用type-id / marshaller-type for(u)int16 /(u)short from(u)int32 [#693932]
- glib-2.0:將可選的'未解析'參數添加到* .try_parse()[#774124]
- gobject-2.0:添加一些缺少的符號
- gstreamer-1.0:綁定GST_TIME_ARGS,GST_STIME_ARGS宏[#750840]
- gstreamer-1.0:綁定GST_DEBUG_BIN_TO_DOT_FILE / * _ WITH_TS [#785215]
- gstreamer-1.0:從1.13+ git master 更新
- gtk + -3.0:更新至3.22.26 + 9ce824d3
- gtk + -4.0:將Gsk.RenderNode拆分為多個類
- gtk + -4.0:更新至3.93.0 + 2d797dd8
- webkit2gtk-4.0:更新至2.19.2
版本0.38.3中的新功能:
- 各種錯誤修復:
- codegen:優先於“array_null_terminated = true”優先“array_length = true”[#788775]
- codegen:避免與內部屬性/信號定義[#788964] 發生衝突
- 綁定:
- gio-2.0:將g_task_get_source_object公開為Task.get_unowned_source_object
- gstreamer-1.0:從1.13+ git master 更新
- gtk + -4.0:更新至3.92.1
- libxml-2.0:添加DTD方法[#789442]
版本0.38.2中的新功能:
- 各種綁定更新:
- gstreamer-1.0,gtk + -3.0,gtk + -4.0:從git master更新
- gnutls:修復證書[#788181] 的free_function ccode-attribute
版本0.38.1中的新功能:
- 各種錯誤修復:
- valadoc:不要使用'stderr'作為變量名[#787305]
- codegen:嘗試為屬性使用更獨特的內部定義[#787436]
- vala:更新已使用屬性的列表
- 方法:使用prototype-string進行返回類型不匹配的錯誤報告
- 綁定:
- glib-2.0:修復MainContext.check(),OptionEntry []參數以空值終止,綁定g_convert_with_fallback()和g_convert_with_iconv()
版本0.37.1中的新功能:
- 亮點:
- 如果installed_version較舊,請不要警告已棄用的符號
- 添加--gresourcesdir選項[#783133]
- 各種錯誤修復:
- gdbus:不要在反序列化時洩漏嵌套的HashTable [#782719]
- 使用異步收益率[#741929] 修復finally塊
- 處理合併表達式中的非空值[#611223]
- 為<製作task_complete標誌2.44更類似於> = 2.44 [#783543]
- Nullable ValueType需要POINTER作為編組人簽名[#783897]
- 僅限gobject-properties 允許使用NoAccessorMethod屬性
- girparser:修復無目標 的委託別名解析
- 編譯器:使用API_VERSION而不是剝離PACKAGE_SUFFIX
- girwriter:寫入秩為>的數組的長度參數1 [#758019]
- 綁定:
- gio-2.0:對DataInputStream.read_line_utf8使用默認的'length = null'* [#783351]
- gobject-2.0:添加GLib.ParamSpecPointer
- poppler-glib:更新至0.54.0
- gstreamer-1.0:各種綁定修復
版本0.36.3中的新功能:
- 各種錯誤修復:
- scanner:修復多行註釋[#652899] 後令牌列值的計算
- codegen:解析協同程序中未被捕獲的錯誤的GLIR.AsyncResult [#641171]
- 繼續初始化結構構造函數的結果變量[#782056]
版本0.36.1中的新功能:
- 各種錯誤修復:
- 始終考慮與自身兼容的方法[#773135]
- 對實際的.end()方法簽名[#684208] 執行參數檢查
- 略微改善目標類型不匹配的lamdba表達式錯誤
- 修復實例字段的代理初始值設定項[#683925]
- 在投射/分配擁有的代表時,不要洩漏目標參考[#780426]
- GIR解析器和編寫器:
- girparser:為元數據添加destroy參數[#750838]
- vapigen:像在valac中一樣添加--nostdpkg選項
- 綁定:
- gstreamer-1.0:修復Pad.set _ * _ function()綁定[#750838]
- glib-2.0:添加缺少的版本宏和常量,unichar.to_string不返回null
- gtk + -2.0,gtk + -3.0:將Widget.intersect()的“交集”參數標記為
- gtk + -4.0:更新至3.90.0
評論沒有發現