# Release checklist

Prior to the first stable release we neither have formal release processes nor do we follow a fixed release schedule.

To create a new pre-release:

1. Create a release PR which, if necessary:
  - Updates the versions in the workspace `Cargo.toml`
  - Updates the version in each crate `Cargo.toml`
  - Updates the version of the NPM package in `js/resolc/package.json`
  - Updates the `CHANGELOG.md` to reflect all observable changes
2. If the CI passes, merge the release PR.
3. Push a `vX.Y.Z` tag that has the same version as in `Cargo.toml`
4. The release workflow will attempt to build and publish a new pre-release if the latest tag does match the cargo package version.
5. Wait for the `Release` workflow to finish. It should create the pre-release with the same name.
6. Check that pre-release was created on the [Releases page](https://github.com/paritytech/revive/releases) with all artifacts.
7. After the release is published, another workflow should start automatically and update json files in https://github.com/paritytech/resolc-bin. Check the changes.
8. Update the [contract-docs](https://github.com/paritytech/contract-docs/) accordingly

# `resolc` NPM package release

Will happen automatically.

# LLVM release

To create a new LLVM release, run "Release LLVM" workflow. Use current LLVM version as parameter, e.g. `18.1.8`.
Version suffix will be resolved automatically.  
The workflows will create new GitHub release, and upload LLVM binaries.
Next release of resolc will use newly created binaries.  
