Expand description
A production-focused runtime based on Tokio with secure randomness and storage backed by the local filesystem.
§Panics
Unless configured otherwise, any task panic will lead to a runtime panic. This includes panics raised while dropping a task’s future or output, after which a handle still awaiting the task resolves to crate::Error::Closed.
§Storage
crate::Runner::start holds the storage directory (an advisory lock on its
.hold file) until the run’s storage and every operation it dispatched have
finished. A start on a directory another run still holds blocks, with a
warning, until then. A Context, Storage, or Blob kept past start
keeps the hold.
Before user code starts, Linux flushes the storage filesystem. Other platforms synchronize the storage directory, then each existing partition before its first scan or open. These directory flushes make inherited partition and blob removals durable before a scan or open observes their absence. Creation and removal synchronize subsequent directory changes.
Other platforms also flush existing blobs individually on their first open.
Directory synchronization covers names. This separate flush covers file
data. On macOS, both use F_FULLFSYNC through std::fs::File::sync_all.
Failures while synchronizing blob contents, including during SYNC writes, are retained across opens of the blob, even after every handle is dropped. Creation failures are retained when the header is complete. Removing or recreating the blob clears its retained error. A new runtime instance starts without the error record and still requires normal storage recovery.
§Example
use commonware_runtime::{Spawner, Runner, Supervisor, tokio, Metrics};
let executor = tokio::Runner::default();
executor.start(|context| async move {
println!("Parent started");
let result = context.child("child").spawn(|_| async move {
println!("Child started");
"hello"
});
println!("Child result: {:?}", result.await);
println!("Parent exited");
});Modules§
- telemetry
- Utilities for collecting and reporting telemetry data.
- tracing
- Utilities to export traces to an OTLP endpoint.
Structs§
- Config
- Configuration for the
tokioruntime. - Context
- Implementation of crate::Spawner, crate::Clock,
crate::Network, and crate::Storage for the
tokioruntime. - Executor
- Runtime based on Tokio.
- Network
Config - Runner
- Implementation of crate::Runner for the
tokioruntime.