Versioning
Warning
This information may no longer be accurate since Thrust was merged into the CCCL project.
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.