Vala programming ulwimi compiler uhlaziyo 0.50.4

Inguqulelo entsha yomqambi weVala yolwimi lwenkqubo 0.50.4 ikhululiwe. Inkxaso yexesha elide (LTS) yesebe iVala 0.48.14 (epakishwe kwi-Ubuntu 18.04) kunye nesebe lokuhlola i-Vala 0.51.3 nayo ihlaziywe.

Ulwimi lweVala lulwimi lwenkqubo olujolise kwinto ebonelela ngesivakalisi esifana neC# okanye iJava. I-Gobject (Inkqubo ye-Glib Object) isetyenziswa njengemodeli yento. Ulawulo lwenkumbulo lwenziwa ngobunini (amakhonkco angabanini/abangabanikazi) okanye kusetyenziswa i-ARC (ukufakwa endaweni yabatshabalalisi kunye nokuncipha kwezinto zokubala zesalathiso kwinqanaba lokudibanisa).

Ulwimi lunenkxaso ye-introspection, imisebenzi ye-lambda, i-interfaces, abathunywa kunye nokuvalwa, imiqondiso kunye neendawo zokubeka, ngaphandle, iipropati, iintlobo ezingezona ze-null, i-inference yohlobo lwee-variables zendawo. Ikhithi iza nenani elikhulu lezibophelelo kumathala eencwadi e-C (vala-girs, vala-extra-vapis). Iiprogram zeVala ziguqulelwa kumboniso we-C kwaye emva koko zihlanganiswe ngumqambi oqhelekileyo we-C. Kunokwenzeka ukuqhuba iinkqubo kwimodi yeskripthi.

