Vala ažuriranje kompajlera programskog jezika 0.50.4

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

Dodajte komentar