Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Crate Map

The workspace is deliberately granular — phases, IRs, tools, backends, and bindings are separate crates with enforced dependency edges. The normative boundary rules are SPEC_0029; this page is the orientation map.

Families

FamilyCratesRole
Foundationrumoca-core, rumoca-contracts, rumoca-codec, rumoca-codec-flatbuffersShared low-level types, contracts, serialization
IRsrumoca-ir-ast, rumoca-ir-flat, rumoca-ir-dae, rumoca-ir-solveThe four stage data structures
Phasesrumoca-phase-parse, -resolve, -typecheck, -instantiate, -flatten, -dae, -structural, -solve, -codegenOne transformation each
Facaderumoca-compileSession/compilation API the tools use
Evaluatorsrumoca-eval-ast, -eval-flat, -eval-dae, -eval-solveStage-appropriate evaluation
Runtimerumoca-sim, rumoca-solver, rumoca-solver-rk45, rumoca-solver-diffsol, rumoca-workerSimulation orchestration and solver backends
Execution adaptersrumoca-exec-cranelift, rumoca-exec-mlir, rumoca-exec-wasmJIT/compiled execution over Solve
Interactive I/Orumoca-input, rumoca-input-keyboard, rumoca-input-gamepad, rumoca-signal-frame, rumoca-transport-udp, rumoca-transport-websocket, rumoca-viz-webDevices, signals, transports, viewer
Toolsrumoca-tool-fmt, rumoca-tool-lint, rumoca-tool-lspFormatter, linter, language server logic
Bindingsrumoca (CLI), rumoca-bind-wasm, rumoca-bind-pythonUser-facing entry points
Testing/devrumoca-test-msl, xtaskMSL gates, developer CLI

The Rules That Matter Daily

  • Foundation types live in low-level crates; phases depend forward through explicit IR contracts.
  • Tools and bindings use the rumoca-compile facade instead of reaching into phase internals.
  • Backend/runtime crates stay thin around the shared solver and execution APIs; shared policy lives in the shared layer.
  • Target-language specifics live in target.toml + templates, never in phase logic.

Architecture tests enforce the important edges. If a dependency you want violates a spec, update the spec first — see Where the Rules Live.