Julia1.12 world age problem related to PlotlyJS.jl (WebIO)

Hi,

A warning (about world age) is fetched when I load my project since I switched to Julia 1.12.

My project uses PlotlyJS.jl which is the only package in Project.toml being related to WebIO.jl.

WARNING: Detected access to binding `WebIO.webio_serve` in a world prior to its definition world.
  Julia 1.12 has introduced more strict world age semantics for global bindings.
  !!! This code may malfunction under Revise.
  !!! This code will error in future versions of Julia.
Hint: Add an appropriate `invokelatest` around the access to this binding.
To make this warning an error, and hence obtain a stack trace, use `julia --depwarn=error`.
versioninfo ans Pkg status
julia> versioninfo()
Julia Version 1.12.4
Commit 01a2eadb047 (2026-01-06 16:56 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 16 Ă— 13th Gen Intel(R) Core(TM) i5-13600H
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, alderlake)
  GC: Built with stock GC
Threads: 16 default, 1 interactive, 16 GC (on 16 virtual cores)
Environment:
  DYLD_LIBRARY_PATH = /home/G36749/opt/xpressmp/lib:
  LD_LIBRARY_PATH = /home/G36749/opt/xpressmp/lib:
  JULIA_EDITOR = code
  JULIA_VSCODE_REPL = 1
  JULIA_NUM_THREADS = 16

(Viviane) pkg> status
Project Viviane v0.1.0
Status `~/Projects/Julia/viviane.jl/Project.toml`
  [ae650224] ChunkSplitters v3.1.2
⌅ [864edb3b] DataStructures v0.18.22
  [5789e2e9] FileIO v1.17.1
  [87dc4568] HiGHS v1.20.1
  [5903a43b] Infiltrator v1.9.7
  [c3a54625] JET v0.11.3
⌅ [033835bb] JLD2 v0.5.15
  [0f8b85d8] JSON3 v1.14.3
  [4076af6c] JuMP v1.29.3
  [b8f27783] MathOptInterface v1.48.0
  [c020b1a1] NaturalSort v1.0.0
  [67456a42] OhMyThreads v0.8.4
  [f0f68f2c] PlotlyJS v0.18.17
  [f27b6e38] Polynomials v4.1.0
⌅ [08abe8d2] PrettyTables v2.4.0
  [92933f4c] ProgressMeter v1.11.0
  [295af30f] Revise v3.13.1
  [10745b16] Statistics v1.11.1
  [856f2bd8] StructTypes v1.11.0
  [f8b46487] TestItemRunner v1.1.4
  [1c621080] TestItems v1.0.0
  [ac1d9e8a] ThreadsX v0.1.12
  [37e2e46d] LinearAlgebra v1.12.0
  [de0858da] Printf v1.11.0
  [9e88b42a] Serialization v1.11.0
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated

As stated, Revise stop working (randomly).

Any ideas ?

Best,

Laurent

2 Likes

I think you should migrate to an actively maintained package, such as PlotlyJS.jl, PlotlyLight.jl.

Thank you for your piece of advice.
Actually I do use PlotlyJS.jl (sorry) as one can see in the Pkg status list.
I have corrected the initial post.

Well, then there’s nothing I can do about it. :cry:

1 Like

You would first need to identify where the problematic access is. For this you might be able to see it based on your precompile output (normally, there is context which we can’t see in your posted output). If that does not contain anything useful, you might want to precompile the dependencies of your project separately.

After you know the package which causes the access, you need to find the line where webio_serve is actually accessed with incorrect world age. Ideally, you would than change the logic to be consistent with word age. If this is not possible, you would add the indicated invokelatest call.

1 Like

I’m having the same “problem” but my project is still running, so I’m waiting and seeing.
I’m hoping to see that it has to do with the implementation of JSON.jl from JSON3.jl in PlotlyJS.jl.

The last version update and commit on PlotlyJS.jl was made in Aug 2025, and I cannot see any coding activity on the PlotlyJS.jl repo. but issues are still beeing posted.
I hope and think its work in progress since I think quite a lot of people use PlotlyJS.jl.

Wait and see and, and hope that some people get to fixing it, sadly I do not have the knowledge to help to assist such huge and complex repos.

1 Like