Inguqulo entsha ye-comiler yolimi lwezinhlelo ze-Vala 0.50.4 isikhishiwe. Igatsha losekelo lwesikhathi eside (LTS) i-Vala 0.48.14 (epakishwe Ubuntu 18.04) kanye negatsha lokuhlola i-Vala 0.51.3 nazo zibuyekeziwe.
Ulimi lwe-Vala luwulimi lokuhlela olugxile entweni olunikeza i-syntax efana ne-C# noma i-Java. I-Gobject (Glib Object System) isetshenziswa njengemodeli yento. Ukuphathwa kwenkumbulo kwenziwa ubunikazi (izixhumanisi eziphethwe/ezingezona ezingezona ezomuntu) noma kusetshenziswa i-ARC (ukufakwa esikhundleni sababhubhisi kanye nokuncishiswa kwezinto zokubala zereferensi esigabeni sokuhlanganiswa).
Ulimi lunokusekelwa kokuzihlola, imisebenzi ye-lambda, izixhumanisi, izithunywa nokuvalwa, amasiginali nezikhala, okuhlukile, izakhiwo, izinhlobo ezingezona ize, uhlobo lokuchazwa kwezinto eziguquguqukayo zendawo. Ikhithi iza nenani elikhulu lokubophezela kumalabhulali aku-C (vala-girs, vala-extra-vapis). Izinhlelo ze-Vala zihunyushelwa ekumeleleni u-C bese zihlanganiswa umdidiyeli ojwayelekile C. Kungenzeka ukusebenzisa izinhlelo ngemodi yombhalo.
Uhlu lwezinguquko:
- Kwengezwe ukusekelwa okwengeziwe kwegama elingukhiye lama-params ekilasi labakhi i-Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); }}
- i-codegen:
- Ukusekelwa okuthuthukisiwe kwabakhi besakhiwo se-SimpleType (isibonelo esisetshenziselwa ukuhlanganisa i-typedef uint32_t people_inside; kusukela ku-C) [SimpleType] [CCode (cname = "people_inside")] isakhiwo somphakathi PeopleInside : uint32 {}
- Ukuphathwa okuthuthukisiwe kwesibaluli se-“NoWrapper”.
- I-CCode.type_cname kanye ne-get_ccode_type_name() zivunyelwe kumakilasi.
- I-G_TYPE_INSTANCE_GET_CLASS/INTERFACE ihlezi isetshenziselwa izimpawu zangaphandle.
- Kusetshenziswe i-g_boxed_free ku-free-wrapper ukuze kwabiwe i-GLib.Value enqwabeni.
- Kulungiswe ukuvuza kwenkumbulo ngesikhathi sokungaguquki kwebhokisi le-GLib.Value (isiqukathi esitholakala emhlabeni wonke sanoma yiluphi uhlobo lwevelu).
- Kulungiswe ukuvuza kwenkumbulo lapho uhambisa isakhiwo esabelwe inqwaba kusitaki.
- Ifa lombhidli wesakhiwo somzali liyaqinisekiswa
- Ukubuyiswa okulungile kwereferensi_yesimboli yemisho yabalingisi evalelwe kuthuthukisiwe.
- Kususwe zonke izehlakalo ezifakwe kusidleke ze-CCodeCastExpression.
- Imise ngokungalungile isibambi sesignali esimisiwe.
- Kuxhunywe okuthi "string.h" ye-strcmp() (iphrofayela ye-POSIX, imodi lapho i-Vala ikhiqiza khona ikhodi isebenzisa umtapo C ojwayelekile kuphela).
- I-Vala:
- Ukutholwa okuthuthukisiwe kwamafayela omthombo wephakheji ayimpinda.
- Izinkambu/izakhiwo ze-GtkChild kumele kuthiwe azinabanikazi.
- Ukunikeza kabusha inkambu/isakhiwo se-GtkChild akuvunyelwe.
- Kusetshenziswe umbandela oqinile ku-lambda lapho uphathisa umsebenzi.
- Akuvunyelwe ukusebenzisa izakhiwo ze-SimpleType ezisetshenziswa kanye.
- I-GLib.Value unboxing iqinisekisa ukuthi inani elingaziwa liyabuyiswa.
- Ukusakaza i-GLib.Inani lesakhiwo/ohlotsheni olulula olungasebenzi aluvunyelwe.
- I-agumenti yohlobo engeziwe ihlola ezinhlotsheni zesisekelo/imibandela yangaphambili yeklasi/isixhumi esibonakalayo.
- Ukuthwebula amapharamitha/okuguquguqukayo kwe-va_list akuvunyelwe.
- Amajenerikhi aqukethe isikhombi esakhiweni kufanele aphonswe ohlotsheni olufanele lapho efinyelelwa ukuze kugwenywe i-C UB.
- Incazelo yohlobo esetshenzisiwe yokuthi "in" ngaphakathi kwe-enum.
- Ukuhlola umongo othuthukisiwe wemisebenzi ezokwenziwa endaweni ebhalekayo.
- Kufakwe okuthi "stdlib.h" kwe-Enum.to_string() (POSIX).
- Ireferensi_yomthombo efanele isethelwe okuguquguqukayo okungacacile "lokhu" kanye "nomphumela"
- Kunikezwe umlayezo wephutha kumsebenzi wangaphakathi ongavumelekile wezinkulumo ezingajwayelekile.
- Сodewriter: Uyekile ukwengeza umkhondo ";" ngemuva komzimba ngeStatement.
- I-Girparser:
- Ukucutshungulwa kwesithunywa esingaziwa okungasekelwa indlela ebonakalayo noma isignali kunikezwa.
- Kusetshenziswe imethadatha ethi "delegate_target" yezindlela namapharamitha
- Faka imethadatha ethi "destroy_notify_cname" ezinkambu
- Sebenzisa imethadatha ethi "type_get_function" yamakilasi nezixhumi ezibonakalayo
- Setha i-CCode.type_cname yamakilasi uma kungeyona emisiwe.
- i-girwriter: Iqinisekisa ukuthi izinto zepharamitha yesibonelo zibhaliwe.
- i-girwriter: Kusetshenziswe isibambi sesiginali esizenzakalelayo esisetshenziswayo.
- libvaladoc/html: Kukhishiwe ukuhlunga kwezinkambu zesakhiwo ukuze kushiye i-oda lazo langempela lapho kukhiqizwa imibhalo ye-html valadoc.org
- libvaladoc: Qinisekisa ukuthi amanani e-Api.Class.is_compact abuyiswa ngendlela efanele
- I-libvaladoc: I-wrapper eyengeziwe yelabhulali ye-graphviz "agedge".
- Izibopho:
- Ukulungiswa okuncane lapho kukhiqizwa okubophezelayo: i-cairo, i-gobject-2.0, i-pango, i-goocanvas-2.0, iziqalekiso, i-alsa, i-bzlib, i-sqlite3, i-libgvc, i-posix, i-gstreamer-1.0, i-gdk-3.0, i-gdk-x11-3.0, i-gtk+tk3.0, i-gtk+-4, i-2.0. fuse, libxml-XNUMX
- gdk-pixbuf-2.0: Lungisa i-Pixbuf.save_to_streamv_async()
- gio-2.0: PollableOutputStream.write*_nonblocking() ukulungisa okubophayo
- I-gio-2.0,gtk+-3.0,gtk4: Izibaluli zohlobo lwe-c olucacile lwamapharamitha e-va_list ziyalahlwa
- gio-2.0: I-invoker ekhethiwe engekho kwezinye izindlela ze-AppInfo/File.*()
- I-glib-2.0: Kungezwe i-GLib.[S]List.is_empty() izindlela ezilula zokungeyona i-null
- glib-2.0: Ukubophezela umsebenzi we-assert_cmp* [#395]
- I-glib-2.0: Uhlobo lwenkambu ye-OptionEntry.flags ethuthukisiwe
- glib-2.0: I-PtrArray manje isiyisigaba esingaphansi se-GenericArray
- gstreamer-1.0: I-CCode.type_id ye-MiniObject isethelwe ku-G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Ukusetshenziswa okulungile kwesibaluli se-CCode.type_cname
- I-gtk+-3.0,gtk4: Kulungiswe amanani nemingcele ethile yokubuya kwesithunywa
- I-gtk4: Ibuyekezelwe kunguqulo 4.0.2.
Source: opennet.ru