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.