This document describes the current release and versioning strategy. This strategy is likely to change as Rerun matures.
New Rerun versions are released every two weeks. Sometimes we do out-of-schedule patch releases.
Each release include new versions of:
- The Python SDK
- The Rust SDK
- All rust crates
We use semantic versioning. All versions are increased in lockstep, with a minor version bump each time (0.1.0
, 0.2.0
, 0.3.0
, …).
This means we might add breaking changes in each new release.
In rare cases we will do patch releases, e.g. 0.3.1
, when there is a critical bug fix. These patch releases will not contain any breaking changes.
We sometimes do pre-releases. Then we use the versioning 0.2.0-alpha.0
etc.
We have not yet committed to any backwards or forwards compatibility.
We tag all data files (.rrd
files) and communication protocols with the rerun version number. If there is a version mismatch, a warning is logged, but an attempt is still made to load the older or newer data.
Release builds of the Python Wheels are triggered by pushing a release tag to GitHub in the form v0.2.0
.
If we are doing a patch release, we do a branch off of the latest release tag (e.g. v0.3.0
) and cherry-pick any fixes we want into that branch.
-
Check the root
Cargo.toml
to see what version we are currently on. -
Name it
release-0.x.y
, replacing0.x.y
with the current version number you found inCargo.toml
. The branch name must match therelease-0.x.y
pattern, otherwise the CI can't infer the version from it.
-
Update
CHANGELOG.md
.It should include:
- A one-line summary of the release
- A multi-line summary of the release
- A gif showing a major new feature
- Run
git tag -d latest && git fetch --tags ; pip install GitPython && scripts/generate_changelog.py
- Edit PR descriptions/labels to improve the generated changelog
- Copy-paste the results into
CHANGELOG.md
. - Editorialize the changelog if necessary
- Make sure the changelog includes instructions for handling any breaking changes
Once you're done, commit and push the changelog onto the release branch.
-
Run the release workflow.
Set
Use workflow from
to the new release branch, and chooseprerelease
in the drop-down menu. -
The workflow will create a pull request for the release. The PR description will contain next steps.