From 30444ce296ddd65daa95f1e3e9a00e50ae09bc8e Mon Sep 17 00:00:00 2001 From: kingchenc Date: Sat, 23 May 2026 20:22:35 +0200 Subject: [PATCH] build: lift MSRV to 1.80 workspace / 1.88 node binding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous MSRV pins were below what current transitive dependencies need: - rayon-core 1.13.0 (pulled in by the optional `parallel` feature on wickra-core via rayon) requires rustc >= 1.80; under the old 1.75 workspace MSRV the CI MSRV job broke with "package `rayon-core v1.13.0` cannot be built because it requires rustc 1.80 or newer". - napi-build 2.3.2 (the build-script crate that napi-derive 2.x calls into) requires rustc >= 1.88; under the old 1.77 node-binding MSRV the CI MSRV-node job broke with "package `napi-build v2.3.2` cannot be built because it requires rustc 1.88 or newer". Pinning the deps backwards would have frozen us out of upstream security/fix releases for both crates. Lifting the MSRV is the cleaner path for a young 0.x library — downstream consumers on older toolchains can stay on the already-published 0.2.0. Updated: - Cargo.toml workspace rust-version 1.75 -> 1.80 - bindings/node/Cargo.toml rust-version 1.77 -> 1.88 - .github/workflows/ci.yml MSRV matrix names + toolchain values + comment - CHANGELOG.md [Unreleased] documents the bump --- .github/workflows/ci.yml | 17 ++++++++++------- CHANGELOG.md | 11 +++++++++++ Cargo.toml | 2 +- bindings/node/Cargo.toml | 8 +++++--- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ab871f7d..a2446471 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,9 +56,12 @@ 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.75"; bindings/node needs - # 1.77 because napi-build emits `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.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. msrv: name: ${{ matrix.name }} runs-on: ubuntu-latest @@ -66,11 +69,11 @@ jobs: fail-fast: false matrix: include: - - name: MSRV workspace (Rust 1.75) - toolchain: "1.75" + - name: MSRV workspace (Rust 1.80) + toolchain: "1.80" packages: "-p wickra-core -p wickra -p wickra-data" - - name: MSRV node binding (Rust 1.77) - toolchain: "1.77" + - name: MSRV node binding (Rust 1.88) + toolchain: "1.88" packages: "-p wickra-node" steps: - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d14602c..e3ed7cc3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,17 @@ 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** + (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 + library. Downstream consumers on older Rust toolchains can stay on + Wickra 0.2.0. + ## [0.2.0] - 2026-05-23 ### Fixed diff --git a/Cargo.toml b/Cargo.toml index e40b8fd2..68c0e545 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,7 @@ exclude = ["fuzz"] version = "0.2.0" authors = ["kingchenc "] edition = "2021" -rust-version = "1.75" +rust-version = "1.80" license = "PolyForm-Noncommercial-1.0.0" repository = "https://github.com/kingchenc/wickra" homepage = "https://github.com/kingchenc/wickra" diff --git a/bindings/node/Cargo.toml b/bindings/node/Cargo.toml index 7a2c0050..85db5c29 100644 --- a/bindings/node/Cargo.toml +++ b/bindings/node/Cargo.toml @@ -4,9 +4,11 @@ description = "Node.js bindings for the Wickra streaming-first technical indicat version.workspace = true authors.workspace = true edition.workspace = true -# napi-build emits `cargo::` directives that require Rust >= 1.77; the rest of -# the workspace stays at 1.75 because the core crate has no such dependency. -rust-version = "1.77" +# napi-build 2.3.2 requires Rust >= 1.88 (newer than the workspace 1.80 +# minimum, which itself was lifted to satisfy rayon-core 1.13.0). napi-build +# also emits `cargo::` directives that require >= 1.77 — that older floor is +# subsumed by the 1.88 requirement now. +rust-version = "1.88" license.workspace = true repository.workspace = true homepage.workspace = true