Systems evolve. Structure is a consequence. Structure emerges from tension.
Continuum is a deterministic, causality-first simulation engine. It models systems where behavior emerges from declared signals, operators, constraints, and coupling, compiled into a deterministic execution graph.
- Causality is Primary: Simulation behavior must arise from declared causes.
- Graph-First Execution: Logic is compiled to a deterministic execution DAG.
- Determinism is Mandatory: All ordering is explicit; randomness is derived.
- Signals are Authority: State is expressed as authoritative resolved values.
- Observer Boundary is Absolute: Observation (fields, chronicles) never influences causality.
Continuum is built as a modular workspace of Rust crates:
continuum-foundation: Core stable identifiers, hashing, and primitives.continuum-dsl: Parser, AST, and validation for the Continuum DSL (*.cdsl).continuum-ir: Typed Intermediate Representation and lowering logic.continuum-runtime: The execution engine, DAG scheduler, and state storage.continuum-vm: Stack-based bytecode virtual machine for expression evaluation.
continuum-kernel-registry: Distributed registry for engine-provided functions.continuum-kernel-macros: Proc-macros for defining kernels (#[kernel_fn]).continuum-functions: Standard library of mathematical and physical kernels.
continuum-tools: Library API for running simulations, and transport-agnostic IPC server.continuum-inspector: Web-based inspector UI for interacting with worlds.
Comprehensive documentation is available in the docs/ directory:
- Philosophy:
@docs/manifesto.md,@docs/principles.md - DSL:
@docs/dsl/language.md,@docs/dsl/syntax.md - Execution:
@docs/execution/lifecycle.md,@docs/execution/dag.md - Concepts:
@docs/signals.md,@docs/time.md,@docs/eras.md
To run a simulation world with the web inspector:
cargo run -p continuum_inspector -- examples/terraTo execute a world programmatically via the library:
use continuum_tools::run_world_intent::{RunWorldIntent, WorldSource};
let source = WorldSource::from_path("examples/terra".into())?;
let intent = RunWorldIntent::new(source, 100);
let report = intent.execute()?;