Appearance
Installation
Add Datum to your project from crates.io:
sh
cargo add datum-coreOr in Cargo.toml:
toml
[dependencies]
datum-core = "0.11"Note: The package is published as
datum-core(the namedatumis taken on crates.io), but the import path staysuse datum::…— the crate's library name isdatum.
Optional: datum-net
Network sources, sinks, and connection utilities live in the separately published datum-net satellite crate:
sh
cargo add datum-netdatum-net depends on datum-core and imports as datum_net::…; use datum::… is for the core stream-processing crate. See the datum-net guide for TLS, UDP, QUIC, StreamRefs transport, sharding, and io_uring examples.
On Linux (kernel ≥5.10), you can optionally enable tokio-uring file I/O:
sh
cargo add datum-net --features io-uring-fileThe feature is Linux-only and sits alongside the default TokioFileIO.
Rust version
Datum uses Rust edition 2024. Rust 1.88 or later is required.
Cross-process streams and cluster control
datum-core does not expose a Ractor cluster feature. Cross-process StreamRefs use the TCP and QUIC carriers in datum-net; see the datum-net guide for those transports. Multi-node membership and placement live in datum-cluster, with cluster-aware agents in datum-agent and entity sharding in datum-cluster-sharding.
Alternative: git dependency
If you need an unreleased commit, you can point at the repository directly:
toml
[dependencies]
datum-core = { git = "https://github.com/Aethergrids/Datum", tag = "v0.11.0" }Tokio runtime
Datum depends on Tokio. Simple synchronous streams (no map_async, no actor interop) run fully inline on the calling thread and do not require an active Tokio runtime. For async operators and actor interop, a Tokio runtime must be present.
Next steps
- First Stream — write and run your first stream in five minutes.
- Concepts — understand the Source / Flow / Sink model and how materialization works.