Vala programmeerimiskeele uus versioon 0.50.4 on välja tulnud. Samuti on värskendatud pikaajalise toe (LTS) haru versiooni Vala 0.48.14 (pakitakse Ubuntu 18.04-le) ja eksperimentaalset haru Vala 0.51.3.
Vala keel on objektorienteeritud programmeerimiskeel, millel on süntaks, mis sarnaneb C# või Java keelele. Objektimudeli põhjal on kasutusel Gobject (Glib objektisüsteem). Mäluhaldus toimub kas omamise (owned/unowned viidatud) kaudu või ARC abil (destruktorite ja viidatud arvude vähenemiste asendamine kompileerimise ajal).
Keele toed sisaldavad introspektsiooni, lambda-funktsioone, liideseid, delegaatide ja sulgude, signaalide ja pesade, erandeid, omadusi, mitte-null tüüpe, tüüpide järeldust lokaalsed muutujate jaoks. Paketis on suur hulk C keele teekide sidemeid (vala-girs, vala-extra-vapis). Vala keeles kirjutatud programmid tõlgitakse C keele esitusviisi ja seejärel kompileeritakse C keele standardkompilaatori abil. Samuti on võimalik käitada programme skriptirežiimis.
Muudatuste nimekiri:
- Sisse on toodud täiendav toetus märksõna params jaoks konstruktorites class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
- koodigeneratsioon:
- Täitmistugevust on parendatud SimpleType struktuuride konstruktorite osas (nt kasutatakse typedef uint32_t people_inside; C-st) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- Atribuudi „NoWrapper” töötlemist on parendatud.
- Klassidele on lubatud CCode.type_cname ja get_ccode_type_name().
- Väliste sümbolite puhul on alati kasutatud G_TYPE_INSTANCE_GET_CLASS/INTERFACE.
- GLib.Value paigutamiseks kuhja on free-wrapperis kasutatud g_boxed_free.
- Mälu leke on parandatud GLib.Value (igat tüüpi väärtuste universaalne konteiner) mitteformaalse unbundlingu ajal.
- Mälu leke on parandatud kuhjas eraldatud struktuuri virna liigutamise ajal.
- Vanema struktuuri destruktorit on õigesti päringud.
- Sümboli viidete sisemise cast-konstruktsioonide õige saamine on tagatud.
- Kõik CCodeCastExpressioni sisemised esinemised on eemaldatud.
- Vale vaikimisi signaalide töötleja kutse on lõpetatud.
- strcmp() jaoks on ühendatud „string.h” (POSIX profiil, režiim, kus Vala genereerib koodi, kasutades ainult standardset C teeki).
- Vala:
- Parandatud algfailide pakettide dubleeritud tuvastamine.
- GtkChild väljad/omadused peavad olema deklareeritud kui unowned.
- GtkChild väljade/omaduste määramine on keelatud.
- Määramise delegeerimise korral on lisatud rangem tingimus lambda jaoks.
- Ühekordsete SimpleType struktuuride kasutamine on keelatud.
- GLib.Value ümbersuunamisel tagatakse unowned-väärtuse tagastamine.
- GLib.Value tüübimuutus nullable struktuuri/tehte tüübiks on keelatud.
- Lisatud tüübikontrolli argumentide jaoks põhiliikides/klasside/liideste etteantud tingimustes.
- va_list parameetrite/muutujate haaramine on keelatud.
- Dženerikud, mis sisaldavad struktuuri näidikuid, peavad olema juurdepääsu jaoks õigele tüübile muudetud, et vältida UB-d.
- Realiseeritud tüüpide väljund "in" sees enum.
- Parandatud konteksti kontroll määramiste ajal kirjutatavas väljas.
- Enum.to_string() (POSIX) jaoks on ühendatud "stdlib.h".
- Seatud õige source_reference vaikimata muutujatele "this" ja "result".
- Tagatud veateate väljund aluseks olevate operandide kohta kehtetu ühemõtteliste väljendite korral.
- Codewriter: lõpetatud lõppsümboli ";" lisamine WithStatement kehade järel.
- Girparser:
- Tagatud anonüümse delegeedi töötlemine, mis ei ole toetatud virtuaalse meetodi või signaali poolt.
- Kasutatud metadatasid «delegate_target» meetodite ja parameetrite jaoks
- Kasutatud metadatasid «destroy_notify_cname» väljade jaoks
- Kasutatud metadatasid «type_get_function» klasside ja liideste jaoks
- Seatud CCode.type_cname klassidele, kui see ei vasta vaikeväärtusele.
- girwriter: Tagatud kohaloleku parameetrite elementide kirjutamine.
- girwriter: Rakendatud vaike signaalide käsitleja väljund.
- libvaladoc/html: Eemaldatud struktuuriväljade sortimine, et säilitada nende originaalne järjekord valadoc.org HTML-dokumentatsioonis.
- libvaladoc: Tagatud õige väärtuste saamine Api.Class.is_compact jaoks
- libvaladoc: Lisatud «agedge» teegile wrapper
- Sidumised:
- Väikesed parandused sidumiste genereerimisel: 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, gtk4, fuse, libxml-2.0
- gdk-pixbuf-2.0: Parandatud Pixbuf.save_to_streamv_async()
- gio-2.0: Parandatud sidumine PollableOutputStream.write*_nonblocking()
- gio-2.0, gtk+-3.0, gtk4: Loobutud c-tüüpi parameetrite va_list eksplicitsetest atribuutidest
- gio-2.0: Valitud mõnedel AppInfo/File.*() meetoditel puuduv invoker
- glib-2.0: Lisatud GLib.[S]List.is_empty() mugavusmeetodid mitte-nullide jaoks
- glib-2.0: Sidumine funktsiooni assert_cmp* [#395]
- glib-2.0: Parandatud välja tüüp OptionEntry.flags
- glib-2.0: PtrArray on nüüd GenericArray alamklass
- gstreamer-1.0: CCode.type_id miniobjekti (MiniObject) määratakse G_TYPE_BOXED-iks [#1133]
- gtk+-2.0, javascriptcoregtk-4.0: CCode.type_cname atribuudi kasutust on korrigeeritud
- gtk+-3.0, gtk4: Delegaatide tagastatud väärtused ja argumendid on mõnes osas parandatud
- gtk4: Uuendatud versioonini 4.0.2.
Allikas: opennet.ru
