Contributing, testing, and benchmarking
Tests
julia --project=. -e 'using Pkg; Pkg.test()'CI runs tests on Linux and macOS, using Julia 1.10 and the current stable release. Benchmark dependencies live in a separate Julia project.
Run local benchmarks with one command
julia --startup-file=no benchmark/bench.jlThe first run installs Julia benchmark dependencies. Quick mode limits array sizes and time per case. To run the complete suite:
julia --startup-file=no benchmark/bench.jl --fullTo choose a different output directory:
julia --startup-file=no benchmark/bench.jl --out /tmp/goose-benchThere are two benchmark suites: run.jl (basic operations) and staged.jl (multiple operands and BLAS). They run in two separate Julia processes to avoid constant and method collisions. CSV results contain minimum, median, p95, and GC allocations; the basic suite also reports arena usage.
Benchmark a GitHub pull request
There are two options:
- Add the
benchmarklabel to the PR (the workflow runs when the label is added). - From a terminal with authenticated
gh, run a single command:
gh workflow run benchmark.yml --ref main -f pr=123Replace 123 with the pull request number. CSV results and environment information are saved as a downloadable artifact in the GitHub Actions run. This workflow has read-only repository access and does not expose secrets to PR changes. It does not automatically compare performance across machines, since shared runners cannot guarantee stable microbenchmark timings.
Build and publish documentation
julia --project=docs -e 'using Pkg; Pkg.develop(path=pwd()); Pkg.instantiate()'
julia --project=docs docs/make.jlCI builds the docs on PRs and publishes docs/build to GitHub Pages after pushes to main. Under GitHub repository settings, select Settings → Pages → Build and deployment → Source: GitHub Actions.