Programmiersprache: Rust 1.28 führt das Global-Allocator-Attribut ein

Mozillas Programmiersprache Rust bringt jetzt das Global-Allocator-Attribut, NonZero-Number-Types sowie kleine Änderungen für Crates und die Fehleranzeige mit.

In Pocket speichern vorlesen Druckansicht 2 Kommentare lesen
Rust 1.28 führt das Global-Allocator-Attribut ein
Lesezeit: 2 Min.
Von
  • Björn Bohn
Inhaltsverzeichnis

Version 1.28 von Mozillas Programmiersprache Rust ist erschienen. Mit ihr haben Entwickler die Möglichkeit, Allocator mit dem #[global_allocator]-Attribut festzulegen und NonZero-Number-Types einzusetzen. Darüber hinaus gibt es Änderungen für die Fehleranzeige und das Veröffentlichen von Crates mit Änderungen im src-Verzeichnis.

Rust-Programme nutzen Allocator, um Speicher von einem System während der Laufzeit zu erhalten. Bisher war es nicht möglich, die Art und Weise wie der Speicher bezogen wird, zu ändern, was einige Anwendungsfälle verhindert hat. Das hat sich jetzt geändert

In Version 1.28 von Rust ist das #[global_allocator]-Attribut als stabil gekennzeichnet. Dadurch können Rust-Programme ihren Allocator als den System-Allocator festlegen und außerdem neue Allocator mit der Implementierung der GlobalAlloc-Eigenschaft definieren. Der Standard-Allocator für Rust-Programme ist jemmalloc. Die Standardbibliothek verfügt jetzt über einen Handle für den System-Allocator, der die Möglichkeit zum Wechsel zum System-Allocator dient. Dazu ist ein static zu deklarieren und mit dem #[global_allocator]-Attribut zu markieren.

Neben der GlobalAlloc-Eigenschaft liegen auch die NonZero-Number-Types in einer stabilen Version vor. Dabei handelt es sich um Wrapper für die Integer-Typen NonZeroU8, NonZeroU16, NonZeroU32, NonZeroU64, NonZeru128 und NonZeroUsize. Der neue Wrapper soll die Dateigröße verkleinern: Während Option<u8> zwei Byte groß ist, ist Option<NonZeroU8> nur ein Byte groß. Diese Optimierung soll bestehen bleiben, wenn NonZeroU8 in einem anderen Konstrukt eingeschlossen ist.

Darüber hinaus erlaubt Cargo kein Veröffentlichen von Crates mehr, die mit Build-Skripten das src-Verzeichnis modifiziert haben. Das src-Verzeichnis in einem Crate sollte also als unveränderbar betrachtet werden. Außerdem hat das Rust-Team die Fehlerbenachrichtigung bei Formatierungsfehlern aktualisiert – sie gibt jetzt den genauen Grund an, warum ein Format-String nicht möglich ist.

Eine vollständige Liste der Änderungen gibt es in den Release Notes auf GitHub. Wer eine Aktualisierung auf die neue Version durchführen möchte, muss einfach den Befehl

$ rustup update stable

durchführen. (bbo)