Releasing¶
This chapter describes how to release new versions of RCL. It is intended primarily as a playbook/checklist for the author. Ideally, more of these steps would be automated over time.
Preparation¶
Ensure the changelog is up to date¶
Check the Git log to confirm that all user-facing changes are documented in the changelog. Add the release date.
Bump the version¶
- Update the version in
Cargo.rcl
, runrcl build
to update generated files. - Run
cargo check --all
to update lockfiles. - Update version references in
docs/
. - Double-check the diff against a previous version bump commit.
- Commit the version bump.
Verification¶
We do this after bumping the version to ensure that we verify the final state of the repository. If anything fails, fix it, and redo the version bump.
Ensure generated files are up to date¶
rcl build
tools/generate_keywords.py
Verify that everything builds¶
This is verified on CI by Garnix, so pushing to GitHub and waiting for Garnix works, but it can also be checked locally. nix build
and nix flake check
are insufficient; as a workaround to Nix issue 7165, we can build all flake attributes like so:
nix flake show --json | rcl rq '{
for k in ["packages", "checks", "devShells"]:
for p in input[k].x86_64-linux.keys():
f".#{k}.x86_64-linux.{p}"
}' | xargs nix build --no-link
Ensure fuzzers are converged¶
Run every fuzzer until it no longer discovers new code paths. This should already have been done during feature development, but it’s good to confirm:
tools/fuzz_all.py
Publishing¶
Repository¶
- Create a signed, annotated, Git tag.
- Push to GitHub and Codeberg.
Documentation and website¶
mkdocs gh-deploy --remote-name «webserver»
nix build .#website
rsync -av $(nix path-info .#website)/ «webserver»:/var/www/rcl-lang.org/
Pypi¶
nix build .#pyrcl-wheel
twine upload $(nix path-info .#pyrcl-wheel)/*
Extensions¶
For releases that have impact on the grammars or extensions:
- Update external repositories:
tools/update_repos.py
. - Push to GitHub and Codeberg.
- Make a pull request to update zed-industries/extensions.
Arch User Repository¶
- Bump
pkgver
in thePGKBUILD
. - Update shasums:
makepkg --geninteg >> PKGBUILD
, edit file. - Update srcinfo:
makepkg --printsrcinfo > .SRCINFO
. - Confirm that the package builds:
makepkg --install
. - Commit and push.