Living document. The specification evolves with the language. The full source lives in the nv-lang/nova repository and is mirrored here, in the site design.

Specification documents

  • 1

    Overview

    The central idea behind Nova and a tour of what the language offers.

  • 2

    Syntax

    Language syntax, walked through with minimal examples.

  • 3

    Effect system

    An introduction to the algebraic effect system.

  • 4

    Type conversions

    Every type-conversion rule, collected on one page.

  • 5

    What sets Nova apart

    The features that make Nova more than just another systems language.

  • 6

    Open design questions

    Questions that were discussed but not yet settled as decisions.


Design decisions (D-blocks)

Every non-trivial language design choice is captured in a numbered D-block: the question, the options considered, the decision made, and the rationale. This makes the spec a readable history of the language, not just a reference. Over 120 D-blocks are recorded so far.

  • D1 — Paradigm: protocol + data, no classes
  • D2 — Effects instead of async/throws/unsafe
  • D52 — Type declarations: newtype, alias, sum types
  • D53 — Unification: protocol as a kind token under type
  • D7 — One language, three compilation modes
  • D6 — Memory: managed by default, regions opt-in
  • D14 — Fiber runtime — invisible infrastructure

Open the D-block browser →


History