Releases
This is a guide on preparing and releasing new ESBMC versions.
Warning
This guide is meant for developers of ESBMC with permissions for releasing new versions. It will not work if you don’t have appropriate permissions.
To create a new ESBMC release on GitHub, follow these steps:
Create a Branch for the Release
Create a branch appropriately named for this release and switch to it, in this case:
git switch -c v8.1Update the Release Notes
Update the release notes in /scripts/release-notes.txt to reflect the changes
included in the new version.
Tip
You can use Claude or any other LLM for this, just use this command to get the
differences from the last tag
git log v8.0..master --oneline > /tmp/commits-for-release.txt (in this case
being v8.0) and instruct it to update the file for the next version.
Update the Project Version
Update the project version by modifying /CMakeLists.txt. Specifically the
macros ESBMC_VERSION_MAJOR, ESBMC_VERSION_MINOR, ESBMC_VERSION_PATCH to
include the desired version number.
Commit and Push to the Branch
Commit the changes and push them to the branch created earlier. Then submit a
PR. Name the commit appropriately, in this case update: bump version to v8.1.
git add scripts/release-notes.txt CMakeLists.txt
git commit -m "update: bump version to v8.1"
git pushCreate the PR
Note
You can do this from the GitHub UI as well. But for convenience I show the commands.
Make sure to change the title and body to your version number.
gh pr create \
--title "update: bump version to v8.1" \
--body "Bump version to v8.1 and update release notes."Await PR to be Merged
Allow 2 other maintainers to review your PR as usual, approve and merge it.
Tagging the Commit
Create a tag for the commit with the version change, make sure to name it
according to the version you’re releasing. In this case v8.1:
git tag v8.1Push the tag to origin:
git push --tagsImportant
Pushing a v* tag automatically triggers the
Release
workflow (“Upload Release Asset”). It builds every platform and creates a
draft GitHub release named after the tag (e.g. ESBMC v8.1), with the
canonical esbmc-linux.zip, esbmc-windows.zip, esbmc-macos.zip and
esbmc.info assets already attached. You do not need to run the workflow
manually, create the release by hand, or upload any artifacts yourself.
Publish the Draft Release
Wait for the Release workflow to finish, then open the repository’s Releases page and find the draft release the workflow created for your tag.
- Confirm the attached assets are present:
esbmc-linux.zip,esbmc-windows.zip,esbmc-macos.zipandesbmc.info. - Adjust the title if needed — the draft is created as
ESBMC v8.1; past releases use “Release 8.1” (note the missing v). - Replace the placeholder description with a markdown version of the content
written in
/scripts/release-notes.txtfrom earlier. - Publish the release.
Tip
You can use Claude or any other LLM to prepare the release description.