Skip to content

Extensions tests fail on Julia 1.13.0-rc1 (pre): Mooncake v0.5.31 MooncakeRuleCompilationError 'unexpected expr (:utf8proc_toupper,)' #544

Description

@ChrisRackauckas-Claude

Summary

The Tests / Extensions (julia pre) CI job fails on master (commit bf7c4ed) on Julia 1.13.0-rc1: Mooncake v0.5.31 cannot compile a reverse-mode rule through uppercase(::Char), erroring with unexpected expr (:utf8proc_toupper,). This is an upstream Mooncake incompatibility with Julia 1.13, not a DataInterpolations regression — the same commit passes Extensions on Julia 1.10 (lts), 1.11, and 1.12.

Seen in the scheduled run https://github.com/SciML/DataInterpolations.jl/actions/runs/27210894947 (job tests / Extensions (julia pre, ubuntu-latest)), and reproduced locally.

Failing test

test/mooncake_tests.jl:13, first hit in "BSpline Approximation, derivatives w.r.t. u":

BSpline Approximation, derivatives w.r.t. u: Error During Test at test/mooncake_tests.jl:13
  Got exception outside of a @test
  Mooncake failed to differentiate the following method:
  │ uppercase(c::T) where T<:AbstractChar
  │
  │ Caused by:
  │ unexpected expr (:utf8proc_toupper,)
  │
  │ MooncakeRuleCompilationError: ...
  └ @ Base.Unicode strings/unicode.jl:329
...
ERROR: LoadError: Some tests did not pass: 13177 passed, 0 failed, 1 errored, 0 broken.

Local reproduction (2026-06-12)

  1. Full test group, fresh clone of master, Julia 1.13.0-rc1:

    GROUP=Extensions julia +1.13.0-rc1 --project=. -e 'using Pkg; Pkg.test()'
    

    13177 passed, 0 failed, 1 errored — exact same error as CI.

  2. Minimal repro, independent of DataInterpolations (Julia 1.13.0-rc1, Mooncake v0.5.31 in a clean env):

    using Mooncake
    Mooncake.build_rrule(Mooncake.MooncakeInterpreter(Mooncake.ReverseMode),
        Tuple{typeof(uppercase), Char}; debug_mode=false)
    # MooncakeRuleCompilationError: unexpected expr (:utf8proc_toupper,)

Root cause

  • Mooncake v0.5.31 (latest release) does not support Julia 1.13; its IR pass does not handle the foreigncall form Julia 1.13 produces for uppercase (:utf8proc_toupper).
  • Mooncake's declared compat is julia = "~1.10.8, 1.11.6, 1.12.1", whose caret entries admit 1.13.x, so the resolver installs it on 1.13-rc1 anyway.
  • Julia 1.13 support is an open draft PR upstream: Add support for nightly version (1.13) chalk-lab/Mooncake.jl#856

Non-issue: the 2026-06-08 push run failures

For the record, the failures in the push run https://github.com/SciML/DataInterpolations.jl/actions/runs/27149052616 on the same commit (QA (julia lts) and Methods (julia pre)) were NOT test failures: in both jobs the test step passed and only the codecov-action step failed with

error: could not lock config file /home/chrisrackauckas/.gitconfig: File exists

i.e. a git config --global lock collision between concurrent runner instances (demeter4-6 / demeter4-10) sharing one home directory on the self-hosted machine demeter4. The remaining 2h5m "failures" in that run were post-job cache-upload hangs/auth errors on the same machine. The next day's scheduled run on GitHub-hosted runners passed everything except the Mooncake/1.13 job above. Both groups also pass locally (QA on 1.10.11: 18/18; Methods on 1.13.0-rc1: 41385/41385).

Expected resolution

This should resolve itself once Mooncake gains Julia 1.13 support (chalk-lab/Mooncake.jl#856) or caps its julia compat below 1.13. Tracking issue so the red Extensions (julia pre) job on master is documented; no DataInterpolations code change is proposed (the test itself is valid and passes on all supported released Julia versions).


Found during a master-CI investigation by a Claude agent on behalf of @ChrisRackauckas.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions