Rust neu schreiben
- Die Programmiersprache Rust fühlt sich wie ein Produkt der ersten Generation an
- Rusts anfängliche Attraktivität: algebraische Typen, Speichersicherheit, kein Performance-Verlust, moderner Paketmanager
- Nach vier Jahren Nutzung ist Rust nicht immer perfekt
- Die Weiterentwicklung der Sprache hat sich stark verlangsamt
- Viele instabile Features wurden nicht in stabiles Rust übernommen
Eine fantastische Sprache
- Ich möchte den Rust-Compiler forken und eine neue Edition namens "seph" erstellen
- Dabei könnten die bestehenden Features von Rust erhalten und gleichzeitig neue Funktionen hinzugefügt werden
Funktionstraits (Effekte)
- Rust definiert Traits für Structs, aber es müssen auch Traits für Funktionen definiert werden
- Damit lassen sich verschiedene Eigenschaften von Funktionen ausdrücken
- ob eine Funktion einen Panic auslösen kann
- ob sie eine feste Stack-Größe hat
- ob die Funktion bis zum Ende läuft oder unterwegs pausiert
- ob die Funktion rein ist
- ob sie unsicheren Code ausführt
- ob sie Terminierung garantiert
Compile-Time-Features
- Viele Rust-Projekte verwenden zahlreiche Third-Party-Crates
- Diese Crates erhöhen das Supply-Chain-Risiko
- Vorgeschlagen wird ein Feature, mit dem sich sicherheitsrelevante Funktionsaufrufe explizit erlauben lassen
- Um Features wie
fs_write aufzurufen, müsste dies ausdrücklich erlaubt werden
Pin, Move und das Ausleihen von Structs
Pin ist ein komplexer Hack, um Probleme des Borrow Checkers in Rust zu lösen
- Statt
Pin wäre ein Marker-Trait Move sinnvoller
- Vorgeschlagen wird zusätzliche Syntax, mit der sich Struct-Felder als verliehen markieren lassen
- Vorgeschlagen wird die Einführung eines Marker-Traits
Move und eines Traits Mover
Compile-Time
- Einführung von Zigs
comptime-Feature als Ersatz für Rusts Makrosprache
- Hinzufügen eines kleinen Interpreters, der Code zur Compile-Time ausführen kann
- Statt Rusts Makrosprache würde Rust selbst verwendet
Kleine Anpassungen
impl<T: Copy> for Range<T> korrigieren
derive mit assoziierten Typen korrigieren
- logisches AND in
if-let-Ausdrücken unterstützen
- die Nutzbarkeit von Raw Pointers verbessern
- allen eingebauten Collection-Typen ein
Allocator-Argument hinzufügen
Abschließende Gedanken
- Auch die asynchronen Features brauchen Verbesserungen, dafür wäre aber ein eigener Beitrag nötig
- Die meisten Änderungen sind nicht mit bestehendem Rust kompatibel
- Möglicherweise ist eine neue Rust-Edition erforderlich
- Statt sich weiter am GitHub-RFC-Prozess aufzureiben, wird erwogen, den Compiler direkt zu forken
Zusammenfassung von GN⁺
- Rust ist trotz seiner anfänglichen Attraktivität nicht perfekt
- Die Weiterentwicklung der Sprache verlangsamt sich, und viele instabile Features wurden nicht in stabiles Rust übernommen
- Es gibt verschiedene Vorschläge, darunter Funktionstraits, Compile-Time-Features sowie Verbesserungen bei Pin und Move
- Diese Vorschläge könnten die Nutzbarkeit von Rust deutlich verbessern
- Eine andere Sprache mit ähnlichen Features ist Zig
1 Kommentare
Hacker-News-Kommentare
Meinung zum Rust-RFC-Prozess
Rusts Abhängigkeitsproblem
Rusts aktueller Zustand
Meinung zum Rewrite von Rust
Unzufriedenheit mit Rusts Entscheidungsprozess
Kommentar von Josh Triplett
Meinung zu Rusts Komplexität
Meinung zu Rusts Geschwindigkeit
Meinung zu Mutex-Verbesserungen
Meinung zur Geschwindigkeit der Feature-Entwicklung in Rust
Meinung zum Feature-Design in Rust
Probleme mit Rusts Borrow Checker
Rusts Compile-Time-Features
Rusts instabile Features
Meinung zu Rusts Entwicklungstempo