Vala ohjelmointikielen kääntäjän päivitys 0.50.4

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

Lisää kommentti