PineAPPL

Contribution guide

Rust

Increasing the minimum supported Rust version (MSRV)

Do not change the MSRV for releases with increased patch version number. When increasing the MSRV make sure to set it everywhere to the same value:

  1. first update the container file maintainer/Containerfile, by
    • adding the new MSRV to the variable RUST_V,
    • making sure the nightly version is the last entry and
    • leaving in the previous MSRV to not break the CI in between the transition from it
    • removing the oldest stable version
  2. commit the previous changes and manually run the Container GitHub action
  3. next, update the MSRV in the following files:
    • in the top-level Cargo.toml; all other projects in the workspace should inherit the setting in their respective Cargo.toml files
    • in README.md and docs/installation.md
    • in .readthedocs.yml update the value of the rust field and make sure RTD supports it
  4. commit the previous changes and push them after the container created by step 2 is ready

Coding guidelines

Writing tests that need test data

Regression tests for GitHub Issues

If you’re writing a regression test for a GitHub Issue, name the test issue_XXX, where XXX is the GitHub Issue number.

Git

Making a new release

First make sure the release workflow works; since we’ve hard-coded runner image and action versions, it’s possible that some workflows must be updated if these images don’t exist anymore. To check whether that’s the case, manually trigger the following workflows:

This will not upload anything. Wait for the actions to finish, and fix problems in a separate branch.

Next, go to the maintainers directory, run

./make_release 0.5.4

and replace 0.5.4 with a version string, not including v at the start. The version strings must adhere to Semantic Versioning.

This will take care of almost everything: the C, Python and Rust interfaces and their documentation. After some time also a new Conda package will be generated, for which the pull request will have to be accepted manually though.

Updating the CI’s container

To update the software the CI runs with, modify maintainer/Containerfile maintainer/build-container.sh. See also maintainer/README.md for a description of what these files do. To generate a new container, you need to manually run the Container action from the branch in which you modified the container files. After the container has been generated, all following commits in every branch will use the new container.