Skip to content

More changes for dropping 3.10 / adding 3.15 - #3113

Open
mdboom wants to merge 3 commits into
NVIDIA:mainfrom
mdboom:drop-3.10-features
Open

mdboom wants to merge 3 commits into
NVIDIA:mainfrom
mdboom:drop-3.10-features

Conversation

@mdboom

@mdboom mdboom commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

This is a follow-on with a bunch of things that got missed in #3080.

@mdboom
mdboom requested a review from leofang October 14, 2026 21:03
@github-actions github-actions Bot added CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module cuda.core Everything related to the cuda.core module labels Oct 14, 2026
@mdboom
mdboom requested a review from Andy-Jost October 14, 2026 21:05
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Summary

Summary by CodeRabbit

  • Documentation
    • Updated Python requirements for project helpers and most samples from 3.10+ to 3.11+; one sample now requires Python 3.12+.
  • Bug Fixes
    • Failed CUDA operations now include additional error details as exception notes, with consistent reporting.
  • Compatibility
    • Added Python 3.15 support across the packages and included Python 3.15 wheel artifacts in processing. Python 3.15 nightly-wheel setup was removed, and test failures on Python 3.15 now follow normal failure behavior.
    • Updated build and test workflows to enable Python 3.16 prereleases.

The pull request updates Python compatibility code, package metadata, wheel workflows, and documented requirements. It removes exception-note fallbacks and compatibility dependencies, adjusts Python 3.15 and 3.16 CI handling, and raises documented minimum versions.

Changes: Python version support

Layer / File(s) Summary
Core compatibility and error handling
cuda_core/cuda/core/_utils/*, cuda_core/cuda/core/_memory/_copy_enums.py, cuda_core/cuda/core/system/typing.py, cuda_core/pixi.toml, cuda_core/tests/*, cuda_core/AGENTS.md, cuda_core/cuda/core/_cpp/rt/DESIGN.md
Core code imports StrEnum from the standard library and calls add_note without a fallback. The compatibility dependency and Python-version-specific test branches are removed. Error-handling guidance describes exception notes without version-specific behavior.
Python 3.15 package and CI support
cuda_bindings/pyproject.toml, cuda_core/pyproject.toml, cuda_pathfinder/pyproject.toml, cuda_pathfinder/tests/test_find_nvidia_headers.py, cuda_python/pyproject.toml, cuda_bindings/pixi.toml, cuda_python_test_helpers/pyproject.toml, .github/workflows/*wheel.yml, ci/ci-pipeline.mmd, ci/tools/download-wheels
Package metadata and CI include Python 3.15 support. Wheel workflows allow prereleases for Python 3.16 and remove Python 3.15 nightly-wheel setup and test exceptions. Artifact processing no longer excludes matching Python 3.15 directories.
Documented Python requirements
.github/actions/check-doc-links/action.yml, samples/cuda_bindings/*/README.md, samples/cuda_core/*/README.md, samples/cuda_core/*/requirements.txt
The action prerequisite and sample requirements specify Python 3.11 or newer. The systemInfo sample specifies Python 3.12 or newer.

Priority: ➖ Normal

Change: Other

Merge Risk: 🟡 Moderate · up to 189ae

The Python 3.15 test environment may fail because it pins an unsupported CFFI version. Update the pin or verify that environment before merging.

✨ Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 71519d4f-cb36-4799-aa1a-f1d7eac9d187
📥 Commits

Reviewing files that changed from the base of the PR and between 1f41281 and 92982ea.

