Thanks for your interest. PACT is a research artifact for an ASPLOS 2026 paper; contributions that fix bugs, improve portability, or sharpen the documentation are welcome.
The user-space runtime lives in src/ and builds with a C toolchain
plus libnuma:
make -C src # build ./src/pact
make -C src check-style # coarse brace-style gate (grep)
make -C src check-format CLANG_FORMAT=clang-format-18 # full clang-format gateCI (.github/workflows/ci.yml) runs the build (default and make logging
variants) and both style gates on every push and pull request; please make sure
they pass locally first. Match the conventions in
src/CODING_STYLE.md.
Most of PACT's algorithms build and run anywhere, but end-to-end operation
needs an Intel Skylake-X-class NUMA host with working PEBS and CHA/uncore
counters, root, and reboot access (see the README requirements). If
a change affects behavior that only manifests on that hardware, describe the
machine you tested on (./src/pact --version, CPU model, kernel, numactl -H)
and attach the relevant logs from run/results/<workload>/pact/ in your pull
request.
Some directories vendor or adapt upstream code (kernel patches, khashl.h,
minicoro.h, and the baseline systems) under their own
licenses — see NOTICE and LICENSE. Do not restyle
vendored files into PACT conventions, and do not add MIT/PACT headers to them.
New first-party files should carry the MIT SPDX header used across src/.
Keep each PR focused on one logical change, with a clear description of the problem and the fix. Update the relevant README/docs alongside code changes, and note whether and how you tested on real tiering hardware.