Currently the C++ include files in the RAPIDS codebase are not consistently ordered and grouped.
Inconsistent ordering makes it harder to maintain the codebase, to understand the dependencies,
and to automate changes.
Using clang-format to automate the ordering and grouping of include files will not only add
consistent style, but it will ease automation of changes. For example, We are undertaking a
refactoring of RMM that will replace rmm::mr::device_memory_resource* with
rmm::device_async_resource-ref everywhere in RAPIDS (not just cuDF). This requires adding an
include to MANY files across multiple RAPIDS repos. Getting the location of this include correct
everywhere is very difficult without automatic grouping of headers.
I propose to use clang-format's IncludeCategories settings to automate the ordering and
grouping of include files in the C++ codebase consistently.
Proof-of-concept PRs have been created for RMM and cuDF:
Currently the C++ include files in the RAPIDS codebase are not consistently ordered and grouped. Inconsistent ordering makes it harder to maintain the codebase, to understand the dependencies, and to automate changes.
Using clang-format to automate the ordering and grouping of include files will not only add consistent style, but it will ease automation of changes. For example, We are undertaking a refactoring of RMM that will replace
rmm::mr::device_memory_resource*
withrmm::device_async_resource-ref
everywhere in RAPIDS (not just cuDF). This requires adding an include to MANY files across multiple RAPIDS repos. Getting the location of this include correct everywhere is very difficult without automatic grouping of headers.I propose to use clang-format's
IncludeCategories
settings to automate the ordering and grouping of include files in the C++ codebase consistently.Proof-of-concept PRs have been created for RMM and cuDF:
The ordering used for cuDF is given by the following settings.