Menü
Developer

Programmiersprache: Rust 1.32 verabschiedet sich vom jemalloc-Allocator

Rust setzt in der neuen Version standardmäßig auf den System-Allocator und führt ein neues Makro zum Debuggen ein.

Von
vorlesen Drucken Kommentare lesen 1 Beitrag
Programmiersprache: Rust 1.32 verabschiedet sich von jemalloc-Allocator

Mozilla hat Version 1.32 der Programmiersprache Rust veröffentlicht. Während die vorherige Version die neue Edition Rust 2018 eingeleitet hat und eine bessere Produktivität im Fokus stehen soll, halten sich die Neuerungen in 1.32 vergleichsweise in Grenzen: Es gibt ein neues dbg!-Makro, Änderungen beim System Allocator sowie kleinere Änderungen bei den Modules und Makros. Das nächste Release ist für den 1. März 2019 geplant.

Bislang mussten Entwickler beim Abrufen eines Werts im Code einen umständlichen Weg über println! gehen, der nicht nur Zeit kostete, sondern auch bei mehreren Aufrufen schnell unübersichtlich wird. Darüber hinaus gibt println! den Wert im Standard-Output aus, obwohl das Verwenden von eprintln! sinnvoller wäre, damit der Wert im Standard-Error landet. Deshalb hat das Rust-Team das neue Makro dbg! eingeführt. Es gibt den Wert automatisch in Standard-Error aus und liefert zusätzlich noch einen Kontext zum Aufruf. Während die Funktion bislang, wie im Blogbeitrag erklärt, wie folgt funktionierte:

let x = 5;

println!("{:?}", x);

// or maybe even this
println!("{:#?}", x);

läuft sie jetzt mit dbg! so ab:

fn main() {
let x = 5;

dbg!(x);
}

und liefert die Ausgabe [src/main.rs:4] x = 5 zurück.

Bereits in Rust 1.28 hatte Mozilla ein Attribut eingeführt, damit Rust-Programme ihren Allocator als System-Allocator festlegen können. Mit Rust 1.32 ist der System-Allocator nun Standard und jemalloc kann nur noch über einen Crate, eine Art Container, verwendet werden. Dadurch wollen die Rust-Entwickler einige Probleme beseitigen, die der Einsatz von jemalloc hervorruft. Die Performance sei zwar meistens gut gewesen, aber nicht immer. Darüber hinaus hat jemalloc rund 300 KByte zu jedem Rust Binary hinzugefügt.

Eine vollständige Liste der Änderungen findet sich in den Release Notes. Wer bereits eine vorherige Version von Rust mit rustup installiert hat, kann mit $ rust update stable einfach auf die neue Version umsteigen. (bbo)