📒 Files selected for processing: 77
  • .github/actions/check-doc-links/action.yml
  • .github/workflows/build-wheel.yml
  • .github/workflows/test-wheel-linux.yml
  • .github/workflows/test-wheel-windows.yml
  • ci/ci-pipeline.mmd
  • ci/tools/download-wheels
  • cuda_bindings/pixi.toml
  • cuda_bindings/pyproject.toml
  • cuda_core/AGENTS.md
  • cuda_core/cuda/core/_cpp/rt/DESIGN.md
  • cuda_core/cuda/core/_memory/_copy_enums.py
  • cuda_core/cuda/core/_utils/cuda_utils.pyx
  • cuda_core/cuda/core/_utils/pycompat.py
  • cuda_core/cuda/core/system/typing.py
  • cuda_core/pixi.toml
  • cuda_core/tests/graph/test_graph_builder.py
  • cuda_core/tests/test_enum_coverage.py
  • cuda_core/tests/test_error_handling.py
  • cuda_python_test_helpers/pyproject.toml
  • samples/cuda_bindings/0_Introduction/clockNvrtc/README.md
  • samples/cuda_bindings/0_Introduction/simpleCubemapTexture/README.md
  • samples/cuda_bindings/0_Introduction/systemWideAtomics/README.md
  • samples/cuda_bindings/0_Introduction/vectorAddDriverApi/README.md
  • samples/cuda_bindings/0_Introduction/vectorAddMmap/README.md
  • samples/cuda_bindings/2_Concepts_and_Techniques/streamOrderedAllocation/README.md
  • samples/cuda_bindings/3_CUDA_Features/cudaGraphsManualNodes/README.md
  • samples/cuda_bindings/3_CUDA_Features/globalToShmemAsyncCopy/README.md
  • samples/cuda_bindings/4_CUDA_Libraries/conjugateGradientMultiBlockCG/README.md
  • samples/cuda_bindings/4_CUDA_Libraries/nvidiaSmi/README.md
  • samples/cuda_bindings/extra/isoFdModelling/README.md
  • samples/cuda_bindings/extra/jitProgram/README.md
  • samples/cuda_core/binarySearch/README.md
  • samples/cuda_core/blockwiseSum/README.md
  • samples/cuda_core/blurImageUnifiedMemory/README.md
  • samples/cuda_core/copyImageArraytoGPU/README.md
  • samples/cuda_core/cudaComputeLambdas/README.md
  • samples/cuda_core/cudaGraphs/README.md
  • samples/cuda_core/customPyTorchKernel/README.md
  • samples/cuda_core/customTensorFlowKernel/README.md
  • samples/cuda_core/deviceQuery/README.md
  • samples/cuda_core/fftSignalAnalysis/README.md
  • samples/cuda_core/glInteropFluid/README.md
  • samples/cuda_core/glInteropMipmapLod/README.md
  • samples/cuda_core/glInteropPlasma/README.md
  • samples/cuda_core/greenContext/README.md
  • samples/cuda_core/ipcMemoryPool/README.md
  • samples/cuda_core/jitLtoLinking/README.md
  • samples/cuda_core/kernelNsysProfile/README.md
  • samples/cuda_core/launchConfigTuning/README.md
  • samples/cuda_core/launchConfigTuning/requirements.txt
  • samples/cuda_core/matrixMulSharedMem/README.md
  • samples/cuda_core/memoryResources/README.md
  • samples/cuda_core/multiGPUGradientAverage/README.md
  • samples/cuda_core/pageRank/README.md
  • samples/cuda_core/parallelHistogram/README.md
  • samples/cuda_core/parallelHistogram/requirements.txt
  • samples/cuda_core/parallelReduction/README.md
  • samples/cuda_core/persistentProgramCache/README.md
  • samples/cuda_core/prefixSum/README.md
  • samples/cuda_core/prefixSum/requirements.txt
  • samples/cuda_core/processCheckpoint/README.md
  • samples/cuda_core/reduction/README.md
  • samples/cuda_core/reductionMultiBlockCG/README.md
  • samples/cuda_core/simpleMultiGpu/README.md
  • samples/cuda_core/simpleP2P/README.md
  • samples/cuda_core/simplePrint/README.md
  • samples/cuda_core/simpleZeroCopy/README.md
  • samples/cuda_core/streamingCopyComputeOverlap/README.md
  • samples/cuda_core/streamingCopyComputeOverlap/requirements.txt
  • samples/cuda_core/stridedMemoryViewConstructors/README.md
  • samples/cuda_core/stridedMemoryViewCpu/README.md
  • samples/cuda_core/stridedMemoryViewGpu/README.md
  • samples/cuda_core/systemInfo/README.md
  • samples/cuda_core/textureSample/README.md
  • samples/cuda_core/threadBlockCluster/README.md
  • samples/cuda_core/tmaTensorMap/README.md
  • samples/cuda_core/vectorAdd/README.md
💤 Files with no reviewable changes: 5
  • cuda_bindings/pixi.toml
  • cuda_core/tests/test_enum_coverage.py
  • cuda_core/pixi.toml
  • cuda_bindings/pyproject.toml
  • cuda_python_test_helpers/pyproject.toml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

