Nova Documentation — Milestone 0 / C0 Deliverable
Date: 2026-10-22. Status: M0/C0 complete; all decisions accepted (ADR 0002).M1 and C1 complete: Nova compiles to C and runs, including natively inside CosmoOS on x86-64 and AArch64. M2 (ownership and borrowing) and M3 (safe heap) complete (milestone-2.md, milestone-3.md, ADR 0003). C2 complete (cosmoos/c2-report.md). M4 (regions) complete (milestone-4.md, ADR 0004). M6 (generics and collections) complete (2026-10-23): generics, interfaces, optionals, StringView, Vector, String, SlotMap, StableVector, property tests, and the OD-3 design (milestone-6.md, ADR 0005); M6x (region parameters, OD-3) complete (milestone-6x.md, ADR 0006). C3 (collections and system calls) complete (cosmoos/c3-report.md). M5 (escape and placement analysis) complete (milestone-5.md). M7 (production C backend) complete (2026-10-24; milestone-7.md): source maps, structured C, the NIR interpreter, the random program generator, MSVC, and a 24-hour fuzz campaign with no miscompile. C4 (freestanding compilation in CosmoOS) complete (cosmoos/c4-report.md). C5 (kernel memory integration) complete (cosmoos/c5-report.md). C6 (kernel components in Nova beside their C originals: LZ4, fbvalid) complete (cosmoos/c6-report.md), with C struct types imported from headers (type-system.md §31, ADR 0008). C7 (kernel concurrency) complete (2026-10-25; cosmoos/c7-report.md, ADR 0009): context effects, C state embedded by value, lock guards, kernel objects and grace periods (type-system.md §32–§34; integrations/cosmoos/c7/), and an in-kernel stress test under lockdep on both arches. C8 (experimental module) complete (2026-10-28): 1,000 load/unload cycles against CosmoOS itself, whose hook was merged as #457 (cosmoos/c8-report.md). CosmoOS roadmap 1.2 A5 in Nova complete (2026-10-28): CPU time, nice values and a weighted fair share, written in Nova inside CosmoOS (#461, #476, #477; cosmoos/a5-report.md). M12 (tooling for AI agents) complete (2026-10-26; milestone-12.md): JSON diagnostics with fixes, novac fix, novac explain, and novac mcp, an MCP server (tooling.md §5–§6). C9 (gradual adoption): C9a, CosmoOS's GPT parser and writer in Nova, complete (2026-10-26; cosmoos/c9-report.md), with C arrays in imported structs and exported constants (ADR 0014). M9 (performance) complete (2026-10-25; milestone-9.md): 9a, a benchmark suite of fifteen workloads in Nova, C, C++, Rust, Zig and Goose (benchmarks.md); 9b, checked bulk slice operations (copyFrom, fill); 9c, bounds-check elimination (optimisations.md, ADR 0010); 9d, overflow-check elimination and the gcc gap; 9e, placement of non-escaping boxes on the stack by default; 9e′, one-pointer optional boxes and references, and boxes built in place. M11 (language gaps) complete (2026-10-26; milestone-11.md): nested patterns, for over non-Copy elements, borrow-checker precision for cursors, character literals, wrapping*/checked*/saturating* arithmetic, String.appendNumber, if and match expressions, and references to optionals (borrow (T?)) are done; f32/f64 (type-system.md §35), printed as the shortest text that reads back, are in (with nbody, a sixteenth suite workload), and so are function values (fn(T) -> R), closures ((x) => x > limit), effect lists on their types (@effects() fn(i32), usable in atomic contexts) and library methods taking them (sortBy, forEach, any, all, retain; §36, ADR 0012); floats were accepted in ADR 0011. M10 (tooling) complete (2026-10-26; milestone-10.md): T1, the formatter novac fmt (formatting.md), T2, the documentation generator novac doc (tooling.md §1, api/core.md), and T3, the language server novac lsp with a VS Code extension (editors/vscode, tooling.md §2), T4, debugging with lldb and gdb (tooling.md §3), and T5–T6, packages: names across packages and nova.toml with path and git dependencies (ADR 0013, tooling.md §4), are done. M8 (systems and freestanding) complete (2026-10-24; milestone-8.md, ADR 0007): unsafe and raw pointers (unsafe.md), the C FFI (type-system.md §28), the freestanding profile (cosmoos/profiles.md §4), and systems capabilities (lib/core, MMIO, C function pointers; type-system.md §29). M13 (the documented gaps) complete (2026-10-28; milestone-13.md): vector and string growth through realloc with a fast path; dyn Interface and owning closures (move literals, Box<dyn fn(…) -> R>; ADR 0015); userland threads with Send/Share, Arc, Mutex and atomics in the hosted library lib/std (ADR 0016, type-system.md §38); field-precise closure captures, constant-index disjointness and splitAtMut; and a package registry with version solving and publishing (ADR 0017, tooling.md §4.6–§4.8). Implemented-feature specs: grammar.md (M1 grammar), type-system.md (M1 static semantics), intermediate-representation.md (HIR/NIR as implemented) and diagnostics.md (error codes).
Master prompt §23 deliverables
| § | Deliverable | Document |
|---|---|---|
| A | Language vision | vision.md |
| B | Goose technical analysis | research/goose.md (Goose commit f605b5a) |
| — | Comparative research (Rust, Zig, Cyclone, Swift, Nim, Vale, escape analysis, regions, UB, fuzzing) | research/comparative.md |
| C | Hybrid memory model, comparison of three architectures, recommendation | memory-model.md |
| D | Language syntax, 19 example programs, MVP vs future | language-spec.md |
| E | Formal safety design: invariants, rejection, runtime checks | ownership.md |
| F | Compiler passes and IRs | architecture.md, c-backend.md |
| G | Implementation language decision | decisions/0001-compiler-implementation-language.md |
| H | Repository structure | architecture.md §6 |
| I | Milestone roadmap | roadmap.md |
| J | Risk register | risks.md |
| K | Open architecture decisions | open-decisions.md |
| L | First executable milestone | milestone-1.md |
CosmoOS prompt §12 deliverables
| # | Deliverable | Document |
|---|---|---|
| 1 | Integration feasibility report | cosmoos/feasibility.md |
| 2 | Revised Nova memory architecture | memory-model.md + cosmoos/kernel-memory-and-lifetimes.md |
| 3 | Kernel and userland profile specs | cosmoos/profiles.md |
| 4 | ABI compatibility report | cosmoos/abi.md |
| 5 | Allocator integration design | cosmoos/kernel-memory-and-lifetimes.md §2–3 |
| 6 | Ownership and quiescence design | cosmoos/kernel-memory-and-lifetimes.md §4–7 |
| 7 | Freestanding runtime design | cosmoos/profiles.md §3.3 |
| 8 | Compiler/backend integration design | cosmoos/build-integration.md |
| 9 | Security and correctness risk register | risks.md |
| 10 | Detailed milestone roadmap | roadmap.md |
| 11 | Acceptance-test matrix | testing.md |
| 12 | Recommendation for first integration | cosmoos/feasibility.md; result: cosmoos/c1-report.md |
Primary-source audits: research/cosmoos-kernel-audit.md, research/cosmoos-platform-audit.md (CosmoOS HEAD 30d34b29, main 4527d16d; read-only).
Design records: od3-design.md (lifetime-parameterised aggregates; implemented in M6x).
Unsafe code (M8a): unsafe.md, the contract unsafe code must keep and what is checked.
M14 (proposed, 2026-10-29): milestone-14.md, what a kernel written in Nova needs from Nova, for CosmoOS's roadmap 2.0: global and per-CPU state, typed calls across compilation units, a kernel library, novac for a self-hosted build, hot-path performance and an outside audit.
Safety audit pack: safety-audit.md, the guarantees, where they are enforced, the riskiest code, and the first review's results (2026-10-29), for an independent audit.
Benchmarks (M9): benchmarks.md, the method, machines and toolchains of benchmarks/suite/; results in milestone-9.md. Optimisations (M9, normative): optimisations.md, the preconditions and checks of each optimisation (bounds-check elimination).
Tooling (M10; milestone-10.md): formatting.md, the canonical style of novac fmt; tooling.md, the other commands (novac doc). The generated reference of lib/core: api/core.md.
C struct types (ADR 0008): imported from a C codebase's own headers (CosmoOS, Linux, the C library), never re-laid-out in Nova.
Topics without a file of their own
Allocators and escape and placement analysis are specified in memory-model.md (§3, §5), the runtime surface in c-backend.md §6, and the FFI in type-system.md §28 with c-backend.md §2.3. A topic gets its own file (allocators.md, escape-analysis.md, runtime.md, ffi.md) when it outgrows its section (master prompt §20).