text: Programmiersprache: Rust könnte neue Technik für Unsafe Pointer bekommen - Golem.de
  Programmiersprache: Rust könnte neue Technik für Unsafe Pointer bekommen
  Die Nutzung von Zeigern im Unsafe-Teil von Rust führt offenbar zu vielen Problemen. Das könnte künftig geändert werden.
  Artikel veröffentlicht am 22. März 2022, 12:49 Uhr , Sebastian Grüner
  Die Programmiersprache Rust nutzt als Maskottchen die Krabbe Ferris. (Bild: TARIK TINAZAY/AFP via Getty Images)
  In einem sehr ausführlichen Blogpost beschreibt die Entwicklerin Aria Beingessner verschiedene Probleme im aktuellen Umgang der Programmiersprache Rust mit Unsafe Pointern, also jenen Zeigern, für die die sonst in Rust üblichen Sicherheitsgarantien nicht gelten. Beingessner verantwortet die Dokumentation für Unsafe Rust und hat die Pointer-API der Sprache umgestaltet. Sie schreibt nun: "Ich denke viel über unsichere Zeiger in Rust nach und ich hasse sie absolut."
  Die verfügbare Umsetzung der Pointer in Rust sei "zutiefst fehlerhaft". Mit einem wachsenden Verständnis der Beteiligten dafür, wie die Zeiger eigentlich funktionieren sollten, seien die Mängel der bisherigen Technik umso eklatanter, schreibt Beingessner.
  Sie führt weiter aus, dass der derzeit mögliche Umgang mit Tagged Pointern in Rust zu Schwierigkeiten führe, ein Speichermodell für die Programmiersprache formal zu definieren. Probleme gebe es außerdem beim Erstellen von sogenannten Sanitizern, die undefiniertes Verhalten und damit mögliche Sicherheitsrisiken erkennen sollen. Ebenso bekomme Rust Probleme mit CPU-Architekturen wie aus dem Cheri-Projekt, das einen inhärenten Speicherschutz bieten soll.
  Für Probleme sorgen die Pointer auch im Zusammenspiel mit den in Rust genutzten Referenzen, die laut Beingessner eigentlich nie zusammen verwendet werden sollten. Das ist aber wohl nicht einfach. Darüber hinaus sei auch die Semantik beim Dereferenzieren eher verwirrend, so die Entwicklerin. In Safe Rust helfe hier dann immerhin noch der Compiler, falls etwas schief laufe. In Unsafe Rust seien die Entwickler aber auf sich allein gestellt.
  Als Lösung macht Beingessner sehr detaillierte Vorschläge. Dazu gehört die strikte Trennung von eigentlichen Adressen und Pointern sowie die Einführung von syntaktischem Zucker für Pointer Offsets. Einen ersten Teil der Arbeiten setzt Beingessner laut Aussagen auf Twitter bereits um. Ob und in welcher Form die Änderung letztlich in einer stabilen Rust-Version landen, ist derzeit aber noch nicht absehbar.