Ohjelmointikielen kääntäjästä Vala 0.54.0 on julkaistu uusi versio. Vala-kieli on olio-ohjelmointikieli, joka tarjoaa samanlaisen syntaksin kuin C# tai Java. Vala-koodi käännetään C-ohjelmaksi, joka puolestaan käännetään tavallisella C-kääntäjällä binääritiedostoksi ja suoritetaan kohdealustan objektikoodiksi käännetyn sovelluksen nopeudella. On mahdollista ajaa ohjelmia komentosarjatilassa. Kieltä kehitetään GNOME-projektin alaisuudessa. Kohdemallina käytetään Gobjectia (Glib Object System). Kääntäjäkoodia jaetaan LGPLv2.1-lisenssillä.
Kielessä on tuki itsetutkiskelulle, lambda-funktioille, rajapinnoille, delegaateille ja sulkemisille, signaaleille ja aikavälille, poikkeuksille, ominaisuuksille, ei-nollatyypeille, paikallisten muuttujien tyyppipäätelmille (var). Muistin hallinta perustuu viitelaskentaan. Kielelle on kehitetty yleinen ohjelmointikirjasto libgee, joka tarjoaa mahdollisuuden luoda kokoelmia mukautetuille tietotyypeille. Kokoelman elementtien luettelointi foreach-lauseen avulla on tuettu. Grafiikkaohjelmien ohjelmointi tapahtuu GTK-grafiikkakirjaston avulla.
Pakkauksen mukana tulee suuri määrä sidoksia kirjastoihin C-kielellä. Vala-kääntäjä tukee Genie-kieltä, joka tarjoaa vastaavat ominaisuudet, mutta Python-ohjelmointikielestä inspiroima syntaksilla. Sellaiset ohjelmat kuten Geary-sähköpostiohjelma, Budgie-graafinen kuori, Shotwell valokuva- ja videotiedostojen organisointiohjelma ja muut ovat kirjoitettuja Valan kielellä. Kieltä käytetään aktiivisesti Elementary OS -jakelun kehittämisessä.
Tärkeimmät innovaatiot:
- Lisätty tuki delegaateille, joilla on vaihteleva määrä parametreja;
- Lisätty LIBC-profiili, joka on synonyymi POSIX-profiilille;
- Parannettu sukupolvi POSIX-profiilitilassa;
- Lisätty mahdollisuus ilmoittaa muuttujat, joilla voi olla nolla-arvo tyyppipäätelmällä (var?);
- Lisätty mahdollisuus julistaa luokat kielletyiksi perintöä varten (sinetöity);
- Lisätty turvallisen pääsyn operaattori luokkakenttiin, jotka voivat olla nolla (a.?b.?c);
- Sallittu rakenteen sisällön alustaminen nulliksi (const Foo[] BARS = { { "bar", 42 }, null };);
- Resize()-toiminto on kielletty vakiomatriiseilla;
- Lisätty varoitustulos, kun yritetään lähettää funktiokutsu void-tilaan ((void)not_void_func(););
- GLib.Array-elementtityyppien rajoitus poistettu;
- Korjattu "unowned var" -omistusperintö foreach()-lauseessa;
- Sitoutuminen webkit2gtk-4.0:aan on päivitetty versioon 2.33.3;
- Gstreameriin sitoutuminen on päivitetty versioon 1.19.0+ git master;
- Sitous gtk4:ään on päivitetty versioon 4.5.0~e681fdd9;
- Gtk+-3.0:n sidonta on päivitetty versioon 3.24.29+f9fe28ce
- Sitoutuminen gio-2.0:aan, glib-2.0:aan on päivitetty versioon 2.69.0;
- Linuxille on lisätty sidoksia SocketCANiin;
- Korjauksia sidoksissa: glib-2.0, gio-2.0, gstreamer-rtp-1.0, javascriptcoregtk-4.0, gobject-2.0, pango, linux, gsl, rest-0.7, libusb, libusb-1.0, pixman-1, webkit2gtk-web- laajennus-4.0, x11, zlib, gnutls;
- Poistettu gedit-2.20- ja webkit-1.0-sidokset;
- Päivitetyt sidokset GIR:n perusteella;
- Testausjärjestelmään on lisätty mahdollisuus tarkistaa luotu C-koodi;
- Parannettu girparser, girwriter, valadoc, libvaladoc/girimporter;
- Eri kääntäjäkomponenttien kertyneet virheet ja puutteet on korjattu.
Lähde: opennet.ru