Release Process#

Create a Changelog Entry#

Every release must have a changelog entry. The changelog entry should include:

  • A summary of the major accomplishments of the release.

  • A list of all the changes in the release.

  • A list of all the bugs fixed by the release.

Contributions from new collaborators should be acknowledged in the changelog.

Create Git Annotated Tags and GitHub Releases#

Each release needs to have a Git annotated tag and a GitHub release for that tag. The changelog for the release should be used for the text of the GitHub release.

Update Compiler Explorer#

Thrust and CUB are bundled together on Compiler Explorer (CE) as libraries for the CUDA language. When releasing a new version of these projects, CE will need to be updated.

There are two files in two repos that need to be updated:

libraries.yaml#

  • Repo: https://github.com/compiler-explorer/infra

  • Path: bin/yaml/libraries.yaml

This file tells CE how to pull in library files and defines which versions to fetch. Look for the thrustcub: section:

    thrustcub:
      type: github
      method: clone_branch
      repo: NVIDIA/thrust
      check_file: dependencies/cub/cub/cub.cuh
      targets:
        - 1.9.9
        - 1.9.10
        - 1.9.10-1
        - 1.10.0

Simply add the new version tag to list of targets:. This will check out the specified tag to /opt/compiler-explorer/libs/thrustcub/<tag>/.

cuda.amazon.properties#

  • Repo: https://github.com/compiler-explorer/compiler-explorer

  • File: etc/config/cuda.amazon.properties

This file defines the library versions displayed in the CE UI and maps them to a set of include directories. Look for the libs.thrustcub section:

libs.thrustcub.name=Thrust+CUB
libs.thrustcub.description=CUDA collective and parallel algorithms
libs.thrustcub.versions=trunk:109090:109100:109101:110000
libs.thrustcub.url=http://www.github.com/NVIDIA/thrust
libs.thrustcub.versions.109090.version=1.9.9
libs.thrustcub.versions.109090.path=/opt/compiler-explorer/libs/thrustcub/1.9.9:/opt/compiler-explorer/libs/thrustcub/1.9.9/dependencies/cub
libs.thrustcub.versions.109100.version=1.9.10
libs.thrustcub.versions.109100.path=/opt/compiler-explorer/libs/thrustcub/1.9.10:/opt/compiler-explorer/libs/thrustcub/1.9.10/dependencies/cub
libs.thrustcub.versions.109101.version=1.9.10-1
libs.thrustcub.versions.109101.path=/opt/compiler-explorer/libs/thrustcub/1.9.10-1:/opt/compiler-explorer/libs/thrustcub/1.9.10-1/dependencies/cub
libs.thrustcub.versions.110000.version=1.10.0
libs.thrustcub.versions.110000.path=/opt/compiler-explorer/libs/thrustcub/1.10.0:/opt/compiler-explorer/libs/thrustcub/1.10.0/dependencies/cub
libs.thrustcub.versions.trunk.version=trunk
libs.thrustcub.versions.trunk.path=/opt/compiler-explorer/libs/thrustcub/trunk:/opt/compiler-explorer/libs/thrustcub/trunk/dependencies/cub

Add a new version identifier to the libs.thrustcub.versions key, using the convention X.Y.Z-W -> XXYYZZWW. Then add a corresponding UI label (the version key) and set of colon-separated include paths for Thrust and CUB (path). The version used in the path entries must exactly match the tag specified in libraries.yaml.