Check minimum versions in CI (#5437)

* check minimum versions

* fix min lockfile

* fix clippy

* Delete .codex

* fix toml min version

* add cache to min-deps

---------

Co-authored-by: Jonathan Kelley <jkelleyrtp@gmail.com>
This commit is contained in:
Evan AlmloffandJonathan Kelley authored and GitHub committed 2026-04-03 15:51:42 -07:00
1 parent 6e5b370481
commit 14f3e71722
24 files changed
+87 -60

No files matched your search

+28
View File
@@ -580,6 +580,34 @@ jobs:
run: | run: |
${{ env.RUST_CARGO_COMMAND }} ${{ matrix.platform.command }} ${{ matrix.platform.args }} --target ${{ matrix.platform.target }} ${{ env.RUST_CARGO_COMMAND }} ${{ matrix.platform.command }} ${{ matrix.platform.args }} --target ${{ matrix.platform.target }}
# Verify that declared minimum dependency versions actually compile.
# Catches issues like https://github.com/DioxusLabs/dioxus/issues/5433 where
# the code uses APIs not available in the declared minimum version.
min-deps:
needs: check-paths
if: github.event.pull_request.draft == false && needs.check-paths.outputs.rust == 'true'
name: "Check | Minimum dependency versions"
runs-on: warp-ubuntu-latest-x64-4x
steps:
- uses: actions/checkout@v5
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: libwebkit2gtk-4.1-dev libgtk-3-dev libasound2-dev libudev-dev libayatana-appindicator3-dev libxdo-dev libglib2.0-dev
version: 1.0
- uses: dtolnay/rust-toolchain@nightly
with:
toolchain: ${{ env.rust_nightly }}
- uses: dtolnay/rust-toolchain@1.88.0
- uses: Swatinem/rust-cache@v2
with:
cache-all-crates: "true"
cache-workspace-crates: "true"
cache-provider: "warpbuild"
- name: Generate minimal-version lockfile
run: cargo +${{ env.rust_nightly }} update -Zdirect-minimal-versions
- name: Check workspace with minimum versions
run: cargo +1.88.0 check --workspace
nix: nix:
needs: check-paths needs: check-paths
if: github.event.pull_request.draft == false && needs.check-paths.outputs.rust == 'true' if: github.event.pull_request.draft == false && needs.check-paths.outputs.rust == 'true'
Generated
+2 -2
View File
@@ -10424,7 +10424,7 @@ dependencies = [
"dioxus-native-dom", "dioxus-native-dom",
"futures-util", "futures-util",
"pollster 0.4.0", "pollster 0.4.0",
"rustc-hash 1.1.0", "rustc-hash 2.1.1",
"tracing-subscriber", "tracing-subscriber",
"vello", "vello",
"wgpu 26.0.1", "wgpu 26.0.1",
@@ -10449,7 +10449,7 @@ dependencies = [
"dioxus-devtools", "dioxus-devtools",
"dioxus-native-dom", "dioxus-native-dom",
"paste", "paste",
"rustc-hash 1.1.0", "rustc-hash 2.1.1",
"tracing-subscriber", "tracing-subscriber",
"vello", "vello",
"wgpu 26.0.1", "wgpu 26.0.1",
+25 -25
View File
@@ -202,7 +202,7 @@ anyrender = { version = "0.6.2", default-features = false }
anyrender_vello = { version = "0.6", default-features = false } anyrender_vello = { version = "0.6", default-features = false }
anyrender_vello_cpu = { version = "0.8", default-features = false } anyrender_vello_cpu = { version = "0.8", default-features = false }
wgpu_context = { version = "0.1", default-features = false } wgpu_context = { version = "0.1", default-features = false }
wgpu = { version = "26.0" } wgpu = { version = "26.0.1" }
vello = "0.6" vello = "0.6"
bevy = "0.17" bevy = "0.17"
@@ -214,41 +214,41 @@ clap = { version = "4.5.40" }
askama_escape = "0.13.0" askama_escape = "0.13.0"
tracing = "0.1.41" tracing = "0.1.41"
tracing-futures = "0.2.5" tracing-futures = "0.2.5"
tracing-subscriber = { version = "0.3.19", default-features = false } tracing-subscriber = { version = "0.3.20", default-features = false }
toml = "0.8" toml = "0.8.23"
tokio = "1.48" tokio = "1.48"
tokio-util = { version = "0.7.15" } tokio-util = { version = "0.7.15" }
tokio-stream = { version = "0.1.17" } tokio-stream = { version = "0.1.17" }
slab = "0.4.10" slab = "0.4.10"
slotmap = { version = "1.0.7", features = ["serde"] } slotmap = { version = "1.0.7", features = ["serde"] }
futures = "0.3.31" futures = "0.3.32"
futures-channel = "0.3.31" futures-channel = "0.3.32"
futures-util = { version = "0.3", default-features = false } futures-util = { version = "0.3.32", default-features = false }
rustc-hash = "2.1.1" rustc-hash = "2.1.1"
wasm-bindgen = "0.2.114" wasm-bindgen = "0.2.100"
wasm-bindgen-futures = "0.4.50" wasm-bindgen-futures = "0.4.50"
js-sys = "0.3" js-sys = "0.3.77"
web-sys = { version = "0.3.77", default-features = false } web-sys = { version = "0.3.77", default-features = false }
html_parser = "0.7.0" html_parser = "0.7.0"
thiserror = "2.0.12" thiserror = "2.0.12"
prettyplease = { version = "0.2.35", features = ["verbatim"] } prettyplease = { version = "0.2.35", features = ["verbatim"] }
const_format = "0.2.34" const_format = "0.2.34"
cargo_toml = { version = "0.22.1" } cargo_toml = { version = "0.22.3" }
icns = "0.4.0" icns = "0.4.0"
image = "0.25" image = "0.25.6"
zip = { version = "4", default-features = false, features = ["deflate"] } zip = { version = "4", default-features = false, features = ["deflate"] }
sha1 = "0.10" sha1 = "0.10.6"
md5 = "0.8.0" md5 = "0.8.0"
rpm = { version = "0.19.0", default-features = false, features = ["gzip-compression"] } rpm = { version = "0.19.0", default-features = false, features = ["gzip-compression"] }
lru = "0.16.0" lru = "0.16.0"
async-trait = "0.1.88" async-trait = "0.1.88"
axum = { version = "0.8.4", default-features = false } axum = { version = "0.8.4", default-features = false }
axum-server = { version = "0.7.3", default-features = false } axum-server = { version = "0.7.3", default-features = false }
http-body = { version = "1.0" } http-body = { version = "1.0.1" }
tower = "0.5.2" tower = "0.5.2"
http = "1.3.1" http = "1.3.1"
notify = { version = "8.1.0" } notify = { version = "8.1.0" }
tower-http = "0.6.6" tower-http = "0.6.8"
hyper = "1.6.0" hyper = "1.6.0"
hyper-rustls = { version = "0.27.7", default-features = false, features = [ hyper-rustls = { version = "0.27.7", default-features = false, features = [
"native-tokio", "native-tokio",
@@ -265,17 +265,17 @@ rustls = { version = "0.23.28", default-features = false, features = [
"ring", "ring",
] } ] }
serde_json = "1.0.140" serde_json = "1.0.140"
serde = "1.0.219" serde = "1.0.225"
schemars = "1.0" schemars = "1.0"
syn = "2.0" syn = "2.0.104"
quote = "1.0" quote = "1.0.38"
axum-core = "0.5" axum-core = "0.5.2"
proc-macro2 = "1.0.101" proc-macro2 = "1.0.101"
axum_session = "0.16.0" axum_session = "0.16.0"
axum_session_auth = "0.16.0" axum_session_auth = "0.16.0"
axum_session_sqlx = "0.5.0" axum_session_sqlx = "0.5.0"
axum-extra = "0.10.1" axum-extra = "0.10.1"
reqwest = { version = "0.12.23", default-features = false } reqwest = { version = "0.12.28", default-features = false }
owo-colors = "4.2.2" owo-colors = "4.2.2"
ciborium = "0.2.2" ciborium = "0.2.2"
base64 = "0.22.1" base64 = "0.22.1"
@@ -291,7 +291,7 @@ chrono = { version = "0.4.39" }
rustversion = "1.0.21" rustversion = "1.0.21"
rand = "0.9" rand = "0.9"
longest-increasing-subsequence = "0.1.0" longest-increasing-subsequence = "0.1.0"
trybuild = "1.0" trybuild = "1.0.116"
dirs = "6.0.0" dirs = "6.0.0"
cargo-config2 = "0.1.34" cargo-config2 = "0.1.34"
criterion = { version = "0.6" } criterion = { version = "0.6" }
@@ -317,26 +317,26 @@ object = { version = "0.37.1" }
inventory = { version = "0.3" } inventory = { version = "0.3" }
macro-string = "0.1.4" macro-string = "0.1.4"
walkdir = "2.5.0" walkdir = "2.5.0"
url = "2" url = "2.5.4"
data-url = "0.3.2" data-url = "0.3.2"
separator = "0.4.1" separator = "0.4.1"
pretty_assertions = "1" pretty_assertions = "1"
serde_repr = "0.1" serde_repr = "0.1.19"
hyper-util = "0.1" hyper-util = "0.1.12"
krates = { version = "0.17.5" } krates = { version = "0.17.5" }
libloading = "0.8.8" libloading = "0.8.8"
libc = "0.2.174" libc = "0.2.174"
memmap2 = "0.9.5" memmap2 = "0.9.8"
memfd = "0.6.4" memfd = "0.6.4"
xxhash-rust = { version = "0.8.15", default-features = false } xxhash-rust = { version = "0.8.15", default-features = false }
serde_qs = "0.15.0" serde_qs = "0.15.0"
multer = "3.1.0" multer = "3.1.0"
const-str = "0.7.0" const-str = "0.7.0"
bytes = "1.10" bytes = "1.10.1"
send_wrapper = "0.6.0" send_wrapper = "0.6.0"
pin-project = { version = "1.1.10" } pin-project = { version = "1.1.10" }
postcard = { version = "1.1.3", default-features = false } postcard = { version = "1.1.3", default-features = false }
serde_urlencoded = "0.7" serde_urlencoded = "0.7.1"
form_urlencoded = "1.2.1" form_urlencoded = "1.2.1"
winnow = "0.7.14" winnow = "0.7.14"
+1 -1
View File
@@ -12,5 +12,5 @@ tracing = ["dep:tracing-subscriber", "dioxus-native/tracing"]
bevy = { workspace = true } bevy = { workspace = true }
dioxus-native = { workspace = true, features = ["prelude"] } dioxus-native = { workspace = true, features = ["prelude"] }
wgpu = { workspace = true } wgpu = { workspace = true }
color = "0.3" color = "0.3.2"
tracing-subscriber = { workspace = true, optional = true } tracing-subscriber = { workspace = true, optional = true }
@@ -28,8 +28,7 @@ tracing-subscriber = { workspace = true, optional = true }
bevy = { workspace = true } bevy = { workspace = true }
vello = { workspace = true } vello = { workspace = true }
bytes = { workspace = true } bytes = { workspace = true }
async-std = "1.13" async-std = "1.13.1"
crossbeam-channel = "0.5" crossbeam-channel = "0.5"
paste = "1.0" paste = "1.0.12"
rustc-hash = "1" rustc-hash = { workspace = true }
@@ -13,13 +13,13 @@ dioxus = { workspace = true, features = ["html", "hooks", "signals"] }
dioxus-native-dom = { workspace = true } dioxus-native-dom = { workspace = true }
anyrender_vello = { workspace = true } anyrender_vello = { workspace = true }
vello = { workspace = true } vello = { workspace = true }
rustc-hash = "1" rustc-hash = { workspace = true }
futures-util = { workspace = true } futures-util = { workspace = true }
tracing-subscriber = { workspace = true, optional = true } tracing-subscriber = { workspace = true, optional = true }
wgpu = { workspace = true } wgpu = { workspace = true }
wgpu_context = { workspace = true } wgpu_context = { workspace = true }
pollster = "0.4" pollster = "0.4"
bytemuck = "1" bytemuck = "1.23.2"
blitz-paint = { workspace = true, default-features = true } blitz-paint = { workspace = true, default-features = true }
blitz-traits = { workspace = true, default-features = true } blitz-traits = { workspace = true, default-features = true }
blitz-dom = { workspace = true, default-features = true } blitz-dom = { workspace = true, default-features = true }
@@ -15,7 +15,7 @@ tracing = ["dep:tracing-subscriber", "dioxus-native/tracing"]
dioxus-native = { workspace = true } dioxus-native = { workspace = true }
dioxus = { workspace = true } dioxus = { workspace = true }
wgpu = { workspace = true } wgpu = { workspace = true }
winit = "0.30" winit = { workspace = true }
bytemuck = "1" bytemuck = "1.23.2"
color = "0.3" color = "0.3.2"
tracing-subscriber = { workspace = true, optional = true } tracing-subscriber = { workspace = true, optional = true }
@@ -7,7 +7,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
@@ -16,4 +16,4 @@ default = []
server = ["dioxus/server", "dep:tokio"] server = ["dioxus/server", "dep:tokio"]
web = ["dioxus/web"] web = ["dioxus/web"]
+3 -3
View File
@@ -68,7 +68,7 @@ syn = { workspace = true, features = [
"visit-mut", "visit-mut",
] } ] }
walkdir = "2" walkdir = { workspace = true }
dunce = { workspace = true } dunce = { workspace = true }
# tools download # tools download
@@ -101,7 +101,7 @@ ignore = "0.4.23"
const-serialize = { workspace = true, features = ["serde"] } const-serialize = { workspace = true, features = ["serde"] }
const-serialize-07 = { package = "const-serialize", version = "=0.7.2", features = ["serde"] } const-serialize-07 = { package = "const-serialize", version = "=0.7.2", features = ["serde"] }
tracing-subscriber = { version = "0.3.19", features = [ tracing-subscriber = { workspace = true, features = [
"std", "std",
"env-filter", "env-filter",
"json", "json",
@@ -119,7 +119,7 @@ ratatui = { workspace = true, features = ["crossterm", "unstable"] }
shell-words = { workspace = true } shell-words = { workspace = true }
# disable `log` entirely since `walrus` uses it and is *much* slower with it enableda # disable `log` entirely since `walrus` uses it and is *much* slower with it enableda
log = { version = "0.4", features = ["max_level_off", "release_max_level_off"] } log = { version = "0.4.27", features = ["max_level_off", "release_max_level_off"] }
# link intercept # link intercept
tempfile = "3.19.1" tempfile = "3.19.1"
+1 -1
View File
@@ -4637,7 +4637,7 @@ impl BuildRequest {
// Get the strip setting from the profile or the profile it inherits from // Get the strip setting from the profile or the profile it inherits from
fn get_strip(profile: &Profile, profiles: &Profiles) -> Option<StripSetting> { fn get_strip(profile: &Profile, profiles: &Profiles) -> Option<StripSetting> {
profile.strip.or_else(|| { profile.strip.as_ref().copied().or_else(|| {
// If we can't find the strip setting, check if we inherit from another profile // If we can't find the strip setting, check if we inherit from another profile
profile.inherits.as_ref().and_then(|inherits| { profile.inherits.as_ref().and_then(|inherits| {
let profile = match inherits.as_str() { let profile = match inherits.as_str() {
+2 -2
View File
@@ -11,5 +11,5 @@ keywords = ["dom", "ui", "gui", "react"]
[dependencies] [dependencies]
schemars = "1.0.4" schemars = "1.0.4"
serde = { version = "1.0.219", features = ["derive"] } serde = { workspace = true, features = ["derive"] }
serde_json = "1.0.143" serde_json = { workspace = true }
+2 -2
View File
@@ -21,8 +21,8 @@ dioxus-asset-resolver = { workspace = true, features = ["native"] }
generational-box = { workspace = true } generational-box = { workspace = true }
dioxus-devtools = { workspace = true, optional = true } dioxus-devtools = { workspace = true, optional = true }
serde = "1.0.219" serde = { workspace = true }
serde_json = "1.0.140" serde_json = { workspace = true }
thiserror = { workspace = true } thiserror = { workspace = true }
tracing = { workspace = true } tracing = { workspace = true }
wry = { workspace = true, default-features = false, features = ["os-webview", "protocol", "drag-drop"] } wry = { workspace = true, default-features = false, features = ["os-webview", "protocol", "drag-drop"] }
+1 -1
View File
@@ -64,7 +64,7 @@ rkyv = { optional = true, default-features = true, version = "0.8" }
futures = { workspace = true, default-features = true } futures = { workspace = true, default-features = true }
pin-project = { workspace = true } pin-project = { workspace = true }
thiserror = { workspace = true } thiserror = { workspace = true }
bytes = {version = "1.10.1", features = ["serde"]} bytes = { workspace = true, features = ["serde"] }
tower-http = { workspace = true, features = ["fs"] } tower-http = { workspace = true, features = ["fs"] }
tower = { workspace = true, features = ["util"] } tower = { workspace = true, features = ["util"] }
tower-layer = { version = "0.3.3", optional = true } tower-layer = { version = "0.3.3", optional = true }
+1 -1
View File
@@ -72,7 +72,7 @@ async-stream = "0.3.6"
# websocket stuff # websocket stuff
# [target.'cfg(target_arch = "wasm32")'.dependencies] # [target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { version = "0.3", features = ["WebSocket", "CloseEvent", "ErrorEvent", "Event", "MessageEvent", "BinaryType", "FormData", "Response", "ReadableStream", "AbortController", "File", "ReadableStream", "HtmlFormElement", "FormData"], optional = true } web-sys = { workspace = true, features = ["WebSocket", "CloseEvent", "ErrorEvent", "Event", "MessageEvent", "BinaryType", "FormData", "Response", "ReadableStream", "AbortController", "File", "ReadableStream", "HtmlFormElement", "FormData"], optional = true }
gloo-net = "0.6.0" gloo-net = "0.6.0"
js-sys = { workspace = true } js-sys = { workspace = true }
wasm-bindgen = { workspace = true } wasm-bindgen = { workspace = true }
+1 -1
View File
@@ -36,7 +36,7 @@ bytes = { workspace = true }
lazy-js-bundle = { workspace = true } lazy-js-bundle = { workspace = true }
[dev-dependencies] [dev-dependencies]
serde_json = "1" serde_json = { workspace = true }
dioxus = { workspace = true } dioxus = { workspace = true }
dioxus-web = { workspace = true } dioxus-web = { workspace = true }
tokio = { workspace = true, features = ["time"] } tokio = { workspace = true, features = ["time"] }
+1 -1
View File
@@ -20,7 +20,7 @@ thiserror = { workspace = true }
const-serialize-07 = { package = "const-serialize", version = "=0.7.2" } const-serialize-07 = { package = "const-serialize", version = "=0.7.2" }
[target.'cfg(target_os = "android")'.dependencies] [target.'cfg(target_os = "android")'.dependencies]
jni = "0.21" jni = "0.21.1"
ndk-context = "0.1.1" ndk-context = "0.1.1"
[target.'cfg(target_os = "ios")'.dependencies] [target.'cfg(target_os = "ios")'.dependencies]
@@ -8,7 +8,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -8,7 +8,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -8,7 +8,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -8,7 +8,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack", "router"] } dioxus = { workspace = true, features = ["fullstack", "router"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -9,7 +9,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
futures.workspace = true futures.workspace = true
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -8,7 +8,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219" serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true } tokio = { workspace = true, features = ["full"], optional = true }
[features] [features]
@@ -7,7 +7,7 @@ publish = false
[dependencies] [dependencies]
dioxus = { workspace = true, features = ["fullstack"] } dioxus = { workspace = true, features = ["fullstack"] }
async-std = "1.13.1" async-std = "1.13.1"
serde = "1.0.219" serde = { workspace = true }
[features] [features]
default = [] default = []
+2 -2
View File
@@ -32,8 +32,8 @@ tracing = { workspace = true }
rustc-hash = { workspace = true } rustc-hash = { workspace = true }
futures-util = { workspace = true, features = ["std", "async-await", "async-await-macro"] } futures-util = { workspace = true, features = ["std", "async-await", "async-await-macro"] }
futures-channel = { workspace = true } futures-channel = { workspace = true }
serde_json = { version = "1.0", optional = true } serde_json = { workspace = true, optional = true }
serde = { version = "1.0", optional = true } serde = { workspace = true, optional = true }
serde-wasm-bindgen = { version = "0.6.5", optional = true } serde-wasm-bindgen = { version = "0.6.5", optional = true }
ciborium = { workspace = true, optional = true } ciborium = { workspace = true, optional = true }