Repository navigation
rustc: use llvmPackages_23 - #578990
rustc: use llvmPackages_23#578990
Conversation
See item number 2 at the top of the file, and https://github.com/rust-lang/rust/blob/1.99.1/.gitmodules#L28. Fixes cargo-binstall 1.26.1, which failed to compile its `adler32furious` dependency because of the following error (caused by the LLVM version mismatch): ``` intrinsic signature mismatch for `llvm.x86.avx512.vpdpbusd.256`: expected signature `<8 x i32> (<8 x i32>, <8 x i32>, <8 x i32>)`, found `<8 x i32> (<8 x i32>, <32 x i8>, <32 x i8>)` ```
|
Will build on Darwin today. ccing @whispersofthedawn |
|
can try to take a closer look later, but given that this looks avx512-related from that error, is this the same failure that led to folks wanting #544495? i think the consensus then was we want to push the global llvm bump (then #524570, now #562683) through, but i don't know if that position has changed given that bump will be delayed (and won't make 26.11). in principle it would suck to have to reseparate the default and rustc's, after work in the past to align them (#407738), though if it's just a temporary measure while we advance to a non-fucked llvm it might be okay. or if we want to just decide to always align with upstream that may also be fine; just probably worth tracing back closer why we decided to switch away from explicit specification. (and i mean, I'm not opposed to becoming a maintainer or something, might as well get pings if we keep staring at rust stuff anyway) |
|
Same sort of error, yes. The top of the file I edited ( If the bump were imminent, I could be persuaded to go with that instead (although I'd still argue against it, as I dont think there's a guarantee rustc would work with newer LLVM versions than it supports). But it isn't (and seemingly won't happen soon), so I think we should fix this now. Regarding the reasoning for rust using our default version of LLVM, I don't see a reason presented here, at least. Perhaps @alyssais remembers? |
|
in principle this seems fine; if we need it to unblock failures, i'd rather we go into 26.11 with a good state rather than a slightly broken rustc. tis a shame we couldn't globally adopt llvm 23, but oh well. consider this a +½ from us. main thing we'd want before a full +1 is some broader testing. we've kicked some test builds of mostly-rust tools on x86_64-linux, and they seems completely fine. some darwin would be good as always, though. we'd also like for someone to get through a firefox build + a little bit of runtime testing before stamping this, as that involves heavy mixing of rustc and clang and we want to make sure there are no perverse interactions there. we'll throw our laptop at it, though since we can only do that at night it may be a day or three to get through that closure. (edit: oh woops, i'm seeing now that firefox explicitly selects the llvm from rustc, so we shouldn't expect anything from mismatched llvm versions here. still going to run tests, though; that's a fairly important to get right and is a good test.) we mostly brought up the concern about unifying the LLVMs because we recalled alyssa mentioning it on matrix at some point, but we do not have enough context nor the memory to recall details, so if someone who has the context can't come by and leave thoughts, we think this is fine. (though building more than one llvm in typical staging builds for rustc and clang will be sad, plus adding an llvm that's outside of darwin stdenv. oh well, we do what we must.) also cc @NixOS/llvm in case anyone over there has thoughts, though this is mostly a rust thing |
|
LLVM 23 changed their profiling output. Rust 1.99 expects the newer profiling output and so will segfault if it's been built with an older LLVM: https://hydra.nixos.org/build/350182570/step/4/log This is currently causing the nixpkg
|
…ches LLVM rustc 1.99 in nixpkgs is built with LLVM 21 but its profiler runtime expects the LLVM 23 raw profile format. Every coverage-instrumented binary SIGSEGVs at exit (initializeValueProfRuntimeRecord), so cargo llvm-cov fails. Take cargo, rustc, cargo-llvm-cov and llvm for the tests check from a second nixpkgs input pinned at 55bfb4d. This replaces the doCheck override. Tracked upstream in NixOS/nixpkgs#578990. Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
|
|
@whispersofthedawn (or anyone else with a Darwin machine and community builder access): the path of the new Firefox on the Darwin community builder is |
|
Merging now: I'd really like this to be included in the next staging cycle, which will begin shortly. |
|
fine with me. sorry, i don't actually have a graphical darwin machine and was almost done with my own ff build for x86_64-linux, but if it builds along with the other things in its chain it's probably good enough along with the other testing that was done. we can handle fallout in staging-next if necessary |
First use of nix-detour's fixes (kleinbem-dev/nix-detour#23). qdrant fails to build on nixos-unstable because rustc's stdarch and nixpkgs' LLVM disagree on an AVX-512 VNNI intrinsic (NixOS/nixpkgs#553191). It was held on stable (1.17.1) since 10-13; now it runs the current 1.18.2 with the source patch from NixOS/nixpkgs#553347, which disables those VNNI code paths, pinned by hash. The fix ends like a hold: once nixpkgs' own qdrant builds again (NixOS/nixpkgs#578990 on master, plus a zstd input that staging-next now needs), the release action removes it. - `held-packages.json`: qdrant from `current` with the patch (`nix-detour fix add`). - Lock and release action move to nix-detour main (ce248312), which has fixes; `overlay.nix` is the only file that changed for the holds. Test (nixos-nvme, qdrant as nix-config gets it: this flake's nixpkgs, nix-packages' overlay, `mkOverlay`): built in 91 min, 138 tests passed, version 1.18.2; the server started, created a collection with int8 quantization, took points and answered a query. The other four holds are unchanged. Cost: qdrant isn't on cache.nixos.org with the patch, so nix-config's first build-all after this builds it once (about 1.5 h here, more on a runner); then it's in Attic. Trade-off: CPUs with AVX-512 VNNI lose that quantization fast path until the fix ends. 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Bug Fixes** * Updated the Qdrant package hold to track the current package source, with a start date of 1 November 2026. A compatibility patch disables affected AVX-512 VNNI code paths. The hold now identifies a rustc/LLVM compilation failure involving `vpdpbusd` and records the conditions for ending the hold, making the package’s build status and hold criteria clearer. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
The lock file maintenance moves nixpkgs to 4fe25e1, where cargo-llvm-cov 0.9.0 no longer builds: 14 of its integration tests fail because the coverage-instrumented binaries they build segfault at exit. nixpkgs' rustc is built against LLVM 21 but bundles an LLVM 23 profiler runtime (NixOS/nixpkgs#576588, reproduced on Hydra for x86_64-linux and here on aarch64-darwin). With the package unbuildable and not cached, the dev shell fails to build, so direnv and the generated git hooks go stale. The defect is in nixpkgs' rustc, not in cargo-llvm-cov, and only its own test suite compiles with that rustc. The dev shell runs `cargo llvm-cov` with the rust-overlay toolchain from rust-toolchain.toml, whose profiler runtime matches its LLVM, so skipping the package's checks yields a working tool. This is applied on every platform because the cause is not Darwin-specific. The fix (NixOS/nixpkgs#578990, rustc: use llvmPackages_23) is on staging; drop the override once it reaches the pinned nixpkgs.
* chore(deps): lock file maintenance
* chore: format
* style(nu): apply nufmt 0.1.6 formatting to scripts merged from main
The lock file maintenance bumps nixpkgs from 8edc0c7 to 4fe25e1, which
moves nufmt from 0-unstable-2026-09-28 to 0.1.6-unstable-2026-10-21. The
new nufmt wraps long records and calls across lines (for example
multi-line `error make {msg: ...}` records), so treefmt-check fails on
every .nu file still in the old style.
autofix-ci had already reformatted the one script present on this
branch, but CI checks the merge with main, and main has since gained
contribution-gate and other scripts formatted by the old nufmt. That
single treefmt-check failure broke both the `security & lint preflight`
job and `nix flake check` in the `test` job; the Rust, JS, Nushell, and
Babashka tests themselves passed.
Merge main and rerun `nix fmt` so every script matches the formatter the
lock now pins.
* fix(nix): skip cargo-llvm-cov checks so the dev shell builds
The lock file maintenance moves nixpkgs to 4fe25e1, where cargo-llvm-cov
0.9.0 no longer builds: 14 of its integration tests fail because the
coverage-instrumented binaries they build segfault at exit. nixpkgs'
rustc is built against LLVM 21 but bundles an LLVM 23 profiler runtime
(NixOS/nixpkgs#576588, reproduced on Hydra for x86_64-linux and here on
aarch64-darwin). With the package unbuildable and not cached, the dev
shell fails to build, so direnv and the generated git hooks go stale.
The defect is in nixpkgs' rustc, not in cargo-llvm-cov, and only its
own test suite compiles with that rustc. The dev shell runs
`cargo llvm-cov` with the rust-overlay toolchain from
rust-toolchain.toml, whose profiler runtime matches its LLVM, so
skipping the package's checks yields a working tool. This is applied on
every platform because the cause is not Darwin-specific.
The fix (NixOS/nixpkgs#578990, rustc: use llvmPackages_23) is on staging;
drop the override once it reaches the pinned nixpkgs.
* fix(perf): read hyperfine 2.0 results by command name
The lock file maintenance moves nixpkgs to 4fe25e1, which upgrades
hyperfine from 1.21.0 to 2.0.0. The PR performance comparison then fails
before measuring anything: hyperfine 2.0 removed `--sort` without a
replacement, so `--sort command` is rejected as an unexpected argument.
Dropping the flag alone is not enough. hyperfine 2.0 also switched
`--export-json` to schema version 2: statistics moved to
`summary.time_wall_clock`, per-run times to `measurements`, and the
`--command-name` label to `name`. The parser still read the 1.x top-level
`median`/`min`/`max`/`times`, so it would have produced nil measurements.
The script also relied on `--sort command` to keep results in input
order, destructuring them by position into base/PR and pairing them with
runtime variants by index.
Match each result to its requested `--command-name` and return them in
the requested order, failing on a missing or duplicated name instead of
silently pairing the wrong measurement. Read wall-clock statistics from
the v2 summary, rejecting an unexpected schema version or unit. Remove
the unused `hyperfine-common` definition that also carried `--sort`.
The malformed-output test passed a java.nio Path to `slurp`, which
failed to open it, so it passed on the wrong exception. The test helper
now passes the string path the script itself uses.
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: ryoppippi <[email protected]>
nixos-unstable rustc builds against LLVM 23 since nixpkgs#578990, so the check that kept gitbutler below 0.23 no longer triggers. NixOS/nixpkgs#578990
See item number 2 at the top of the file, and https://github.com/rust-lang/rust/blob/1.99.1/.gitmodules#L28.
Fixes cargo-binstall 1.26.1, which failed to compile its
adler32furiousdependency because of the following error (caused by the LLVM version mismatch):Things done
./result/bin/.nixpkgs-reviewon this PR. See nixpkgs-review usage.passthru.tests.