Wie funktioniert Pinning in Rust 1.33?

Rust 1.33: Pinning, stabile APIs und mehr

Florian Roos

© Shutterstock / SurabhiArtss

In Rust 1.33 wurde Pinning eingeführt. Pinning gilt als Schritt in Richtung einer Implementierung von async und await. Außerdem stehen neue Möglichkeiten für die Arbeit mit const fn bereit und weitere APIs haben den Stable-Status erhalten.

Das Rust-Team hat Rust 1.33 veröffentlicht. Viele der enthaltenen Änderungen betreffen Const-Fn-Funktionen und das Pinning. Mehrere weitere Rust-APIs gelten nun als stabil.

Im Blogpost zum Release von Rust 1.33 werden die Veränderungen für Const-Fn-Funktionen als eines der größten Features dieses Releases bezeichnet. Dazu gehören let– und let mut-Bindings. Diese können nun in const fn verwendet werden. Ausdrücke mit Assignments oder Assignment-Operatoren stehen nun ebenfalls innerhalb von Const-Fn-Funktionen zur Verfügung. Darüber hinaus ist es nun möglich, einen const unsafe fn-Aufruf aus einer const fn-Funktion heraus zu tätigen.

API Summit 2019
Thilo Frotscher

API-Design – Tipps und Tricks aus der Praxis

mit Thilo Frotscher (Freiberufler)

Golo Roden

Skalierbare Web-APIs mit Node.js entwickeln

mit Golo Roden (the native web)

Pinning und APIs mit Stable-Status in Rust 1.33

Pinning ist ein neues Feature in Rust 1.33, das vom Rust-Team als ein wichtiger Schritt in Richtung der Implementierung von async und await in Rust beschrieben wird. Das nun stabil implementierte Feature sorgt dafür, dass gepinnte Daten an einer festen Adresse im Speicher bleiben. Auf die Adresse gepinnter Daten kann somit zuverlässig verwiesen werden. Aus der Dokumentation geht hervor, dass das Pinning aufgehoben werden muss, bevor gepinnte Daten verschoben werden können. Auch eine Freigabe des entsprechenden Speicherabschnitts ist erst nach der Aufhebung des Pinnings möglich. Im Blogpost zum Release von Rust 1.33 wird geschildert, dass der std::pin::Pin<P>-Typ sowie der Unpin-Marker-Trait zur Nutzung von Pinning bereitstehen.

Im Rahmen des neuen Rust-Releases wurde eine Reihe weiterer APIs als stable gekennzeichnet. Darunter sind neben den fürs Pinning relevanten APIs pin::Pin und marker::Unpin auch unix:FlieExt::read_exact_at, convert::identity oder Duration::as_millis.

Weitere Informationen zu allen Änderungen in Rust 1.33 bieten der entsprechende Blogpost des Rust-Teams sowie die Release Notes.

Verwandte Themen:

Geschrieben von
Florian Roos
Florian Roos
Florian Roos ist Redakteur für Software & Support Media. Er hat Politikwissenschaft an der Technischen Universität Darmstadt studiert und erste redaktionelle Erfahrungen in den Bereichen Games und Consumer-Hardware gesammelt.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
4000
  Subscribe  
Benachrichtige mich zu: