diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 42140a4215..dc17a4153d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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' diff --git a/Cargo.lock b/Cargo.lock index 4f91d205fb..800da1adac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", diff --git a/Cargo.toml b/Cargo.toml index dcff46ae43..d41fc2d63a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" diff --git a/examples/10-integrations/bevy/Cargo.toml b/examples/10-integrations/bevy/Cargo.toml index 9294d22eb6..888464e5e5 100644 --- a/examples/10-integrations/bevy/Cargo.toml +++ b/examples/10-integrations/bevy/Cargo.toml @@ -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 } diff --git a/examples/10-integrations/native-headless-in-bevy/Cargo.toml b/examples/10-integrations/native-headless-in-bevy/Cargo.toml index 74bbf252e9..eb52cad958 100644 --- a/examples/10-integrations/native-headless-in-bevy/Cargo.toml +++ b/examples/10-integrations/native-headless-in-bevy/Cargo.toml @@ -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 } diff --git a/examples/10-integrations/native-headless/Cargo.toml b/examples/10-integrations/native-headless/Cargo.toml index 31318d8b70..631ce8b0ad 100644 --- a/examples/10-integrations/native-headless/Cargo.toml +++ b/examples/10-integrations/native-headless/Cargo.toml @@ -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 } diff --git a/examples/10-integrations/wgpu-texture/Cargo.toml b/examples/10-integrations/wgpu-texture/Cargo.toml index e70c23c9ed..1d522a8d83 100644 --- a/examples/10-integrations/wgpu-texture/Cargo.toml +++ b/examples/10-integrations/wgpu-texture/Cargo.toml @@ -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 } diff --git a/packages/cli-harnesses/harness-fullstack-with-optional-tokio/Cargo.toml b/packages/cli-harnesses/harness-fullstack-with-optional-tokio/Cargo.toml index e9ae65c450..5b0d69a9dc 100644 --- a/packages/cli-harnesses/harness-fullstack-with-optional-tokio/Cargo.toml +++ b/packages/cli-harnesses/harness-fullstack-with-optional-tokio/Cargo.toml @@ -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"] - \ No newline at end of file + diff --git a/packages/cli/Cargo.toml b/packages/cli/Cargo.toml index 1ebca01c5a..f1086e9a13 100644 --- a/packages/cli/Cargo.toml +++ b/packages/cli/Cargo.toml @@ -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" diff --git a/packages/cli/src/build/request.rs b/packages/cli/src/build/request.rs index 1959818ed0..edaa1b2d5d 100644 --- a/packages/cli/src/build/request.rs +++ b/packages/cli/src/build/request.rs @@ -4632,7 +4632,7 @@ impl BuildRequest { // Get the strip setting from the profile or the profile it inherits from fn get_strip(profile: &Profile, profiles: &Profiles) -> Option { - 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() { diff --git a/packages/component-manifest/Cargo.toml b/packages/component-manifest/Cargo.toml index cd00e5ba9c..eef4f50141 100644 --- a/packages/component-manifest/Cargo.toml +++ b/packages/component-manifest/Cargo.toml @@ -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 } diff --git a/packages/desktop/Cargo.toml b/packages/desktop/Cargo.toml index c3996bb6fc..5aa36ab196 100644 --- a/packages/desktop/Cargo.toml +++ b/packages/desktop/Cargo.toml @@ -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"] } diff --git a/packages/fullstack-server/Cargo.toml b/packages/fullstack-server/Cargo.toml index 2488fe139e..faca16a6f9 100644 --- a/packages/fullstack-server/Cargo.toml +++ b/packages/fullstack-server/Cargo.toml @@ -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 } diff --git a/packages/fullstack/Cargo.toml b/packages/fullstack/Cargo.toml index 85dd4fca10..2d5b6e4308 100644 --- a/packages/fullstack/Cargo.toml +++ b/packages/fullstack/Cargo.toml @@ -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 } diff --git a/packages/html/Cargo.toml b/packages/html/Cargo.toml index 074e9e2376..13205a6c4b 100644 --- a/packages/html/Cargo.toml +++ b/packages/html/Cargo.toml @@ -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"] } diff --git a/packages/manganis/manganis/Cargo.toml b/packages/manganis/manganis/Cargo.toml index 8762cc822a..e45db53b77 100644 --- a/packages/manganis/manganis/Cargo.toml +++ b/packages/manganis/manganis/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/fullstack-errors/Cargo.toml b/packages/playwright-tests/fullstack-errors/Cargo.toml index 3a667b42c0..a747193bb8 100644 --- a/packages/playwright-tests/fullstack-errors/Cargo.toml +++ b/packages/playwright-tests/fullstack-errors/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/fullstack-hydration-order/Cargo.toml b/packages/playwright-tests/fullstack-hydration-order/Cargo.toml index ba25d36958..5b54f3db35 100644 --- a/packages/playwright-tests/fullstack-hydration-order/Cargo.toml +++ b/packages/playwright-tests/fullstack-hydration-order/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/fullstack-mounted/Cargo.toml b/packages/playwright-tests/fullstack-mounted/Cargo.toml index 6977cd1ab3..b91d0f5dac 100644 --- a/packages/playwright-tests/fullstack-mounted/Cargo.toml +++ b/packages/playwright-tests/fullstack-mounted/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/fullstack-routing/Cargo.toml b/packages/playwright-tests/fullstack-routing/Cargo.toml index 1498860edd..8d7dc18670 100644 --- a/packages/playwright-tests/fullstack-routing/Cargo.toml +++ b/packages/playwright-tests/fullstack-routing/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/fullstack/Cargo.toml b/packages/playwright-tests/fullstack/Cargo.toml index 4697696507..51b6430bf2 100644 --- a/packages/playwright-tests/fullstack/Cargo.toml +++ b/packages/playwright-tests/fullstack/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/nested-suspense/Cargo.toml b/packages/playwright-tests/nested-suspense/Cargo.toml index 60d518e0bc..0fc8a8f3ff 100644 --- a/packages/playwright-tests/nested-suspense/Cargo.toml +++ b/packages/playwright-tests/nested-suspense/Cargo.toml @@ -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] diff --git a/packages/playwright-tests/suspense-carousel/Cargo.toml b/packages/playwright-tests/suspense-carousel/Cargo.toml index 2064ed49f0..fad42c8a7a 100644 --- a/packages/playwright-tests/suspense-carousel/Cargo.toml +++ b/packages/playwright-tests/suspense-carousel/Cargo.toml @@ -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 = [] diff --git a/packages/web/Cargo.toml b/packages/web/Cargo.toml index 3cd295dc2f..172082d966 100644 --- a/packages/web/Cargo.toml +++ b/packages/web/Cargo.toml @@ -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 }