Ažuriranje prevoditelja programskog jezika Vala 0.50.4

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

Dodajte komentar