Back to Rustfmt

Stabilising an Option

Processes.md

1.9.01.6 KB
Original Source

This document outlines processes regarding management of rustfmt.

Stabilising an Option

In this Section, we describe how to stabilise an option of the rustfmt's configuration.

Conditions

  • Is the default value correct ?
  • The design and implementation of the option are sound and clean.
  • The option is well tested, both in unit tests and, optimally, in real usage.
  • There is no open bug about the option that prevents its use.

Steps

Open a pull request that closes the tracking issue. The tracking issue is listed beside the option in Configurations.md.

  • Update the Config enum marking the option as stable.
  • Update the Configuration.md file marking the option as stable.
  • Update CHANGELOG.md marking the option as stable.

After the stabilisation

The option should remain backward-compatible with previous parameters of the option. For instance, if the option is an enum enum Foo { Alice, Bob } and the variant Foo::Bob is removed/renamed, existing use of the Foo::Bob variant should map to the new logic. Breaking changes can be applied under the condition they are version-gated.

Make a Release

0. Update CHANGELOG.md

1. Update Cargo.toml and Cargo.lock

For example, 1.0.0 -> 1.0.1:

diff
-version = "1.0.0"
+version = "1.0.1"

2. Push the commit to the main branch

E.g., https://github.com/rust-lang/rustfmt/commit/5274b49caa1a7db6ac10c76bf1a3d5710ccef569

3. Create a release tag

sh
git tag -s v1.2.3 -m "Release 1.2.3"

4. Publish to crates.io

cargo publish

5. Create a PR to rust-lang/rust to update the rustfmt submodule