Open Street Map Example does not work in Agents.jl

Hello, I am having difficulty running the Open Street Map for Agents.jl. In particular, CairoMakie does not compile, leading to the error below. I received the same error on Windows. The error also persists after downgrading CairoMakie to 0.11.x.

The newer versions of CairoMakie and OSMMakie could be tried on Agents.jl main, but it does not seem to be passing tests.

Any advice would be greatly appreciated.

Error

ERROR: The following 1 direct dependency failed to precompile:

CairoMakie 

Failed to precompile CairoMakie [13f3f980-e62b-5c42-98c6-ff1f3baf88f0] to "/home/itsdfish/.julia/compiled/v1.12/CairoMakie/jl_s6OAaT".
ERROR: LoadError: FieldError: type Core.TypeName has no field `mt`, available fields: `name`, `module`, `singletonname`, `names`, `atomicfields`, `constfields`, `wrapper`, `Typeofwrapper`, `cache`, `linearcache`, `partial`, `hash`, `max_args`, `n_uninitialized`, `flags`, `cache_entry_count`, `max_methods`, `constprop_heuristic`
Stacktrace:
  [1] getproperty(x::Core.TypeName, f::Symbol)
    @ Base ./Base_compiler.jl:54
  [2] func2string(func::typeof(MakieCore.linesegments))
    @ MakieCore ~/.julia/packages/MakieCore/EU17Y/src/recipes.jl:9
  [3] plotkey(::Type{MakieCore.LineSegments{Tuple{Vector{GeometryBasics.Point{2, Float32}}}}})
    @ MakieCore ~/.julia/packages/MakieCore/EU17Y/src/recipes.jl:40
  [4] plotkey(::MakieCore.LineSegments{Tuple{Vector{GeometryBasics.Point{2, Float32}}}})
    @ MakieCore ~/.julia/packages/MakieCore/EU17Y/src/recipes.jl:41
  [5] get_attribute(dict::MakieCore.LineSegments{Tuple{Vector{GeometryBasics.Point{2, Float32}}}}, key::Symbol, default::Nothing)
    @ MakieCore ~/.julia/packages/MakieCore/EU17Y/src/attributes.jl:237
  [6] get_attribute(dict::MakieCore.LineSegments{Tuple{Vector{GeometryBasics.Point{2, Float32}}}}, key::Symbol)
    @ MakieCore ~/.julia/packages/MakieCore/EU17Y/src/attributes.jl:234
  [7] draw_atomic(scene::Makie.Scene, screen::CairoMakie.Screen{CairoMakie.IMAGE}, primitive::Union{MakieCore.Lines, MakieCore.LineSegments})
    @ CairoMakie ~/.julia/packages/CairoMakie/JchUZ/src/primitives.jl:6
  [8] draw_plot(scene::Makie.Scene, screen::CairoMakie.Screen{CairoMakie.IMAGE}, primitive::MakieCore.LineSegments{Tuple{Vector{GeometryBasics.Point{2, Float32}}}})
    @ CairoMakie ~/.julia/packages/CairoMakie/JchUZ/src/infrastructure.jl:135
  [9] cairo_draw(screen::CairoMakie.Screen{CairoMakie.IMAGE}, scene::Makie.Scene)
    @ CairoMakie ~/.julia/packages/CairoMakie/JchUZ/src/infrastructure.jl:49
 [10] colorbuffer(screen::CairoMakie.Screen{CairoMakie.IMAGE})
    @ CairoMakie ~/.julia/packages/CairoMakie/JchUZ/src/screen.jl:375
 [11] colorbuffer(screen::CairoMakie.Screen{CairoMakie.IMAGE}, format::Makie.ImageStorageFormat)
    @ Makie ~/.julia/packages/Makie/Y3ABD/src/display.jl:391
 [12] colorbuffer(fig::Makie.FigureAxisPlot, format::Makie.ImageStorageFormat; update::Bool, backend::Module, screen_config::@Kwargs{})
    @ Makie ~/.julia/packages/Makie/Y3ABD/src/display.jl:475
 [13] colorbuffer
    @ ~/.julia/packages/Makie/Y3ABD/src/display.jl:466 [inlined]
 [14] colorbuffer(fig::Makie.FigureAxisPlot)
    @ Makie ~/.julia/packages/Makie/Y3ABD/src/display.jl:466
 [15] top-level scope
    @ ~/.julia/packages/Makie/Y3ABD/precompile/shared-precompile.jl:6
 [16] include(mapexpr::Function, mod::Module, _path::String)
    @ Base ./Base.jl:307
 [17] top-level scope
    @ ~/.julia/packages/CairoMakie/JchUZ/src/precompiles.jl:11
 [18] macro expansion
    @ ~/.julia/packages/PrecompileTools/gn08A/src/workloads.jl:73 [inlined]
 [19] macro expansion
    @ ~/.julia/packages/CairoMakie/JchUZ/src/precompiles.jl:15 [inlined]
 [20] include(mapexpr::Function, mod::Module, _path::String)
    @ Base ./Base.jl:307
 [21] top-level scope
    @ ~/.julia/packages/CairoMakie/JchUZ/src/CairoMakie.jl:37
 [22] include(mod::Module, _path::String)
    @ Base ./Base.jl:306
 [23] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:3024
 [24] top-level scope
    @ stdin:5
 [25] eval(m::Module, e::Any)
    @ Core ./boot.jl:489
 [26] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
    @ Base ./loading.jl:2870
 [27] include_string
    @ ./loading.jl:2880 [inlined]
 [28] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:315
 [29] _start()
    @ Base ./client.jl:550
