Akka Streams API shape
Familiar Source / Flow / Sink DSL and GraphDSL junctions for teams coming from Scala.
Rust stream-processing library mirroring Akka/Pekko Streams Typed, built on Ractor actors.
Datum is a Rust stream-processing library whose API mirrors Akka/Pekko Streams Typed. The same Source → Flow → Sink vocabulary, the same GraphDSL junction model, the same blueprint-vs-materialization separation — written in Rust, grounded in Ractor actors, and running on Tokio.
If you have worked with Akka Streams, the Datum API will feel familiar. If you haven't, the Concepts section explains the model from first principles.
Publisher / Subscriber interop. The idiomatic Rust integration surfaces are Tokio futures and Ractor actors.filter_map instead of Akka's collect).v0.2.0 ships:
Source, Flow, Sink, RunnableGraph, Materializer with the full operator set: element ops, async ops, bounds, aggregation, error handling, supervision, and restart/retry.GraphDSL, typed ports (Inlet/Outlet), all core junctions (Broadcast, Balance, Merge, Zip, MergePreferred, MergePrioritized), and a fused executor with a typed-linear fast path (16–46× warmed Akka on sync chains).ActorFlow::ask, ActorSource, ActorSink, and Ractor-backed publish/subscribe.SourceWithContext, FlowWithContext.UniqueKillSwitch, SharedKillSwitch, MergeHub, BroadcastHub, PartitionHub.group_by, split_when, split_after, flat_map_concat, flat_map_merge.See the benchmark result tables and the roadmap for honest per-path performance numbers and the forward plan.
Datum is benchmarked head-to-head against warmed Akka/Pekko Streams across four areas — Source/Flow, materialization, graph/junctions, and actor ask. The harness adds a CPU column deliberately: some wins come from busy-spinning while Akka parks — a real cost that wall-clock numbers hide.
Highlights from v0.2.0:
sink_terminal_head: 56× (synchronous micro-source inline drain).roadmap/benchmarks/actor-ask.md.Not every path wins. The erased-executor fallback (graphs the typed path can't specialize) runs at roughly 0.5–0.7× Akka. See roadmap/benchmarks/ for the full per-scenario table.