Conformance and versioning

Conformance and versioning#

2026-10-07

1 min read time

Applies to Linux and Windows

Conformance#

libhipcxx aims to be a conforming implementation of the C++ Standard, ISO/IEC IS 14882, Clause 16 through 32.

Versioning#

libhipcxx is a fork of libcu++ and follows its versioning. A libhipcxx release carries the version of the upstream CCCL release it is based on; the current version is 3.0.2.

API version#

The API version is a three-component semantic version, MAJOR.MINOR.PATCH, exposed by four macros from <cuda/std/version>:

  • _LIBCUDACXX_CUDA_API_VERSION_MAJOR is incremented for API-breaking changes.

  • _LIBCUDACXX_CUDA_API_VERSION_MINOR is incremented when API-compatible features are added.

  • _LIBCUDACXX_CUDA_API_VERSION_PATCH is incremented for all other changes.

  • _LIBCUDACXX_CUDA_API_VERSION combines the three as MAJOR * 1000000 + MINOR * 1000 + PATCH, which is 3000002 for version 3.0.2.

A single API version is supported at a time.

ABI version#

The ABI version is a single integer. libhipcxx supports exactly one ABI version, 4, so both _LIBCUDACXX_CUDA_ABI_VERSION and _LIBCUDACXX_CUDA_ABI_VERSION_LATEST from <cuda/std/version> are 4. Defining _LIBCUDACXX_CUDA_ABI_VERSION to any other value is a compile-time error.

libhipcxx makes no promise of long-term ABI stability. Promising long-term ABI stability would prevent fixing mistakes and achieving high performance, so no such promises are made. A program is ill-formed, no diagnostic required, if it links translation units that were compiled against different libhipcxx versions.