REPLExt: no method matching repl_init(::REPL.LineEditREPL) when loading packages in REPL mode. #56216
Description
Behaviour
When loading some packages in REPL, REPLExt
throws an exception.
Expected behaviour
No exception thrown?
Reproduce
To reproduce:
julia-release --startup-file=no -t 1
using IJulia
(or other packages)
Packages that reproduce the bug:
IJulia
Pluto
CairoMakie
Packages that don't reproduce the bug:
StaticArrays
PackageCompiler
Version info:
Julia Version 1.11.1
Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 16 × AMD Ryzen 7 4800H with Radeon Graphics
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, znver2)
Threads: 16 default, 0 interactive, 8 GC (on 16 virtual cores)
Environment:
JULIA_NUM_THREADS = 16
LD_LIBRARY_LOADPATH = /opt/wine-staging/lib64:/opt/wine-staging/lib:/opt/nvim-linux64/lib:/opt/containerd/lib:
JULIA_CUDA_USE_BINARYBUILDER = true
JULIA_DEPOT_PATH = /home/<my-user>/.cache/julia
Stack trace
ERROR: InitError: MethodError: no method matching repl_init(::REPL.LineEditREPL)
The function `repl_init` exists, but no method is defined for this combination of argument types.
Closest candidates are:
repl_init(::REPL.AbstractREPL)
@ REPLExt ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/Pkg/ext/REPLExt/REPLExt.jl:163
Stacktrace:
[1] __init__()
@ REPLExt ~/.julia/juliaup/julia-1.11.1+0.x64.linux.gnu/share/julia/stdlib/v1.11/Pkg/ext/REPLExt/REPLExt.jl:305
[2] run_module_init(mod::Module, i::Int64)
@ Base ./loading.jl:1336
[3] register_restored_modules(sv::Core.SimpleVector, pkg::Base.PkgId, path::String)
@ Base ./loading.jl:1324
[4] _include_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String, depmods::Vector{Any}, ignore_native::Nothing; register::Bool)
@ Base ./loading.jl:1213
[5] _include_from_serialized (repeats 2 times)
@ ./loading.jl:1169 [inlined]
[6] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128, stalecheck::Bool; reasons::Dict{String, Int64}, DEPOT_PATH::Vector{String})
@ Base ./loading.jl:1969
[7] _require(pkg::Base.PkgId, env::String)
@ Base ./loading.jl:2450
[8] __require_prelocked(uuidkey::Base.PkgId, env::String)
@ Base ./loading.jl:2315
[9] #invoke_in_world#3
@ ./essentials.jl:1089 [inlined]
[10] invoke_in_world
@ ./essentials.jl:1086 [inlined]
[11] _require_prelocked(uuidkey::Base.PkgId, env::String)
@ Base ./loading.jl:2302
[12] macro expansion
@ ./loading.jl:2241 [inlined]
[13] macro expansion
@ ./lock.jl:273 [inlined]
[14] __require(into::Module, mod::Symbol)
@ Base ./loading.jl:2198
[15] #invoke_in_world#3
@ ./essentials.jl:1089 [inlined]
[16] invoke_in_world
@ ./essentials.jl:1086 [inlined]
[17] require(into::Module, mod::Symbol)
@ Base ./loading.jl:2191
during initialization of module REPLExt
Extra information
- Loading the packages in non-interactive mode works just fine.
- In REPL, when the exception is thrown, load the package again to make it works (v1.11.1).