Roadmap

An honest inventory of what works, what is coming, and what is explicitly out of scope. Capa is in v0.4.0-alpha: the compiler runs, 536 tests pass on three operating systems, the discipline is implemented end-to-end, the capability manifest and CycloneDX SBOM are emitted directly by the compiler, and the language is still missing several things a v1 would need.

Where we are today

Capa is a working alpha. It compiles, type-checks, transpiles to Python, and runs. Every example in this site, in the examples directory, and in the white paper is executable. The boundary between what is real and what is roadmap is sharp:

Working today

  • Lexer + parser + analyzer + transpiler (4 stages, ~5K lines of Python)
  • Types: Int, Float, Bool, String, Char, Unit, tuples, List, Map, Set, Option, Result, Fun(...) -> ...
  • Structs, sum types (variants), generics with inference
  • Pattern matching (statement + expression form)
  • Closures and higher-order functions
  • ? operator and Result-based error handling
  • Built-in capabilities: Stdio, Fs, Net, Env, Clock, Random, Unsafe
  • User-defined capabilities (capability X + impl X for Y)
  • Capability attenuation via Net.restrict_to(host)
  • consume qualifier with fork/merge tracking
  • Range expressions (a..b exclusive, a..=b inclusive)
  • Python interop via the Unsafe capability boundary
  • CLI with five modes (tokenize, parse, check, transpile, run)
  • VSCode syntax highlighting extension
  • 536 unit + end-to-end tests, green on Ubuntu / macOS / Windows × Python 3.10 / 3.12 / 3.14

Not yet

  • Language server (LSP), no editor diagnostics, no hover, no go-to-definition
  • Formatter (capa-fmt)
  • Module system (import is parsed but rejected by the analyzer)
  • Visibility (pub is parsed but unenforced, waits on the module system)
  • Attenuation for capabilities other than Net (Fs.restrict_to, Env.restrict_to_keys, etc.)
  • Doc comments (///, /**), lexer treats them as ordinary comments
  • Raw strings (r"...")
  • Native (non-Python) backend, LLVM is far future
  • Async / await (keywords reserved, no runtime)
  • Package manager / registry
  • REPL (was deleted earlier; will be reimplemented when the language is stable)

v0.2, public readiness

The bridge from "working alpha" to "shareable alpha". All three pieces have landed; tagging and flipping the repository to public is the last step.

The road ahead

White-paper promises still open

EBNF declares but not implemented

Tooling that moves the adoption needle

Known limitations

PhD-aligned work

Capa as an artefact in the SBOM-Governance thesis. Not language work, but research that uses the language.

Explicitly not planned for v1

For honesty and scope control:

Help shape the next milestone

Capa is a personal project; it is also an open one. Issues, design discussions, and pull requests are welcome. The fastest way to influence the roadmap is to show up with a real use case.