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 buildkompiliert,vale testfü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.