build: lift MSRV to 1.80 workspace / 1.88 node binding

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
This commit is contained in:
kingchenc
2026-05-23 20:22:35 +02:00
parent 90d8a299c3
commit 30444ce296
4 changed files with 27 additions and 11 deletions
+10 -7
View File
@@ -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
+11
View File
@@ -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
+1 -1
View File
@@ -15,7 +15,7 @@ exclude = ["fuzz"]
version = "0.2.0"
authors = ["kingchenc <kingchencp@gmail.com>"]
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"
+5 -3
View File
@@ -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