hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

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).