Skip to content

Source status: no status is stated in the source document, so none is assigned here. Do not treat this page as a finalized specification. The normative rules are in the Technical Specification.

Language Versioning and Evolution

The language will follow a controlled versioning policy that prioritizes stability, compatibility, and reproducibility.

1. Version Numbers

Use semantic versioning:

  • MAJOR: Breaking changes to language behavior or compatibility.
  • MINOR: New functionality that maintains backward compatibility.
  • PATCH: Bug fixes and compatible corrections.

2. Compatibility

  • Existing programs should retain their defined behavior across compatible versions.
  • Breaking changes must be explicitly documented.
  • Compiler upgrades must identify affected language features.
  • Deprecated functionality must provide migration guidance.
  • Projects must be able to lock their language version.

3. Verification Compatibility

  • Verification results must identify the compiler and verifier versions.
  • Changes to verification logic must trigger reevaluation where necessary.
  • Old verification reports must remain distinguishable from newly generated reports.
  • A new compiler version must never silently inherit an old verification result.

4. Language Proposals

  • New features must have a documented purpose.
  • Proposed features must define their syntax and semantics.
  • Safety and verification implications must be evaluated.
  • Features must have tests before official adoption.
  • Experimental features must be clearly identified.

5. Long-Term Stability

  • The language specification must be versioned.
  • Compiler behavior must follow the specification.
  • Language changes must not introduce undocumented behavior.
  • Migration tools should be provided for major upgrades.

Design Goal

The language must evolve deliberately without sacrificing predictable behavior, compatibility, or the integrity of previous verification results.


Source and authority

This page migrates VERSIONING.md in full. It is an explanatory / implementation document, not the normative specification. Where it simplifies a rule, the Technical Specification governs. The original file is preserved in source-original/LANG/.