Vala-ohjelmointikielen 0.50.4 kääntäjästä on julkaistu uusi versio. Pitkäaikaisen tuen (LTS) haara Vala 0.48.14 (pakattu Ubuntu 18.04:lle) ja kokeellinen haara Vala 0.51.3 on myös päivitetty.
Vala-kieli on olio-ohjelmointikieli, joka tarjoaa samanlaisen syntaksin kuin C# tai Java. Kohdemallina käytetään Gobjectia (Glib Object System). Muistin hallinta tapahtuu omistajuudella (omistetut/ei-omistetut linkit) tai käyttämällä ARC:tä (destruktoreiden korvaaminen ja objektiviittauslaskurien vähentäminen käännösvaiheessa).
Kielellä on tuki itsetutkiskelulle, lambda-funktioille, rajapinnoille, delegaateille ja sulkemisille, signaaleille ja aikavälille, poikkeuksille, ominaisuuksille, ei-nollatyypeille, paikallisten muuttujien tyyppipäätelmille. Sarjan mukana tulee suuri määrä sidoksia kirjastoihin C-kielellä (vala-girs, vala-extra-vapis). Vala-ohjelmat käännetään C-esitykseen ja käännetään sitten tavallisella C-kääntäjällä. Ohjelmia voidaan ajaa komentosarjatilassa.
Luettelo muutoksista:
- Lisätty lisätuki params-avainsanalle rakentajille class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
- koodigeeni:
- Paranneltu tuki SimpleType-rakenteen rakentajille (käytetään esimerkiksi sitomaan typedef uint32_t people_inside; C:stä) [SimpleType] [CCode (cname = "people_inside")] julkinen rakenne PeopleInside : uint32 {}
- Parannettu "NoWrapper"-attribuutin käsittely.
- CCode.type_cname ja get_ccode_type_name() ovat sallittuja luokissa.
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE käytetään aina ulkoisille symboleille.
- Käytettiin g_boxed_free-muotoa vapaassa kääreessä GLib.Value-arvon osoittamiseen kasaan.
- Korjattu muistivuoto GLib.Value:n implisiittisen purkamisen aikana (kaiken arvon yleissäiliö).
- Korjattu muistivuoto siirrettäessä pinoon kohdistettua rakennetta.
- Emorakenteen tuhoajan periytyminen varmistetaan
- Sisäkkäisten cast-lausekkeiden symbol_reference:n oikeaa hakua on parannettu.
- Kaikki CCodeCastExpressionin sisäkkäiset esiintymät poistettiin.
- Lopetettu virheellinen kutsuminen oletussignaalin käsittelijälle.
- Yhdistetty "string.h" varten strcmp() (POSIX-profiili, tila, jossa Vala luo koodia käyttämällä vain standardia C-kirjastoa).
- Vala:
- Parannettu päällekkäisten pakettien lähdetiedostojen tunnistaminen.
- GtkChild-kentät/ominaisuudet on julistettava omistamattomiksi.
- GtkChild-kentän/-ominaisuuden määrittäminen uudelleen on kielletty.
- Lambdaan on sovellettu tiukempia ehtoja toimeksiannon delegoinnissa.
- Kertakäyttöisten SimpleType-rakenteiden käyttö on kielletty.
- GLib.Value unboxing varmistaa, että omistamaton arvo palautetaan.
- GLib.Value-arvon lähettäminen nollattavaan rakenteeseen/yksinkertaiseen tyyppiin on kielletty.
- Lisätty tyyppiargumentin tarkistus perustyyppien/luokan/rajapinnan ennakkoehtoihin.
- va_list-parametrien/muuttujien sieppaus on kielletty.
- Yleiset, jotka sisältävät osoittimen rakenteeseen, on käytettävä oikeaan tyyppiin C UB:n välttämiseksi.
- Toteutettu tyyppipäätelmä "in":lle enumin sisällä.
- Parannettu kontekstin tarkistus kirjoitettavan kentän tehtäville.
- Sisältää "stdlib.h":lle Enum.to_string() (POSIX).
- Oikea source_reference asetetaan implisiittisille muuttujille "this" ja "result"
- Antoi virheilmoituksen unaarilausekkeiden virheellisestä sisäisestä operandista.
- Сcodewriter: Lopetettu ";":n lisääminen rungon jälkeen WithStatement.
- Girparser:
- Anonyymin edustajan käsittely, jota ei tueta virtuaalisella menetelmällä tai signaalilla.
- Käytettiin "delegate_target"-metatietoja menetelmille ja parametreille
- Käytä "destroy_notify_cname"-metatietoja kenttiin
- Käytä "type_get_function" -metatietoja luokille ja käyttöliittymille
- Aseta luokille CCode.type_cname, jos se ei ole oletusarvo.
- girwriter: Varmistaa, että ilmentymän parametrielementit kirjoitetaan.
- girwriter: Toteutettu oletussignaalinkäsittelylähtö.
- libvaladoc/html: Poistettu rakennekenttien lajittelu alkuperäiseen järjestykseensä luotaessa html-dokumentaatiota valadoc.org
- libvaladoc: Varmista, että Api.Class.is_compactin arvot haetaan oikein
- libvaladoc: Lisätty kääre "agedge" graphviz -kirjastolle
- Sidokset:
- Pienet korjaukset luotaessa sidoksia: cairo, gobject-2.0, pango, goocanvas-2.0, curses, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk-3.0, gtk+t. sulake, libxml-4
- gdk-pixbuf-2.0: Korjaa Pixbuf.save_to_streamv_async()
- gio-2.0: PollableOutputStream.write*_nonblocking() -sidontakorjaus
- gio-2.0,gtk+-3.0,gtk4: va_list-parametrien eksplisiittiset c-tyypin attribuutit hylätään
- gio-2.0: Valittu puuttuva kutsuja joillekin AppInfo/File.*() -menetelmille
- glib-2.0: Lisätty GLib.[S]List.is_empty() mukavuusmenetelmiä ei-nollalle
- glib-2.0: assert_cmp*-funktion sitominen [#395]
- glib-2.0: Parannettu OptionEntry.flags-kenttätyyppi
- glib-2.0: PtrArray on nyt GenericArrayn alaluokka
- gstreamer-1.0: MiniObjectin CCode.type_id on G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: CCode.type_cname-attribuutin korjattu käyttö
- gtk+-3.0,gtk4: Korjattu joitain edustajan palautusarvoja ja parametreja
- gtk4: Päivitetty versioon 4.0.2.
Lähde: opennet.ru