Objavljena je nova verzija kompajlera za programski jezik Vala 0.50.4. Grana dugoročne podrške (LTS) Vala 0.48.14 (pakovana za Ubuntu 18.04) i eksperimentalna grana Vala 0.51.3 su također ažurirane.
Jezik Vala je objektno orijentisani programski jezik koji pruža sintaksu sličnu C# ili Javi. Gobject (Glib Object System) se koristi kao objektni model. Upravljanje memorijom se vrši vlasništvom (vlasnički/neposjednički linkovi) ili korištenjem ARC-a (zamjena destruktora i dekrementiranja brojača referenci objekta u fazi kompilacije).
Jezik ima podršku za introspekciju, lambda funkcije, interfejse, delegate i zatvaranja, signale i slotove, izuzetke, svojstva, tipove koji nisu nulti, zaključivanje tipa za lokalne varijable. Komplet dolazi sa velikim brojem veza za biblioteke u C (vala-girs, vala-extra-vapis). Vala programi se prevode u C reprezentaciju i zatim kompajliraju standardnim kompajlerom C. Moguće je pokrenuti programe u skript modu.
Lista promjena:
- Dodata dodatna podrška za ključnu riječ params za konstruktore class Foo{ public Foo(params string[] args){ foreach (var arg u args) print(arg); } }
- codegen:
- Poboljšana podrška za SimpleType struct konstruktore (na primjer koristi se za povezivanje typedef uint32_t people_inside; iz C) [SimpleType] [CCode (cname = "people_inside")] javna struct PeopleInside : uint32 {}
- Poboljšano rukovanje atributom “NoWrapper”.
- CCode.type_cname i get_ccode_type_name() su dozvoljeni za klase.
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE se uvijek koristi za vanjske simbole.
- Koristi se g_boxed_free u free-wrapper-u za dodjelu GLib.Value na hrpi.
- Popravljeno je curenje memorije tokom implicitnog raspakivanja GLib.Value (univerzalni kontejner bilo koje vrste vrijednosti).
- Popravljeno je curenje memorije prilikom premještanja strukture dodijeljene hrpi u stek.
- Osigurano je nasljeđivanje destruktora roditeljske strukture
- Poboljšano je ispravno dohvaćanje symbol_reference ugniježđenih cast izraza.
- Uklonjena su sva ugniježđena pojavljivanja CCodeCastExpression.
- Zaustavljeno pogrešno pozivanje podrazumevanog rukovaoca signalom.
- Povezani "string.h" za strcmp() (POSIX profil, način u kojem Vala generiše kod koristeći samo standardnu C biblioteku).
- Vala:
- Poboljšano otkrivanje duplikata izvornih datoteka paketa.
- GtkChild polja/svojstva moraju biti deklarirana bez vlasništva.
- Ponovno dodjeljivanje polja/svojstva GtkChild je zabranjeno.
- Stroži uslov je primijenjen na lambda prilikom delegiranja zadatka.
- Zabranjena je upotreba struktura SimpleType za jednokratnu upotrebu.
- GLib.Value raspakiranje osigurava da se vrati vrijednost bez vlasništva.
- Zabranjeno je prebacivanje GLib.Value u strukturni/jednostavni tip koji može biti null.
- Dodata provjera argumenata tipa u osnovnim tipovima/klasi/preduvjetima sučelja.
- Hvatanje parametara/varijabli va_list je zabranjeno.
- Generici koji sadrže pokazivač na strukturu moraju se prebaciti na ispravan tip kada im se pristupa kako bi se izbjeglo C UB.
- Implementirano zaključivanje tipa za "in" unutar enuma.
- Poboljšana provjera konteksta za dodjelu polja za pisanje.
- Uključen "stdlib.h" za Enum.to_string() (POSIX).
- Ispravna izvorna referenca je postavljena za implicitne varijable "ovo" i "rezultat"
- Dao poruku o grešci za nevažeći interni operand unarnih izraza.
- Programer: Zaustavljeno dodavanje zadnjeg ";" nakon tijela WithStatement.
- Girparser:
- Osigurana je obrada anonimnog delegata koji nije podržan virtuelnom metodom ili signalom.
- Primijenjeni metapodaci "delegate_target" za metode i parametre
- Primijenite "destroy_notify_cname" metapodatke na polja
- Primijenite "type_get_function" metapodatke 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 rukovanja signalom.
- libvaladoc/html: Uklonjeno sortiranje polja strukture kako bi se ostavio njihov originalni poredak 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:
- Manje popravke prilikom generiranja veza: 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, gtk osigurač, libxml-3.0
- gdk-pixbuf-2.0: Popravi Pixbuf.save_to_streamv_async()
- gio-2.0: PollableOutputStream.write*_nonblocking() popravak povezivanja
- gio-2.0,gtk+-3.0,gtk4: Eksplicitni atributi c-tipa parametara va_list se odbacuju
- gio-2.0: Izabrani invoker koji nedostaje za neke AppInfo/File.*() metode
- glib-2.0: Dodan GLib.[S]List.is_empty() metode pogodnosti za ne-null metode.
- glib-2.0: Vezivanje assert_cmp* funkcije [#395]
- glib-2.0: Poboljšan tip polja OptionEntry.flags
- glib-2.0: PtrArray je sada podklasa GenericArray
- gstreamer-1.0: CCode.type_id MiniObject je postavljen na G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Ispravljena upotreba atributa CCode.type_cname
- gtk+-3.0,gtk4: Ispravljene su neke vrijednosti i parametre vraćanja delegata
- gtk4: Ažurirano na verziju 4.0.2.
izvor: opennet.ru