SciML / SciML/NeuralOperators.jl

Windows Julia 1.12 is blocked by Reactant jl_cstr_to_string linkage

Open
#166 0 comments 0 reactions 0 assignees View on GitHub

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

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.