Isibuyekezo se-Vala solimi lokuhlela uhlelo 0.50.4

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

Engeza amazwana