SciML / SciML/NeuralOperators.jl
Windows Julia 1.12 is blocked by Reactant jl_cstr_to_string linkage
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 41
- Forks
- 15
- Avg merge
- 13h 14m
- Merged PRs (30d)
- 12
Description
Problem
The current Julia 1.12 Windows Core job fails before NeuralOperators tests can run because Reactant cannot link its precompile image:
lld: error: undefined symbol: jl_cstr_to_string
>>> referenced by ... Reactant ... call_with_reactant
The failing environment resolves Julia 1.12.7 and Reactant 0.2.284. Julia LTS and the non-Windows lanes pass this boundary.
This is not a NeuralOperators implementation failure: Reactant's own current workflow at commit c820cb6dd48afda4ad9d8c7d7d6b8161abc137bb reproduces it in both Julia 1.12 Windows jobs, while its Julia 1.10 and 1.11 Windows jobs pass.
Standalone dependency reproducer
The dependency-only boundary imports no SciML package:
using Pkg
Pkg.activate(; temp = true)
Pkg.add(PackageSpec(name = "Reactant", version = "0.2.284"))
using Reactant
On Julia 1.12.7 for Windows, Reactant precompilation reaches the same undefined-symbol link failure. Reactant's own Julia 1.12 Windows jobs below are the clean upstream reproductions.
Root-cause evidence
Reactant emits a direct LLVM declaration and call to "jl_cstr_to_string" in src/utils.jl. An audit of the official Julia 1.12.6 and 1.12.7 Windows import libraries shows that libjulia.dll.a provides only the import-address-table entry for that name, while libjulia-internal.dll.a provides the directly callable ijl_cstr_to_string symbol:
1.12.6/libjulia.dll.a: I __imp_jl_cstr_to_string
1.12.6/libjulia-internal.dll.a: I __imp_ijl_cstr_to_string
1.12.6/libjulia-internal.dll.a: T ijl_cstr_to_string
1.12.7/libjulia.dll.a: I __imp_jl_cstr_to_string
1.12.7/libjulia-internal.dll.a: I __imp_ijl_cstr_to_string
1.12.7/libjulia-internal.dll.a: T ijl_cstr_to_string
That makes an upstream correction to the emitted symbol (ijl_cstr_to_string) or to its Windows DLL-import declaration the likely repair. This is an inference from the import libraries and Reactant source; it has not yet been validated by a Reactant patch on Windows.
Chris is not an owner, maintainer, or top contributor in EnzymeAD/Reactant.jl, so no upstream issue or PR will be opened without explicit permission. This SciML issue tracks the blocked NeuralOperators lane in the meantime. A NeuralOperators-side version pin, test exclusion, or platform gate would only hide the dependency regression and is not proposed.
Links
- NeuralOperators failing job: https://github.com/SciML/NeuralOperators.jl/actions/runs/33313226757/job/99312377020
- Reactant Julia 1.12 Windows integration failure: https://github.com/EnzymeAD/Reactant.jl/actions/runs/33429642165/job/99676131381
- Reactant Julia 1.12 Windows core failure: https://github.com/EnzymeAD/Reactant.jl/actions/runs/33429642165/job/99676131758
- Reactant source emitting the direct call: https://github.com/EnzymeAD/Reactant.jl/blob/c820cb6dd48afda4ad9d8c7d7d6b8161abc137bb/src/utils.jl#L1057-L1064
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the standalone Julia 1.12.7 Windows reproducer, then inspect Reactant's src/utils.jl at lines 1057-1064 and the linked Reactant workflow failures. Done means an upstream-compatible correction is validated on the affected Windows jobs and the NeuralOperators Core lane can proceed without a version pin, exclusion, or platform gate.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- build-system, ci-cd
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100