Capsule
Capsule은 Computation(계산) 안의 봉인되고 불변이며 주소 지정 가능한 지점입니다. 지속적으로 열린 continuation(이어지는 것)입니다. 작업은 여전히 남아 있지만, 그 지점 자체는 그것을 만들어 낸 프로세스와 독립적으로 이름 붙이고, 보관하고, 공유하고, 재개하고, 조합하고, 분기할 수 있습니다.
seal(C42) → Capsule C42
resume(C42) → Run
fork(C42) → RunA, RunB
"열림"은 continuation이 끝나지 않았다는 뜻입니다. "지속적"은 그 지점이 원래 실행보다 오래 살아남는다는 뜻입니다.
정체성과 Materialization
Capsule은 그것을 전송하는 파일도 아니고 그것을 다시 만드는 메커니즘도 아닙니다.
Capsule identity != bundle bytes
Capsule identity != materialization inventory
Computation 루트 wire v2는 ComputationRef를, Portable Application wire v3/v4는 ContractRef를 사용하며 서로 바꿔 해석할 수 없습니다. Portable Capsules (영어)를 참고하세요.
호스트가 Capsule로 무엇을 할 수 있는지는 그곳에서 사용할 수 있는 Materialization에 달려 있습니다. 그 가용성은 호스트가 그 지점을 재개할 수 있는지와 어떻게 재개하는지를 결정할 뿐, Capsule이 무엇인지는 결정하지 않습니다.
Run, Record, 브랜치
- Run(실행)은 Capsule에서 재개된 활성 평가입니다. Run은 진행되며, 현재 지점을 봉인하면 또 다른 Capsule이 만들어집니다.
- Record(기록)는 관측된 상호 작용의 증거입니다. Record는 Replay(리플레이)가 다른 곳에서 지점을 재구성하게 해 주지만, Record가 그 지점은 아닙니다.
- 브랜치 이름과 계보는 지점을 찾고 관련 짓는 데 도움을 줍니다. 그것들은 그 지점의 정체성을 바꾸지 않습니다.
Capsule이 아닌 것
Capsule != Snapshot
Capsule != VM
Capsule != Container
Capsule != Replay Log
Capsule != capsule.toml
스냅샷, VM 또는 컨테이너는 Capsule을 실현할 수 있습니다. Replay 로그는 하나를 재구성하는 데 필요한 증거를 담을 수 있습니다. capsule.toml은 프로젝트가 기록되는 방식을 설명합니다. 그중 어느 것도 continuation 자체가 아닙니다.
.capsule 파일
다음 설명과 예제는 computation-root wire v2에만 적용됩니다.
휴대 가능한 .capsule 파일은 전송 번들입니다. 봉인된 Computation의 루트 참조, 루트가 필요로 하는 검증된 객체 클로저, 선택적 Materialization 설명자를 담습니다.
내보내기는 지점의 정체성을 바꾸지 않습니다:
ato encap demo@main --materialize ato.replay@1 -o demo.capsule
ato run demo.capsule
ato run은 번들을 일시적으로 소비합니다. 그것이 재개하는 Capsule은 번들이 가리키는 지점이지 파일이 아닙니다.
이 파일들을 만들고 소비하는 명령은 CLI 빠른 시작으로 이어서 확인하세요.