Programmiersprachen: Rust bietet mehr Nebenläufigkeit beim Build

Version 1.21 von Mozillas Programmiersprache bringt nur wenige, aber nützliche Neuerungen. Unter anderem startet der Compiler nun beim Übersetzen parallele LLVM-Prozesse, und auch der Paketmanager Cargo bekommt ein paar Ergänzungen.

In Pocket speichern vorlesen Druckansicht 36 Kommentare lesen
Programmiersprachen: Rust setzt jetzt auch beim Kompilieren auf Nebenläufigkeit
Lesezeit: 2 Min.
Von
  • Rainald Menge-Sonnentag

Mozilla hat Version 1.21 der auf Nebenläufigkeit und Sicherheit ausgelegten Programmiersprache Rust veröffentlicht. Parallele Verarbeitung ist eine der wichtigsten Neuerungen des frischen Release, allerdings nicht hinsichtlich der Sprachkonstrukte, sondern im Build-Prozess.

So startet der Compiler nun bereits beim Übersetzen des Rust-Codes parallel LLVM. Das soll neben der dadurch verbesserten Parallelität am Ende des Kompiliervorgangs vor allem den Speicherbedarf senken, da beim Build nicht mehr alle LLVM-Module bis zum Link-Prozess im Speicher bleiben müssen. Der Vorteil zeigt sich besonders beim inkrementellen Kompilieren, aber laut dem zugehörigen Pull Request auch beim Verwenden des Flags -Ccodegen-units = N , wobei N für die Anzahl der Prozesse steht, die der Code-Generator nutzt. Das Flag hat Rust, damit Entwickler selbst bestimmen können, wie weit sie die parallele Kompilierung nutzen, die zwar den Code schneller erzeugt, der dann aber potenziell weniger Optimierungen enthält.

Um einen besseren Überblick über die Vorgänge beim Kompilieren zu erhalten, können Entwickler das Flag -Ztrans-time-graph verwenden, das eine HTML-Datei erzeugt, die einen grafische Darstellung der Arbeitsabläufe bietet.

Die roten Balken spiegeln den Übersetzungsprozess wider, während die grünen für LLVM-Prozesse stehen.

(Bild: GitHub-Repo von Rust)

Zu den weiteren Neuerungen gehören neben der Stabilisierung einiger Bibliotheken eine [patch]-Sektion für den Paketmanager Cargo, die dazu dient bestimmte Teile des Dependency-Graphen zu überschreiben. Damit erfüllt es im Wesentlichen den gleichen Zweck wie [replace]. Auch wenn das Team keine Pläne hat, Letzteres als deprecated (überholt) zu definieren, sollten Entwickler ab sofort [patch] statt [replace] verwenden. Neu ist zudem, dass sich mit cargo install mehrere Crates, wie in Rust Bibliotheken beziehungsweise Module heißen, parallel installieren lassen.

Die Programmiersprache selbst erhält eine kleine Änderung zur Verwendung von statischen Variablen innerhalb von Blöcken. Der entsprechende RFC #1414 (Request for Comments) ist bereits seit knapp zwei Jahren in Bearbeitung.

Weitere Neuerungen in Rust 1.21 wie Details zur verbesserten Dokumentation lassen sich dem Rust-Blog entnehmen. Die vollständige Liste ist in den Release Notes zu finden. Der Sourcecode liegt quelloffen im GitHub-Repository, und Information zum Installieren von Binaries auf Linux, macOS und Windows stehen in der Rust-Dokumentation. (rme)