Versioning and Editions

Osmol separates two questions that projects often blur: how tools are numbered, and how the language changes. Tools follow semver. The language follows editions. Keeping them apart is what lets the toolchain move fast while a deployed mesh never breaks.

Tools follow semver

Binaries, interpreters, and libraries version like any software (dissertation Chapter 10). The current reality is uniform: v0.1.0 everywhere. The spec release (tagged "the first stone"), the osmol repository release, and the osmol package on PyPI all carry the same number. As the Rust crates arrive (osmol-core, osmol-cli, osmol-wasm, osmol-ffi), each will walk its own semver path; a patch release of a tool promises no change to language behavior at all.

The language follows editions

An edition, Rust-style, is a coherent grammar-and-semantics snapshot. Edition 2026 is this spec. The mechanism that makes editions safe in a communication language is distinctive: membranes advertise the editions they accept, letting the language evolve without ever breaking a deployed mesh. Your twin can adopt edition 2027 while your grandmother's membrane keeps speaking 2026, and the mesh negotiates between them, the same way OMP freezes semantics per protocol version (omp/0, dissertation Chapter 4). Nothing about upgrading a language is allowed to feel like being cut off.

Docs version with the language

The documentation site pins to editions too (dissertation Chapter 9): /v0.1/ freezes the day /v0.2/ opens, so a program written against an old edition never loses its reference. This book carries its edition on the cover; when you cite it, cite the edition.

What forces an edition

Only grammar or semantics changes, and they enter exclusively through the RFC process. The boundary is wider than it looks at first:

  • Pragma supersessions count. The v0.1 pragmas are normative; consciously replacing one (say, simulating wall-clock time so quiet becomes enforced) changes what programs do, and is edition territory.
  • Constants count. The trust, cast, and threshold tables are semantics; a mesh where category weighs 0.6 settles differently than one where it weighs 0.5.
  • Diagnostics wording counts. The errors are the ethics, so the O-xxx messages are normative text; changing one is edition-visible, not copyediting.

What does not force an edition: new tooling, new habitats, performance work, documentation, in short anything that leaves every conforming program's trace byte-identical.

The stability promise to implementers

The conformance suite tags every test with the edition it belongs to, and an implementation states which edition it targets. That single sentence, "targets edition 2026", is the whole compatibility contract: pass the suite for your edition and you may call yourself Osmol; the suite, not any implementation, is the arbiter (see Governance and Licensing). Editions are how the language gets to grow for fifty years without ever asking a settled mesh to move. The stone doesn't rush.