Versioning and releases

Pre-1.0 versioning

Taichi follows Semantic Versioning 2.0.0.

Since Taichi is still under version 1.0.0, we use minor version bumps (e.g., 0.6.17->0.7.0) for breaking API changes, and patch version bumps (e.g., 0.6.9->0.6.10) for backward-compatible changes.

Workflow: releasing a new version

  • Trigger a Linux build on Jenkins to see if CUDA passes all tests. Note that Jenkins is the only build bot we have that tests CUDA. (This may take half an hour.)

  • Create a branch for the release PR, forking from the latest commit of the master branch.

    • Update Taichi version number at the beginning of CMakeLists.txt. For example, change SET(TI_VERSION_PATCH 9) to SET(TI_VERSION_PATCH 10).
    • Rerun cmake so that docs/version gets updated.
    • commit with message “[release] vX.Y.Z”, e.g. “[release] v0.6.10”.
    • You should see two changes in this commit: one line in CMakeLists.txt and one line in docs/version.
    • Execute ti changelog and save its outputs. You will need this later.
  • Open a PR titled “[release] vX.Y.Z” with the branch and commit you just now created.

    • Use the ti changelog output you saved in the previous step as the content of the PR description.
    • Wait for all the checks and build bots to complete. (This step may take up to two hours).
  • Squash and merge the PR.

  • Trigger the Linux build on Jenkins, again, so that Linux packages are uploaded to PyPI.

  • Wait for all build bots to finish. This step uploads PyPI packages for OS X and Windows. You may have to wait for up to two hours.

  • Update the stable branch so that the head of that branch is your release commit on master.

  • Draft a new release (here):

    • The title should be “vX.Y.Z”.
    • The tag should be “vX.Y.Z”.
    • Target should be “recent commit” -> the release commit.
    • The release description should be copy-pasted from the release PR description.
    • Click the “Publish release” button.

Release cycle

Taichi releases new versions twice per week:

  • The first release happens on Wednesdays.
  • The second release happens on Saturdays.

Additional releases may happen if anything needs an urgent fix.