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.
One source of version truth
Section titled “One source of version truth”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.53language=1.0runtime_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.
SemVer
Section titled “SemVer”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.lockfor 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 preview line
Section titled “The 0.1.x preview line”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.