in expression starting at /home/itsdfish/.julia/packages/Makie/Y3ABD/precompile/shared-precompile.jl:4
in expression starting at /home/itsdfish/.julia/packages/CairoMakie/JchUZ/src/precompiles.jl:10
in expression starting at /home/itsdfish/.julia/packages/CairoMakie/JchUZ/src/CairoMakie.jl:1
in expression starting at stdin:

Version Info

(zombie_outbreak) pkg> st
Status `~/.julia/dev/sandbox/zombie_outbreak/Project.toml`
  [46ada45e] Agents v6.2.10
⌃ [13f3f980] CairoMakie v0.12.18
⌃ [76b6901f] OSMMakie v0.0.10
  [9a3f8284] Random v1.11.0
Info Packages marked with ⌃ have new versions available and may be upgradable.
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 × AMD Ryzen 7 7700X 8-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver4)
  GC: Built with stock GC
Threads: 8 default, 1 interactive, 8 GC (on 16 virtual cores)
Environment:
  JULIA_EDITOR = code
  JULIA_VSCODE_REPL = 1
  JULIA_NUM_THREADS = 8

Your julia version is too new for that version of Makie. Try going down to 1.10

2 Likes

Thank you!

I see that you are a developer for Makie. Do you happen to know the timeline for supporting newer versions of Julia?

The issue is that you are on an old version of Makie…this is probably because of OSMMakie.jl which is quite outdated. I’l take a look but there is probably not a firm timeline…

2 Likes

Thanks for looking into the timeline.

mmm… last update does support latest Makie, 0.24. I don’t think this is in the makie side.

If I understand correctly, the latest version of Makie is restricted to Julia 1.10 (although it was not enforced).

That’s a common misinterpretation of what = means in the compat section - it enforces SemVer and declares compatibility with the given version and any minor/patch updates. See:

So julia = 1.10 means any Julia from 1.10 to 1.10+x, up to but excluding Julia 2.0.

5 Likes

Don’t want to derail this topic, but since this is can be a bit confusing, I just want to add two more things to @nilshg’s post for clarification:

  • There is also the format julia = "=1.10.10" (so the = can be used right in front of the version number to restrict a package to only match the given version, so it has two meanings). To say "only Julia 1.10 up to the patch version, use julia = "~1.10".
  • The version of julia itself is not enforced to the given version number (you’re already running Julia anyway when Pkg is running), it just prints a warning if you run the package code with a incompatible version
    [ Warning: julia version requirement for project not satisfied

But I think Pkg does try to install only compatible packages when the julia version compat is specified (?)

1 Like
~> julia +1.9 -q --startup-file=no
                                                                                                                                                           01/28/2026 10:38:24 AM
(@v1.9) pkg> add Makie@0.24.8
   Resolving package versions...
ERROR: Unsatisfiable requirements detected for package Makie [ee78f7c6]:
 Makie [ee78f7c6] log:
 ├─possible versions are: 0.9.0-0.24.8 or uninstalled
 ├─restricted to versions 0.24.8 by an explicit requirement, leaving only versions: 0.24.8
 └─restricted by julia compatibility requirements to versions: 0.9.0-0.23.0 or uninstalled — no versions left
1 Like

No, Makie 0.24 is compatible with latest julia. IIUC the original post was an issue for Makie 0.23 and below. Perhaps Agents.jl is holding Makie back then? But it will be something in that env. Try ]st -m --outdated Makie maybe?

You are correct. The latest release of Agents.jl is restricted to an older version of Makie, but this restriction has been relaxed on main.

New release coming soon!

3 Likes