Rue statt Rust: Genauso sicher, aber leichter zugänglich

Die Programmiersprache Rue verbindet die Vorteile von Rust mit einer einfacheren Syntax. Den Compiler dazu entwickelt das KI-Modell Claude.

vorlesen Druckansicht 45 Kommentare lesen
Rostige Weiche

(Bild: rodho/Shutterstock.com)

Lesezeit: 2 Min.
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

Rue, eine neue, kurz vor Weihnachten vorgestellte Programmiersprache, kombiniert Speichersicherheit mit guter Performance ohne Garbage Collector. Es handelt sich um eine Weiterentwicklung von Rust, die ein ähnliches Konzept verfolgt. Rue soll jedoch gerade für Einsteiger einfacher zugänglich sein. Eine Besonderheit ist, dass der KI-Assistent Claude den Compiler (x86-64 und ARM64) für Rue entwickelt.

Konzipiert wurde Rue von Steve Klabnik, der bei Ruby on Rails und Rust maßgeblich mitgewirkt hat. Er versucht, das speichersichere Borrowing-Konzept von Rust zu vereinfachen, das vielen Rust-Neulingen schwer zu verstehen fällt.

Videos by heise

Rue verwendet affine Typen mit veränderbarer Wertesemantik. Das heißt, Entwicklerinnen und Entwickler können affine Typen nur einmal verwenden. Der Blog zeigt ein Beispiel:

struct FileHandle { fd: i32 }

fn example() {
    let handle = FileHandle { fd: 42 };
    use_handle(handle);     // handle moves here
    use_handle(handle);     // ERROR: value already moved
}

Kopieren ist jedoch möglich, wenn man es ausdrücklich deklariert:

@copy
struct Point { x: i32, y: i32 }

fn example() {
    let p = Point { x: 1, y: 2 };
    use_point(p);   // p is copied
    use_point(p);   // OK, p is still valid
}

Ein Wert, der konsumiert werden muss, lässt sich mit linear markieren:

linear struct DatabaseTransaction { conn_id: i32 }

fn example() {
    let tx = DatabaseTransaction { conn_id: 1 };
    // ERROR: linear value dropped without being consumed
}

Von Zig übernimmt Rue das Konzept von Ausdrücken, die bereits der Compiler auswertet, mit der Eigenschaft comptime. Auch Typen lassen sich so erzeugen:

fn Pair(comptime T: type) -> type {
    struct { first: T, second: T }
}

fn main() -> i32 {
    let IntPair = Pair(i32);
    let p: IntPair = IntPair { first: 20, second: 22 };
    p.first + p.second
}

Klabnik arbeitet für das Umsetzen seiner Ideen mit Claude. Er hatte zwar eine Vorstellung davon, wie Rue aussehen soll, ihm fehlte aber die Erfahrung im Bauen von Compilern. Diese Arbeit übernimmt die künstliche Intelligenz: „And you know what? It worked.“ Der erste Versuch, ein Programm zu kompilieren, funktionierte noch nicht, aber nach einer Debugging-Runde lief es dann.

Die Rue-Website betont, dass es sich um ein Forschungsprojekt in seinen Anfängen handelt, das nicht fertig für echte Projekte ist. Wer mitmachen möchte, findet bei GitHub Gelegenheit.

(who)