Vala programmeringssprog compiler opdatering 0.50.4

En ny version af compileren til programmeringssproget Vala 0.50.4 er blevet frigivet. Den langsigtede støtte (LTS) gren Vala 0.48.14 (pakket til Ubuntu 18.04) og den eksperimentelle gren Vala 0.51.3 er også blevet opdateret.

Vala-sproget er et objektorienteret programmeringssprog, der giver en syntaks svarende til C# eller Java. Gobject (Glib Object System) bruges som en objektmodel. Hukommelsesstyring udføres af ejerskab (ejede/ikke-ejede links) eller ved hjælp af ARC (erstatning af destruktorer og nedsættelse af objektreferencetællere på kompileringsstadiet).

Sproget har understøttelse af introspektion, lambda-funktioner, grænseflader, delegerede og lukninger, signaler og slots, undtagelser, egenskaber, ikke-nul typer, typeinferens for lokale variabler. Sættet leveres med et stort antal bindinger til biblioteker i C (vala-girs, vala-extra-vapis). Vala-programmer oversættes til C-repræsentation og kompileres derefter af en standard C-compiler Det er muligt at køre programmer i script-tilstand.

Liste over ændringer:

  • Tilføjet yderligere støtte til params nøgleordet for konstruktører klasse Foo{ public Foo(params string[] args){ foreach (var arg i args) print(arg); } }
  • kodegen:
    • Forbedret understøttelse af SimpleType struct-konstruktører (bruges f.eks. til at binde typedef uint32_t people_inside; fra C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Forbedret håndtering af "NoWrapper"-attributten.
    • CCode.type_cname og get_ccode_type_name() er tilladt for klasser.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE bruges altid til eksterne symboler.
    • Brugt g_boxed_free i free-wrapper til at allokere GLib.Value på heapen.
    • Rettede en hukommelseslækage under implicit unboxing af GLib.Value (en universel beholder af enhver værditype).
    • Rettede en hukommelseslæk ved flytning af en heap-allokeret struktur til en stak.
    • Nedarvning af destruktoren af ​​den overordnede struktur er sikret
    • Korrekt hentning af symbol_reference af indlejrede cast-udtryk er blevet forbedret.
    • Fjernede alle indlejrede forekomster af CCodeCastExpression.
    • Stoppet forkert med at kalde standardsignalbehandleren.
    • Forbundet "string.h" for strcmp() (POSIX-profil, tilstand hvor Vala genererer kode ved kun at bruge standard C-biblioteket).
  • Vala:
    • Forbedret registrering af duplikerede pakkekildefiler.
    • GtkChild felter/ejendomme skal erklæres uejede.
    • Gentildeling af feltet/egenskaben GtkChild er forbudt.
    • Der er stillet en skærpet betingelse for lambdaen ved uddelegering af en opgave.
    • Det er forbudt at bruge SimpleType-strukturer til engangsbrug.
    • GLib.Value unboxing sikrer, at den uejede værdi returneres.
    • Det er forbudt at støbe GLib.Value til en nullbar struktur/simpel type.
    • Tilføjet type-argumentkontrol i basistyper/klasse/interface-forudsætninger.
    • Det er forbudt at registrere va_list-parametre/variabler.
    • Generiske artikler, der indeholder en pointer til en struktur, skal støbes til den korrekte type, når de tilgås, for at undgå C UB.
    • Implementeret typeslutning for "in" inde i enum.
    • Forbedret kontekstkontrol for opgaver til det skrivbare felt.
    • Inkluderet "stdlib.h" for Enum.to_string() (POSIX).
    • Den korrekte source_reference er indstillet for de implicitte variable "this" og "result"
    • Leverede en fejlmeddelelse for en ugyldig intern operand af unære udtryk.
  • Сodewriter: Stoppet med at tilføje det efterfølgende ";" efter kroppen WithStatement.
  • Girparser:
    • Behandling af en anonym delegeret, der ikke understøttes af en virtuel metode eller et virtuel signal, leveres.
    • Anvendte "delegate_target"-metadata for metoder og parametre
    • Anvend "destroy_notify_cname"-metadata til felter
    • Anvend "type_get_function"-metadata for klasser og grænseflader
    • Indstil CCode.type_cname for klasser, hvis det ikke er standard.
  • girwriter: Sikrer at instansparameterelementer skrives.
  • girwriter: Implementeret standard signalhåndteringsoutput.
  • libvaladoc/html: Fjernede sortering af strukturfelter for at forlade deres oprindelige rækkefølge ved generering af html-dokumentation valadoc.org
  • libvaladoc: Sørg for, at værdier for Api.Class.is_compact hentes korrekt
  • libvaladoc: Tilføjet indpakning til "agedge" graphviz-bibliotek
  • Bindinger:
    • Mindre rettelser ved generering af 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 sikring, libxml-2.0
    • gdk-pixbuf-2.0: Ret Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() bindingsfix
    • gio-2.0,gtk+-3.0,gtk4: Eksplicitte c-type attributter for va_list parametre kasseres
    • gio-2.0: Valgt manglende invoker for nogle AppInfo/File.*() metoder
    • glib-2.0: Tilføjet GLib.[S]List.is_empty() bekvemmelighedsmetoder for ikke-nul
    • glib-2.0: Binding af assert_cmp*-funktionen [#395]
    • glib-2.0: Forbedret OptionEntry.flags felttype
    • glib-2.0: PtrArray er nu en underklasse af GenericArray
    • gstreamer-1.0: CCode.type_id for MiniObject er sat til G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Korrigeret brug af attributten CCode.type_cname
    • gtk+-3.0,gtk4: Rettede nogle delegerede returværdier og parametre
    • gtk4: Opdateret til version 4.0.2.

Kilde: opennet.ru

Tilføj en kommentar