Stability and versioning
C+ is feature-frozen at v0.0.22. The contextual builder-block DSL was the last addition to the language surface. From here the core language takes bug fixes only — no new syntax, no new semantics. New capability ships in packages and tooling, never in the core language.
This page states what that freeze guarantees, what is still allowed to change, and how packages version on their own cadence. The language specification is the normative description of the frozen surface.
What the freeze guarantees
- No new language surface. The grammar, the keyword set, the type and ownership systems, and the desugarings described by the specification are fixed. A future release will not add a keyword, an operator, a new kind of item, or a new implicit behaviour to the core language.
- Source compatibility. A program that the v0.0.22 compiler accepts is intended to keep compiling, with the same meaning, on later v0.0.x compilers. If a later release changes whether a given program compiles, that is a bug fix bringing the compiler in line with the specification — not a feature — and it is called out as such.
- A stable target for tools and agents. Because the surface no longer
moves, the grammar, the
cpc query/cpc mcpcode graph, the error codes, and the/llms.txtsnapshots describe a language that stays put. Tooling built against v0.0.22 does not chase a moving syntax.
What can still change
The freeze is on language surface, not on the implementation. The following are expected to keep improving and are not considered breaking:
- Bug fixes. Where the compiler and the specification disagree, the compiler is corrected to match the spec (or, rarely, the spec is corrected to match the compiler). That can mean a program that was wrongly accepted is later rejected, or one that was wrongly rejected later compiles.
- Diagnostics. Error and warning wording, spans, notes, and machine-applicable suggestions improve freely. The stable error codes and their meanings are the contract; the exact message text is not.
- Performance and code generation. Optimisation, codegen quality, and ABI lowering improve over time. The language asks for no runtime tax for its safety, and that work continues under the freeze.
- Tooling.
cpcsubcommands (build,check,run,test,fmt,doc,query,mcp,lsp) and the editor surface evolve and gain features — this is where most ongoing work lands. - Targets. Support for additional targets and cross-compilation back-ends can be added; adding a target does not change the language.
- The standard library and packages.
stdliband every package undervendor/evolve on their own cadence (see below).
The compiler is the authority
The specification is verified against cpc and its test
suite, but where the two ever disagree the compiler wins — run
cpc check or cpc build and trust the diagnostic. The in-repo test
suite is the executable conformance record. If you find a case where the
compiler and the spec disagree, that is a bug worth
reporting.
Packages version independently
The freeze is what makes the package-first model work. Capability that would once have been a language feature now lives in a package, and each package carries its own version and moves at its own pace:
- A package declares its dependencies and their versions in
Cplus.tomland is resolved undervendor/. See Modules and packages and the package manager. - A new package, or a new release of an existing one, adds capability without touching the language. The compiler that builds it is the same frozen v0.0.22 surface.
- This is the intended path for everything additive: UI builders, FFI bindings, numeric kernels, embedded peripherals. The packages index lists what ships today.
Documentation versioning
The manual you are reading tracks the current release. Every release is
also archived: older versions stay available at /docs/{version} and are
never removed or collapsed — they are intentional archives, not stale
pages. When you cite the manual, cite the version. /docs and
/llms.txt are authoritative for the latest release (v0.0.22).
For why the language is frozen and why the design is the way it is, see the design FAQ.