From df05368e58d9160fe15bda2e203ea5f49ecdafd6 Mon Sep 17 00:00:00 2001 From: Vladimir Burdukov Date: Mon, 20 Apr 2026 10:32:28 +0300 Subject: [PATCH] fix(ci): add rust-toolchain.toml with locked Rust version, use it across all github workflows --- .github/workflows/ci.yml | 39 ++++++++++++++++++++++++---- .github/workflows/publish-js.yml | 6 +++++ .github/workflows/publish-kotlin.yml | 12 +++++++++ .github/workflows/publish-react.yml | 6 +++++ .github/workflows/publish-swift.yml | 8 ++++-- rust-toolchain.toml | 2 ++ rust/core/src/bridge.rs | 1 + rust/core/src/types.rs | 3 +-- 8 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 rust-toolchain.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4beb8290..e55d6798 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,8 +17,14 @@ jobs: steps: - uses: actions/checkout@v6 - - uses: dtolnay/rust-toolchain@stable + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} components: rustfmt,clippy - name: Cache dependencies @@ -77,7 +83,14 @@ jobs: with: go-version-file: go/idkit/go.mod - - uses: dtolnay/rust-toolchain@stable + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Cache Rust dependencies uses: Swatinem/rust-cache@v2 @@ -108,8 +121,14 @@ jobs: steps: - uses: actions/checkout@v6 + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Install Rust uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Cache dependencies uses: Swatinem/rust-cache@v2 @@ -160,8 +179,14 @@ jobs: with: version: 9 + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Install Rust uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Cache dependencies uses: Swatinem/rust-cache@v2 @@ -203,10 +228,14 @@ jobs: docker builder prune -af || true df -h - - name: Setup Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable with: - toolchain: stable + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Cache Cargo dependencies uses: actions/cache@v4 diff --git a/.github/workflows/publish-js.yml b/.github/workflows/publish-js.yml index 391f7e7e..42fb56fa 100644 --- a/.github/workflows/publish-js.yml +++ b/.github/workflows/publish-js.yml @@ -175,8 +175,14 @@ jobs: exit 1 fi + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Install Rust uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Install wasm-pack run: cargo install wasm-pack --locked diff --git a/.github/workflows/publish-kotlin.yml b/.github/workflows/publish-kotlin.yml index d4684fa6..ae6610f2 100644 --- a/.github/workflows/publish-kotlin.yml +++ b/.github/workflows/publish-kotlin.yml @@ -126,8 +126,14 @@ jobs: with: ref: ${{ needs.prepare.outputs.ref }} + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Setup Rust cache uses: Swatinem/rust-cache@v2 @@ -208,8 +214,14 @@ jobs: echo "Disk space after cleanup:" df -h + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Setup Rust cache uses: Swatinem/rust-cache@v2 diff --git a/.github/workflows/publish-react.yml b/.github/workflows/publish-react.yml index 09880f01..87a5a499 100644 --- a/.github/workflows/publish-react.yml +++ b/.github/workflows/publish-react.yml @@ -168,8 +168,14 @@ jobs: exit 1 fi + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Install Rust uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Install wasm-pack run: cargo install wasm-pack --locked diff --git a/.github/workflows/publish-swift.yml b/.github/workflows/publish-swift.yml index 6178bb8f..a94239fa 100644 --- a/.github/workflows/publish-swift.yml +++ b/.github/workflows/publish-swift.yml @@ -146,10 +146,14 @@ jobs: with: ref: ${{ needs.prepare.outputs.ref }} + - name: Read rust-toolchain + id: rust-version + run: echo "toolchain=$(yq '.toolchain.channel' rust-toolchain.toml)" >> $GITHUB_OUTPUT + - name: Setup Rust toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 + uses: dtolnay/rust-toolchain@stable with: - toolchain: stable + toolchain: ${{ steps.rust-version.outputs.toolchain }} - name: Setup Swift uses: swift-actions/setup-swift@v2 diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 00000000..f25b5b14 --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "1.95.0" diff --git a/rust/core/src/bridge.rs b/rust/core/src/bridge.rs index 8b7122aa..6f3c7ab3 100644 --- a/rust/core/src/bridge.rs +++ b/rust/core/src/bridge.rs @@ -1171,6 +1171,7 @@ fn to_app_error(error: &Error) -> AppError { /// Networking errors are network/transport-level failures where the bridge /// never returned a meaningful response. These are safe to retry because /// the request itself is valid — only the delivery failed. +#[cfg(feature = "ffi")] fn is_networking_error(error: &Error) -> bool { match error { Error::Timeout | Error::ConnectionFailed | Error::BridgeError(_) => true, diff --git a/rust/core/src/types.rs b/rust/core/src/types.rs index 148ce914..5a3aa5db 100644 --- a/rust/core/src/types.rs +++ b/rust/core/src/types.rs @@ -823,8 +823,7 @@ impl RpContext { #[cfg(not(target_arch = "wasm32"))] let now = std::time::SystemTime::now() .duration_since(std::time::UNIX_EPOCH) - .map(|d| d.as_secs()) - .unwrap_or(0); + .map_or(0, |d| d.as_secs()); #[cfg(target_arch = "wasm32")] let now = (js_sys::Date::now() / 1000.0) as u64;