release.md (2285B)
1 # Hare release policy 2 3 Hare ships quarterly releases as we work towards Hare 1.0. Releases use the 4 versioning scheme 0.**YY**.**Q**, where YY is the two-digit release year and Q 5 is the quarter number (from zero); so the release in Q1 2024 is 0.24.0. 6 7 The Hare toolchain's chief dependency is [qbe]. Each Hare version is pinned to a 8 specific qbe release, which is documented in the release notes corresponding to 9 that Hare version. 10 11 [qbe]: https://c9x.me/compile/ 12 13 The current release manager is Drew DeVault. 14 15 ## Breaking changes 16 17 Breaking changes to the standard library which are included in each release are 18 documented in the release notes. Authors of such changes are encouraged to 19 include a detailed summary of the breaking change in their commit message, for 20 example: 21 22 ``` 23 strings: rename pad functions per convention 24 25 The following functions in strings:: have been renamed: 26 27 * strings::padstart renamed to strings::lpad 28 * strings::padend renamed to strings::rpad 29 30 This is a breaking change. 31 ``` 32 33 The release manager will collect breaking changes and summarize them in 34 the release notes for affected versions, providing instructions for affected 35 users to update their code. If possible, an automated migration procedure will 36 be prepared on a best-effort basis. 37 38 ## Release process 39 40 One or two weeks prior to the start of each financial quarter, the release 41 manager will prepare a release branch named "v0.**YY**.**Q**" cut from the 42 latest master branch, and tag 0.YY.Q-rc1 from this branch, notifying hare-dev 43 with a preliminary changelog. 44 45 Each week following rc1, the release manager will make a judgement call on the 46 release's quality based on feedback from the community; if the release is not 47 ready then any additional bugfixes will be cherry-picked from master and rcN+1 48 tagged. If the release is determiend to be ready, 0.YY.Q is tagged and the 49 release notes are posted to hare-announce. 50 51 ## Extended library 52 53 The extended library will ship tagged releases which track Hare releases. 54 However, the extended library does not necessarily change often; in a given 55 quarter most extended libraries will not have received any patches. As such, new 56 releases for the extlib are only tagged upon request, or if necessity demands 57 (such as when updated to address a breaking change).