v0.1.0 · now on crates.io
The runtime that shows its work.
DINAH is a Rust-first, zero-dependency foundation for deterministic applications — runtime, memory, compute, ECS, simulation, networking and storage, built with contracts, tested boundaries and measured evidence.
Eight modules, one contract each.
Every module owns a single responsibility and publishes an explicit, documented contract. No hidden schedulers, no implicit parallelism, no surprise allocations.
Shared types and errors. No policy, no kernels — the vocabulary every other module agrees on.
Call-bounded scheduler and Shared synchronization. Work is submitted explicitly and joined before the call returns.
Bounded Buffer and two-column SoaBuffer. Fallible reservations, no implicit growth, no unsafe.
Sequential for_each, map, try_reduce, explicit batches, opt-in parallel iteration and composable pipelines — sequential by default, parallel only when you ask.
Generational Entity handles, single-owner World, typed sparse-set storage. Component queries and safe parallel systems land in v0.2.
Fixed-step clock, deterministic step contract, replay tests and five bounded models — from ASCII physics to flocking.
Blocking TCP wrappers, client-side prediction and reconciliation, a deterministic tick simulator. Wire codec and framing are v0.2 work.
Append-only journal with CRC-32 corruption detection: complete corruption fails, an interrupted final write is recovered.
Manifest-driven projects: init, run, task, doctor and benchmark — with JSON output for scripts and opt-in task execution.
Explicit by construction.
No hidden scheduler
Runtime workers are scoped and joined before any call returns. Nothing runs in the background because you imported a module.
Parallelism is opt-in
Sequential is the default path. Parallel iteration exists, is measured, and is documented as slower for light kernels.
Safety without escape hatches
The whole crate forbids unsafe code. The C ABI exposes only fixed-width scalar queries — no pointers, no buffers, no callbacks.
Measured, not promised.
Real medians from the CI benchmark runs, archived per commit with environment metadata. Microbenchmarks on specific machines — never marketing numbers.
SoA batch extension
ns per inserted row — naive push loop vs. validated batch, Linux x86-64
Batch validation checks the whole batch once instead of per row. Raw data: artifacts/benchmarks/memory-soa-batch-2026-10-11.txt
Deterministic scheduler
scheduler vs. persistent worker pool, relative — parity is the design goal
Per-call dispatch costs more than a persistent pool for no-op tasks — measured and documented instead of hidden. Lightweight parallel kernels stay sequential on purpose: 2 workers measured 4–10× slower than the scalar loop at 262k elements.
Simulation step
median ns per clock advance, five CI platforms
Construction included; not the isolated steady-state tick cost. Seven suites total: runtime, memory, compute, ECS, simulation, networking, storage.
What DINAH is not.
Most readmes list features. This one also lists the missing ones — the same honest limits you will find in the documentation and the security review.
Not a physics or CFD engine
The simulation models are bounded educational starting points — explicit limits, no general-purpose claims.
No SIMD
SIMD candidates were researched and measured; none justified the complexity for a production kernel yet. Scalar stays the reference implementation.
Networking without a wire codec
Blocking TCP exists; framing, the v1 encoder/decoder, auth and TLS are designed and scheduled for v0.2.
ECS queries still pending
Individual component access and storage are solid; combined queries and safe parallel systems are the top v0.2 priority.
No fuzzing yet
Corruption and robustness suites use a deterministic adversarial corpus — an explicit first barrier, not coverage-guided fuzzing.
Pre-alpha, semver 0.x
The v0.1 API surface is frozen, but 0.x permits breaking changes. Adopt with that in mind.
Where this goes.
The v0.2 design is approved and recorded in the repository — priorities come from measured gaps in the frozen v0.1 contract, not from feature envy.
v0.1.0 — the honest foundation
Frozen public API, 287-point checklist closed (279 complete, 8 deferred by design), five-platform CI benchmarks, 90.9% line coverage enforced, published on crates.io.
v0.2 — close the real gaps
- Networking wire format: v1 framing, encoder/decoder, structured versioned events over TCP
- ECS component queries and safe parallel system execution, driven by validated access declarations
- Storage transactions and concurrency control for the journal
- Full TOML manifest parser and optional caller-owned lifecycle helpers