En ny version av kompilatorn för programmeringsspråket Vala 0.50.4 har släppts. Den långsiktiga stödgrenen (LTS) Vala 0.48.14 (paketerad för Ubuntu 18.04) och den experimentella grenen Vala 0.51.3 har också uppdaterats.
Vala-språket är ett objektorienterat programmeringsspråk som ger en syntax som liknar C# eller Java. Gobject (Glib Object System) används som en objektmodell. Minneshantering utförs av ägande (ägda/oägda länkar) eller med hjälp av ARC (ersättning av förstörare och minskar objektreferensräknare i kompileringsstadiet).
Språket har stöd för introspektion, lambdafunktioner, gränssnitt, delegater och stängningar, signaler och slots, undantag, egenskaper, icke-nulltyper, typinferens för lokala variabler. Satsen kommer med ett stort antal bindningar till bibliotek i C (vala-girs, vala-extra-vapis). Vala-program översätts till C-representation och kompileras sedan av en vanlig C-kompilator Det är möjligt att köra program i skriptläge.
Lista över ändringar:
- Tillagt ytterligare stöd för nyckelordet params för konstruktörsklass Foo{ public Foo(params string[] args){ foreach (var arg i args) print(arg); } }
- kodgen:
- Förbättrat stöd för SimpleType-strukturkonstruktörer (till exempel används för att binda typedef uint32_t people_inside; från C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
- Förbättrad hantering av "NoWrapper"-attributet.
- CCode.type_cname och get_ccode_type_name() är tillåtna för klasser.
- G_TYPE_INSTANCE_GET_CLASS/INTERFACE används alltid för externa symboler.
- Använde g_boxed_free i free-wrapper för att tilldela GLib.Value på högen.
- Fixade en minnesläcka under implicit uppackning av GLib.Value (en universell behållare av valfri värdetyp).
- Fixade en minnesläcka när en högallokerad struktur flyttades till en stack.
- Arv av förstöraren av den överordnade strukturen säkerställs
- Korrekt hämtning av symbol_reference för kapslade cast-uttryck har förbättrats.
- Tog bort alla kapslade förekomster av CCodeCastExpression.
- Slutade felaktigt anropa standardsignalhanteraren.
- Ansluten "string.h" för strcmp() (POSIX-profil, läge där Vala genererar kod med endast standard C-biblioteket).
- Vala:
- Förbättrad upptäckt av duplicerade paketkällfiler.
- GtkChild-fält/egenskaper måste förklaras oägda.
- Det är förbjudet att omtilldela fältet/egenskapen GtkChild.
- Ett skärpt villkor har tillämpats på lambdan vid delegering av ett uppdrag.
- Det är förbjudet att använda SimpleType-strukturer för engångsbruk.
- GLib.Value unboxing säkerställer att det oägda värdet returneras.
- Det är förbjudet att gjuta GLib.Value till en nullbar struktur/enkel typ.
- Lade till typargumentkontroll i bastyper/klass/gränssnittsförutsättningar.
- Det är förbjudet att fånga in va_list-parametrar/variabler.
- Generika som innehåller en pekare till en struktur måste gjutas till rätt typ när de används för att undvika C UB.
- Implementerad typinferens för "in" inuti enum.
- Förbättrad kontextkontroll för tilldelningar till det skrivbara fältet.
- Inkluderade "stdlib.h" för Enum.to_string() (POSIX).
- Rätt källreferens är inställd för de implicita variablerna "detta" och "resultat"
- Tillhandahöll ett felmeddelande för en ogiltig intern operand av unära uttryck.
- Сodewriter: Slutade lägga till det efterföljande ";" efter kroppen WithStatement.
- Girparser:
- Behandling av en anonym delegat som inte backas upp av en virtuell metod eller signal tillhandahålls.
- Tillämpade "delegate_target"-metadata för metoder och parametrar
- Tillämpa "destroy_notify_cname"-metadata på fält
- Använd "type_get_function"-metadata för klasser och gränssnitt
- Ange CCode.type_cname för klasser om det inte är standard.
- girwriter: Säkerställer att instansparameterelement skrivs.
- girwriter: Implementerad standardutgång för signalhanterare.
- libvaladoc/html: Borttagen sortering av strukturfält för att lämna sin ursprungliga ordning vid generering av html-dokumentation valadoc.org
- libvaladoc: Se till att värden för Api.Class.is_compact hämtas korrekt
- libvaladoc: Lade till omslag för "agedge" graphviz-bibliotek
- Bindningar:
- Mindre korrigeringar vid generering av bindningar: 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 säkring, libxml-2.0
- gdk-pixbuf-2.0: Fixa Pixbuf.save_to_streamv_async()
- gio-2.0: PollableOutputStream.write*_nonblocking() bindningsfix
- gio-2.0,gtk+-3.0,gtk4: Explicita c-typattribut för va_list-parametrar kasseras
- gio-2.0: Vald saknad invoker för vissa AppInfo/File.*()-metoder
- glib-2.0: Lade till GLib.[S]List.is_empty() bekvämlighetsmetoder för icke-null
- glib-2.0: Bindning av assert_cmp*-funktionen [#395]
- glib-2.0: Förbättrad OptionEntry.flags-fälttyp
- glib-2.0: PtrArray är nu en underklass till GenericArray
- gstreamer-1.0: CCode.type_id för MiniObject är satt till G_TYPE_BOXED [#1133]
- gtk+-2.0,javascriptcoregtk-4.0: Korrigerad användning av attributet CCode.type_cname
- gtk+-3.0,gtk4: Fixade några delegatreturvärden och parametrar
- gtk4: Uppdaterad till version 4.0.2.
Källa: opennet.ru