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: |
${{ 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:
needs: check-paths
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",
"futures-util",
"pollster 0.4.0",
"rustc-hash 1.1.0",
"rustc-hash 2.1.1",
"tracing-subscriber",
"vello",
"wgpu 26.0.1",
@@ -10449,7 +10449,7 @@ dependencies = [
"dioxus-devtools",
"dioxus-native-dom",
"paste",
"rustc-hash 1.1.0",
"rustc-hash 2.1.1",
"tracing-subscriber",
"vello",
"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_cpu = { version = "0.8", default-features = false }
wgpu_context = { version = "0.1", default-features = false }
wgpu = { version = "26.0" }
wgpu = { version = "26.0.1" }
vello = "0.6"
bevy = "0.17"
@@ -214,41 +214,41 @@ clap = { version = "4.5.40" }
askama_escape = "0.13.0"
tracing = "0.1.41"
tracing-futures = "0.2.5"
tracing-subscriber = { version = "0.3.19", default-features = false }
toml = "0.8"
tracing-subscriber = { version = "0.3.20", default-features = false }
toml = "0.8.23"
tokio = "1.48"
tokio-util = { version = "0.7.15" }
tokio-stream = { version = "0.1.17" }
slab = "0.4.10"
slotmap = { version = "1.0.7", features = ["serde"] }
futures = "0.3.31"
futures-channel = "0.3.31"
futures-util = { version = "0.3", default-features = false }
futures = "0.3.32"
futures-channel = "0.3.32"
futures-util = { version = "0.3.32", default-features = false }
rustc-hash = "2.1.1"
wasm-bindgen = "0.2.114"
wasm-bindgen = "0.2.100"
wasm-bindgen-futures = "0.4.50"
js-sys = "0.3"
js-sys = "0.3.77"
web-sys = { version = "0.3.77", default-features = false }
html_parser = "0.7.0"
thiserror = "2.0.12"
prettyplease = { version = "0.2.35", features = ["verbatim"] }
const_format = "0.2.34"
cargo_toml = { version = "0.22.1" }
cargo_toml = { version = "0.22.3" }
icns = "0.4.0"
image = "0.25"
image = "0.25.6"
zip = { version = "4", default-features = false, features = ["deflate"] }
sha1 = "0.10"
sha1 = "0.10.6"
md5 = "0.8.0"
rpm = { version = "0.19.0", default-features = false, features = ["gzip-compression"] }
lru = "0.16.0"
async-trait = "0.1.88"
axum = { version = "0.8.4", 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"
http = "1.3.1"
notify = { version = "8.1.0" }
tower-http = "0.6.6"
tower-http = "0.6.8"
hyper = "1.6.0"
hyper-rustls = { version = "0.27.7", default-features = false, features = [
"native-tokio",
@@ -265,17 +265,17 @@ rustls = { version = "0.23.28", default-features = false, features = [
"ring",
] }
serde_json = "1.0.140"
serde = "1.0.219"
serde = "1.0.225"
schemars = "1.0"
syn = "2.0"
quote = "1.0"
axum-core = "0.5"
syn = "2.0.104"
quote = "1.0.38"
axum-core = "0.5.2"
proc-macro2 = "1.0.101"
axum_session = "0.16.0"
axum_session_auth = "0.16.0"
axum_session_sqlx = "0.5.0"
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"
ciborium = "0.2.2"
base64 = "0.22.1"
@@ -291,7 +291,7 @@ chrono = { version = "0.4.39" }
rustversion = "1.0.21"
rand = "0.9"
longest-increasing-subsequence = "0.1.0"
trybuild = "1.0"
trybuild = "1.0.116"
dirs = "6.0.0"
cargo-config2 = "0.1.34"
criterion = { version = "0.6" }
@@ -317,26 +317,26 @@ object = { version = "0.37.1" }
inventory = { version = "0.3" }
macro-string = "0.1.4"
walkdir = "2.5.0"
url = "2"
url = "2.5.4"
data-url = "0.3.2"
separator = "0.4.1"
pretty_assertions = "1"
serde_repr = "0.1"
hyper-util = "0.1"
serde_repr = "0.1.19"
hyper-util = "0.1.12"
krates = { version = "0.17.5" }
libloading = "0.8.8"
libc = "0.2.174"
memmap2 = "0.9.5"
memmap2 = "0.9.8"
memfd = "0.6.4"
xxhash-rust = { version = "0.8.15", default-features = false }
serde_qs = "0.15.0"
multer = "3.1.0"
const-str = "0.7.0"
bytes = "1.10"
bytes = "1.10.1"
send_wrapper = "0.6.0"
pin-project = { version = "1.1.10" }
postcard = { version = "1.1.3", default-features = false }
serde_urlencoded = "0.7"
serde_urlencoded = "0.7.1"
form_urlencoded = "1.2.1"
winnow = "0.7.14"
+1 -1
View File
@@ -12,5 +12,5 @@ tracing = ["dep:tracing-subscriber", "dioxus-native/tracing"]
bevy = { workspace = true }
dioxus-native = { workspace = true, features = ["prelude"] }
wgpu = { workspace = true }
color = "0.3"
color = "0.3.2"
tracing-subscriber = { workspace = true, optional = true }
@@ -28,8 +28,7 @@ tracing-subscriber = { workspace = true, optional = true }
bevy = { workspace = true }
vello = { workspace = true }
bytes = { workspace = true }
async-std = "1.13"
async-std = "1.13.1"
crossbeam-channel = "0.5"
paste = "1.0"
rustc-hash = "1"
paste = "1.0.12"
rustc-hash = { workspace = true }
@@ -13,13 +13,13 @@ dioxus = { workspace = true, features = ["html", "hooks", "signals"] }
dioxus-native-dom = { workspace = true }
anyrender_vello = { workspace = true }
vello = { workspace = true }
rustc-hash = "1"
rustc-hash = { workspace = true }
futures-util = { workspace = true }
tracing-subscriber = { workspace = true, optional = true }
wgpu = { workspace = true }
wgpu_context = { workspace = true }
pollster = "0.4"
bytemuck = "1"
bytemuck = "1.23.2"
blitz-paint = { workspace = true, default-features = true }
blitz-traits = { 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 = { workspace = true }
wgpu = { workspace = true }
winit = "0.30"
bytemuck = "1"
color = "0.3"
winit = { workspace = true }
bytemuck = "1.23.2"
color = "0.3.2"
tracing-subscriber = { workspace = true, optional = true }
@@ -7,7 +7,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
@@ -16,4 +16,4 @@ default = []
server = ["dioxus/server", "dep:tokio"]
web = ["dioxus/web"]
+3 -3
View File
@@ -68,7 +68,7 @@ syn = { workspace = true, features = [
"visit-mut",
] }
walkdir = "2"
walkdir = { workspace = true }
dunce = { workspace = true }
# tools download
@@ -101,7 +101,7 @@ ignore = "0.4.23"
const-serialize = { workspace = true, 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",
"env-filter",
"json",
@@ -119,7 +119,7 @@ ratatui = { workspace = true, features = ["crossterm", "unstable"] }
shell-words = { workspace = true }
# 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
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
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
profile.inherits.as_ref().and_then(|inherits| {
let profile = match inherits.as_str() {
+2 -2
View File
@@ -11,5 +11,5 @@ keywords = ["dom", "ui", "gui", "react"]
[dependencies]
schemars = "1.0.4"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.143"
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
+2 -2
View File
@@ -21,8 +21,8 @@ dioxus-asset-resolver = { workspace = true, features = ["native"] }
generational-box = { workspace = true }
dioxus-devtools = { workspace = true, optional = true }
serde = "1.0.219"
serde_json = "1.0.140"
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
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 }
pin-project = { workspace = true }
thiserror = { workspace = true }
bytes = {version = "1.10.1", features = ["serde"]}
bytes = { workspace = true, features = ["serde"] }
tower-http = { workspace = true, features = ["fs"] }
tower = { workspace = true, features = ["util"] }
tower-layer = { version = "0.3.3", optional = true }
+1 -1
View File
@@ -72,7 +72,7 @@ async-stream = "0.3.6"
# websocket stuff
# [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"
js-sys = { workspace = true }
wasm-bindgen = { workspace = true }
+1 -1
View File
@@ -36,7 +36,7 @@ bytes = { workspace = true }
lazy-js-bundle = { workspace = true }
[dev-dependencies]
serde_json = "1"
serde_json = { workspace = true }
dioxus = { workspace = true }
dioxus-web = { workspace = true }
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" }
[target.'cfg(target_os = "android")'.dependencies]
jni = "0.21"
jni = "0.21.1"
ndk-context = "0.1.1"
[target.'cfg(target_os = "ios")'.dependencies]
@@ -8,7 +8,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -8,7 +8,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -8,7 +8,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -8,7 +8,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack", "router"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -9,7 +9,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
futures.workspace = true
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -8,7 +8,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
serde = "1.0.219"
serde = { workspace = true }
tokio = { workspace = true, features = ["full"], optional = true }
[features]
@@ -7,7 +7,7 @@ publish = false
[dependencies]
dioxus = { workspace = true, features = ["fullstack"] }
async-std = "1.13.1"
serde = "1.0.219"
serde = { workspace = true }
[features]
default = []
+2 -2
View File
@@ -32,8 +32,8 @@ tracing = { workspace = true }
rustc-hash = { workspace = true }
futures-util = { workspace = true, features = ["std", "async-await", "async-await-macro"] }
futures-channel = { workspace = true }
serde_json = { version = "1.0", optional = true }
serde = { version = "1.0", optional = true }
serde_json = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
serde-wasm-bindgen = { version = "0.6.5", optional = true }
ciborium = { workspace = true, optional = true }