Thanks for contributing to arena-alligator.
This repository uses mise as the task runner. Run all project tasks through mise.
List tasks:
mise tasks --allMost common commands:
mise run format:fix
mise run clippy
mise run testRun the full local validation path before opening a pull request:
mise run testFor faster iteration during development:
mise run test:nextest
mise run format
mise run clippyBenchmarks are not required for most PRs. Run them when allocator behavior, contention behavior, or performance-sensitive paths change.
mise run bench
mise run bench:extremeBenchmark documentation and latest published summaries:
Keep PRs focused and small. Include:
- A concise problem statement.
- The behavioral change.
- Validation performed (tests/bench commands run).
If relevant, include before/after benchmark deltas and platform details (CPU, architecture, OS, thread count).
- Follow
rustfmtoutput. - Treat clippy warnings as errors for contributions.
- Prefer clear naming and small, composable functions over large multi-purpose blocks.
Changes touching atomics, memory ordering, or alignment-sensitive structures must preserve the crate's concurrency and layout assumptions.
- Keep allocator synchronization lock-free and atomic-based (no mutex substitution in hot allocation paths).
- Treat
src/bitmap.rsCacheAligned<T>wrappers as false-sharing guards; do not remove or reduce alignment without benchmark evidence. - Keep slot/alignment inputs power-of-two validated for builders (
FixedArena/BuddyArena), and preserve capacity rounding behavior. - If changing atomic orderings, document why the new ordering is correct and which happens-before edge still protects safety/liveness.
Required evidence for these changes (in PR description):
- A clear problem statement tied to a concrete invariant (safety, liveness, or performance regression).
- A minimal reproducible case that demonstrates the issue before the change.
- Exact commands used to reproduce, including feature flags, thread counts, and environment details.
- Before/after output showing the issue is fixed (or regression removed) by the change.
Evidence must be reproducible by another contributor on comparable hardware/settings.
Required validation commands:
mise run test
mise run test:nextest
mise run clippyIf contention behavior or bitmap internals change, also run:
mise run bench