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.