1. Versioning scheme
A SigScheme version number is built up as follows:
major.minor.patchlevel
The patchlevel number is incremented after every release by
rake version:bump. The major and minor numbers are incremented
manually when needed. As an example: 1.0.0 will become 1.0.1 after the
release. 1.0.1 may become 1.1.0 manually for a release that has large
changes.
There’s no limit to each number, it will continue past 9 with 10, in other words: after release 1.0.9 we will see release 1.0.10.
The version is written in the following files:
-
AC_INIT()inconfigure.ac -
versionofproject()inmeson.build -
SSCM_VERSION_*ininclude/sigscheme/sigscheme.h
rake version:bump updates all of them. Update them manually when the
major or the minor number is incremented.
2. Release procedures
2.1. Documents update
Add a section for the new version at the top of NEWS.md. The release note
of GitHub Releases is generated from the section. Update RELNOTE too.
2.2. Versioning
Confirm the version numbers described in "Versioning scheme".
And do not forget updating src/libtool-version.mk if libsscm ABI has been
altered from previous version. Meson also uses it.
2.3. Test
Make all tests passed.
$ meson setup -Dconf=full build
$ meson test -C build
$ meson compile -C build r7rs-tests
Push the changes and confirm that CI is passed.
2.4. Tagging
$ rake release
It does the followings:
-
Creates the
x.y.ztag and pushes it -
Bumps the patchlevel number and pushes it
2.5. Packaging and publishing
The "Release" job of CI (.github/workflows/linux.yml) is run for the pushed
tag. It does the followings:
-
Creates source archives by
make distcheckandmake sum(ci/release.sh) -
Creates a release on GitHub Releases with the source archives and the release note generated from
NEWS.md
The source archives are the followings:
sigscheme-x.y.z.tar.gz
sigscheme-x.y.z.tar.bz2
sigscheme-x.y.z.sum
The release is announced in GitHub Discussions too.