Skip to content

Latest commit

 

History

History
63 lines (42 loc) · 2.11 KB

File metadata and controls

63 lines (42 loc) · 2.11 KB

Contributing

This document describes the process of contributing to the reference FVM implementation (this project).

Issues

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.

Pull Requests

To make a change to the FVM.

  1. When in doubt, open an issue first to discuss the change.
  2. Make your change.
  3. Write a test for your change.
  4. Update the crate's CHANGELOG.md. If you're making any breaking changes, prefix change with "BREAKING:".
  5. Finally, open a PR.

Terminology

Primary Crates

The primary crates are fvm, fvm_shared, fvm_sdk, and the integration testing framework fvm_integration_tests. These are the crates that have version.workspace = true.

Crate Dependency Graph

The crates in this workspace have the following structure:

Workspace Graph

Testing

All changes should be well tested.

Builtin-Actors Testing

If you're releasing any non-trivial changes to crates used by the builtin actors, please test them. This includes:

  • Any crates in ipld/ except car.
  • shared/ (fvm_shared).
  • sdk/ (fvm_sdk).

To test:

  1. Checkout this repo as ref-fvm/ and the builtin-actors repo as builtin-actors/ in the same directory.
  2. Uncomment the "patch" section in builtin-actors/Cargo.toml that starts with:
    [patch.crates-io]
    fvm_shared = { path = "../ref-fvm/shared" }
    ...
  3. Run cargo test --all (or, at a minimum, cargo check --all --tests --lib.

If that works, proceed with releasing these crates.

Releasing

See RELEASE.md for detailed release instructions.