Skip to content

Extensions and providers

PerfChecker separates interface packages, small API extensions and diagnostic worker providers. See interface packages for installation.

ExtensionActivated byCapability
BenchmarkToolsExtBenchmarkTools:benchmark collector
ChairmarksExtChairmarks:chairmark collector
DrWatsonExtDrWatsonparameter naming, cached production, suite runs
DocumenterExtDocumentergenerated performance pages and docs builds
DocumenterVitepressExtDocumenter + DocumenterVitepressVitePress-aware docs build
UnicodePlotsExtUnicodePlotsterminal plots
PProfExtFlameGraphs + PProfpprof/folded/speedscope profile artifacts
PropCheckExtPropCheckreproducible property corpus freezing
SuppositionExtSuppositionreproducible property corpus freezing
TestItemRunnerExtTestItemRunner >= 1.3.2native item discovery and whole-item measurement
HTTPAdvisorExtHTTPoptional advisor transport

Add optional packages to the controller environment that needs them. A renderer does not become a measured-worker dependency. Collector packages are loaded in the target worker only when that backend requires them.

Version compatibility

Interface and analyzer compatibility belongs to the component that uses the package. The core no longer declares Oxygen, Pluto, Makie, WGLMakie, Bonito, JET, AllocCheck or SnoopCompile as optional dependencies. Aqua remains a core quality-test dependency, not a diagnostic extension.

PerfCheckerMakie owns the optional WGLMakie/Bonito rendering extension. Tool adapters and their Project.toml files live under providers/. Their availability is checked in the diagnostic worker, without importing the controller there.

The following upstream releases were inspected on 12 September 2026. These are compatibility facts, not a claim that all combinations passed collection tests. The publication inventory records actual versions for each qualified environment.

StackCurrent releasesConstraint
Web and interactive plotsOxygen 1.11.0, HTTP 2.6.7, Bonito 5.2.0, Makie 0.24.14, WGLMakie 0.13.14Julia >= 1.11; no Pluto 1.0.3 in this environment
NotebookPluto 1.0.3HTTP 1; use a separate environment from the latest web stack
Julia 1.10 webOxygen 1.10.2, HTTP 1.11.0Compatible fallback for the minimum Julia version
Inference analysisJET 0.12.1Julia >= 1.12; older JET lines remain admitted

The HTTP.jl 2 migration is already in the tagged Oxygen 1.11.0 release, published 28 August 2026. The checked master revision is identical to that tag. Its Project.toml requires HTTP >= 2.4 and Julia >= 1.11. There is no pending master-only correction to adopt. Pluto's HTTP 1 constraint still prevents combining the latest notebook and web stacks.

HTTP.jl package versions 1 and 2 are dependency generations; they are distinct from the HTTP/1.1 and HTTP/2 wire protocols. PerfChecker tests its two dependency stacks separately. A resolved environment proves dependency compatibility; execution, rendering and correctness checks provide the integration evidence.

DrWatson

This example uses the plan built in the software-suite tutorial. Add DrWatson to that controller environment before loading the extension.

julia
using PerfChecker, DrWatson

params = drwatson_parameters(plan)
name = drwatson_savename(first(plan.runs))
result, filename = drwatson_produce_or_load(first(params);
        directory = "perf/results", tag = false) do parameters
    Dict("parameters" => parameters, "note" => "Saved experiment configuration")
end

drwatson_run_suite combines structured experiment parameters, resumable output, and the normal PerfChecker runner. Cache reuse remains explicit in run evidence.

Property-based workloads

PropCheck and Supposition adapters freeze minimized/counterexample inputs into a portable corpus. This makes a stochastic discovery reproducible before it becomes a performance fixture. Corpus generation is not mixed into benchmark sampling; measure the frozen examples in a separate deterministic run.

Add a Julia backend

A backend implements the hook surface for its Val{:backend}:

  • initpkgs loads required packages in the worker;

  • default_options declares defaults;

  • prep prepares fixtures;

  • check performs measurement;

  • post normalizes evidence;

  • optionally cleanup and stop_before_post manage exit-flushed artifacts.

The backend must define versioned measurement definitions, units, preference, scope, perturbation, capability checks, deterministic fixtures, and TestItems. It should return data through the common bundle grammar before gaining UI or CI claims.

Add another programming setup

Use ExternalCommandSpec and perfchecker-provider-result/1. Qualify each provider independently with a capability manifest and conformance suite. The shared protocol is deliberately language-neutral, while measurement semantics remain specific to the actual runtime and tools.

Open source · Report an issue · Contributions welcome