mitts/build

Rust first · reads your existing Cargo.toml

Build work,
accounted for.

Mitts identifies every eligible compile action by its full set of inputs, stores the output once as an immutable object, and restores it into an isolated workspace target. If an input can't be accounted for, the action stays uncached.

action / rlibinputs tracked
  1. srcsource set · Cargo.toml
  2. depsdependency artifacts
  3. toolrustc · target triple
  4. cfgfeatures · profile · flags
  5. envdeclared environment
action keysha256(inputs)
shared storecas/ab/3f…immutable
workspace.mitts/target/isolated
01

Reuse follows the inputs.

A cache hit counts only when the effective compile inputs match exactly. Correctness comes before hit rate.

input record

Know what changed

Action keys cover sources, dependency artifacts, toolchain, target, features, flags, configuration and environment.

shared store

Objects never mutate

Content-addressed artifacts are verified before use. A corrupt object is rejected and rebuilt, never trusted.

workspace

State stays local

Mutable outputs live in each workspace's target, apart from shared objects. No unsafe hardlinks, no timestamp tricks.

02

A deliberate cache boundary.

Mitts caches the actions it can describe completely. Everything else runs normally and is reported as uncached.

  • Rust library and binary actions with matching keys
  • Concurrent builds coordinate with single-flight locks
  • C/C++ adapter shares the same store
  • Build scripts, proc macros, and mixed native outputs bypass the initial cache

Unknown inputs are never treated as unchanged. If Mitts can't prove an action is compatible, it builds it.

03

A small CLI.

No new manifest and no second lockfile. Point it at a Cargo workspace.

mitts build
Compile the package and its dependencies into the isolated Mitts target
mitts run
Run a binary of the local package
mitts explain
Show the build plan, compilation units, and cache eligibility
mitts fetch
Fetch dependencies into the global source store
mitts gc
Prune old or unreferenced objects within storage quotas
mitts clean
Remove workspace artifacts, and optionally the shared cache
04

Where it stands.

Milestones M0–M6 are complete and verified by the workspace test suite. The repository is still private.

  1. M1Uncached build correctness
  2. M2Content-addressed store & action cache
  3. M3Parallel fetcher & lockfile resolution
  4. M4Native parallel DAG runner
  5. M5Pilot, deduplication & conservative GC
  6. M6Second adapter: C/C++
author

Alexander Panasenko

prod.codes/aboutalex@prod.codes