En ny versjon av kompilatoren for programmeringsspråket Vala 0.50.4 er utgitt. Den langsiktige støttegrenen (LTS) Vala 0.48.14 (pakket for Ubuntu 18.04) og den eksperimentelle grenen Vala 0.51.3 er også oppdatert.
Vala-språket er et objektorientert programmeringsspråk som gir en syntaks som ligner på C# eller Java. Gobject (Glib Object System) brukes som en objektmodell. Minnehåndtering utføres av eierskap (eide/ueide lenker) eller ved å bruke ARC (erstatning av destruktorer og dekrementering av objektreferansetellere på kompileringsstadiet).
Språket har støtte for introspeksjon, lambda-funksjoner, grensesnitt, delegater og lukkinger, signaler og spor, unntak, egenskaper, ikke-nulltyper, typeslutning for lokale variabler. Settet kommer med et stort antall bindinger til biblioteker i C (vala-girs, vala-extra-vapis). Vala-programmer oversettes til C-representasjon og kompileres deretter av en standard C-kompilator Det er mulig å kjøre programmer i script-modus.
Liste over endringer:
- Lagt til ekstra støtte for params-nøkkelordet for konstruktørklassen Foo{ public Foo(params string[] args){ foreach (var arg i args) print(arg); } }
- kodegen:
- Forbedret støtte for SimpleType struct-konstruktører (for eksempel brukt til å binde typedef uint32_t people_inside; fra C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- Forbedret håndtering av «NoWrapper»-attributtet.
- CCode.type_cname og get_ccode_type_name() er tillatt for klasser.
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE brukes alltid for eksterne symboler.
- Brukte g_boxed_free i free-wrapper for å tildele GLib.Value på haugen.
- Rettet en minnelekkasje under implisitt utboksing av GLib.Value (en universell beholder av enhver verditype).
- Rettet en minnelekkasje ved flytting av en heap-allokert struktur til en stabel.
- Arv av destruktoren til overordnet struktur er sikret
- Riktig henting av symbol_reference for nestede cast-uttrykk er forbedret.
- Fjernet alle nestede forekomster av CCodeCastExpression.
- Stoppet feil oppkalling av standard signalbehandler.
- Tilkoblet "string.h" for strcmp() (POSIX-profil, modus der Vala genererer kode ved kun å bruke standard C-bibliotek).
- Vala:
- Forbedret gjenkjenning av dupliserte pakkekildefiler.
- GtkChild-felt/-egenskaper må erklæres ueid.
- Omtildeling av GtkChild-feltet/-egenskapen er forbudt.
- Det er satt et strengere vilkår for lambdaen ved delegering av et oppdrag.
- Det er forbudt å bruke SimpleType-strukturer for engangsbruk.
- GLib.Value unboxing sikrer at den ueide verdien returneres.
- Det er forbudt å støpe GLib.Value til en nullbar struktur/enkel type.
- Lagt til type-argumentkontroll i forutsetninger for basistyper/klasse/grensesnitt.
- Registrering av va_list-parametere/variabler er forbudt.
- Generikk som inneholder en peker til en struktur må støpes til riktig type når de åpnes for å unngå C UB.
- Implementert typeslutning for "in" inne i enum.
- Forbedret kontekstsjekking for tildelinger til det skrivbare feltet.
- Inkludert "stdlib.h" for Enum.to_string() (POSIX).
- Riktig kildereferanse er satt for de implisitte variablene "this" og "result"
- Oppgitt en feilmelding for en ugyldig intern operand av unære uttrykk.
- Сodewriter: Sluttet å legge til den etterfølgende ";" etter kroppen WithStatement.
- Girparser:
- Behandling av en anonym delegat som ikke støttes av en virtuell metode eller et virtuelt signal tilbys.
- Brukte "delegate_target"-metadata for metoder og parametere
- Bruk "destroy_notify_cname"-metadata på felt
- Bruk "type_get_function"-metadata for klasser og grensesnitt
- Angi CCode.type_cname for klasser hvis ikke standard.
- girwriter: Sikrer at instansparameterelementer skrives.
- girwriter: Implementert standard signalhåndteringsutgang.
- libvaladoc/html: Fjernet sortering av strukturfelt for å forlate sin opprinnelige rekkefølge ved generering av html-dokumentasjon valadoc.org
- libvaladoc: Sørg for at verdier for Api.Class.is_compact hentes riktig
- libvaladoc: Lagt til wrapper for "agedge" graphviz-bibliotek
- Bindinger:
- Mindre rettinger ved generering av bindinger: 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, gtk+-4, gtk sikring, libxml-2.0
- gdk-pixbuf-2.0: Fiks Pixbuf.save_to_streamv_async()
- gio-2.0: PollableOutputStream.write*_nonblocking() bindingsreparasjon
- gio-2.0,gtk+-3.0,gtk4: Eksplisitte c-type attributter for va_list parametere forkastes
- gio-2.0: Valgt manglende invoker for noen AppInfo/File.*()-metoder
- glib-2.0: Lagt til GLib.[S]List.is_empty() bekvemmelighetsmetoder for ikke-null
- glib-2.0: Binding av assert_cmp*-funksjonen [#395]
- glib-2.0: Forbedret OptionEntry.flags-felttype
- glib-2.0: PtrArray er nå en underklasse av GenericArray
- gstreamer-1.0: CCode.type_id for MiniObject er satt til G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Korrigert bruk av attributtet CCode.type_cname
- gtk+-3.0,gtk4: Rettet noen delegatereturverdier og parametere
- gtk4: Oppdatert til versjon 4.0.2.
Kilde: opennet.ru