build: lift workspace MSRV further to 1.85 for criterion's clap_lex

The first MSRV bump to 1.80 fixed the rayon-core floor but ran into a
second transitive-dep floor on the same CI run:

    error: failed to parse manifest at clap_lex-1.1.0/Cargo.toml
    Caused by: feature `edition2024` is required
    The package requires the Cargo feature called `edition2024`, but
    that feature is not stabilized in this version of Cargo (1.80.1).

clap_lex 1.1.0 is pulled in by criterion (dev-dep on the wickra crate)
via clap 4.6 -> clap_builder 4.6 -> clap_lex 1.1. edition2024 was
stabilized in Rust 1.85, so lift the workspace MSRV one more step. The
1.85 floor subsumes the rayon-core 1.80 requirement; bindings/node
stays at 1.88 (napi-build) which already covers everything below it.

Also fix the fuzz job: cargo-fuzz defaulted to building for
x86_64-unknown-linux-musl, which is not installed on the GitHub-hosted
ubuntu runner. Pass --target x86_64-unknown-linux-gnu explicitly on
every cargo fuzz run invocation so it builds for the actual host
target.
This commit is contained in:
kingchenc
2026-05-23 20:30:46 +02:00
parent 30444ce296
commit 3f9429dd2c
3 changed files with 22 additions and 19 deletions
+15 -13
View File
@@ -56,12 +56,14 @@ jobs:
run: cargo build -p wickra-examples --bins run: cargo build -p wickra-examples --bins
# Verify the crates still build and test on their declared minimum supported # Verify the crates still build and test on their declared minimum supported
# Rust version. The workspace pins rust-version = "1.80" (raised from 1.75 # Rust version. The workspace pins rust-version = "1.85" — that floor is
# so rayon-core >= 1.13.0 keeps compiling); bindings/node pins # set by clap_lex 1.1.0 (transitively pulled in by the criterion dev-dep)
# rust-version = "1.88" because napi-build 2.3.2 requires it (and that # which needs the stabilized edition2024 feature (stable since Rust 1.85);
# subsumes the older 1.77 floor needed for `cargo::` directives). Without # rayon-core 1.13.0 only needed 1.80 and is subsumed by the 1.85 floor.
# this job an accidental use of a newer API would only surface for # bindings/node pins rust-version = "1.88" because napi-build 2.3.2
# downstream users. # requires it (and that subsumes the older 1.77 floor needed for
# `cargo::` directives). Without this job an accidental use of a newer
# API would only surface for downstream users.
msrv: msrv:
name: ${{ matrix.name }} name: ${{ matrix.name }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -69,8 +71,8 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- name: MSRV workspace (Rust 1.80) - name: MSRV workspace (Rust 1.85)
toolchain: "1.80" toolchain: "1.85"
packages: "-p wickra-core -p wickra -p wickra-data" packages: "-p wickra-core -p wickra -p wickra-data"
- name: MSRV node binding (Rust 1.88) - name: MSRV node binding (Rust 1.88)
toolchain: "1.88" toolchain: "1.88"
@@ -174,23 +176,23 @@ jobs:
tool: cargo-fuzz tool: cargo-fuzz
- name: Fuzz csv_reader (30 s) - name: Fuzz csv_reader (30 s)
run: cargo +nightly fuzz run csv_reader -- -max_total_time=30 run: cargo +nightly fuzz run --target x86_64-unknown-linux-gnu csv_reader -- -max_total_time=30
working-directory: fuzz working-directory: fuzz
- name: Fuzz binance_envelope (30 s) - name: Fuzz binance_envelope (30 s)
run: cargo +nightly fuzz run binance_envelope -- -max_total_time=30 run: cargo +nightly fuzz run --target x86_64-unknown-linux-gnu binance_envelope -- -max_total_time=30
working-directory: fuzz working-directory: fuzz
- name: Fuzz indicator_update (30 s) - name: Fuzz indicator_update (30 s)
run: cargo +nightly fuzz run indicator_update -- -max_total_time=30 run: cargo +nightly fuzz run --target x86_64-unknown-linux-gnu indicator_update -- -max_total_time=30
working-directory: fuzz working-directory: fuzz
- name: Fuzz indicator_update_candle (30 s) - name: Fuzz indicator_update_candle (30 s)
run: cargo +nightly fuzz run indicator_update_candle -- -max_total_time=30 run: cargo +nightly fuzz run --target x86_64-unknown-linux-gnu indicator_update_candle -- -max_total_time=30
working-directory: fuzz working-directory: fuzz
- name: Fuzz tick_aggregator (30 s) - name: Fuzz tick_aggregator (30 s)
run: cargo +nightly fuzz run tick_aggregator -- -max_total_time=30 run: cargo +nightly fuzz run --target x86_64-unknown-linux-gnu tick_aggregator -- -max_total_time=30
working-directory: fuzz working-directory: fuzz
python: python:
+6 -5
View File
@@ -8,13 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased] ## [Unreleased]
### Changed ### Changed
- **MSRV bumped.** Workspace minimum supported Rust version is now **1.80** - **MSRV bumped.** Workspace minimum supported Rust version is now **1.85**
(was 1.75) and the Node binding (`wickra-node`) is now **1.88** (was 1.77). (was 1.75) and the Node binding (`wickra-node`) is now **1.88** (was 1.77).
The bumps are driven by transitive-dependency floors that were lifted in The bumps are driven by transitive-dependency floors that were lifted in
recent updates: `rayon-core >= 1.13.0` requires Rust 1.80, and recent updates: `clap_lex >= 1.1.0` (pulled in via the criterion dev-dep)
`napi-build >= 2.3.2` requires Rust 1.88. Pinning the deps to the older requires the stabilized `edition2024` feature (stable since Rust 1.85),
versions would have frozen us out of future security fixes from those and `napi-build >= 2.3.2` requires Rust 1.88. Pinning the deps to the
upstreams, so lifting the MSRV is the cleaner path for a young 0.x older versions would have frozen us out of future security fixes from
those upstreams, so lifting the MSRV is the cleaner path for a young 0.x
library. Downstream consumers on older Rust toolchains can stay on library. Downstream consumers on older Rust toolchains can stay on
Wickra 0.2.0. Wickra 0.2.0.
+1 -1
View File
@@ -15,7 +15,7 @@ exclude = ["fuzz"]
version = "0.2.0" version = "0.2.0"
authors = ["kingchenc <kingchencp@gmail.com>"] authors = ["kingchenc <kingchencp@gmail.com>"]
edition = "2021" edition = "2021"
rust-version = "1.80" rust-version = "1.85"
license = "PolyForm-Noncommercial-1.0.0" license = "PolyForm-Noncommercial-1.0.0"
repository = "https://github.com/kingchenc/wickra" repository = "https://github.com/kingchenc/wickra"
homepage = "https://github.com/kingchenc/wickra" homepage = "https://github.com/kingchenc/wickra"