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.