Rust 1.38 beschleunigt den Bau von Crates

Rust 1.38 ist hier und warnt vor einem nicht funktionierenden Feature. Zugleich klappt das Kompilieren von Crates mit einem größeren Abhängigkeitsbaum besser.

10 bis 20 Prozent schnellere Builds für Crates mit Abhängigkeiten versprechen die Rust-Entwickler für die so genannte Pipelined Compilation. Sie räumen aber auch ein, dass vermutlich nicht alle Kompiliervorgänge davon profitieren. Hintergrund für die Beschleunigung ist in der Arbeitsweise des Compilers zu finden. Der baut die Abhängigkeiten von Crates nicht vollständig, sondern braucht lediglich ihre Metadaten, also Typen, Abhängigkeiten und Exports. Weil Cargo diese Metadaten bereits früh erhält, legt der Paketmanager ab Version 1.38 auch gleich mit dem Bau der abhängigen Crates los. Wer einzelne Crates ohne Abhängigkeiten baut, spürt vermutlich nichts von den Änderungen.

Sicherheitswarnung

Die Klasse “std::mem::uninitialized” hat es Rust-Entwicklern in der Vergangenheit erlaubt, Rusts Initialisierungscheck zu umgehen und vorzutäuschen, ein Wert vom Typ “T” sei initialisiert. Es sei allerdings fast aussichtslos, dieses Feature sicher zu verwenden, was dann zu “undefiniertem Verhalten” im Code führe. Die Rust-Entwickler wollen “mem::uninitialized” und “mem::zeroed” daher zukünftig ausrangieren und setzen stattdessen auf “MaybeUninit<T>”. Bis dahin gibt Rustc eine Warnung aus, wenn Entwickler versuchen, bestimmte Typen mit “mem::uninitialized” und “mem::zeroed” zu initialisieren. Der Blogpost zeigt ein Beispiel für Situationen, in denen eine solche Warnung erscheint.

Ferner liefen…

Ansonsten hilft nun “std::any::type_name” beim Debuggen, um zu erfahren, welche Typen Parameter in generischen Funktionen besitzen. Das “#[global_allocator]”-Attribut lässt sich neuerdings in Submodules verwenden, “#[deprecated]” funktioniert jetzt in Makros. “riscv32i-unknown-none-elf” ist nun ein Tier-3-Target für Rust. In Cargo lässt sich die “–message-format”-Option nun mehrmals verwenden und akzeptiert eine Komma-separierte Liste an Werten. Zu den bisherigen kommen “json-diagnostic-short” und “json-diagnostic-rendered-ansi” hinzu. Details zu den Änderungen der Sprache und ihrer Bibliotheken liefert das Announcement, ein “rustup update stable” installiert die neueste Version.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben