Skip to content

Versioning

Beans has one place that says which version it is, follows SemVer, and is currently on a preview line leading up to 1.0.

All version numbers come from one file: VERSION. The current release is 0.1.53, with the contract below. Released contracts are preserved in dated CHANGELOG.md entries.

compiler=0.1.53
language=1.0
runtime_abi=23
  • compiler: the compiler version (0.1.53).
  • language: the language version (1.0).
  • runtime_abi: the runtime ABI number (23).

src/version.b is generated from that file. test/version.sh fails when the generated file differs from VERSION.

beansc --version prints all three.

Beans follows Semantic Versioning.

  • Before 1.0, the language, standard library, CLI, module format, and ABI may change between minor releases. Pin the compiler and commit beans.lock for serious projects. See Compatibility.
  • After 1.0, a breaking public change needs a new major version, and both the current and previous minor lines get fixes.

The runtime ABI number changes whenever generated code and the shipped runtime stop being compatible with each other.

The 0.1.x line is a preview on the 1.0 stabilization line. Pilot work needs pinned versions and workload-specific checks. It is not yet a production 1.0 release.

Reaching 1.0 requires every release gate in the roadmap to pass:

  • the performance gates pass
  • a 24-hour fuzz campaign
  • a 30-clean-day beta, then a 14-clean-day release candidate
  • no open critical or high correctness bugs
  • the full 26-target release manifest published

See Maturity and platforms for the wider picture, and the release process for how a version is built and published.