Vala programmeringsspråk kompilator uppdatering 0.50.4

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

Lägg en kommentar