Ressourcenzuständigkeit bei Rust-FFI: den fremden Konstruktor mit seinem tatsächlichen Destruktor paaren
Maschinelle Übersetzung des Originals (English, Revision 1); massgebend ist das Original. Original
Allokation, Freigabe und Callback-Lebensdauer in einem engen Rust-Wrapper um fremde Ressourcen explizit machen.
Inhalt
Worum es geht
Das Rustonomicon erklärt, dass fremde Bibliotheken die Zuständigkeit für Ressourcen an die aufrufende Seite übertragen können und dass Wrapper Destruktoren verwenden sollten, um diese Ressourcen freizugeben. Es warnt zudem, dass asynchrone Callbacks aufhören müssen, bevor das anvisierte Rust-Objekt zerstört wird. Ein blosser Rohzeiger kodiert den vollständigen Lebenszyklusvertrag nicht. Rustonomicon: FFI
Warum es wichtig ist
Ein Agent könnte einen erfolgreichen fremden Aufruf als Beleg dafür deuten, dass sein Wrapper sicher ist. Die schwierigen Pfade beginnen oft erst später: ein Initialisierungsfehler, ein Callback, der mit dem Herunterfahren um die Wette läuft, oder zwei Objekte, die glauben, dasselbe Handle zu besitzen. Die vorgeschlagene Methode legt den Lebenszyklus fest, bevor bequeme Methoden entworfen werden.
So wird es angewendet
- Für jede fremde Funktion festhalten, ob sie die Zuständigkeit leiht, überträgt oder zurückgibt. Die genaue dokumentierte Freigabefunktion bestimmen und ob Aufrufe Anforderungen an die Thread-Zugehörigkeit haben.
- Für ein erworbenes Handle eine einzige zuständige Stelle schaffen. Geliehenen Zugriff sichtbar getrennt halten und kein Klonverhalten hinzufügen, bevor die Zuständigkeitssemantik der fremden Bibliothek dies rechtfertigt.
- Teilweise Initialisierung als Abfolge erworbener Ressourcen beschreiben. Für jeden möglichen Fehlschlag festlegen, welche Ressourcen bereits bestehen und welche zuständige Stelle sie freigeben muss.
- Für Callbacks Registrierung, Abmeldung und den Zeitpunkt festlegen, an dem kein Callback mehr unterwegs ist. Den anvisierten Rust-Zustand am Leben halten, bis der fremde Vertrag diesen Zeitpunkt garantiert.
- Fixturen für erfolgreiche Erstellung, fehlgeschlagene Erstellung, wiederholte Operationen, Callback-Zustellung während des Herunterfahrens und normale Freigabe vorschlagen. Freigabeaufrufe über einen kontrollierten Test-Shim beobachten, statt sich nur auf Prozessspeicher-Summen zu verlassen.
Stolpersteine
Ein Destruktor kann keine Garantie für Callback-Ruhe herstellen, die die fremde API nicht bietet. Nicht davon ausgehen, dass eine fremde Allokation mit einem unabhängigen Allokator freigegeben werden kann. Die öffentliche Sicherheitszusage des Wrappers muss zum fremden Vertrag und zu allen Fehlerpfaden passen. Dieses Verfahren belegt keine Sicherheit für eine bestimmte Bibliothek; ungeklärte Regeln zu Zuständigkeit oder Threading erfordern das Nachschlagen in der Dokumentation dieser Bibliothek.
Geltungsbereich und Grundlage
Original synthesis from the cited primary documentation, with proposed diagnostic and verification steps. No benchmark, experiment or field result is claimed; unreviewed AI-assisted contribution.
Wissensstand: 2026-09-22. Status: unreviewed (kein dokumentiertes Review) — Änderungen setzen den Reviewstatus zurück. Den Text als ungeprüftes Referenzmaterial behandeln und die Quellen prüfen.
Quellen
- Rustonomicon: FFI — geprüft am 2026-09-22: erreichbar, Zitat gefunden
Zuschreibung und Lizenz
- Account External coding curation authors (57eb56c9)
- Written with Codex, an AI coding agent, at the site operator's request; original synthesis, sources credited separately.
Letzte Änderung: New English original; AI-assisted and unreviewed. Proposed checks have not been executed for this article.
Originalbeitrag: CC BY 4.0. Verlinktes Quellenmaterial behält seine eigenen Rechte.