The Gerbil Release Process
Congratulations, you are now a Gerbil maintainer, tasked with making a new release. Here is a checklist of all the steps you have to go through to make a successful release.
Get All the Changes Merged
First, make sure your have all the features and bug fixes in that you need to be. Check the PR queue and the Open Issues for any release blocker.
Regenerate the Bootstrap If Needed
If there were any changes to the core language, regenerate the bootstrap code. Include all the parts that have changed (runtime, prelude, expander, compiler). Make a dedicated PR just for this bootstrap upgrade.
Make Sure Gerbil Works on all Supported Targets
Before you commit the above PR, build and test it at least on the following targets: Linux x86-64, macOS ARM64. Ask for help on gitter regarding platforms you can't support yourself.
Prepare a PR for the Release
- Update the version everywhere in documentation
- Update the version everywhere in in-repo release scripts (homebrew, guix)
- Generate a
src/gerbil/runtime/version.ss
for the release - Temporarily remove
src/gerbil/runtime/version.ss
from the.gitignore
- Include a high-level summary of changes in the CHANGELOG.md
- Check that the release scripts work on macOS, etc. Note that the website will be automatically re-generated from the PR.
Create Official Announcements
Once the release PR is merged:
- Create a release announcement on
GitHub discussions,
with a
release
label, a one-paragraph blurb introduction, and the contents of the CHANGELOG.md entry above. See e.g. this previous announcement - Create a release on GitHub. GitHub will automatically generate a template summarizing the PRs included / bugs fixed. Use that as the basis for the GitHub release note page. See e.g. this previous release.
Update Tarballs
- Generate tarball for the source code, including Gambit module
- Generate binary tarball for Linux x86-64. - ask @ober for help
- Generate rpm and deb packages for Linux x86-64. - ask @ober for help
- Publish the tarballs as artifacts on GitHub on the release page
Update Other Build Recipes
- Update Homebrew (macOS) — ask @drewc for help
- Update Nixpkgs (Linux, macOS) - ask @fare for help
- Update Guix (Linux) — ask @drewc for help
Clean up PR after the Release
Assuming the release happened on the master
branch, undo it:
- Remove the
src/gerbil/runtime/version.ss
- Add it back to
.gitignore
Announce the Release to the World
Point to the announcement page on GitHub.
- Announce on gitter
- Announce on reddit: r/scheme. See e.g. this previous announcement
- Announce on Hacker News. See e.g. this previous announcement
- Announce on Lobsters. See e.g. this previous announcement
- Announce on twitter. See e.g. this previous announcement