Uluhlu lotshintsho:

  • Inkxaso eyongezelelweyo yegama elingundoqo le-params kubakhi beklasi i-Foo yoluntu (i-params string[] args) {i-foreach (var arg in args) print(arg); }}
  • ikhowudi:
    • Uphuculo lwenkxaso yabakhi besakhiwo seSimpleType (umzekelo osetyenziselwa ukubopha i-typedef uint32_t people_inside; ukusuka ku-C) [SimpleType] [CCode (cname = "people_inside")] isakhiwo sikawonke-wonke PeopleInside : uint32 {}
    • Ukuphathwa okuphuculweyo kweempawu ze-"NoWrapper".
    • CCode.type_cname kunye get_ccode_type_name() zivumelekile kwiiklasi.
    • I-G_TYPE_INSTANCE_GET_CLASS/INTERFACE isoloko isetyenziselwa iisimboli zangaphandle.
    • Isetyenziswe i-g_boxed_free kwi-wrapper esimahla ukwabela i-GLib.Ixabiso kwimfumba.
    • Kulungiswe inkumbulo evuzayo ngexesha lokungabhaxi kwe-GLib.Ixabiso (isikhongozeli sehlabathi lonke salo naluphi na uhlobo lwexabiso).
    • Kulungiswe ukuvuza kwememori xa uhambisa isakhiwo esabelwe imfumba kwisitaki.
    • Ilifa lomtshabalalisi wesakhiwo somzali liyaqinisekiswa
    • Ukufunyanwa okuchanekileyo kwesimboli_yereferensi yeentetho ezifakwe kwindlwane kuphuculwe.
    • Isuse zonke izehlo zeCCodeCastExpression.
    • Iyeke ukufowuna ngendlela engalunganga isiphathi sophawu esihlala sihleli.
    • Idityaniswe "string.h" ye-strcmp () (iprofayili yePOSIX, imowudi apho iVala ivelisa ikhowudi isebenzisa kuphela ilayibrari ye-C eqhelekileyo).
  • Vala:
    • Ukubonwa okuphuculweyo kweefayile zomthombo wepakethe ephindwe kabini.
    • Iindawo/iipropati ze-GtkChild kufuneka zibhengezwe njengezingabanikazi.
    • Ukwabela ngokutsha indawo/ipropati ye-GtkChild akuvumelekanga.
    • Kusetyenziswe umqathango ongqongqo kwi-lambda xa udlulisela isabelo.
    • Akuvumelekanga ukusebenzisa i-SimpleType-usetyenziso olunye lwezakhiwo.
    • I-GLib.Value unboxing iqinisekisa ukuba ixabiso elingaphathwanga libuyisiwe.
    • Ukuphosa i-GLib.Ixabiso kulwakhiwo olungasebenziyo/uhlobo olulula akuvumelekanga.
    • Uhlobo lwengxabano eyongeziweyo kujongwa kwiintlobo zesiseko/udidi/ujongano lwangaphambili.
    • Ukubamba i-va_list parameters/variables akuvumelekanga.
    • Iigenerics ezinesalathi kwisakhiwo kufuneka ziphoswe kuhlobo oluchanekileyo xa zifunyenwe ukunqanda i-C UB.
    • Ufezekiso lohlobo lothelekiso lwe-"in" ngaphakathi kwe-enum.
    • Ukuphuculwa komxholo kujongwa izabelo kwindawo ebhalekayo.
    • Ibandakanyiwe "stdlib.h" ye-Enum.to_string() (POSIX).
    • Imvelaphi_yereferensi echanekileyo imiselwe ukwahluka okungafihlwayo "le" kunye "nesiphumo"
    • Kunikezelwe ngomyalezo wemposiso kwi-operand engasebenziyo yangaphakathi yeentetho ezingaqhelekanga.
  • Umbhali: Uyekile ukongeza umkhondo ";" emva komzimba ngeStatement.
  • I-Girparser:
    • Ukuqhubekeka komthunywa ongaziwa ongaxhaswanga yindlela yenyani okanye umqondiso unikiwe.
    • Kufakwe "delegate_target" metadata yeendlela kunye neparameters
    • Faka "destroy_notify_cname" imetadata kwiindawo
    • Faka "type_get_function" imetadata kwiiklasi kunye nojongano
    • Cwangcisa i-CCode.type_cname kwiiklasi ukuba asiyonto imiselweyo.
  • girwriter: Uqinisekisa ukuba izinto zeparamitha zibhaliwe.
  • girwriter: Iphunyeziwe yomphathi wesiginali engagqibekanga.
  • libvaladoc/html: Ukhetho olususiweyo lwamasimi esakhiwo ukushiya iodolo yawo yoqobo xa kusenziwa uxwebhu lwehtml valadoc.org
  • libvaladoc: Qinisekisa ukuba amaxabiso e-Api.Class.is_compact afunyanwa ngokuchanekileyo
  • I-libvaladoc: Isisongelo esongeziweyo sethala leencwadi legraphviz "agedge".
  • Izibophelelo:
    • Ukulungiswa okuncinci xa uvelisa izibophelelo: i-cairo, i-gobject-2.0, i-pango, i-goocanvas-2.0, iziqalekiso, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk+-4, fuse, libxml-2.0
    • gdk-pixbuf-2.0: Lungisa iPixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() ukulungisa isibophelelo
    • gio-2.0,gtk+-3.0,gtk4: Iimpawu zeempawu ze-c ezicacileyo ze-va_list parameters zilahliwe
    • gio-2.0: Ekhethiweyo elahlekileyo invoker kwezinye AppInfo/Fayile.*() iindlela
    • glib-2.0: Yongezwe i-GLib.[S]List.is_empty() iindlela eziluncedo zokunga-null
    • glib-2.0: Ibophelela i assert_cmp* umsebenzi [#395]
    • glib-2.0: Uphuculo loKhethoEntry.flags uhlobo lommandla
    • glib-2.0: I-PtrArray ngoku iludidi olusezantsi lwe-GenericArray
    • gstreamer-1.0: CCode.type_id yeMiniObject imiselwe kuG_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Usetyenziso oluchanekileyo lwe CCode.type_cname uphawu
    • I-gtk+-3.0,gtk4: Lungisa amaxabiso okubuyisela abathunywa kunye neeparamitha
    • gtk4: Ihlaziywe kuguqulelo 4.0.2.

umthombo: opennet.ru

Yongeza izimvo