Skip to content

Installation

Add Datum to your project from crates.io:

sh
cargo add datum-core

Or in Cargo.toml:

toml
[dependencies]
datum-core = "0.11"

Note: The package is published as datum-core (the name datum is taken on crates.io), but the import path stays use datum::… — the crate's library name is datum.

Optional: datum-net

Network sources, sinks, and connection utilities live in the separately published datum-net satellite crate:

sh
cargo add datum-net

datum-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-file

The 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.