Vala programmeringsspråk kompilator oppdatering 0.50.4

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

Legg til en kommentar