Vala-Programmiersprachen-Compiler-Update 0.50.4

Eine neue Version des Compilers für die Programmiersprache Vala 0.50.4 wurde veröffentlicht. Der Langzeit-Support-Zweig (LTS) Vala 0.48.14 (gepackt für Ubuntu 18.04) und der experimentelle Zweig Vala 0.51.3 wurden ebenfalls aktualisiert.

Die Vala-Sprache ist eine objektorientierte Programmiersprache, die eine ähnliche Syntax wie C# oder Java bietet. Als Objektmodell wird Gobject (Glib Object System) verwendet. Die Speicherverwaltung erfolgt nach Besitz (eigene/nicht besessene Links) oder mithilfe von ARC (Ersetzung von Destruktoren und Dekrementierung von Objektreferenzzählern in der Kompilierungsphase).

Die Sprache unterstützt Introspektion, Lambda-Funktionen, Schnittstellen, Delegaten und Abschlüsse, Signale und Slots, Ausnahmen, Eigenschaften, Nicht-Null-Typen und Typinferenz für lokale Variablen. Das Kit enthält eine große Anzahl von Bindungen an Bibliotheken in C (Vala-Girs, Vala-Extra-Vapis). Vala-Programme werden in eine C-Darstellung übersetzt und dann von einem Standard-C-Compiler kompiliert. Es ist möglich, Programme im Skriptmodus auszuführen.

Liste der Änderungen:

  • Zusätzliche Unterstützung für das Schlüsselwort params für Konstruktoren hinzugefügt. Klasse Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • Codegen:
    • Verbesserte Unterstützung für SimpleType-Strukturkonstruktoren (wird beispielsweise zum Binden von typedef uint32_t people_inside; aus C verwendet) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside: uint32 {}
    • Verbesserte Handhabung des „NoWrapper“-Attributs.
    • CCode.type_cname und get_ccode_type_name() sind für Klassen zulässig.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE wird immer für externe Symbole verwendet.
    • Verwendet g_boxed_free im Free-Wrapper, um GLib.Value auf dem Heap zuzuweisen.
    • Ein Speicherverlust beim impliziten Unboxing von GLib.Value (einem universellen Container eines beliebigen Werttyps) wurde behoben.
    • Ein Speicherverlust beim Verschieben einer Heap-zugewiesenen Struktur auf einen Stapel wurde behoben.
    • Die Vererbung des Destruktors der übergeordneten Struktur ist gewährleistet
    • Das korrekte Abrufen von symbol_reference verschachtelter Umwandlungsausdrücke wurde verbessert.
    • Alle verschachtelten Vorkommen von CCodeCastExpression wurden entfernt.
    • Fehlerhafter Aufruf des Standardsignalhandlers gestoppt.
    • Verbunden mit „string.h“ für strcmp() (POSIX-Profil, Modus, in dem Vala Code nur unter Verwendung der Standard-C-Bibliothek generiert).
  • Vala:
    • Verbesserte Erkennung doppelter Paketquelldateien.
    • GtkChild-Felder/-Eigenschaften müssen als nicht im Besitz erklärt werden.
    • Eine Neuzuweisung des GtkChild-Felds/der GtkChild-Eigenschaft ist verboten.
    • Beim Delegieren einer Aufgabe wurde eine strengere Bedingung für das Lambda angewendet.
    • Es ist verboten, SimpleType-Strukturen zur einmaligen Verwendung zu verwenden.
    • Durch das Unboxing von GLib.Value wird sichergestellt, dass der nicht besessene Wert zurückgegeben wird.
    • Das Umwandeln von GLib.Value in eine nullbare Struktur/einfachen Typ ist verboten.
    • Typargumentprüfung in Basistyp-/Klassen-/Schnittstellenvorbedingungen hinzugefügt.
    • Das Erfassen von va_list-Parametern/Variablen ist verboten.
    • Generics, die einen Zeiger auf eine Struktur enthalten, müssen beim Zugriff in den richtigen Typ umgewandelt werden, um C UB zu vermeiden.
    • Typinferenz für „in“ innerhalb der Enumeration implementiert.
    • Verbesserte Kontextprüfung für Zuweisungen zum beschreibbaren Feld.
    • Enthalten ist „stdlib.h“ für Enum.to_string() (POSIX).
    • Für die impliziten Variablen „this“ und „result“ ist die richtige Quellenreferenz festgelegt.
    • Es wurde eine Fehlermeldung für einen ungültigen internen Operanden unärer Ausdrücke bereitgestellt.
  • Codewriter: Das nachgestellte „;“ wurde nicht mehr hinzugefügt. nach dem Body WithStatement.
  • Girparser:
    • Es wird die Verarbeitung eines anonymen Delegaten bereitgestellt, der nicht durch eine virtuelle Methode oder ein virtuelles Signal unterstützt wird.
    • Angewandte „delegate_target“-Metadaten für Methoden und Parameter
    • Wenden Sie die Metadaten „destroy_notify_cname“ auf Felder an
    • Wenden Sie „type_get_function“-Metadaten für Klassen und Schnittstellen an
    • Legen Sie CCode.type_cname für Klassen fest, wenn dies nicht der Standard ist.
  • girwriter: Stellt sicher, dass Instanzparameterelemente geschrieben werden.
  • girwriter: Standard-Signal-Handler-Ausgabe implementiert.
  • libvaladoc/html: Die Sortierung der Strukturfelder wurde entfernt, um beim Generieren der HTML-Dokumentation valadoc.org ihre ursprüngliche Reihenfolge beizubehalten
  • libvaladoc: Stellen Sie sicher, dass Werte für Api.Class.is_compact korrekt abgerufen werden
  • libvaladoc: Wrapper für die Graphviz-Bibliothek „agedge“ hinzugefügt
  • Bindungen:
    • Kleinere Korrekturen beim Generieren von Bindungen: 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, Sicherung, libxml-2.0
    • gdk-pixbuf-2.0: Fix Pixbuf.save_to_streamv_async()
    • gio-2.0: PollableOutputStream.write*_nonblocking() Bindungskorrektur
    • gio-2.0,gtk+-3.0,gtk4: Explizite C-Typ-Attribute von va_list-Parametern werden verworfen
    • gio-2.0: Ausgewählter fehlender Aufrufer für einige AppInfo/File.*()-Methoden
    • glib-2.0: GLib.[S]List.is_empty()-Komfortmethoden für Nicht-Null hinzugefügt
    • glib-2.0: Bindung der Funktion „assert_cmp*“ [#395]
    • glib-2.0: Verbesserter Feldtyp OptionEntry.flags
    • glib-2.0: PtrArray ist jetzt eine Unterklasse von GenericArray
    • gstreamer-1.0: CCode.type_id des MiniObject ist auf G_TYPE_BOXED gesetzt [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: Korrigierte Verwendung des CCode.type_cname-Attributs
    • gtk+-3.0,gtk4: Einige Rückgabewerte und Parameter der Delegaten wurden korrigiert
    • gtk4: Auf Version 4.0.2 aktualisiert.

Source: opennet.ru

Kommentar hinzufügen