From 0dfed54fbac465b3556e029d08fd89be22ebbbf3 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Thu, 5 Nov 2026 07:27:05 -0500 Subject: [PATCH 1/2] Bump the cuda_bindings version floor in cuda_core --- cuda_core/docs/source/release/1.3.0-notes.rst | 2 +- cuda_core/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cuda_core/docs/source/release/1.3.0-notes.rst b/cuda_core/docs/source/release/1.3.0-notes.rst index e17192853d8..d059ab76dc8 100644 --- a/cuda_core/docs/source/release/1.3.0-notes.rst +++ b/cuda_core/docs/source/release/1.3.0-notes.rst @@ -15,7 +15,7 @@ Breaking Changes ---------------- - ``cuda.core`` now requires a minimum ``cuda-bindings`` version per CUDA major, at build and run - time: 12.9.8 for CUDA 12 and 13.4.1 for CUDA 13. See the + time: 12.9.8 for CUDA 12 and 13.5.0 for CUDA 13. See the :ref:`support policy `. ``import cuda.core`` with an older ``cuda-bindings`` fails with a message that names the required version and how to install it. ``pip install cuda-core[cu12]`` or ``pip install cuda-core[cu13]`` installs a compatible diff --git a/cuda_core/pyproject.toml b/cuda_core/pyproject.toml index daced182faf..f3ea7e35deb 100644 --- a/cuda_core/pyproject.toml +++ b/cuda_core/pyproject.toml @@ -61,7 +61,7 @@ dependencies = [ # checklist in AGENTS.md). Keep the form `>=,<`. [project.optional-dependencies] cu12 = ["cuda-bindings[all]>=12.9.8,<13", "cuda-toolkit==12.*"] -cu13 = ["cuda-bindings[all]>=13.4.1,<14", "cuda-toolkit==13.*"] +cu13 = ["cuda-bindings[all]>=13.5.0,<14", "cuda-toolkit==13.*"] [dependency-groups] # Keep build in sync with build-system.requires; install local cuda-pathfinder separately. From d62c4c0b16dec4c380d55193c902fca3ee67712b Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Thu, 5 Nov 2026 10:43:46 -0500 Subject: [PATCH 2/2] Fix the build floor test --- cuda_core/tests/test_build_hooks.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cuda_core/tests/test_build_hooks.py b/cuda_core/tests/test_build_hooks.py index 3014999867b..3a52b6201f3 100644 --- a/cuda_core/tests/test_build_hooks.py +++ b/cuda_core/tests/test_build_hooks.py @@ -653,6 +653,17 @@ def _write_cuda_h(tmp_path, cuda_version): return str(tmp_path) +def _mismatched_headers(): + """CUDA_VERSION values one minor below and one minor above the floor of each + major. Derived from the floors so that bumping one does not make a case + match.""" + headers = [] + for floor in build_hooks._bindings_floors().values(): + for minor in (floor[1] - 1, floor[1] + 1): + headers.append(floor[0] * 1000 + minor * 10) + return sorted(headers) + + class TestBuildConfigurationCheck: """_check_build_configuration() accepts exactly one configuration per CUDA major: cuda-bindings at or above the floor, and a cuda.h of the same @@ -690,7 +701,7 @@ def test_bindings_of_another_major_fail(self, tmp_path, monkeypatch): build_hooks._check_build_configuration(cuda_path, "12") @pytest.mark.agent_authored(model="claude-fable-5-1") - @pytest.mark.parametrize("header", [13030, 13050, 12090]) + @pytest.mark.parametrize("header", _mismatched_headers()) def test_header_minor_must_match_bindings(self, tmp_path, monkeypatch, header): floor = self.FLOOR[13] _fake_bindings(monkeypatch, _floor_str(13))