Izašla je nova verzija prevoditelja za programski jezik Vala 0.50.4. Ažurirana je i grana dugoročne podrške (LTS) Vala 0.48.14 (zapakirana za Ubuntu 18.04) i eksperimentalna grana Vala 0.51.3.
Jezik Vala je objektno orijentirani programski jezik koji pruža sintaksu sličnu C# ili Javi. Kao objektni model koristi se Gobject (Glib Object System). Upravljanje memorijom provodi se prema vlasništvu (veze u vlasništvu/nevlasništvu) ili korištenjem ARC-a (zamjena destruktora i smanjivanje brojača referenci objekta u fazi kompilacije).
Jezik ima podršku za introspekciju, lambda funkcije, sučelja, delegate i zatvaranja, signale i utore, iznimke, svojstva, tipove koji nisu nulti, zaključivanje tipa za lokalne varijable. Komplet dolazi s velikim brojem vezanja za knjižnice u C-u (vala-girs, vala-extra-vapis). Vala programi su prevedeni u C reprezentaciju i zatim kompajlirani pomoću standardnog prevodioca C. Moguće je pokrenuti programe u načinu skripte.
Popis promjena:
- Dodana dodatna podrška za ključnu riječ params za konstruktore class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); }}
- codegen:
- Poboljšana podrška za konstruktore SimpleType strukture (na primjer, koristi se za vezanje typedef uint32_t people_inside; iz C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- Poboljšano rukovanje atributom "NoWrapper".
- CCode.type_cname i get_ccode_type_name() dopušteni su za klase.
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE uvijek se koristi za vanjske simbole.
- Koristi se g_boxed_free u besplatnom omotu za dodjelu GLib.Value na gomilu.
- Popravljeno curenje memorije tijekom implicitnog otpakiranja GLib.Value (univerzalni spremnik bilo koje vrste vrijednosti).
- Riješeno je curenje memorije prilikom premještanja strukture dodijeljene gomile na stog.
- Osigurano je nasljeđivanje destruktora nadređene strukture
- Poboljšano je ispravno dohvaćanje symbol_reference ugniježđenih cast izraza.
- Uklonjena su sva ugniježđena pojavljivanja CCodeCastExpression.
- Zaustavljeno neispravno pozivanje zadanog rukovatelja signalima.
- Povezan "string.h" za strcmp() (POSIX profil, način rada u kojem Vala generira kod koristeći samo standardnu C biblioteku).
- Vala:
- Poboljšano otkrivanje dupliciranih izvornih datoteka paketa.
- GtkChild polja/svojstva moraju se proglasiti nevlasničkim.
- Ponovno dodjeljivanje polja/svojstva GtkChild je zabranjeno.
- Stroži uvjet primijenjen je na lambda kod delegiranja dodjele.
- Zabranjeno je koristiti strukture SimpleType za jednokratnu upotrebu.
- Otpakiranje GLib.Value osigurava vraćanje neposjedovane vrijednosti.
- Zabranjeno je pretvaranje GLib.Value u nullable strukturu/jednostavni tip.
- Dodana provjera argumenata tipa u preduvjetima osnovnih tipova/klasa/sučelja.
- Hvatanje parametara/varijabli va_list je zabranjeno.
- Generici koji sadrže pokazivač na strukturu moraju se pretvoriti u ispravan tip kada im se pristupi kako bi se izbjegao C UB.
- Implementirano zaključivanje tipa za "in" unutar enuma.
- Poboljšana provjera konteksta za dodjele polja za pisanje.
- Uključen "stdlib.h" za Enum.to_string() (POSIX).
- Ispravna izvorna_referenca postavljena je za implicitne varijable "this" i "result"
- Navedena je poruka o pogrešci za nevažeći interni operand unarnih izraza.
- Autor koda: Zaustavljeno dodavanje ";" na kraju nakon tijela WithStatement.
- Girparser:
- Omogućena je obrada anonimnog delegata koja nije podržana virtualnom metodom ili signalom.
- Primijenjeni metapodaci "delegate_target" za metode i parametre
- Primijenite metapodatke "destroy_notify_cname" na polja
- Primijenite metapodatke "type_get_function" za klase i sučelja
- Postavite CCode.type_cname za klase ako nije zadano.
- girwriter: Osigurava da su elementi parametara instance napisani.
- girwriter: Implementiran zadani izlaz rukovatelja signalom.
- libvaladoc/html: Uklonjeno sortiranje strukturnih polja kako bi se ostavio njihov izvorni redoslijed prilikom generiranja html dokumentacije valadoc.org
- libvaladoc: Osigurajte da su vrijednosti za Api.Class.is_compact ispravno dohvaćene
- libvaladoc: Dodan omot za "agedge" graphviz biblioteku
- Vezovi:
- Manji popravci kod generiranja povezivanja: 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, osigurač, libxml-2.0
- gdk-pixbuf-2.0: Popravi Pixbuf.save_to_streamv_async()
- gio-2.0: popravak povezivanja PollableOutputStream.write*_nonblocking()
- gio-2.0,gtk+-3.0,gtk4: Eksplicitni c-type atributi parametara va_list se odbacuju
- gio-2.0: odabran nedostajući invoker za neke AppInfo/File.*() metode
- glib-2.0: Dodane praktične metode GLib.[S]List.is_empty() za ne-null
- glib-2.0: Povezivanje funkcije assert_cmp* [#395]
- glib-2.0: Poboljšana vrsta polja OptionEntry.flags
- glib-2.0: PtrArray je sada podklasa GenericArray
- gstreamer-1.0: CCode.type_id MiniObjecta postavljen je na G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Ispravljena upotreba atributa CCode.type_cname
- gtk+-3.0,gtk4: Popravljene neke povratne vrijednosti i parametri delegata
- gtk4: Ažurirano na verziju 4.0.2.
Izvor: opennet.ru