Versioning#
Thrust has its own versioning system for releases, independent of the versioning scheme of the NVIDIA HPC SDK or the CUDA Toolkit.
Today, Thrust version numbers have a specific semantic meaning. Releases prior to 1.10.0 largely, but not strictly, followed these semantic meanings.
The version number for a Thrust release uses the following format:
MMM.mmm.ss-ppp, where:
THRUST_VERSION_MAJOR/MMM: Major version, up to 3 decimal digits. It is incremented when changes that are API-backwards-incompatible are made.THRUST_VERSION_MINOR/mmm: Minor version, up to 3 decimal digits. It is incremented when breaking API, ABI, or semantic changes are made.THRUST_VERSION_SUBMINOR/ss: Subminor version, up to 2 decimal digits. It is incremented when notable new features or bug fixes or features that are API-backwards-compatible are made.THRUST_PATCH_NUMBER/ppp: Patch number, up to 3 decimal digits. This is no longer used and will be zero for all future releases.
The <thrust/version.h> header defines THRUST_* macros for all of the
version components mentioned above.
Additionally, a THRUST_VERSION macro is defined, which is an integer literal
containing all of the version components except for THRUST_PATCH_NUMBER.
Trunk Based Development#
Thrust uses trunk based development.
There is a single long-lived branch called main, which is public and the
“source of truth”.
All other branches are downstream from main.
Engineers may create branches for feature development.
Such branches always merge into main.
There are no release branches.
Releases are produced by taking a snapshot of main (“snapping”).
After a release has been snapped from main, it will never be changed.