Programmiersprache: Öffentliche Testphase für Rust 2021 hat begonnen

Die kommende Rust-Edition lässt sich nun mit Nightly Builds ausprobieren. Das Release ist mit Rust 1.56 für den 21. Oktober geplant.

In Pocket speichern vorlesen Druckansicht 39 Kommentare lesen

(Bild: rodho/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag
Inhaltsverzeichnis

Zwei Monate nach der ersten Ankündigung von Rust 2021 hat nun die öffentliche Testphase begonnen. Offensichtlich sind die Features für die kommende Edition vollständig in Nightly Builds umgesetzt, und Interessierte können die Neuerungen ausprobieren. In den Worten des Rust-Blogs: "Wir ermutigen abenteuerlustige User, die Migration ihrer Crates auf Rust 2021 zu testen" – Crates sind die Pakete im Rust-Universum.

Rust 2021 ist die dritte Edition der Programmiersprache nach Rust 2015 und Rust 2018. Neue Editionen führen zusätzliche Features ein, die zu Inkompatibilitäten mit der vorherigen Edition führen können. Allerdings soll das Update so wenige Breaking Changes wie möglich mitbringen. Seinerzeit hatte Rust 2018 das Async-Await-Pattern an Bord, das als Nebenwirkung die neuen Keywords async und await mitbrachte. Das konnte zum Problem werden, wenn Code die zuvor nicht reservierten Begriffe beispielsweise als Variablennamen verwendet hat, was aber wohl selten der Fall gewesen sein dürfte.

Da Entwicklerinnen und Entwickler für jedes Crate die jeweilige Edition festlegen, müssen sie keine Änderungen für älteren Code vornehmen, um ihn mit Sourcecode für die jüngste Edition zu verwenden. Unter der Haube erstellt der Compiler schließlich eine einheitliche interne Darstellung für gemischten Code.

Zu den Neuerungen in Rust 2021, die heise Developer im Mai genauer vorgestellt hat, gehören die Erweiterung der automatischen Importe im Prelude der Standard-Library um std::convert::TryInto, std::convert::TryFrom und std::iter::FromIterator. In der neuen Edition werden zudem Arrays und nicht nur wie bisher die Referenzen darauf den Trait IntoIterator implementieren.

Closures greifen in Rust 2021 nur noch auf die tatsächlich genutzten Teilobjekte aus dem Kontext zu. Das behebt Fehler, wenn beispielsweise ein anderer, nicht genutzter Teil eines Struct entfernt wurde. Außerdem verarbeitet das Makro panic! für Ausgabemeldungen bei unerwarteten Programmabbrüchen den ersten Parameter ebenso als Format-String wie println!. Schließlich reserviert die Edition die Syntax für Identifier als Präfixe.

In der Dokumentation findet sich die Anleitung zum Umstellen von Projekten auf eine neue Edition. Für das kommende Rust 2021 ist das Vorgehen etwas anders als beim Wechsel auf eine stabile Edition, da für die Umstellung keine Builds aus dem Release Channel, sondern aus dem Nightly Channel erforderlich sind.

Zunächst müssen Entwicklerinnen und Entwickler den jüngsten Nightly Build über rustup update nightly installieren. Anschließend rufen sie cargo +nightly fix --edition auf. In der Datei Cargo.toml muss die Zeile cargo-features = ["edition2021"] oberhalb der [package]-Sektion stehen. Schließlich gilt es das Feld für die Edition auf edition = "2021" anzupassen.

Anschließend lässt sich mit dem Befehl cargo +nightly check testen, ob der Code mit der neuen Edition funktioniert. Die Dokumentation führt unter anderem folgenden kurzen Codeausschnitt auf, der einen anonymen Parameter verwendet:

trait Foo {
  fn foo(&self, i32);
}

Der Code lässt sich nur mit der kommenden Edition kompilieren, da Rust 2018 keine anonymen Parameter kennt.

Weitere Details zur Testphase für Rust 2021 finden sich im Rust-Blog. Das endgültige Release der kommenden Edition ist mit Version 1.56 der Programmiersprache geplant, die am 21. Oktober erscheinen soll. Derzeit ist Rust 1.53 aktuell, und neue Versionen erscheinen regelmäßig im Sechswochentakt.

(rme)