# HarfBuzz release walk-through checklist:

- [ ] Open gitk and review changes since last release.

	- [ ] Print all public API changes:
          `git diff $(git describe --abbrev=0).. src/*.h`

    - [ ]  Document them in NEWS.
           All API and API semantic changes should be clearly marked as API additions, API changes, or API deletions.

    - [ ] Document deprecations.
          Ensure all new API / deprecations are listed correctly in docs/harfbuzz-sections.txt.
          If release added new API, add entry for new API index at the end of docs/harfbuzz-docs.xml.

      If there's a backward-incompatible API change (including deletions for API used anywhere), that's a release blocker.
      Do NOT release.

- [ ] Based on severity of changes, decide whether it's a minor or micro release number bump.

- [ ] Search for 'REPLACEME' on the repository and replace it with the chosen version for the release, e.g. 'Since: 1.4.7'.

- [ ] Make sure you have correct date and new version at the top of NEWS file.

- [ ] Bump version in line 3 of meson.build.

- [ ] Do a `meson test -Cbuild` so it both checks the tests and updates hb-version.h (use `git diff` to see if is really updated).

- [ ] Commit NEWS, meson.build, and src/hb-version.h, as well as any REPLACEME changes you made.
      The commit message is simply the release number, e. g. "1.4.7"

- [ ] Do a `meson dist -Cbuild` that runs the tests against the latest committed changes.
      If it does not pass, something fishy is going on, reset the repo and start over.

- [ ] Tag the release and sign it: e.g. `git tag -s 1.4.7 -m 1.4.7`.
	  Enter your GPG password.

- [ ] Push the commit and tag out: `git push --follow-tags`.

- [ ] Wait a few minutes and the CI job will create a GitHub release automatically, and it will use the NEWS file additions for release description.
      Take a look at the release and make any needed edits needed.
      The release should also automatically include Windows binaries, but they take a bit longer to build and upload.
