ajhahn.de
← Flash
Markdown 60 lines
<div align="center">

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="assets/flash_logo_dark.png">
  <img src="assets/flash_logo_light.png" alt="Flash" width="240">
</picture>

<h1>Versioning</h1>

<p><i>Semantic Versioning, single-sourced from the build manifest.</i></p>

<p>
  <a href="README.md"><b>README</b></a> ·
  <a href="VISION.md"><b>Vision</b></a> ·
  <a href="https://ajhahnde.github.io/Flash/"><b>Tutorial</b></a> ·
  <a href="REFERENCE.md"><b>Reference</b></a> ·
  <a href="COOKBOOK.md"><b>Cookbook</b></a> ·
  <a href="SETUP.md"><b>Setup</b></a> ·
  <b>Versioning</b> ·
  <a href="CHANGELOG.md"><b>Changelog</b></a> ·
  <a href="LICENSE.md"><b>License</b></a>
</p>

</div>

---

Flash follows [Semantic Versioning 2.0.0](https://semver.org). The version
is single-sourced from `.version` in `build.zig.zon`; `build.zig` reads it
and exposes it through `flashc --version`, so the runtime string can never
drift from the manifest.

## Pre-1.0

While the major version is `0`, the language and compiler are unstable:
**any 0.x release may introduce breaking changes** to the syntax, the
emitted output, or the CLI. Pin an exact version if you depend on Flash
during this period.

## The road to 1.0

`1.0.0` is the point at which the language specification and the compiler
are considered stable and self-hosted. Until then the version line tracks
capability milestones, not stability guarantees.

## Release lockstep

On every version bump, three files change together:

1. `build.zig.zon``.version` (the source of truth).
2. `README.md` — the version badge.
3. `CHANGELOG.md` — the `[Unreleased]` section is promoted to a dated,
   numbered release header (Keep a Changelog format).

Tags are created by the maintainer, never automatically.

---

[← Prev: Setup](SETUP.md) · [Next: Changelog →](CHANGELOG.md)