Comment thread samples/cuda_core/systemInfo/README.md Outdated
@github-actions github-actions Bot added the cuda.pathfinder Everything related to the cuda.pathfinder module label Oct 14, 2026
@mdboom mdboom self-assigned this Oct 14, 2026
@mdboom mdboom added this to the cuda.core next milestone Oct 14, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: NVIDIA/cuda-python/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: d221f98e-9aed-411f-9400-ef784dabcbf3
📥 Commits

Reviewing files that changed from the base of the PR and between a8aeb26 and 189ae81.

📒 Files selected for processing: 7
  • .github/workflows/test-wheel-linux.yml
  • .github/workflows/test-wheel-windows.yml
  • cuda_bindings/pyproject.toml
  • cuda_core/pyproject.toml
  • cuda_pathfinder/pyproject.toml
  • cuda_pathfinder/tests/test_find_nvidia_headers.py
  • cuda_python/pyproject.toml
💤 Files with no reviewable changes: 2
  • .github/workflows/test-wheel-linux.yml
  • .github/workflows/test-wheel-windows.yml
🚧 Files skipped from review as they are similar to previous changes: 1
  • cuda_bindings/pyproject.toml

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 8 remain after this review.

Comment thread cuda_core/pyproject.toml
"pyglet==2.1.14",
# TODO: remove the Python 3.15 guard once 3.15 is officially supported
"cffi==2.0.0; python_version < '3.15'",
"cffi==2.0.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🔎 Supported by static analysis

🏁 Script executed:

set -eu
printf '%s\n' '--- pyproject dependency context ---'
nl -ba cuda_core/pyproject.toml | sed -n '1,125p'
printf '%s\n' '--- Python 3.15 and cffi references ---'
rg -n -F --glob '!**/.git/**' -e '3.15' -e 'cffi' . || test "$?" -eq 1
printf '%s\n' '--- diff against supplied merge base ---'
git diff --unified=20 1cd41eabda2bc83e76cbf32ee82495352d08417c 189ae81a2ea6a1272342bb2490cd08084b3dc5c1 -- cuda_core/pyproject.toml

Repository: NVIDIA/cuda-python

Length of output: 24480


🌐 Web query:

official CFFI 2.0.0 Python 3.15 support release documentation

💡 Result:

**CFFI 2.0.0 does not list Python 3.15 support.** Its official release notes say it supports Python 3.14 and free-threaded Python; Python 3.15 support was added in **CFFI 2.1.0**. ([cffi.readthedocs.io](https://cffi.readthedocs.io/en/latest/whatsnew.html))

Official documentation: the [CFFI “What’s New” release notes](https://cffi.readthedocs.io/en/latest/whatsnew.html). The current docs say CFFI is tested with Python 3.10–3.15, but that describes the newer documentation version—not 2.0.0. ([cffi.readthedocs.io](https://cffi.readthedocs.io/en/stable/installation.html))

Citations:

- 1: https://cffi.readthedocs.io/en/latest/whatsnew.html
- 2: https://cffi.readthedocs.io/en/stable/installation.html

important: Use a Python 3.15-compatible CFFI pin.

The test group applies cffi==2.0.0 to the Python 3.15 environments. CFFI 2.0.0 supports Python 3.14, but Python 3.15 support starts with CFFI 2.1.0. The current pin can make dependency installation or CFFI-based tests fail.

Suggested fix
--- "a/cuda_core/pyproject.toml"
+++ "b/cuda_core/pyproject.toml"
@@ -79,7 +79,7 @@
     "docutils==0.23",
     # Required by tests/test_graphics.py; pinned to match cuda_bindings.
     "pyglet==2.1.14",
-    "cffi==2.0.0",
+    "cffi==2.1.0",
 ]
 # TODO: drop the Windows 3.15 guard once ml-dtypes publishes cp315 Windows wheels
 ml-dtypes = ["ml-dtypes>=0.5.4,<0.6.0; sys_platform != 'win32' or python_version < '3.15'"]
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
"cffi==2.0.0",
"cffi==2.1.0",

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI/CD CI/CD infrastructure cuda.bindings Everything related to the cuda.bindings module cuda.core Everything related to the cuda.core module cuda.pathfinder Everything related to the cuda.pathfinder module

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant