Update des Compilers für die Programmiersprache Vala 0.50.4

Eine neue Version des Compilers für die Programmiersprache Vala 0.50.4 wurde veröffentlicht. Außerdem wurde der Long-Term-Support-Zweig (LTS) Vala 0.48.14 (verpackt für Ubuntu 18.04) sowie der experimentelle Zweig Vala 0.51.3 aktualisiert.

Die Sprache Vala ist eine objektorientierte Programmiersprache und bietet eine Syntax, die den Sprachen C# oder Java ähnelt. Als Objektmodell wird Gobject (Glib Object System) verwendet. Die Speicherverwaltung erfolgt durch Besitz (owned/unowned Referenzen) oder mittels ARC (Einfügen von Destruktore und Diminution der Referenzzählung von Objekten zur Kompilierzeit).

Die Sprache unterstützt Introspektion, Lambda-Funktionen, Schnittstellen, Delegaten und Closures, Signale und Slots, Ausnahmen, Eigenschaften, Nullable-Typen und Typinferenz für lokale Variablen. Eine Vielzahl von Bindings zu C-Bibliotheken (vala-girs, vala-extra-vapis) ist enthalten. Programme in Vala werden in C-Code übersetzt und anschließend mit dem Standard-Compiler für C kompiliert. Es besteht die Möglichkeit, Programme im Skripting-Modus auszuführen.

Änderungsprotokoll:

  • Zusätzliche Unterstützung für das Schlüsselwort params in Konstruktoren hinzugefügt. class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegen:
    • Verbesserte Unterstützung für Strukturkonstruktoren vom Typ SimpleType (z. B. verwendet, um typedef uint32_t people_inside; aus C zu binden) [SimpleType] [CCode(cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Verbesserte Verarbeitung des Attributs „NoWrapper“.
    • Für Klassen sind CCode.type_cname und get_ccode_type_name() erlaubt.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE wird immer für externe Symbole verwendet.
    • g_boxed_free in free-wrapper verwendet, um GLib.Value im Heap zu platzieren.
    • Speicherleck während des impliziten Unboxings von GLib.Value (universeller Container für jeden Werttyp) behoben.
    • Speicherleck während der Verschiebung von heap-allocated Strukturen in den Stack behoben.
    • Vererbung des Destruktors der übergeordneten Struktur sichergestellt.
    • Richtige Erfassung von symbol_reference für geschachtelte cast-Ausdrücke gewährleistet.
    • Alle geschachtelten Vorkommen von CCodeCastExpression entfernt.
    • Unzulässiger Standard-Signalhandler-Aufruf gestoppt.
    • "string.h" für strcmp() (POSIX-Profil, Modus, in dem Vala Code generiert, der nur die Standard-C-Bibliothek verwendet) eingebunden.
  • Vala:
    • Verbesserte Erkennung von Duplikaten in den Quellpaketdateien.
    • Felder/Eigenschaften von GtkChild müssen als unowned deklariert werden.
    • Die Neuzuordnung von Feldern/Eigenschaften von GtkChild ist verboten.
    • Eine strengere Bedingung für Lambdas bei der Zuweisung wurde angewendet.
    • Die Verwendung von einmaligen Strukturen vom Typ SimpleType ist verboten.
    • In GLib.Value sorgt das Unboxing für die Rückgabe unowned-Werte.
    • Die Konvertierung von GLib.Value in nullable struct/simple Typen ist verboten.
    • Eine Typüberprüfung für Argumente in Basis-Typen/Vorbedingungen von Klassen/Schnittstellen wurde hinzugefügt.
    • Das Erfassen von Parametern/Variablen va_list ist untersagt.
    • Generics, die einen Zeiger auf eine Struktur enthalten, müssen beim Zugriff in den richtigen Typ konvertiert werden, um UB zu vermeiden.
    • Typproduktion für 'in' innerhalb von Enums wurde implementiert.
    • Die Kontextprüfung bei Zuweisungen in das schreibbare Feld wurde verbessert.
    • stdlib.h für Enum.to_string() (POSIX) eingebunden.
    • Der korrekte source_reference für die impliziten Variablen 'this' und 'result' wurde gesetzt.
    • Eine Fehlermeldung für ungültige interne Operanden bei unären Ausdrücken wurde sichergestellt.
  • Codewriter: Das Hinzufügen eines abschließenden ';' nach dem Körper von WithStatement wurde eingestellt.
  • Girparser:
    • Die Verarbeitung von anonymen Delegaten, die nicht durch eine virtuelle Methode oder ein Signal unterstützt werden, wurde gewährleistet.
    • Metadaten «delegate_target» wurden für Methoden und Parameter angewendet.
    • Metadaten «destroy_notify_cname» wurden für Felder angewendet.
    • Metadaten «type_get_function» wurden für Klassen und Schnittstellen angewendet.
    • CCode.type_cname für Klassen wurde eingestellt, wenn es nicht dem Standardwert entspricht.
  • girwriter: Gewährleistung der Aufzeichnung von Instanzparameter-Elementen.
  • girwriter: Implementierung der Standardausgabe für Signalhandler.
  • libvaladoc/html: Feldsortierung von Strukturen entfernt, um ihre ursprüngliche Reihenfolge bei der Generierung der HTML-Dokumentation auf valadoc.org beizubehalten.
  • libvaladoc: Sicherstellung der korrekten Abfrage von Werten für Api.Class.is_compact.
  • libvaladoc: Wrapper für die «agedge»-Bibliothek von graphviz hinzugefügt.
  • Bindings:
    • Kleine Korrekturen bei der Generierung von Bindings: 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, gtk4, fuse, libxml-2.0.
    • gdk-pixbuf-2.0: Korrektur von Pixbuf.save_to_streamv_async().
    • gio-2.0: Korrektur der Bindings für PollableOutputStream.write*_nonblocking().
    • gio-2.0, gtk+-3.0, gtk4: Offensichtliche c-Typ-Parameterattribute va_list wurden verworfen.
    • gio-2.0: Fehlender Invoker für einige Methoden AppInfo/File.*() ausgewählt.
    • glib-2.0: Hinzufügung von GLib.[S]List.is_empty() Hilfsmethoden für Nicht-Null.
    • glib-2.0: Binding der Funktion assert_cmp* [#395].
    • glib-2.0: Verbesserung des Feldtyps OptionEntry.flags.
    • glib-2.0: PtrArray ist jetzt eine Unterklasse von GenericArray
    • gstreamer-1.0: CCode.type_id des Mini-Objekts (MiniObject) wird als G_TYPE_BOXED festgelegt [#1133]
    • gtk+-2.0, javascriptcoregtk-4.0: Nutzung des Attributs CCode.type_cname angepasst
    • gtk+-3.0, gtk4: Einige von Delegierten zurückgegebene Werte und Parameter korrigiert
    • gtk4: Auf Version 4.0.2 aktualisiert.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster