Skip to content
Tórculo1.0 · working draft

Governance · governance/VERSIONING.md

Versioning

How Tórculo is numbered, how each part writes its version inside its files, what each kind of version may change, and how the conformance suite and the libraries are versioned on their own. The normative rules are in SPEC §22; this document repeats them and adds the policy around them. The key words MUST, SHOULD and MAY are to be read as described in BCP 14 (RFC 2119 and RFC 8174) when, and only when, they appear in capitals.

The specification

The specification is numbered MAJOR.MINOR, with editorial releases as a third number.

KindExampleMay changeNeeds
Major1.0 → 2.0anything, including breaking changes, with the legacy rules belowRFCs
Minor1.0 → 1.1only additions that conforming products of 1.0 can ignore, and new epochs of the languageRFCs
Editorial1.0.0 → 1.0.1wording, examples, translations, corrections that change no behaviourno RFC

Releases are tagged spec-vMAJOR.MINOR.PATCH (the first is spec-v1.0.0), separately from the libraries. Each published text states its maturity: working draft (stable enough to implement, open to change by RFC; Tórculo 1.0 has been one since 2026-10-15) or final (every RFC it contains is implemented by two independent implementations and the suite covers every testable MUST).

The version inside each file

PartWhere the version is writtenTórculo 1.0
Pliego languageMESA v<epoch> in the preamble (optional)epoch 2
Portable projectMANIFIESTO.json → formatomesapack 1
Piecesthe card's nivel and the contract version1
Canoncanon.toml → version, copied to every generated file1
Láminassignature LAMINA\0\x01 and manifiesto.json → version1
Materiasthe convention (group 0 and Plano, 96 bytes)1
TakesSTART → version0x8000_0002 (reads 0x8000_0001)

The language: epochs

  • The constitution: a pliego that compiled once compiles always. A compiler that claims an epoch compiles every pliego of that epoch and of the earlier ones it claims.
  • An epoch's vocabulary is frozen, reserved words included. A new epoch may add words, lines and profiles; it may not change the meaning of a valid pliego of an earlier epoch.
  • A word can only be retired by a new epoch that declares it legacy; pliegos that declare the older epoch keep it.
  • Epoch 1 (SPEC-MESA.md of manim-saorín) is legacy: compilers SHOULD read it.

The other parts

  • mesapack: a new major is a new format; a minor (mesapack 1.1) only adds members.
  • Láminas: a new layout is version 2, with its own signature byte.
  • Takes: the fork's range starts at 0x8000_0000; every layout or opcode change takes the next version, and readers keep reading the versions this standard lists.
  • Canon: any change of value bumps version; additions of keys too.
  • Materias: the convention changes only with a major version of the specification.

Deprecation

A feature is deprecated by RFC, marked as such in the specification with the version that deprecated it, and removed no earlier than the next major version and at least 24 months later. Reserved words never expire within their epoch.

The conformance suite

The suite (conformance/manifest.json) is versioned on its own, MAJOR.MINOR.PATCH: a patch fixes a wrong case, a minor adds cases, a major follows a major of the specification. Every report names the suite version and its cases_sha256. Pending cases (known deviations of the reference implementation, SPEC Appendix D) are reported apart and do not count as passed or failed.

Implementations and packages

Libraries and tools have their own semantic versions, starting at 0.x until Tórculo 1.0 is final and the parts they implement have two independent implementations. The reference implementation of the language reports its epoch (MESA v2 beta) and its version (1.0.0b1).