Fix Downgrade: raise MKL_jll compat floor to 2022.2#1068
Merged
ChrisRackauckas merged 1 commit intoJun 28, 2026
Conversation
The Downgrade Core lane resolved MKL_jll to v2019.0.117+0, whose old JLLWrappers-generated module does not define `is_available`. LinearSolve.jl calls `MKL_jll.is_available()` at src/LinearSolve.jl:69 during module init, so precompilation failed with `UndefVarError: is_available not defined`, cascading into all extension precompile failures. `is_available` is first emitted into MKL_jll wrappers at the 2021.x series; 2019/2020 lack it. The surrounding code already documents that MKL_jll < 2022.2 is unusable (no mixed LP64/ILP64 `_64` APIs) and gates `usemkl` on `pkgversion(MKL_jll) >= v"2022.2"`, so 2022.2 is the correct minimal floor: it both defines `is_available` and matches the version the code actually requires to enable MKL. Verified on Julia 1.10 (LTS): with MKL_jll pinned to the 2022.2.0 floor, `MKL_jll.is_available()` returns true and `using LinearSolve` precompiles and loads cleanly (previously the failing step). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The Downgrade / Downgrade Tests - Core lane is red (e.g. run 28324898399 and main-push run 28302399780). Precompilation fails with:
cascading into all 19 extension precompile failures.
Cause
The root
[compat]hadMKL_jll = "2019, 2020, 2021, 2022, 2023, 2024, 2025". The downgrade resolver picked the lowest allowed, MKL_jll v2019.0.117+0. That old build's JLLWrappers-generated module does not defineis_available.src/LinearSolve.jl:69callsMKL_jll.is_available()during module init, so precompile dies.I verified the boundary on Julia 1.10:
is_availabledefinedis_availableis first emitted into MKL_jll wrappers at the 2021.x series.Fix
Raise the floor to 2022.2. This is the correct minimal floor for two reasons:
is_availablefirst appears._64APIs) and gatesusemklonpkgversion(MKL_jll) >= v"2022.2". So 2022.2 aligns the compat floor with the version the code actually requires to enable MKL — no version below it was ever meaningfully usable.MKL_jll = "2022.2, 2023, 2024, 2025"The DowngradeSublibraries lane was already green because
lib/LinearSolveAutotune/Project.tomlindependently pinsMKL_jll = "2025.2.0".Verification (Julia 1.10 LTS)
With MKL_jll pinned to the new 2022.2.0 floor and LinearSolve developed in:
Previously this is exactly the step that threw
UndefVarError: is_available. Resolver confirmed honoring the floor (↓ MKL_jll v2025.2.0+0 ⇒ v2022.2.0+0).Please ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code