diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 3dbeaf4..a218b7e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -30,19 +30,16 @@ jobs: - macos - ubuntu - windows - toolchain: - - stable - - 1.62.1 - name: Test ${{ matrix.platform }} with Rust ${{ matrix.toolchain }} + name: Test ${{ matrix.platform }} runs-on: "${{ matrix.platform }}-latest" steps: - uses: actions/checkout@v3 - name: Configure toolchain run: | - rustup toolchain install ${{ matrix.toolchain }} --profile minimal --no-self-update - rustup default ${{ matrix.toolchain }} + rustup toolchain install --profile minimal --no-self-update stable + rustup default stable # https://github.com/actions/cache/issues/752 - if: ${{ runner.os == 'Windows' }} @@ -59,19 +56,16 @@ jobs: ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ - key: ${{ runner.os }}-cargo-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-cargo-stable-${{ hashFiles('**/Cargo.lock') }} restore-keys: | - ${{ runner.os }}-cargo-${{ matrix.toolchain }}- + ${{ runner.os }}-cargo-stable- ${{ runner.os }}-cargo- - name: Compilation caching uses: actions/cache@v3 with: path: target/ - key: ${{ runner.os }}-target-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.lock') }} - - - if: matrix.toolchain != 'stable' - run: echo "flags=--locked" >> $GITHUB_ENV + key: ${{ runner.os }}-target-stable-${{ hashFiles('**/Cargo.lock') }} - name: Run test suite run: cargo test ${{ env.flags }} diff --git a/README.md b/README.md index d9ca33d..1621733 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ More usage examples: [in the CLI README](./crates/cli/#usage-examples)! - With [your package manager](./doc/packages.md) for Arch, Debian, Homebrew, Nix, Scoop, Chocolatey… - From binary with [Binstall](https://github.com/cargo-bins/cargo-binstall): `cargo binstall watchexec-cli` - As [pre-built binary package from Github](https://github.com/watchexec/watchexec/releases/latest) -- From source with Cargo: `cargo install watchexec-cli` +- From source with Cargo: `cargo install --locked watchexec-cli` All options in detail: [in the CLI README](./crates/cli/#installation) and [in the manual page](./doc/watchexec.1.ronn). diff --git a/crates/filterer/globset/CHANGELOG.md b/crates/filterer/globset/CHANGELOG.md index c88d193..9734826 100644 --- a/crates/filterer/globset/CHANGELOG.md +++ b/crates/filterer/globset/CHANGELOG.md @@ -2,6 +2,8 @@ ## Next (YYYY-MM-DD) +- Ditch MSRV policy. The `rust-version` indication will remain, for the minimum estimated Rust version for the code features used in the crate's own code, but dependencies may have already moved on. From now on, only latest stable is assumed and tested for. ([#510](https://github.com/watchexec/watchexec/pull/510)) + ## v1.1.0 (2023-01-09) - MSRV: bump to 1.61.0 diff --git a/crates/filterer/globset/README.md b/crates/filterer/globset/README.md index c15c019..20bca48 100644 --- a/crates/filterer/globset/README.md +++ b/crates/filterer/globset/README.md @@ -9,7 +9,6 @@ _The default filterer implementation for Watchexec._ - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.61.0 (incurs a minor semver bump). - Status: maintained. [docs]: https://docs.rs/watchexec-filterer-globset diff --git a/crates/filterer/ignore/CHANGELOG.md b/crates/filterer/ignore/CHANGELOG.md index cf42d47..bf366f3 100644 --- a/crates/filterer/ignore/CHANGELOG.md +++ b/crates/filterer/ignore/CHANGELOG.md @@ -2,6 +2,8 @@ ## Next (YYYY-MM-DD) +- Ditch MSRV policy. The `rust-version` indication will remain, for the minimum estimated Rust version for the code features used in the crate's own code, but dependencies may have already moved on. From now on, only latest stable is assumed and tested for. ([#510](https://github.com/watchexec/watchexec/pull/510)) + ## v1.1.0 (2023-01-09) - MSRV: bump to 1.61.0 diff --git a/crates/filterer/ignore/README.md b/crates/filterer/ignore/README.md index 76c07e1..6180e4d 100644 --- a/crates/filterer/ignore/README.md +++ b/crates/filterer/ignore/README.md @@ -9,7 +9,6 @@ _(Sub)filterer implementation for ignore files._ - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.61.0 (incurs a minor semver bump). - Status: maintained. This is mostly a thin layer above the [ignore-files](../../ignore-files) crate, and is meant to be diff --git a/crates/filterer/tagged/CHANGELOG.md b/crates/filterer/tagged/CHANGELOG.md index 74c2b46..7789cb2 100644 --- a/crates/filterer/tagged/CHANGELOG.md +++ b/crates/filterer/tagged/CHANGELOG.md @@ -2,6 +2,8 @@ ## Next (YYYY-MM-DD) +- Ditch MSRV policy. The `rust-version` indication will remain, for the minimum estimated Rust version for the code features used in the crate's own code, but dependencies may have already moved on. From now on, only latest stable is assumed and tested for. ([#510](https://github.com/watchexec/watchexec/pull/510)) + ## v0.2.0 (2023-01-09) - MSRV: bump to 1.61.0 diff --git a/crates/filterer/tagged/README.md b/crates/filterer/tagged/README.md index 02d3260..3f952b3 100644 --- a/crates/filterer/tagged/README.md +++ b/crates/filterer/tagged/README.md @@ -9,7 +9,6 @@ _Experimental filterer using tagged filters._ - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.61.0 (incurs a minor semver bump). - Status: maintained. [docs]: https://docs.rs/watchexec-filterer-tagged diff --git a/crates/ignore-files/README.md b/crates/ignore-files/README.md index 0cd7591..b67ebcc 100644 --- a/crates/ignore-files/README.md +++ b/crates/ignore-files/README.md @@ -1,7 +1,6 @@ [![Crates.io page](https://badgen.net/crates/v/ignore-files)](https://crates.io/crates/ignore-files) [![API Docs](https://docs.rs/ignore-files/badge.svg)][docs] [![Crate license: Apache 2.0](https://badgen.net/badge/license/Apache%202.0)][license] -![MSRV: 1.58.0 (minor)](https://badgen.net/badge/MSRV/1.58.0%20%28minor%29/0b7261) [![CI status](https://github.com/watchexec/watchexec/actions/workflows/check.yml/badge.svg)](https://github.com/watchexec/watchexec/actions/workflows/check.yml) # Ignore files @@ -10,7 +9,6 @@ _Find, parse, and interpret ignore files._ - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.58.0 (incurs a minor semver bump). - Status: done. [docs]: https://docs.rs/ignore-files diff --git a/crates/lib/CHANGELOG.md b/crates/lib/CHANGELOG.md index d2f5c7f..9c7eb75 100644 --- a/crates/lib/CHANGELOG.md +++ b/crates/lib/CHANGELOG.md @@ -2,6 +2,8 @@ ## Next (YYYY-MM-DD) +- Ditch MSRV policy. The `rust-version` indication will remain, for the minimum estimated Rust version for the code features used in the crate's own code, but dependencies may have already moved on. From now on, only latest stable is assumed and tested for. ([#510](https://github.com/watchexec/watchexec/pull/510)) + ## v2.1.1 (2023-02-14) ## v2.1.0 (2023-01-08) diff --git a/crates/lib/README.md b/crates/lib/README.md index c598594..ab8ab3f 100644 --- a/crates/lib/README.md +++ b/crates/lib/README.md @@ -1,7 +1,6 @@ [![Crates.io page](https://badgen.net/crates/v/watchexec)](https://crates.io/crates/watchexec) [![API Docs](https://docs.rs/watchexec/badge.svg)][docs] [![Crate license: Apache 2.0](https://badgen.net/badge/license/Apache%202.0)][license] -![MSRV: 1.61.0 (minor)](https://badgen.net/badge/MSRV/1.61.0%20%28minor%29/0b7261) [![CI status](https://github.com/watchexec/watchexec/actions/workflows/check.yml/badge.svg)](https://github.com/watchexec/watchexec/actions/workflows/check.yml) # Watchexec library @@ -10,7 +9,6 @@ _The library which powers [Watchexec CLI](https://watchexec.github.io) and other - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.61.0 (incurs a minor semver bump). - Status: maintained. [docs]: https://docs.rs/watchexec @@ -86,14 +84,14 @@ struct YourConfigFormat; impl YourConfigFormat { async fn load_from_file(_: &str The library also exposes a number of components which are available to make your own tool, or to make anything else you may want: -- **[Command handling](https://docs.rs/watchexec/2.0.0-pre.6/watchexec/command/index.html)**, to +- **[Command handling](https://docs.rs/watchexec/2/watchexec/command/index.html)**, to build a command with an arbitrary shell, deal with grouped and ungrouped processes the same way, and supervise a process while also listening for & acting on interventions such as sending signals. -- **Event sources**: [Filesystem](https://docs.rs/watchexec/2.0.0-pre.6/watchexec/fs/index.html), - [Signals](https://docs.rs/watchexec/2.0.0-pre.6/watchexec/signal/source/index.html), (more to come). +- **Event sources**: [Filesystem](https://docs.rs/watchexec/2/watchexec/fs/index.html), + [Signals](https://docs.rs/watchexec/2/watchexec/signal/source/index.html), (more to come). -- Finding **[a common prefix](https://docs.rs/watchexec/2.0.0-pre.6/watchexec/paths/fn.common_prefix.html)** +- Finding **[a common prefix](https://docs.rs/watchexec/2/watchexec/paths/fn.common_prefix.html)** of a set of paths. - And [more][docs]! @@ -123,3 +121,16 @@ There are also separate, standalone crates used to build Watchexec which you can - **[Project Origins](https://docs.rs/project-origins)** finds the origin (or root) path of a project, and what kind of project it is. + +## Rust version (MSRV) + +Due to the unpredictability of dependencies changing their MSRV, this library no longer tries to +keep to a minimum supported Rust version behind stable. Instead, it is assumed that developers use +the latest stable at all times. + +Applications that wish to support lower-than-stable Rust (such as the Watchexec CLI does) should: +- use a lock file +- recommend the use of `--locked` when installing from source +- provide pre-built binaries (and [Binstall](https://github.com/cargo-bins/cargo-binstall) support) for non-distro users +- avoid using newer features until some time has passed, to let distro users catch up +- consider recommending that distro-Rust users switch to distro `rustup` where available diff --git a/crates/project-origins/README.md b/crates/project-origins/README.md index 915c9e2..aca88e8 100644 --- a/crates/project-origins/README.md +++ b/crates/project-origins/README.md @@ -1,7 +1,6 @@ [![Crates.io page](https://badgen.net/crates/v/project-origins)](https://crates.io/crates/project-origins) [![API Docs](https://docs.rs/project-origins/badge.svg)][docs] [![Crate license: Apache 2.0](https://badgen.net/badge/license/Apache%202.0)][license] -![MSRV: 1.58.0 (minor)](https://badgen.net/badge/MSRV/1.58.0%20%28minor%29/0b7261) [![CI status](https://github.com/watchexec/watchexec/actions/workflows/check.yml/badge.svg)](https://github.com/watchexec/watchexec/actions/workflows/check.yml) # Project origins @@ -10,7 +9,6 @@ _Resolve project origins and kinds from a path._ - **[API documentation][docs]**. - Licensed under [Apache 2.0][license]. -- Minimum Supported Rust Version: 1.58.0 (incurs a minor semver bump). - Status: maintained. [docs]: https://docs.rs/project-origins diff --git a/doc/packages.md b/doc/packages.md index 194e7af..0ed6906 100644 --- a/doc/packages.md +++ b/doc/packages.md @@ -19,6 +19,6 @@ | Windows | Chocolatey | [`watchexec`](https://community.chocolatey.org/packages/watchexec) | community | `choco install watchexec` | | Windows | MSYS2 mingw | [`mingw-w64-watchexec`](https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-watchexec) | official | `pacman -S mingw-w64-x86_64-watchexec` | | Windows | Scoop | [`watchexec`](https://github.com/ScoopInstaller/Main/blob/master/bucket/watchexec.json) | official | `scoop install watchexec` | -| _Any_ | Crates.io | [`watchexec-cli`](https://crates.io/crates/watchexec-cli) | first-party | `cargo install watchexec-cli` | +| _Any_ | Crates.io | [`watchexec-cli`](https://crates.io/crates/watchexec-cli) | first-party | `cargo install --locked watchexec-cli` | | _Any_ | Binstall | [`watchexec-cli`](https://crates.io/crates/watchexec-cli) | first-party | `cargo binstall watchexec-cli` | | _Any_ | Webi | [`watchexec`](https://webinstall.dev/watchexec/) | third-party | varies (see webpage) |