Vala ist eine objektorientierte Programmiersprache für die Linux-Desktop-Welt, die modernen Komfort wie in C# mit der Effizienz von C verbindet. Entwickelt wurde sie ab 2006 von Jürg Billeter und Raphaël Slinckx; der Compiler valac erzeugt zunächst C-Quellcode, der dann mit gcc zu einer nativen ausführbaren Datei übersetzt wird. Vala nutzt das GObject-Typsystem der GNOME-Plattform — Klassen, Signale und Eigenschaften werden direkt von der Sprache unterstützt.

Erste Schritte

valac --version
valac hello.vala          # kompiliert hello.vala nach ./hello
valac --pkg gtk4 hello.vala   # Pakete (GIR/VAPI) einbinden
valac --vapi meinelib.vapi lib.vala   # VAPI-Datei für Bibliotheken erzeugen
vapigen --pkg glib-2.0 lib.gir       # Bindings aus GObject-Introspection

Ein minimales Programm:

void main () {
    stdout.printf ("Hallo Welt
");
}

Typische Werkzeuge

  • valac — der Compiler, der Vala nach C übersetzt (selbst in Vala geschrieben).
  • vapigen — erzeugt VAPI-Bindings aus GIR-Dateien für fremde C-Bibliotheken.
  • --pkg — bindet GNOME-Bibliotheken wie GTK, GLib oder GObject ein.
  • Kein JIT und kein Garbage Collector — Speicherverwaltung über GLib-Referenzzählung.

Abgrenzung

Vala gehört zu den Sprachen, die direkt für das C/C++-Ökosystem kompilieren, ähnlich wie Rust, aber mit einer deutlich einfacheren Einbindung von C-Bibliotheken. Wer GNOME-Anwendungen mit moderner Syntax schreiben möchte, nutzt Vala statt des umständlichen GObject-C-Codes. Weitere Nischensprachen außerhalb des Mainstreams sind Dylan (dynamische OO) und Inform (interaktive Fiktion).