1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! Event-sourced actor runtime for Vertep.
//!
//! A chart becomes a durable actor: addressed by an IRI, fed through a mailbox, run one SCXML
//! macrostep per turn by the pure `vertep_core::session::step`, and made durable by appending
//! one journal entry per turn to a [`vertep_store::JournalStore`] with compare-and-set. The
//! runtime is an imperative shell around that pure core: it owns time ([`shell::Clock`]),
//! background work ([`shell::Spawn`]) and waiting ([`shell::Sleep`]), all injectable, so tests
//! run on a virtual clock.
//!
//! - [`node`]: the scheduler of one process: virtual actors (activated on message, deactivated
//! when idle, at most one activation per node), invoked actors (`<invoke>` children with
//! `vt:restart` supervision), stateless worker pools, the transactional outbox, durable
//! timers, snapshots, replay, migrations, forks and time travel.
//! - [`machine`]: the deterministic macrostep used by live turns and replay alike.
//! - [`journal`]: journal entries as RDF datasets in `vt:` terms.
//! - [`mailbox`], [`transport`]: pluggable mailboxes (in-memory, store-backed), transports
//! registered as SCXML Event I/O Processors, and the directory of resolvers.
//! - [`actor`]: the actor contract and its chart, function and stream adapters.
//! - [`chart`]: chart versions, the registry, `vt:` extension lowering and migrations.
//! - [`ontology`]: the runtime ontology module and its SHACL shapes.
//! - [`placement`]: the hook a cluster uses to place virtual actors and workers on nodes.
//! - [`websocket`]: the WebSocket Event I/O Processor's frames and links, and its server end
//! (feature `websocket`).
//!
//! @tg: implements:: [[decisions#SCXML-native actors with vt extensions]]
//! @tg: implements:: [[decisions#IRI identity and lifecycle classes]]
//! @tg: implements:: [[decisions#Identity, mailbox and transport layers]] {confidence: partial, note: "local transport only; DID and relay mailboxes are M5"}
//! @tg: implements:: [[decisions#Event-sourced actors]]
//! @tg: implements:: [[decisions#Content-addressed chart versions]]
//! @tg: implements:: [[decisions#No-std core and tokio shell]]
//! @tg: implements:: [[decisions#Non-blocking request and deferred events]]
//! @tg: implements:: [[decisions#State changes travel in the append]]
//! @tg: implements:: [[decisions#Fencing epochs on journal appends]] {confidence: partial, note: "the configured token is passed on every append; leases are M4"}
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
/// The chart RDF crate (version IRIs).
pub use vertep_rdf;
/// The storage contracts.
pub use vertep_store;
;