Akka Streams, in Rust
The same Source → Flow → Sink vocabulary, GraphDSL junctions, cycles, substreams, and blueprint-vs-materialization contract — with Rust-native names and Result-based errors.
Akka Streams' API shape. FS2 and ZIO's concurrency vocabulary. Every claim measured against all three — in safe Rust on Tokio.

The scoreboard
Wall-clock and whole-process CPU, same host, warmed JVMs. Each figure below is the headline row of a checked-in result table — Datum versus the best of Akka, FS2, and ZIO for that scenario.
Measured at v0.9.0 (2026-07-03) · full result tables
By area
| Area | Headline scenario | Wall | CPU | Record |
|---|---|---|---|---|
| Concurrency primitives | Topic fan-out ×1024 vs ZIO Hub | 23× faster | 158× less | table |
| Remote StreamRefs | 1,024 elements, fold-to-sum vs Akka Artery-TCP | 9.9× faster | 14.8× less | table |
| Graph & junctions | Fused identity/map chains vs Akka | 13–46× faster | tracks wall | table |
| Queues | Source-queue backpressure vs Akka | 985× faster | 112× less alloc | table |
| Network carriers | TLS echo round-trip vs Akka · RSS 8 MB vs 799 MB | 3.4× faster | 8.3× less | table |
| Substreams | prefix_and_tail / flat_map_concat vs Akka | 10–12× faster | 29–43× less alloc | table |
| Source / Flow | Sync operator chains vs Akka | 2.3–5.6× faster | 4–36× less alloc | table |
Not every row is a blowout — bounded-queue offer sits at ~parity (0.96×) and JSON framing at 1.00×, and the tables say so. The bar is parity-or-better on wall and CPU, everywhere.
Why you can trust the numbers
A path can win wall-clock by busy-spinning while the JVM parks. Every table reports whole-process CPU so that cost can't hide.
Every scenario asserts the work actually happened — element counts, per-subscriber totals, final values — on both sides of the comparison.
JVM target numbers are captured and committed before the Datum implementation exists, then never touched.
A losing row is never shipped as "inherent cost". It gets a named lever or a fix — the record keeps both the misses and the levers.
Scope
Signal, Subscription, Channel, Topic for state, handoff, and pub-sub between streams, actors, and plain code.datum-core plus satellites for networking, jobs, and now cluster membership & sharding (datum-net, datum-agent, datum-cluster); built to carry higher-level frameworks on top.Publisher/Subscriber interop; the integration surfaces are Tokio futures and Ractor actors.filter_map over collect, Result over exceptions, explicit overflow policies over defaults.