Vale ist eine schnelle, sichere Systemprogrammiersprache von Evan Ovadia. Ihre Besonderheit ist eine neuartige Speichersicherheits-Technik namens Generational References: Jede Referenz merkt sich die „Generation“ des Objekts, auf das sie zeigt. Dadurch wird Speichersicherheit ohne Garbage Collector, ohne Reference Counting und ohne Rust-artigen Borrow Checker erreicht — kombiniert mit Single Ownership lässt sich damit schneller, sicherer Code schreiben. Vale wird Ahead-of-Time über LLVM kompiliert.

Erste Schritte

// vale --output=hello
import stdlib;
exported func main() {
    println("Hello, Vale!");
}

Wichtige Konzepte und Befehle

  • func deklariert Funktionen; exported macht sie von außen sichtbar.
  • Generational References sorgen dafür, dass verwaiste Referenzen erkannt werden, bevor sie benutzt werden.
  • Single Ownership erlaubt Speicherfreigabe ohne Garbage Collection; Regions bündeln Objekte für noch effizientere Freigabe.
  • Immutable und Fearless FFI erlauben sichere Aufrufe von C-Bibliotheken.
  • Der Compiler heißt vale; vale build kompiliert, vale test führt Tests aus.

Einordnung

Vale gehört zu den Sprachen, die die Speichersicherheits-Diskussion nach Rust weiterführen: Während Rust mit dem Borrow Checker Sicherheit zur Compile-Zeit erzwingt, verfolgt Vale mit Generational References und Regions einen anderen Weg, der als einfacher zu lernen gilt. Damit ist Vale vor allem für sicherheitskritische, performance-sensitive Anwendungen interessant.

Verwandte Grundlagen: Rust-Befehle, C und C++, Carbon-Befehle, C3-Befehle, Zig-Befehle.