|
LLZK 2.0.0
An open-source IR for Zero Knowledge (ZK) circuits
|
Here we document a few processes relevant to the maintainers of LLZK-lib and the LLZK Project repositories in general.
We use GitHub milestones for tracking tasks associated with a version release.
Before creating a new release milestone, decide on the release version.
The release process uses semantic versioning, so the release version must match the format v[0-9]+.[0-9]+.[0-9]+.
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backward compatible manner
- PATCH version when you make backward compatible bug fixes
To create a patch branch based on an existing release, you can use the following:
git checkout -b <new-patch-branch-name> <release-tag>
Once a release milestone is met, the release can be created.
The general procedure is:
A new release starts via a manually triggered GitHub workflow.
From this point, any cleanup that needs to be performed (e.g., cleaning up the changelogs/PENDING.md) should be performed by creating PRs against the aforementioned pre-release branch.
Once the changelog is updated and the necessary changes have been cherry-picked into the pre-release branch, run the Create Release Candidate workflow from the pre-release branch. This creates and tags a new release candidate for the desired version. If there are any issues that need to be addressed at this state, PRs can be opened against this branch and new release candidates can be created by re-running the Create Release Candidate workflow.
At this stage, it can also be helpful to open a draft PR using the pre-release branch and wait for the CI workflows to run and ensure they are successful. However, it's not strictly required as the release PR created below will require all CI workflows to pass before it's merged.
Once a release candidate has been tested and is ready to become a release, run the Create Release PR workflow.
This workflow will create and auto-merge a PR to main that contains all the changes from the pre-release branch and has been tagged with the release version, assuming there are no issues.
When this PR is merged, the Release workflow will be called, which then creates the GitHub release. All releases are viewable on GitHub.