This document describes the process of contributing to the reference FVM implementation (this project).
If you have a general FVM related question or idea, please either as on the Filecoin Slack, or open a new discussion in fvm-specs.
If you'd like to report a bug or suggest an enhancement in the reference FVM implementation, please file an issue.
To make a change to the FVM.
- When in doubt, open an issue first to discuss the change.
- Make your change.
- Write a test for your change.
- Update the crate's
CHANGELOG.md
. If you're making any breaking changes, prefix change with "BREAKING:". - Finally, open a PR.
To prepare a release.
- Pick a next version (for each crate you're releasing). Look through the changelogs and carefully decide if it's a breaking release or not. Then read rust's semver documentation.
- Install
cargo-edit
(cargo install cargo-edit
). - Create a new branch.
- Use
cargo set-version
to set the version for each crate you're releasing. This will both update the crate version, and make all other crates in the workspace depend on the latest version. - Make sure the changelogs are all up-to-date, set the release date & version, and add a new "Unreleased" section.
- Commit your changes, and make a PR.
Once the release is prepared, it'll go through a review:
- Make sure that we're ready to release. E.g., make sure downstream can consume the release.
- Make sure that we're correctly following semver.
- Make sure that we're not missing anything in the changelogs.
Finally, an FVM "owner" will:
- Merge the release PR to master.
- For each released crate, create a git:
crate_name@crate_version
. - Run
cargo publish
for each released crate (in dependency order).