doc: add CUDA changes to 25.11 release notes#456510
doc: add CUDA changes to 25.11 release notes#456510ConnorBaker wants to merge 1 commit intoNixOS:masterfrom
Conversation
doc/release-notes/rl-2511.section.md
Outdated
| - Package expressions are being updated to support building against older releases (where appropriate) to support out-of-tree consumers like [cuda-legacy](https://github.com/nixos-cuda/cuda-legacy). | ||
| - `_cuda.lib.licenses` was created to introduce several NVIDIA licenses new to Nixpkgs and used almost entirely within the CUDA package set. | ||
| - `_cuda.lib.getRedistSystem` had an API change to accommodate a new dependency on CUDA version. | ||
| - Many members of the CUDA package set are now marked as broken if `config.cudaSupport` is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable `config.cudaSupport`, resulting in an application which supports CUDA and dependencies which do not. |
There was a problem hiding this comment.
We discussed about this with @SomeoneSerge during the meeting today. He implied that it would be better to fall back to the previous behavior. I'll let him elaborate.
|
@SomeoneSerge following up on #437723 (comment):
Yep! That's the goal -- unfortunately, the only way I could think of to achieve that currently is through the
Ideally we'd have a mechanism which allows a derivation to be modified by its inputs -- like setup hooks, but restricted to evaluation. With such a mechanism we could say " But right now all I have is the sledgehammer of To me, this is very much a desirable trade-off: I've lost several weeks of my life at this point to helping people troubleshoot runtime failures and trace dependencies only to find out they've not configured support for CUDA correctly. I want it to fail fast and save me the effort -- it's a small bonus that using
I'm wary of the top-level nixpkgs/nixos/modules/misc/nixpkgs.nix Line 44 in 095db24 I'm open to discussing mixing in the future, but as Nixpkgs exists now it would create a great deal more pain for me to allow it and I really don't want to have to deal with that. I feel that, given the unfree licenses needed to build CUDA stuff, it's not too much to ask for users to ensure they also set EDIT: Clarified about |
NGL, I'm leaning towards the same conclusion...
H'm, well that's a detail of |
Edited my previous post to clarify — the complaints about merging are specifically with respect to NixOS configurations. |
😩 😩 😩 god yes true |
SomeoneSerge
left a comment
There was a problem hiding this comment.
Aside from the nits above, changelog 👍🏿 !
| @@ -16,6 +16,16 @@ | |||
| If a newer C++ library feature is not available on the default deployment target, you will need to increase the deployment target. | |||
| See the Darwin platform documentation for more details. | |||
|
|
|||
| - A great number of changes to CUDA packaging: | |||
| - CUDA 13 is now available. | |||
| - Creation of CUDA package sets has been rewritten to remove module system evaluation. | |||
There was a problem hiding this comment.
I'm mildly skeptical about modules fully going away within the release cycle, tbh. The complete item would be "separate data and package set layers". The current progress towards that I'd maybe describe as "phase out the multiplex.nix builder in favour of [more explicit DI-style passing stuff from manifests to the builder]", but I don't claim to have the full picture as I'm still reading the diffs. Fwiw, seems like much of the logic of multiplex is still in place, moved to buildRedist/
There was a problem hiding this comment.
Modules can always come back -- when there's a need for them :)
Building directly from the manifests cleans up and simplifies a lot of the logic, at the expense of essentially removing all validation of manifest structure.
buildRedist is essentially an updated version of the builder from generic, just with more checks and a healthy dose of offloading of various stages to a build script.
The multiplexing logic is gone entirely -- arguably it was a mistake to allow multiple versions of a single CUDA package within the package set.
There was a problem hiding this comment.
The multiplexing logic is gone entirely -- arguably it was a mistake to allow multiple versions of a single CUDA package within the package set.
Yes, absolutely. Now this would be a good item for the changelog: it's an intentional change, it's likely persistent, it's high-level, it says something about the direction, etc, etc. Modules are an internal detail and they are not a problem in themselves, it's the incompatibility with DI that was the reason we wanted to get rid of the previous implementation...
| - `_cuda.lib.licenses` was created to introduce several NVIDIA licenses new to Nixpkgs and used almost entirely within the CUDA package set. | ||
| - `_cuda.lib.getRedistSystem` had an API change to accommodate a new dependency on CUDA version. |
There was a problem hiding this comment.
Disclaimer about internals&subject to change
There was a problem hiding this comment.
That's already documented in the Nixpkgs reference manual so I'm comfortable leaving it out.
There was a problem hiding this comment.
I don't see the disclaimers in the manual either, and I'd like to see them here as well anyway
doc/release-notes/rl-2511.section.md
Outdated
| - Package expressions are being updated to support building against older releases (where appropriate) to support out-of-tree consumers like [cuda-legacy](https://github.com/nixos-cuda/cuda-legacy). | ||
| - `_cuda.lib.licenses` was created to introduce several NVIDIA licenses new to Nixpkgs and used almost entirely within the CUDA package set. | ||
| - `_cuda.lib.getRedistSystem` had an API change to accommodate a new dependency on CUDA version. | ||
| - Many members of the CUDA package set are now marked as broken if `config.cudaSupport` is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable `config.cudaSupport`, resulting in an application which supports CUDA and dependencies which do not. |
There was a problem hiding this comment.
Disclaimer about the breaking change, and a reference to the config option for recovering the unsafe behaviour
There was a problem hiding this comment.
I added a reference to the config.cudaSupport option, but I'm not introducing a way to re-arm the foot gun (at least not now, and not in this PR).
There was a problem hiding this comment.
not introducing a way to re-arm the foot gun (at least not now, and not in this PR).
OK I open a separate one
There was a problem hiding this comment.
I'm thinking... in principle, the unsafe behaviour can be achieved OOT using overlays instead of the extra config 🤔
Signed-off-by: Connor Baker <ConnorBaker01@gmail.com>
7777ce2 to
4390bef
Compare
| - Package expressions are being updated to support building against older releases (where appropriate) to support out-of-tree consumers like [cuda-legacy](https://github.com/nixos-cuda/cuda-legacy). | ||
| - `_cuda.lib.licenses` was created to introduce several NVIDIA licenses new to Nixpkgs and used almost entirely within the CUDA package set. | ||
| - `_cuda.lib.getRedistSystem` had an API change to accommodate a new dependency on CUDA version. | ||
| - Many members of the CUDA package set are now marked as broken if [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport) is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport), resulting in an application which supports CUDA and dependencies which do not. |
There was a problem hiding this comment.
| - Many members of the CUDA package set are now marked as broken if [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport) is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport), resulting in an application which supports CUDA and dependencies which do not. | |
| - Breaking: CUDA without [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport) is no longer supported. Building packages with CUDA dependencies without enabling `cudaSupport` globally is unsafe and often leads to inconsistent deployments, such as e.g. mixing CUDA-enabled `torchvision` with CPU-only `torch`. Starting with this release, the only supported way to use CUDA in Nixpkgs is `import <nixpkgs> { config.cudaSupport = true; }`. |
And mv to the top
|
|
||
| - `_cuda.lib.getRedistSystem` had an API change to accommodate a new dependency on CUDA version. | ||
|
|
||
| - Many members of the CUDA package set are now marked as broken if [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport) is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport), resulting in an application which supports CUDA and dependencies which do not. |
There was a problem hiding this comment.
| - Many members of the CUDA package set are now marked as broken if [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport) is not set. This change was made to prevent the common mistake of using CUDA tooling to build a CUDA application but forgetting to enable [`config.cudaSupport`](https://nixos.org/manual/nixpkgs/stable/#opt-cudaSupport), resulting in an application which supports CUDA and dependencies which do not. | |
| - CUDA without global `config.cudaSupport` is no longer supported, cf. the ["Highlights"](#sec-nixpkgs-release-25.11-highlights) section. |
Important
Needs to be updated to reflect changes made before release.
As title.
Things done
passthru.tests.nixpkgs-reviewon this PR. See nixpkgs-review usage../result/bin/.Add a 👍 reaction to pull requests you find important.