diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index e0fedc97c..b9c1664b2 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -14,17 +14,18 @@ jobs: - name: "Read rust version" id: read_toolchain run: echo "rust_version=$(cat rust-version)" >> $GITHUB_OUTPUT - + build-test: needs: prepare - name: Build and test + name: Build & Test runs-on: ubuntu-latest strategy: matrix: rust: - version: ${{ needs.prepare.outputs.rust_version }} clippy: true - - version: 1.63.0 # MSRV + - version: 1.63.0 # Overall MSRV + - version: 1.75.0 # Specific MSRV for `bdk_electrum` features: - --no-default-features --features miniscript/no-std - --all-features @@ -39,26 +40,22 @@ jobs: profile: minimal - name: Rust Cache uses: Swatinem/rust-cache@v2.7.5 + - name: Pin dependencies for 1.75 + if: matrix.rust.version == '1.75.0' + run: | + cargo update -p home --precise "0.5.9" - name: Pin dependencies for MSRV if: matrix.rust.version == '1.63.0' + run: ./ci/pin-msrv.sh + - name: Build + Test run: | - cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5" - cargo update -p time --precise "0.3.20" - cargo update -p home --precise "0.5.5" - cargo update -p proptest --precise "1.2.0" - cargo update -p url --precise "2.5.0" - cargo update -p cc --precise "1.0.105" - cargo update -p tokio --precise "1.38.1" - cargo update -p tokio-util --precise "0.7.11" - cargo update -p indexmap --precise "2.5.0" - cargo update -p security-framework-sys --precise "2.11.1" - cargo update -p csv --precise "1.3.0" - cargo update -p unicode-width --precise "0.1.13" - cargo update -p rustls@0.23.21 --precise "0.23.19" - - name: Build - run: cargo build --workspace --exclude 'example_*' ${{ matrix.features }} - - name: Test - run: cargo test --workspace --exclude 'example_*' ${{ matrix.features }} + if [ "${{matrix.rust.version}}" = '1.63.0' ]; then + cargo build --workspace --exclude 'example_*' --exclude 'bdk_electrum' ${{ matrix.features }} + cargo test --workspace --exclude 'example_*' --exclude 'bdk_electrum' ${{ matrix.features }} + else + cargo build --workspace --exclude 'example_*' ${{ matrix.features }} + cargo test --workspace --exclude 'example_*' ${{ matrix.features }} + fi check-no-std: needs: prepare @@ -138,6 +135,7 @@ jobs: clippy_check: needs: prepare + name: Rust clippy runs-on: ubuntu-latest permissions: checks: write diff --git a/README.md b/README.md index cdc3df726..c6c212f1f 100644 --- a/README.md +++ b/README.md @@ -63,25 +63,17 @@ Fully working examples of how to use these components are in `/example-crates`: [`bdk_chain`]: https://docs.rs/bdk-chain/ ## Minimum Supported Rust Version (MSRV) -This library should compile with any combination of features with Rust 1.63.0. - -To build with the MSRV you will need to pin dependencies as follows: - -```shell -cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5" -cargo update -p time --precise "0.3.20" -cargo update -p home --precise "0.5.5" -cargo update -p proptest --precise "1.2.0" -cargo update -p url --precise "2.5.0" -cargo update -p cc --precise "1.0.105" -cargo update -p tokio --precise "1.38.1" -cargo update -p tokio-util --precise "0.7.11" -cargo update -p indexmap --precise "2.5.0" -cargo update -p security-framework-sys --precise "2.11.1" -cargo update -p csv --precise "1.3.0" -cargo update -p unicode-width --precise "0.1.13" -cargo update -p rustls@0.23.21 --precise "0.23.19" -``` +The BDK library maintains a MSRV of 1.63.0. This includes the following crates: + +- `bdk_core` +- `bdk_chain` +- `bdk_bitcoind_rpc`. +- `bdk_esplora`. +- `bdk_wallet`. + +The MSRV of `bdk_electrum` is 1.75.0. + +To build with the MSRV of 1.63.0 you will need to pin dependencies by running the [`pin-msrv.sh`](./ci/pin-msrv.sh) script. ## License diff --git a/ci/pin-msrv.sh b/ci/pin-msrv.sh new file mode 100755 index 000000000..214ab649d --- /dev/null +++ b/ci/pin-msrv.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +set -x +set -euo pipefail + +# Pin dependencies for MSRV + +# To pin deps, switch toolchain to MSRV and execute the below updates + +# cargo clean +# rustup override set 1.63.0 + +cargo update -p zstd-sys --precise "2.0.8+zstd.1.5.5" +cargo update -p time --precise "0.3.20" +cargo update -p home --precise "0.5.5" +cargo update -p proptest --precise "1.2.0" +cargo update -p url --precise "2.5.0" +cargo update -p cc --precise "1.0.105" +cargo update -p tokio --precise "1.38.1" +cargo update -p tokio-util --precise "0.7.11" +cargo update -p indexmap --precise "2.5.0" +cargo update -p security-framework-sys --precise "2.11.1" +cargo update -p csv --precise "1.3.0" +cargo update -p unicode-width --precise "0.1.13" diff --git a/crates/electrum/README.md b/crates/electrum/README.md index 1bafe04eb..efe7109cb 100644 --- a/crates/electrum/README.md +++ b/crates/electrum/README.md @@ -3,5 +3,13 @@ BDK Electrum extends [`electrum-client`] to update [`bdk_chain`] structures from an Electrum server. +## Minimum Supported Rust Version (MSRV) +This crate has a MSRV of 1.75.0. + +To build with MSRV you will need to pin dependencies as follows: +```shell +cargo update -p home --precise "0.5.9" +``` + [`electrum-client`]: https://docs.rs/electrum-client/ [`bdk_chain`]: https://docs.rs/bdk-chain/