We strive for verbose and readable comments and docstrings. We use katex to render LaTeX math in the docs.
We follow a standard feature branch rebase workflow that prioritizes short PRs with isolated improvements.
Please check each item before approving the pull request. While going through the checklist, it is recommended to leave comments on items that are referenced in the checklist to make sure that they are reviewed.
- Are there new or updated unit or integration tests?
- Do new fuzz tests use the maximum tolerable number of runs (aka without increasing the total test runtime)?
- Do the tests cover the happy paths?
- Do the tests cover the unhappy paths?
- If matching Solidity behavior, are there differential fuzz tests that ensure that Rust matches Solidity?
For code owners who wish to publish a release, make sure to follow these guidelines:
- Merge a PR that edits the package version -- use the same version label for all files.
Cargo.toml
to specify the new Rust semver version. You'll need to edit the workspace version as well as the package versions forfixedpointmath
,hyperdrive-wrappers
, andhyperdrive-math
.pyproject.toml
to specify the same Python semver version.setup.py
to specify the same Python semver version.
- From the updated
main
branch, make a new tag withgit tag vX.Y.Z
. - Push that tag to the remote repository with
git push --tags
. - Go to the
releases
tab in Github and add the new tag as a release. - Click the "Generate Release Notes" button to generate release notes.
To point tests to a local Anvil instance, use the environment variable HYPERDRIVE_ETHEREUM_URL
.