# Preparing related projects

- Check that haxelib is working
- Make sure to update the haxelib submodule
- Check that the run-time haxelibs are ready for release: hxcpp, hxjava
- Check that the NEKO_VERSION variable in the "Makefile" is set to the latest Neko version

# Making the release

- Make sure CHANGES.txt has a proper date set!
- Make sure `version` in globals.ml has the correct value
- Make sure the copyright year in args.ml has the correct value
- Update `version` in `haxe.opam`
- Check if the protocolVersion in displayJson.ml has to be updated
- Create a version tag and push it with above changes (CI needs to run on the tag)
- Make an empty GitHub release in https://github.com/HaxeFoundation/haxe/releases
- Wait for the CI to build (check https://build.haxe.org/builds/haxe/, look for `haxe_[date]_refs/tags`)
- Get https://github.com/HaxeFoundation/hxgithub
- Follow "Haxe releases" section of hxgithub README, with the equivalent of `-d haxe_2023-04-28_refs/tags/4.3.1_964c84c.tar.gz`
	- Tell yourself that you're gonna fix `-doc` generation next time
	- Make sure changelog isn't empty in `./haxe-version/CHANGES.md`
	- Write the announcement to `./haxe-version/RELEASE.md`
	- If everything was working, run the command again without `--dry`
- Update https://github.com/HaxeFoundation/haxe.org/blob/staging/downloads/versions.json
- Wait for staging to update, check everything related to release and merge to master
- Update https://github.com/HaxeFoundation/api.haxe.org/blob/master/theme/templates/topbar.mtt
- Update https://github.com/HaxeFoundation/code-cookbook/blob/master/assets/content/index.mtt#L62-L63

# Cleanup

- Remove issues with released fixes from the "Hotfix" milestone: https://github.com/HaxeFoundation/haxe/milestone/18
- Set back the version in `globals.ml` to something appropriate for nightlies

# Announcing the release

- Find someone to announce the release on our various communication channels
