Julia runtimes
A runtime campaign changes Julia while keeping the package source, workloads and measurement definitions fixed.
Prepare channels
PerfChecker does not install Julia versions. With juliaup:
juliaup add release
juliaup add rc
juliaup add nightlyEach runtime is probed in a fresh process; the resolved version, commit, bindir and LLVM version are recorded.
Run a campaign
julia --startup-file=no --project=. -e 'using PerfChecker; exit(perfchecker_main(ARGS))' -- julia-campaign \
--suite=perf/suite.jl --baseline=release --candidate=rc --candidate=nightly \
--profile=ci --reports=perf/julia-campaign \
--limit=julia.wall.time=0.05 --min-samples=10 --progress=jsonlEach runtime gets a child controller and normal isolated workers.
Startup and history files are disabled.
--resume=truecontinues an interrupted campaign.
Explicit specs
using PerfChecker
specs = [
JuliaRuntimeSpec(:stable, "release"; role = :baseline),
JuliaRuntimeSpec(:next, "rc"; role = :candidate),
JuliaRuntimeSpec(:nightly, "nightly"; role = :candidate),
]
campaign = run_julia_runtime_campaign(specs;
suite = "perf/suite.jl", reports = "perf/julia-campaign", profile = :ci,
relative_limits = Dict("julia.wall.time" => 0.05), min_samples = 10)source = :executable points at an explicit Julia binary when juliaup is not used.
Attribute a regression
investigation = investigate_julia_regressions(campaign; max_frames = 50, obvious_share = 0.6)
write_julia_investigation(investigation, "perf/julia-campaign/investigation")PerfChecker ranks source lines whose sampled CPU or allocation weight increased, and labels each as Julia runtime or package/dependency code.
Attribution is not causality
A dominant Base, stdlib or compiler frame is a candidate for reduction, not proof of a Julia bug. PerfChecker reports when the evidence is only ranked and not enough for an automatic minimal working example.
File a useful issue
Reduce in this order:
one feature and one check type;
the smallest deterministic fixture that still shows the delta;
the stable and candidate runtime identities;
the effective Project/Manifest and hardware context;
a short reproduction command;
the ranked profile artifact as supporting evidence.
