[FEA] Reorganize Cython to separate C++ bindings and make Cython classes public #1280
Description
Is your feature request related to a problem? Please describe.
Currently rmm intermixes C++ API bindings and Cython declarations in the same pxd files. All of these pxd files are contained in the _lib
module, whose name suggests that it is internal. However, this module is used by essentially all RAPIDS libraries because their Cython code compiling against Cython classes like rmm._lib.device_buffer.DeviceBuffer
. Therefore, despite being ostensibly private, it is in fact treated as part of the public API by the rest of RAPIDS.
Describe the solution you'd like
The Cython C++ API bindings should be moved into a separate subpackage that is not conflated with the pure Cython code. The Cython code should be moved into a new subpackage whose name clearly indicates that it is intended to be public.
Describe alternatives you've considered
None
Additional context
Since any change here would be a breaking change to the rest of RAPIDS, it would be best to alias all existing types back into rmm._lib
when the new module structure is created along with deprecation warnings. See #1221 for a template of how to do this.
Metadata
Assignees
Type
Projects
Status
Done