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
# 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
# so rayon-core >= 1.13.0 keeps compiling); bindings/node pins
# rust-version = "1.88" because napi-build 2.3.2 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.
# Rust version. The workspace pins rust-version = "1.85" — that floor is
# set by clap_lex 1.1.0 (transitively pulled in by the criterion dev-dep)
# which needs the stabilized edition2024 feature (stable since Rust 1.85);
# rayon-core 1.13.0 only needed 1.80 and is subsumed by the 1.85 floor.
# bindings/node pins rust-version = "1.88" because napi-build 2.3.2
# 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:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
@@ -69,8 +71,8 @@ jobs:
fail-fast: false
matrix:
include:
- name: MSRV workspace (Rust 1.80)
toolchain: "1.80"
- name: MSRV workspace (Rust 1.85)
toolchain: "1.85"
packages: "-p wickra-core -p wickra -p wickra-data"
- name: MSRV node binding (Rust 1.88)
toolchain: "1.88"
@@ -174,23 +176,23 @@ jobs:
tool: cargo-fuzz
- 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
- 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
- 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
- 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
- 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
python:
+6 -5
View File
@@ -8,13 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
### 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).
The bumps are driven by transitive-dependency floors that were lifted in
recent updates: `rayon-core >= 1.13.0` requires Rust 1.80, and
`napi-build >= 2.3.2` requires Rust 1.88. Pinning the deps to the 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
recent updates: `clap_lex >= 1.1.0` (pulled in via the criterion dev-dep)
requires the stabilized `edition2024` feature (stable since Rust 1.85),
and `napi-build >= 2.3.2` requires Rust 1.88. Pinning the deps to the
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
Wickra 0.2.0.
+1 -1
View File
@@ -15,7 +15,7 @@ exclude = ["fuzz"]
version = "0.2.0"
authors = ["kingchenc <kingchencp@gmail.com>"]
edition = "2021"
rust-version = "1.80"
rust-version = "1.85"
license = "PolyForm-Noncommercial-1.0.0"
repository = "https://github.com/kingchenc/wickra"
homepage = "https://github.com/kingchenc/wickra"