Die neue Version des Programmiersprachen-Translators Vala 0.51.1 ist erschienen. Die Sprache Vala ist eine objektorientierte Programmiersprache, die eine Syntax ähnlich wie C# oder Java bietet. Als Objektmodell wird GObject (Glib Object System) verwendet. Die Speicherverwaltung erfolgt anhand von Referenzzählung.
Die Sprache unterstützt Introspektion, Lambda-Funktionen, Schnittstellen, Delegaten und Closures, Signale und Slots, Ausnahmen, Eigenschaften, nicht-nullbare Typen sowie Typinferenz für lokale Variablen (var). Für die Sprache wurde die Bibliothek für generische Programmierung libgee entwickelt, die die Erstellung von Sammlungen für benutzerdefinierte Datentypen ermöglicht. Die Aufzählung von Elementen in Sammlungen wird durch den foreach-Operator unterstützt. Die Programmierung grafischer Anwendungen erfolgt mithilfe der Grafikbibliothek GTK+. Eine große Anzahl von Bindings zu C-Bibliotheken ist im Lieferumfang enthalten.
Programme in der Vala-Sprache werden in C-Code übersetzt und dann mit dem Standard-C-Compiler kompiliert. Es besteht die Möglichkeit, Programme im Skriptmodus auszuführen. Der Vala-Compiler unterstützt die Genie-Sprache, die vergleichbare Funktionen mit einer von der Programmiersprache Python inspirierten Syntax bietet.
Die Vala-Sprache wird unter dem Projekt GNOME entwickelt. Programme wie der E-Mail-Client Geary, die grafische Benutzeroberfläche Budgie, das Foto- und Videoverwaltungstool Shotwell und andere wurden in Vala geschrieben. Vala wird aktiv bei der Entwicklung von Komponenten der Linux-Distribution Elementary OS eingesetzt.
In der neuen Version:
- Unterstützung für automatische Typenverengung in Ausdrücken hinzugefügt; if (x ist Foo) { x.SomeFooField // keine Notwendigkeit zur expliziten Umwandlung von „x“ in „Foo“ }
- Unterstützung für die Aufrufkette von Konstruktoren für Templates hinzugefügt;
- Überprüfung der libvala-Version während der Laufzeit hinzugefügt;
- Unterstützung für „opake“ (opaque) kompakte Klassen hinzugefügt;
- Erweiterte Unterstützung für Array-Parameter in Konstruktoren;
- In girparser wurde die Unterstützung für anonyme Delegaten, die von virtuellen Methoden oder Signalen nicht unterstützt werden, hinzugefügt;
- Fehler in valadoc, libvaladoc und girwriter wurden behoben;
- Binding für SDL 2.x hinzugefügt, Unterstützung für binding SDL 1.x eingestellt;
- Binding für Enchant 2.x hinzugefügt;
- Speicherlecks beim expliziten Kopieren von Arrays, der Nutzung von Glib.Value und dem Transfer von im Heap allokierten Strukturen auf den Stack behoben;
- Binding für gdk-pixbuf-2.0 auf Version 2.42.3 aktualisiert;
- Binding für die Funktion getopt_long() und mehrere andere GNU-Funktionen hinzugefügt;
- Binding für libunwind-generic hinzugefügt;
- Bindings für 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 wurden behoben;
- Binding für gio-2.0 auf Version 2.67.3 aktualisiert;
- Binding für gobject-2.0 auf Version 2.68 aktualisiert;
- Binding für GStreamer auf Version 1.19.0+ git master aktualisiert;
- Binding für gtk4 auf Version 4.1.0+2712f536 aktualisiert;
- Bindings für die regulären Ausdruck-APIs für POSIX, GNU und BSD hinzugefügt;
- Binding für webkit2gtk-4.0 auf Version 2.31.1 aktualisiert;
- Ansammelte Fehler und Unzulänglichkeiten des Compilers wurden behoben.
Quelle: opennet.ru
