cuda.core 1.1.1 Release Notes#

New features#

  • Added ObjectCode.get_module() for interoperability with legacy CUmodule-based driver APIs. The method returns a context-dependent CUmodule handle via cuLibraryGetModule, bridging the newer context-independent library API to existing code that expects a module. (#2339)

  • cuda.core C++ headers are now included in source distributions and installed wheels, making them available to downstream projects that extend cuda.core at the C++ level. (#2236)

Fixes and enhancements#

  • This cuda-core patch release was issued to be compatible with cuda-bindings 13.4.0b1. Version strings that include PEP 440 pre-release suffixes (e.g. 0b1) are now parsed correctly; previously they caused an ImportError on startup.

  • Graph nodes now properly retain per-node user-object attachments (kernel argument buffers, host-callback functions and user data, and memcpy/memset operands) for the full lifetime of the graph. (#2357)

  • Graph user-object payload cleanup is now deferred to the main Python thread via Py_AddPendingCall, avoiding unsafe cross-thread Python object destruction that could occur when CUDA invoked the destructor callback on an internal driver thread. (#2371)

  • The on-disk program cache directory is now created with owner-only permissions (0o700) on POSIX systems, and those permissions are re-asserted on each use. This prevents other local users from reading or injecting cached device code regardless of the process umask. (#2399)

  • DLPack: a NULL deleter in a DLManagedTensorVersioned capsule is now handled correctly per the DLPack specification; previously it would cause a crash. (#2427)

  • Corrected NumPy version guards for writing into DLPack host arrays. The minimum required NumPy version for such writes is now correctly enforced as 2.2.5+; earlier NumPy versions return a read-only buffer (numpy GH#28632) and would error rather than skip. (#2238)