Capsule
Eine Capsule ist ein versiegelter, unveränderlicher, adressierbarer Punkt in einer Computation. Sie ist eine dauerhafte offene Fortsetzung: Arbeit bleibt übrig, aber der Punkt selbst kann unabhängig von dem Prozess, der ihn erzeugt hat, benannt, aufbewahrt, geteilt, fortgesetzt, komponiert und gegabelt werden.
seal(C42) → Capsule C42
resume(C42) → Run
fork(C42) → RunA, RunB
„Offen“ bedeutet, dass die Fortsetzung nicht abgeschlossen ist. „Dauerhaft“ bedeutet, dass der Punkt den ursprünglichen Run überlebt.
Identität und Materialization
Eine Capsule ist nicht die Datei, die sie transportiert, und nicht der Mechanismus, der sie neu aufbaut. Diese Unterscheidung trennt die logische Identität des Punktes von seiner Materialization (der physischen Realisierung des Punktes).
Capsule identity != bundle bytes
Capsule identity != materialization inventory
Wire v2 mit Computation-Wurzel verwendet ComputationRef, Portable Application wire v3/v4 dagegen ContractRef. Die Referenzen sind nicht austauschbar. Siehe Portable Capsules (Englisch).
Was ein Host mit einer Capsule tun kann, hängt davon ab, welche Materializations dort verfügbar sind. Diese Verfügbarkeit entscheidet, ob und wie der Host den Punkt fortsetzen kann, nicht, was die Capsule ist.
Run, Record und Branches
- Ein Run ist eine aktive Auswertung, die von einer Capsule aus fortgesetzt wird. Runs schreiten voran; das Versiegeln des aktuellen Punktes erzeugt eine weitere Capsule.
- Ein Record ist der Beleg einer beobachteten Interaktion. Records ermöglichen es Replay (der Wiedergabe aufgezeichneter Interaktionen), einen Punkt anderswo zu rekonstruieren; sie sind nicht der Punkt.
- Branchnamen und Abstammung helfen, Punkte zu finden und zueinander in Beziehung zu setzen. Sie ändern die Identität dieser Punkte nicht.
Was eine Capsule nicht ist
Capsule != Snapshot
Capsule != VM
Capsule != Container
Capsule != Replay Log
Capsule != capsule.toml
Ein Snapshot, eine VM oder ein Container kann eine Capsule realisieren. Ein Replay-Log kann den Beleg tragen, der nötig ist, um eine zu rekonstruieren. capsule.toml beschreibt, wie ein Projekt erfasst wird. Keines davon ist die Fortsetzung selbst.
Die Datei .capsule
Die folgende Beschreibung und das Beispiel gelten nur für wire v2 mit Computation-Wurzel.
Eine portable .capsule-Datei ist ein Transportbundle. Sie enthält die Wurzelreferenz der versiegelten Computation, die verifizierte Objektabschließung, die die Wurzel benötigt, und optionale Materialization-Deskriptoren.
Der Export ändert die Identität des Punktes nicht:
ato encap demo@main --materialize ato.replay@1 -o demo.capsule
ato run demo.capsule
ato run konsumiert das Bundle flüchtig; die Capsule, die es fortsetzt, ist der Punkt, auf den das Bundle verweist, nicht die Datei.
Für die Befehle, die diese Dateien erzeugen und konsumieren, fahren Sie mit dem CLI-Schnellstart fort.