Rust 1.41.0 lockert Beschränkungen beim Implementieren von Traits, außerdem gibt es Verbesserungen am Paketmanager Cargo.
Im Zentrum der Änderungen an den Traits steht die so genannte Orphan Rule. Die soll verhindern, dass sich zwei Crates dieselben Traits mit denselben Typen implementieren und so ins Gehege kommen. Die Regel prüft, ob entweder der Trait lokal ist oder der verwendete Typ, andernfalls schlägt der Orphan-Rule-Test fehl.
Wie die Ankündigung an einem Beispiel zeigt, fiel die Implementierung dieser Orphan Rule bislang recht strikt aus und erforderte ein etwas umständliches Herumarbeiten um die Restriktionen. Das ändert sich mit der neuen Version von Rust. Die Überlegungen dahinter schildert das zugehörige RFC.
Cargo-Updates
Beliebte Kommandozeilentools installieren Rust-Nutzer bevorzugt über den Paketmanager Crate. Wer aber bereits installierte Tools aktualisieren wollte, musste bislang den Weg über “cargo install Programmname –force” verwenden. Neuerdings genügt es, “cargo install Programmname” einzutippen. Cargo erkennt dann auch, ob die vorhandene Software veraltete ist und installiert gegebenenfalls die neuste Version.
Ebenfalls den Paketmanager betrifft ein neues Format für die Datei “Cargo.lock”. Dieses enthält, wie die alte Version auch, Informationen zu Abhängigkeiten und Checksummen einer Software, verursacht aber keine Merge-Konflikte mehr, wenn Entwickler die Abhängigkeiten in separaten Branches verändern. Das neue “Cargo.lock”-Format erzeugt Rust aber nur für neue Projekte – ältere behalten das bisherige Format.
Kleinere Änderungen
Auch die Kompatibilität zur Programmiersprache C haben die Rust-Entwickler wieder ein Stück weit verbessert. Eine “Box<T>” mit “T: Sized” ist nun ABI-kompatibel mit den “T*”-Pointer-Typen aus C. Daneben haben die Entwickler an Compiler-Komponenten gefeilt, konkret an Optimierungen für MIR, die Mid-level Intermediate Representation. Constant Propagation ist nun aktiviert. Dabei erkennt der Compiler Code, der zur Übersetzungszeit laufen kann, wertet ihn aus und ersetzt den Originalcode mit dem Ergebnis.
Nicht zuletzt gibt es weitere Änderungen an der Standardbibliothek, welche die Ankündigung im Detail aufzählt. Sie informiert auch darüber, dass das Projekt 32-Bit-Apple-Targets nach und nach ausrangieren wird. Der Befehl “rustup update stable” bringt vorhandene Rust-Installationen auf den neuesten Stand.





