diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40a7dbaf..592f5f31 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: - args_20 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 - uses: taiki-e/install-action@cargo-binstall @@ -54,7 +54,7 @@ jobs: compilation-benchmarks: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 - run: ./scripts/install/hyperfine.sh @@ -63,7 +63,7 @@ jobs: version-sync: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: ./scripts/sync-version.sh env: # Use `cargo` pre-installed in the Github Managed runner image @@ -77,7 +77,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 # There is a pre-installed cargo in the Github Managed runner image # which is totally fine for simple `cargo fetch` usage. @@ -106,7 +106,7 @@ jobs: locked: [--locked, ""] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: # rust-src is required to make sure compile errors on CI are rendered @@ -159,7 +159,7 @@ jobs: - 1.61.0 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: clippy @@ -181,7 +181,7 @@ jobs: locked: [--locked, ""] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: ${{ matrix.toolchain }} @@ -208,7 +208,7 @@ jobs: locked: [--locked, ""] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: toolchain: nightly-2025-07-12 @@ -233,14 +233,14 @@ jobs: os: [ubuntu, windows, macos] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 - run: cargo doc --no-deps cargo-fmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: rustfmt @@ -252,7 +252,7 @@ jobs: cargo-machete: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: scripts/install/cargo-machete.sh - run: cargo-machete @@ -260,7 +260,7 @@ jobs: taplo-fmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: scripts/install/taplo.sh - run: taplo fmt --check @@ -268,7 +268,7 @@ jobs: prettier: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: npm ci - run: npx prettier --check . @@ -276,18 +276,18 @@ jobs: typos: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 - - uses: crate-ci/typos@v1.34.0 + - uses: actions/checkout@v6 + - uses: crate-ci/typos@v1.41.0 website-build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Needed for "lastUpdated" property in VitePress fetch-depth: 0 - - uses: actions/setup-node@v5 + - uses: actions/setup-node@v6 with: node-version: 24 cache: npm diff --git a/.github/workflows/deploy-website.yml b/.github/workflows/deploy-website.yml index f6dd4720..5de22491 100644 --- a/.github/workflows/deploy-website.yml +++ b/.github/workflows/deploy-website.yml @@ -21,12 +21,12 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Needed for "lastUpdated" property in VitePress fetch-depth: 0 - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v6 with: node-version: 24 cache: npm @@ -37,7 +37,7 @@ jobs: - run: npm ci - run: npm run build - - uses: actions/upload-pages-artifact@v3 + - uses: actions/upload-pages-artifact@v4 with: path: website/.vitepress/dist diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f8dc5461..8c3e2d36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: release-rust-crates: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Needed to clone all the git history, which is necessary to determine # the next version and build the changelog. diff --git a/Cargo.lock b/Cargo.lock index 953eebd5..9b941116 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,6 +26,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloca" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7d05ea6aea7e9e64d25b9156ba2fee3fdd659e34e41063cd2fc7cd020d7f4" +dependencies = [ + "cc", +] + [[package]] name = "anes" version = "0.1.6" @@ -96,7 +105,7 @@ dependencies = [ name = "bon-macros" version = "3.8.1" dependencies = [ - "darling 0.21.3", + "darling 0.23.0", "expect-test", "ident_case", "prettyplease", @@ -141,6 +150,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +[[package]] +name = "cc" +version = "1.2.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203" +dependencies = [ + "find-msvc-tools", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.3" @@ -220,10 +239,11 @@ dependencies = [ [[package]] name = "criterion" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" +checksum = "4d883447757bb0ee46f233e9dc22eb84d93a9508c9b868687b274fc431d886bf" dependencies = [ + "alloca", "anes", "cast", "ciborium", @@ -232,6 +252,7 @@ dependencies = [ "itertools 0.13.0", "num-traits", "oorandom", + "page_size", "plotters", "rayon", "regex", @@ -243,9 +264,9 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.6.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" +checksum = "ed943f81ea2faa8dcecbbfa50164acf95d555afec96a27871663b300e387b2e4" dependencies = [ "cast", "itertools 0.13.0", @@ -294,12 +315,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdf337090841a411e2a7f3deb9187445851f91b309c0c0a29e05f74a00a48c0" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" dependencies = [ - "darling_core 0.21.3", - "darling_macro 0.21.3", + "darling_core 0.23.0", + "darling_macro 0.23.0", ] [[package]] @@ -318,11 +339,10 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" dependencies = [ - "fnv", "ident_case", "proc-macro2", "quote", @@ -343,11 +363,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.21.3" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ - "darling_core 0.21.3", + "darling_core 0.23.0", "quote", "syn", ] @@ -446,6 +466,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff" + [[package]] name = "fnv" version = "1.0.7" @@ -691,6 +717,16 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "page_size" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d5b2194ed13191c1999ae0704b7839fb18384fa22e49b57eeaa97d79ce40da" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "paste" version = "1.0.15" @@ -934,6 +970,12 @@ dependencies = [ "serde_core", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "slab" version = "0.4.11" @@ -1094,18 +1136,18 @@ dependencies = [ [[package]] name = "typed-builder" -version = "0.22.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398a3a3c918c96de527dc11e6e846cd549d4508030b8a33e1da12789c856b81a" +checksum = "31aa81521b70f94402501d848ccc0ecaa8f93c8eb6999eb9747e72287757ffda" dependencies = [ "typed-builder-macro", ] [[package]] name = "typed-builder-macro" -version = "0.22.0" +version = "0.23.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" +checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" dependencies = [ "proc-macro2", "quote", @@ -1203,6 +1245,22 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + [[package]] name = "winapi-util" version = "0.1.11" @@ -1212,6 +1270,12 @@ dependencies = [ "windows-sys 0.61.1", ] +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-link" version = "0.2.0" diff --git a/benchmarks/compilation/Cargo.toml b/benchmarks/compilation/Cargo.toml index 9f689572..1a864b93 100644 --- a/benchmarks/compilation/Cargo.toml +++ b/benchmarks/compilation/Cargo.toml @@ -15,7 +15,7 @@ version = "0.1.0" bon = { path = "../../bon", optional = true, features = ["experimental-overwritable"] } cfg-if = "1.0" derive_builder = { version = "0.20", optional = true } -typed-builder = { version = "0.22", optional = true } +typed-builder = { version = "0.23", optional = true } [lints] workspace = true diff --git a/benchmarks/runtime/Cargo.toml b/benchmarks/runtime/Cargo.toml index 8625a088..d7579bf3 100644 --- a/benchmarks/runtime/Cargo.toml +++ b/benchmarks/runtime/Cargo.toml @@ -35,5 +35,5 @@ bon = { path = "../../bon" } cfg-if = "1.0" [dev-dependencies] -criterion = "0.7" +criterion = "0.8" gungraun = "0.17" diff --git a/bon-macros/Cargo.toml b/bon-macros/Cargo.toml index 52551432..630f4ca8 100644 --- a/bon-macros/Cargo.toml +++ b/bon-macros/Cargo.toml @@ -39,10 +39,12 @@ workspace = true proc-macro = true [dependencies] - -# Patch version 0.20.7 of darling added `flatten` feature. We use it, so we -# need to specify an explicit patch version requirement -darling = "0.21.0" +# Darling `0.23` updated MSRV to `1.88+` without other code changes. +# Therefore, it should be compatible with `0.22` as well. +# +# Version `0.20` is the version of `darling` available in Debian packages: +# https://salsa.debian.org/rust-team/debcargo-conf. We keep support for it. +darling = ">=0.20.0, <0.24.0" # This dependency is used by `darling` itself, so we use it as well for case # conversions to share the same dependency. diff --git a/bon-sandbox/Cargo.toml b/bon-sandbox/Cargo.toml index 8feaa465..d9a155f5 100644 --- a/bon-sandbox/Cargo.toml +++ b/bon-sandbox/Cargo.toml @@ -31,7 +31,7 @@ workspace = true [dependencies] buildstructor = "0.6" derive_builder = "0.20" -typed-builder = "0.22" +typed-builder = "0.23" [dependencies.bon] features = ["experimental-overwritable"] diff --git a/scripts/install/cargo-machete.sh b/scripts/install/cargo-machete.sh index 6e62e3ef..27c1c706 100755 --- a/scripts/install/cargo-machete.sh +++ b/scripts/install/cargo-machete.sh @@ -4,7 +4,7 @@ set -euo pipefail . "$(dirname "${BASH_SOURCE[0]}")/lib.sh" -: "${TOOL_VERSION:=0.6.2}" +: "${TOOL_VERSION:=0.9.1}" base_url=https://github.com/bnjbvr/cargo-machete/releases/download/v$TOOL_VERSION file_stem=cargo-machete-v$TOOL_VERSION-$arch_rust-unknown-linux-musl diff --git a/scripts/install/hyperfine.sh b/scripts/install/hyperfine.sh index 4da5c6be..68da0f09 100755 --- a/scripts/install/hyperfine.sh +++ b/scripts/install/hyperfine.sh @@ -4,7 +4,7 @@ set -euo pipefail . "$(dirname "${BASH_SOURCE[0]}")/lib.sh" -: "${TOOL_VERSION:=1.18.0}" +: "${TOOL_VERSION:=1.20.0}" base_url=https://github.com/sharkdp/hyperfine/releases/download/v$TOOL_VERSION file_stem=hyperfine-v$TOOL_VERSION-$arch_rust-unknown-linux-musl diff --git a/scripts/install/taplo.sh b/scripts/install/taplo.sh index 6e0d31e5..260d2774 100755 --- a/scripts/install/taplo.sh +++ b/scripts/install/taplo.sh @@ -4,7 +4,7 @@ set -euo pipefail . "$(dirname "${BASH_SOURCE[0]}")/lib.sh" -: "${TOOL_VERSION:=0.9.2}" +: "${TOOL_VERSION:=0.10.0}" base_url=https://github.com/tamasfe/taplo/releases/download/$TOOL_VERSION diff --git a/scripts/test-msrv.sh b/scripts/test-msrv.sh index 05a42e0c..0a5bf9e4 100755 --- a/scripts/test-msrv.sh +++ b/scripts/test-msrv.sh @@ -34,6 +34,7 @@ with_log cd bon step echo '[workspace]' >> Cargo.toml +step cargo update --precise 0.21.3 -p darling step cargo update --precise 1.0.15 -p itoa step cargo update --precise 1.0.101 -p proc-macro2 step cargo update --precise 1.0.40 -p quote diff --git a/website/doctests/Cargo.toml b/website/doctests/Cargo.toml index 7d0b47ec..8ab9e1b0 100644 --- a/website/doctests/Cargo.toml +++ b/website/doctests/Cargo.toml @@ -17,7 +17,7 @@ bon = { path = "../../bon", features = ["experimental-overwrit buildstructor = "0.6" macro_rules_attribute = "0.2" tokio = { version = "1.47", features = ["macros", "rt-multi-thread"] } -typed-builder = "0.22" +typed-builder = "0.23" [build-dependencies] itertools = "0.14"