Trotz Mozillas massivem Stellenabbau geht die Entwicklung an der Programmiersprache Rust weiter. Nun ist die Version 1.46.0 erschienen, die eine Handvoll neuer Features mitbringt.
Die Aktualisierungen für Rust 1.46.0 betreffen unter anderem die Sprache selbst, die Bibliotheken und den Paketmanager Cargo. So lassen sich einige Kern-Funktionen der Sprache nun auch in einer rudimentären Const-Funktion einsetzen (“const fn”). Dazu zählen: “if”, “if let”, “match”, “while”, “while let”, “loop” sowie die Operatoren “&&” und “||”. Zugleich gibt es die Möglichkeit, ein Array in einer Const-Funktion in einen Slice zu verwandeln. Der Vorteile solcher Konstrukte: Einige Operationen lassen sich so in den Übersetzungsvorgang verlagern, weshalb der Code beim Ausführen schneller läuft.
Aufrufer tracken
Ein neues Attribut namens “#[track_caller]” lässt sich an Funktionen anbringen. Tritt beim Aufruf einer solchen Funktion dann eine Panik auf, kann das Attribut den Aufrufer identifizieren und melden. Weitere Neuerungen: Das rekursive Indexieren in Tuples erfordert nun keine runden Klammern mehr, “mem::transmute” lässt sich mit “static” und “const” verwenden, aber (noch) nicht in “const fn”. Anderes gilt für “mem::forget” im Bibliothekskatalog, das nun eine “const fn” ist.
Weiterhin implementiert “String” nun “From<char>” und “(String, u16)” implementiert “ToSocketAddrs”. Der Paketmanager Cargo hat zudem vier weitere Umgebungsvariablen erlernt. Während “CARGO_BIN_NAME” und “CARGO_CRATE_NAME” auf die Namen einer Binärdatei respektive eines Crates verweisen, enthält “CARGO_PKG_LICENSE” den Pfad zur Lizenz des Paketmanifests und “CARGO_PKG_LICENSE_FILE” den zur Lizenzdatei.
Alle Neuerungen im Überblick sowie einige Anmerkungen zur Kompatibilität liefern die ausführlichen Release Notes. Sie verlinken auch die passenden Pull Requests. Wer sein vorhandenes Rust auf die aktuelle Version aktualisieren möchte, gibt einfach “rustup update stable” ein.






