| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| CCCL Python Libraries (1.3.0) source code.tar.gz | 2026-10-26 | 14.0 MB | |
| CCCL Python Libraries (1.3.0) source code.zip | 2026-10-26 | 22.9 MB | |
| README.md | 2026-10-26 | 3.0 kB | |
| Totals: 3 Items | 36.9 MB | 0 | |
CCCL Python Libraries (v1.3.0)
Previous release: v1.2.1.
These are the release notes for the cuda-cccl Python package version 1.3.0. This is a maintenance release with no new public Python APIs. The main changes are a wider numba-cuda-mlir version pin, correctness fixes for gpu_struct and stateful-operator caching, a Windows/CTK 12.4 link error fix, and reduced per-call overhead in cuda.compute.
Installation
Please refer to the install instructions here.
Packaging and dependencies
numba-cuda-mlirpin widened to allow 0.6.0 (#12226)
The cu12, cu13, sysctk12, and sysctk13 extras now require numba-cuda-mlir>=0.5.2,!=0.5.3,<0.7 (previously <0.6). The full cuda.compute test suite was validated against numba-cuda-mlir==0.6.0 before widening the bound.
Bug fixes
gpu_structno longer treats NumPy field titles as separate struct members (#11578)
gpu_struct now builds its field mapping from dtype.names instead of iterating every entry in dtype.fields, so a structured NumPy dtype with field titles (aliases) is interpreted correctly instead of appearing to have extra fields.
- Stateful operators no longer recompile when only a captured array's length changes (#11592)
A closure-captured device array's length was previously baked into the generated LLVM IR as a constant, so the build cache had to key on (dtype, shape) and any length-only change forced a full recompile. The length is now packed alongside the pointer in the existing state buffer and loaded at call time, so the build cache for closure-captured device arrays depends on dtype only.
-
Fixed a Windows + CTK 12.4 NVVM link error (
__half/__nv_bfloat16multiply defined) (#11928) -
_make_merge_sort's cache key now matches the single-call API (#12164)
The prepared (make_*) and one-shot (*_into) merge-sort entry points previously produced different build results (NoopBuildResult vs. DeviceMergeSortBuildResult) for equivalent calls because _make_merge_sort omitted the explicit d_in_values=None/d_out_values=None the single-call API passes. It now passes them explicitly so both paths share a cache key.
Performance
- Less per-call overhead in
cuda.computereduce/scan (#11895)
reduce and scan built a fresh np.ndarray | GpuStruct union object on every call because the runtime-evaluated form of cast(...) was used instead of a quoted (no-op) annotation. Quoting the type removes that per-call allocation; host overhead on representative benchmarks dropped from 4.32→3.70 µs (reduce) and 3.06→2.55 µs (exclusive scan).