That still doesn’t handle the type-generic recursive argument pipeline, which is exactly what we want to have through something like Plots.jl but is causing the compilation issue. What makes us have automatic type handling and recipes is exactly what is causing over specialization. Interestingly, a blanket @nospecialize doesn’t help either, so it’s hard to see how to fix it. If you just want to call a C library and have no overhead, then you can already use GR.jl which is a good library for that, but of course it has to ignore types to do that.
Those are all specialized on Array{Float64}, Array{Float32}, and Array{Complex...}. Everything else has a generic Julia fallback or an error. We could do that with our plotting libraries (“error: every plot command has to end up at Array{Float64}s!”), but then of course plotting Symmetric{Measurements{Complex}} and stuff like that, which is right now handled automatically through the Plots.jl pipeline, would be a major pain.