Programmiersprachen: Rust 1.9 kommt mit gereiftem std::panic-Modul

Stabile APIs, erweiterte Bibliotheken, Performance-Verbesserungen und neue Kompilierziele sind nur einige der Neuerungen, die die Entwickler in die aktuellen Version der Systemprogrammiersprache eingebracht haben.

In Pocket speichern vorlesen Druckansicht
Programmiersprachen: Rust 1.9 kommt mit gereiftem std::panic-Modul
Lesezeit: 2 Min.
Von
  • Julia Schmidt

Die von Mozilla vorangetriebene Sprache zur Systemprogrammierung Rust liegt nun in Version 1.9 vor. In der Ankündigung auf dem zugehörigen Blog macht das Core-Team vor allem die Stabilisierung des std::panic-Moduls durch Neuerungen wie die ergänzte catch_unwind-API als größte Änderungen aus. Darüber hinaus stehen neue Compiler-Targets zur Verfügung und auch die Kompilierzeit soll sich in einigen Fällen durch das Reduzieren der Komplexität beim Variablenvergleich verringern.

Sollte ein Bug im Code auftauchen, reagiert Rust mit einem als Panicking bezeichneten Prozess, während dem das Programm standardmäßig Destruktoren aber keinen anderen Code des Threads ausführt, in dem der Fehler aufgetreten ist. Andere Threads bemerken die Panik nur, wenn sie versuchen, mit dem betroffenen Thread zu kommunizieren, sodass nur ein isolierter Bereich vorzeitig beendet wird. Um die Grenzen dieses Bereichs innerhalb eines Threads abstecken zu können, steht nun die catch_unwind-API zur Verfügung. Sie soll sich beispielsweise beim Einbetten von Rust in andere Sprachen wie C oder beim Einsatz von Abstraktionen, die Threads verwalten, als nützlich erweisen. Für die Zukunft planen die Entwickler zudem eine Option, den ganzen Prozess im Falle einer Panik zu beenden.

Die Rust-Entwickler haben zudem dafür gesorgt, dass alle Typen in libcore nun Debuginformationen enthalten. Doch auch in andern Bibliotheken sind mit dem Update ergänzende Funktionen und Methoden zu finden. So sind beispielsweise in TcpStream, TcpListener und UdpSocket Methoden zur Verbindungskonfiguration enthalten, SocketAddr ist mit set_ip() und set_port() ausgestattet und in Collections lassen sich in BTreeSet und HashSet die Methoden take(), replace() und get() zum Wiederherstellen des Schlüsseleigentümers nutzen.

Außerdem sind in der Nightly-Variante von Rust nun erste Spezialisierungen zu finden. Sie sollen ermöglichen, generischen Code durch das Betrachten der Typinformationen automatisch durch spezielleren zu ersetzen und so etwa die Performance zu verbessern. Weitere Neuerungen sind unter anderem in der Release Notes zu finden. (jul)