Thank you for your interest in improving Peroxide! Whether you want to report a bug, request a feature, or send a code change, this document explains the conventions the project follows.
Please open an issue at https://github.com/Axect/Peroxide/issues.
When reporting a bug, the following information makes it much easier to diagnose:
- A minimal Rust snippet that reproduces the problem
- Peroxide version (from
Cargo.tomlorcargo tree | head) - Cargo features enabled (e.g.
O3-openblas,plot,nc) - Rust toolchain (
rustc --version) - Operating system and, when relevant, the BLAS / Python / HDF5 versions in use
Feature requests are also welcome through the issue tracker; describe the use case and, if you have one in mind, a suggested API shape.
For questions that are not bug reports (usage, design discussion, "is this the right approach"), please use GitHub Discussions or open an issue tagged as a question.
Peroxide follows the Gitflow workflow. A few practical rules:
- Do not commit to
masterdirectly.masteronly receives merges fromdevthrough reviewed pull requests. - Branch from
devfor new work. Use thefeatures/<short-name>convention (for examplefeatures/dataframe-cleanup). Open the pull request againstdev. - Run the test suite before pushing. Enable the same Cargo features your change touches:
For
cargo test --features "<features-you-touch>"
O3work, pick the convenience flag that matches your platform (O3-openblas,O3-accelerate,O3-mkl, orO3-netlib); see the README "Pre-requisite" section for details. - Format and lint before opening the PR:
The continuous integration on
cargo fmt cargo clippy --all-targets
push/pull_requestruns the default,O3-openblas, pure-Rust, andplotfeature jobs, so keeping these green locally avoids round-trips.
The directories under src/ map one-to-one to the public modules, so the module index in the API docs doubles as the source map; start from a module's documentation and its mod.rs.
The only exception is src/grave/, which holds retired implementations kept for reference and is excluded from compilation.
By contributing you agree to abide by the project's Code of Conduct.
Thanks for all contributions!