diff --git a/.github/scripts/release_rust/plan.py b/.github/scripts/release_rust/plan.py index 125cc7ba8ce7..d4b1cc63fed1 100644 --- a/.github/scripts/release_rust/plan.py +++ b/.github/scripts/release_rust/plan.py @@ -19,11 +19,11 @@ import argparse import json import os -import tomllib from collections import defaultdict, deque from dataclasses import dataclass from pathlib import Path +import tomllib SCRIPT_PATH = Path(__file__).resolve() PROJECT_DIR = SCRIPT_PATH.parents[3] @@ -31,6 +31,7 @@ "core/Cargo.toml", "core/core/Cargo.toml", "core/testkit/Cargo.toml", + "core/executors/*/Cargo.toml", "core/http-transports/*/Cargo.toml", "core/layers/*/Cargo.toml", "core/services/*/Cargo.toml", diff --git a/.github/scripts/release_rust/test_plan.py b/.github/scripts/release_rust/test_plan.py index d630c85e70ac..89e24c916ad5 100644 --- a/.github/scripts/release_rust/test_plan.py +++ b/.github/scripts/release_rust/test_plan.py @@ -128,6 +128,8 @@ def test_repository_plan_excludes_non_release_paths(self): result = plan() self.assertIn("core/core", result) + self.assertIn("core/executors/compio", result) + self.assertIn("core/executors/tokio", result) self.assertIn("core/testkit", result) self.assertIn("core", result) self.assertIn("integrations/object_store", result) @@ -138,6 +140,12 @@ def test_repository_plan_excludes_non_release_paths(self): def test_repository_plan_orders_core_before_root_and_integrations(self): result = plan() + self.assertLess( + result.index("core/core"), result.index("core/executors/compio") + ) + self.assertLess(result.index("core/core"), result.index("core/executors/tokio")) + self.assertLess(result.index("core/executors/compio"), result.index("core")) + self.assertLess(result.index("core/executors/tokio"), result.index("core")) self.assertLess(result.index("core/core"), result.index("core")) self.assertLess(result.index("core/testkit"), result.index("core")) self.assertLess(result.index("core"), result.index("integrations/object_store")) diff --git a/.github/workflows/release_rust.yml b/.github/workflows/release_rust.yml index 34013babb422..5d56b0f63a2d 100644 --- a/.github/workflows/release_rust.yml +++ b/.github/workflows/release_rust.yml @@ -31,6 +31,7 @@ on: - ".github/workflows/release_rust.yml" - ".github/scripts/release_rust/**" - "core/testkit/Cargo.toml" + - "core/executors/*/Cargo.toml" - "core/http-transports/*/Cargo.toml" workflow_dispatch: diff --git a/bindings/ruby/Cargo.lock b/bindings/ruby/Cargo.lock index 08015ce03d56..7345cc69506a 100644 --- a/bindings/ruby/Cargo.lock +++ b/bindings/ruby/Cargo.lock @@ -118,7 +118,7 @@ dependencies = [ "bitflags 2.13.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools", "proc-macro2", "quote", "regex", @@ -528,7 +528,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1034,15 +1034,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itoa" version = "1.0.18" @@ -1378,6 +1369,7 @@ version = "0.58.1" dependencies = [ "ctor", "opendal-core", + "opendal-executor-tokio", "opendal-http-transport-reqwest", "opendal-layer-concurrent-limit", "opendal-layer-logging", @@ -1424,6 +1416,14 @@ dependencies = [ "web-time", ] +[[package]] +name = "opendal-executor-tokio" +version = "0.58.1" +dependencies = [ + "opendal-core", + "tokio", +] + [[package]] name = "opendal-http-transport-reqwest" version = "0.58.1" @@ -1475,8 +1475,8 @@ dependencies = [ name = "opendal-layer-timeout" version = "0.58.1" dependencies = [ + "futures", "opendal-core", - "tokio", ] [[package]] @@ -1900,7 +1900,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools", "proc-macro2", "quote", "syn 2.0.118", @@ -1985,7 +1985,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2433,7 +2433,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2490,7 +2490,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3233,7 +3233,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] diff --git a/core/Cargo.lock b/core/Cargo.lock index dae887b1db98..a8884b1168c1 100644 --- a/core/Cargo.lock +++ b/core/Cargo.lock @@ -30,11 +30,11 @@ dependencies = [ [[package]] name = "aes" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138" +checksum = "f8eb277bec05f56a0e0591f155a484cbd0f4f07ff2905051a48c72f004f7ed58" dependencies = [ - "cipher 0.5.1", + "cipher 0.5.2", "cpubits", "cpufeatures 0.3.0", ] @@ -65,9 +65,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] @@ -89,22 +89,21 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "ammonia" -version = "4.1.2" +version = "4.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17e913097e1a2124b46746c980134e8c954bc17a6a59bb3fde96f088d126dde6" +checksum = "dc6d763210e2eb7670d1a5183a08bebefa3f97db2a738a684f2ce00bd49f681d" dependencies = [ "cssparser", "html5ever", "maplit", - "tendril", "url", ] [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -191,9 +190,9 @@ dependencies = [ [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -224,9 +223,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-slice" @@ -264,7 +263,7 @@ checksum = "affbba0d438add06462a0371997575927bc05052f7ec486e7a4ca405c956c3d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -343,7 +342,7 @@ version = "3.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" dependencies = [ - "event-listener 5.4.1", + "event-listener 5.4.2", "event-listener-strategy", "pin-project-lite", ] @@ -367,7 +366,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -415,7 +414,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -467,14 +466,14 @@ checksum = "fd73835ad7deb4bd2b389e6f10333b143f025d607c55ca04c66a0bcc6bb2fc6d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "await-tree" @@ -532,7 +531,7 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 1.4.2", + "http 1.5.0", "ring", "time", "tokio", @@ -555,9 +554,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.16.3" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ec6fb3fe69024a75fa7e1bfb48aa6cf59706a101658ea01bfd33b2b248a038f" +checksum = "ce2b2dcc879c3bae0d371e77c99f2238400ef24ec001394befa67b6e543add9e" dependencies = [ "aws-lc-sys", "untrusted 0.7.1", @@ -566,14 +565,15 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.40.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f50037ee5e1e41e7b8f9d161680a725bd1626cb6f8c7e901f91f942850852fe7" +checksum = "f09fae7be8bb3174e05c6afdb34199e6dc0c7c04ba9fa237b1967adfbde27483" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] @@ -625,9 +625,9 @@ dependencies = [ "hex", "hmac 0.12.1", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", - "lru", + "lru 0.12.5", "percent-encoding", "regex-lite", "sha2 0.10.9", @@ -719,7 +719,7 @@ dependencies = [ "hex", "hmac 0.12.1", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "p256 0.11.1", "percent-encoding", "ring", @@ -756,7 +756,7 @@ dependencies = [ "http-body 0.4.6", "md-5 0.10.6", "pin-project-lite", - "sha1 0.10.6", + "sha1 0.10.7", "sha2 0.10.9", "tracing", ] @@ -786,7 +786,7 @@ dependencies = [ "futures-core", "futures-util", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", "percent-encoding", "pin-project-lite", @@ -804,18 +804,18 @@ dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", "h2 0.3.27", - "h2 0.4.14", + "h2 0.4.15", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", "hyper 0.14.32", - "hyper 1.9.0", + "hyper 1.11.0", "hyper-rustls 0.24.2", "hyper-rustls 0.27.9", "hyper-util", "pin-project-lite", "rustls 0.21.12", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-native-certs 0.8.4", "rustls-pki-types", "tokio", @@ -867,7 +867,7 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", "http-body 1.1.0", "pin-project-lite", @@ -886,7 +886,7 @@ dependencies = [ "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "pin-project-lite", "tokio", "tracing", @@ -904,7 +904,7 @@ dependencies = [ "bytes-utils", "futures-core", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", "http-body 1.1.0", "http-body-util", @@ -979,7 +979,7 @@ dependencies = [ "axum-core 0.5.6", "bytes", "futures-util", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "http-body-util", "itoa", @@ -1020,7 +1020,7 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "http-body-util", "mime", @@ -1067,9 +1067,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64" -version = "0.23.0" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25655df2c3cdd83c5e5b293b88acd880332b2ddadd7c30ac43144fdc0033da9" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" [[package]] name = "base64-simd" @@ -1106,7 +1106,7 @@ version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1115,9 +1115,9 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.2", + "rustc-hash 2.1.3", "shlex 1.3.0", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1128,18 +1128,18 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.11.1" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" dependencies = [ "serde_core", ] [[package]] name = "bitvec" -version = "1.0.1" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +checksum = "ddcec3d12c579d40898fe0a9a358a803c23e9c52ca3c425707f81c9436211837" dependencies = [ "funty", "radium", @@ -1158,9 +1158,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.5" +version = "1.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +checksum = "76ae7bad254120e9e4c63bafc385310756f90c484eac0e36b8317cf09cb92a77" dependencies = [ "arrayref", "arrayvec", @@ -1181,9 +1181,9 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ "hybrid-array", ] @@ -1237,9 +1237,9 @@ checksum = "f781dba93de3a5ef6dc5b17c9958b208f6f3f021623b360fb605ea51ce443f10" [[package]] name = "borsh" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd1e3f8955a5d7de9fab72fc8373fade9fb8a703968cb200ae3dc6cf08e185a" +checksum = "a88b7ea17d208c4193f2c1e6de3c35fe71f98c96982d5ced308bdcc749ff6e1f" dependencies = [ "borsh-derive", "bytes", @@ -1248,15 +1248,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfcfdc083699101d5a7965e49925975f2f55060f94f9a05e7187be95d530ca59" +checksum = "d8f347189c62a579b8cd5f80714efa178f52e461dc2e6d701d264f5ff22e566c" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -1280,7 +1280,7 @@ dependencies = [ "indexmap 2.14.0", "js-sys", "once_cell", - "rand 0.9.4", + "rand 0.9.5", "serde", "serde_bytes", "serde_json", @@ -1290,13 +1290,13 @@ dependencies = [ [[package]] name = "bstr" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab" +checksum = "1f7dc094d718f2e1c1559ad110e27eeaae14a5465d3d56dd6dbd793079fbd530" dependencies = [ "memchr", "regex-automata", - "serde", + "serde_core", ] [[package]] @@ -1335,22 +1335,22 @@ checksum = "175812e0be2bccb6abe50bb8d566126198344f707e304f45c648fd8f2cc0365e" [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.10.2" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" +checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -1405,7 +1405,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "sha1 0.10.6", + "sha1 0.10.7", "sha2 0.10.9", "ssri", "tempfile", @@ -1417,9 +1417,9 @@ dependencies = [ [[package]] name = "camino" -version = "1.2.2" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +checksum = "bb1307f12aa967b5a58416e87b3653360e0fd614a016b6e970db08fecbb1b80d" dependencies = [ "serde_core", ] @@ -1472,18 +1472,18 @@ dependencies = [ [[package]] name = "cbc" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98db6aeaef0eeef2c1e3ce9a27b739218825dae116076352ac3777076aa22225" +checksum = "ce2dc9ee5f88d11e0beb842c88b33c8a5cf0d1329c4b19494af42b07dbfe8896" dependencies = [ - "cipher 0.5.1", + "cipher 0.5.2", ] [[package]] name = "cc" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e" dependencies = [ "find-msvc-tools", "jobserver", @@ -1514,15 +1514,15 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if 1.0.4", "cpufeatures 0.3.0", @@ -1531,9 +1531,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -1582,20 +1582,20 @@ dependencies = [ [[package]] name = "cipher" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34d8227fe1ba289043aeb13792056ff80fd6de1a9f49137a5f499de8e8c78ea" +checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c" dependencies = [ - "block-buffer 0.12.0", - "crypto-common 0.2.1", + "block-buffer 0.12.1", + "crypto-common 0.2.2", "inout 0.2.2", ] [[package]] name = "clang-sys" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" +checksum = "157a8ba7b480713b56f4c09fd13fc3e0a22a5dfab8097ba61cbc5feef950788a" dependencies = [ "glob", "libc", @@ -1604,9 +1604,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -1614,9 +1614,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -1627,14 +1627,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -1654,9 +1654,9 @@ dependencies = [ [[package]] name = "cmov" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" +checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a" [[package]] name = "cmsketch" @@ -1746,11 +1746,11 @@ dependencies = [ [[package]] name = "compio-driver" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a580d231c022f336ccb7a2e133eaf56e34bf586417176a1a8d392a4a6e9a41f4" +checksum = "ce1f07e864382cbb51d601416dc41cb1dc99ad3a01c6745cece55e431ca547fe" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg_aliases", "compio-buf", "compio-log", @@ -1758,7 +1758,7 @@ dependencies = [ "crossbeam-queue", "flume 0.12.0", "futures-util", - "io-uring 0.7.12", + "io-uring 0.7.13", "libc", "linux-raw-sys 0.12.1", "mod_use", @@ -1767,7 +1767,7 @@ dependencies = [ "polling", "rustix 1.1.4", "smallvec", - "socket2 0.6.3", + "socket2 0.6.5", "synchrony", "thin-cell", "windows-sys 0.61.2", @@ -1775,9 +1775,9 @@ dependencies = [ [[package]] name = "compio-executor" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809fc31e0180a97ea760300b9aa97d99fbb19c9831cc49cebfd5a98f44a8371b" +checksum = "2402a55af5e31454cd77d4b6044e2e6b8c30aa037655585ebd6505b97680468c" dependencies = [ "compio-log", "compio-send-wrapper", @@ -1833,9 +1833,9 @@ dependencies = [ [[package]] name = "compio-net" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a985ea5d7580318104d44f4a3c8ae48a7ee750e9c98b68a69a869e01d4d6df0" +checksum = "717d72ea6640bf0900ef9431fa770e0d120864bbf248cf15cb5da371cfdcff9a" dependencies = [ "compio-buf", "compio-driver", @@ -1846,7 +1846,7 @@ dependencies = [ "libc", "once_cell", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.6.5", "synchrony", "widestring", "windows-sys 0.61.2", @@ -1854,9 +1854,9 @@ dependencies = [ [[package]] name = "compio-quic" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd50cb1b2c2c8276728871bc3bf3c12618c551cdd550123d564aa49b059aea5" +checksum = "6502920691530a27afb6e83d30177fe8b35e1548866af47931b7295413fadc79" dependencies = [ "cfg_aliases", "compio-buf", @@ -1868,18 +1868,18 @@ dependencies = [ "futures-util", "libc", "quinn-proto", - "rustc-hash 2.1.2", - "rustls 0.23.40", + "rustc-hash 2.1.3", + "rustls 0.23.43", "synchrony", - "thiserror 2.0.18", + "thiserror 2.0.20", "windows-sys 0.61.2", ] [[package]] name = "compio-runtime" -version = "0.12.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde4b0b7de96fc8b99e089964d65e9ed5669f8ea39bc46381f7fd563dc10a753" +checksum = "af69014028390d92b7e37ee90036481fc1c5c4bff4dd0f6db5896a172734d3d6" dependencies = [ "compio-buf", "compio-driver", @@ -1887,7 +1887,6 @@ dependencies = [ "compio-io", "compio-log", "compio-send-wrapper", - "core_affinity", "futures-util", "libc", "pin-project-lite", @@ -1898,9 +1897,9 @@ dependencies = [ [[package]] name = "compio-send-wrapper" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1ef3947d751725afe49ab18ce447d819cd8f4ea9b58ae94b8498eb8ad1f864" +checksum = "fa4a63ae089032966c7eb5411267dd14524fb249e6833818b2d6d9d9548bf504" dependencies = [ "cfg-if 1.0.4", "loom 0.7.2", @@ -2086,7 +2085,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e75b2483e97a5a7da73ac68a05b629f9c53cff58d8ed1c77866079e18b00dba5" dependencies = [ "digest 0.10.7", - "spin 0.10.0", + "spin 0.10.1", ] [[package]] @@ -2148,18 +2147,18 @@ checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" +checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -2167,27 +2166,27 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -2231,41 +2230,29 @@ dependencies = [ [[package]] name = "crypto-common" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710" +checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453" dependencies = [ "hybrid-array", ] [[package]] name = "cssparser" -version = "0.35.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e901edd733a1472f944a45116df3f846f54d37e67e68640ac8bb69689aca2aa" +checksum = "8c9cdaae01d5ed7882b04d795e7f752f46ff52d2fa3b50a20d28c464510bba98" dependencies = [ - "cssparser-macros", "dtoa-short", "itoa", - "phf 0.11.3", "smallvec", ] -[[package]] -name = "cssparser-macros" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" -dependencies = [ - "quote", - "syn 2.0.118", -] - [[package]] name = "ctor" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9bb72bb94fdc1bd619f4c18cc91ecf6302aeb333d31b3c6ec0bb841cd920209" +checksum = "2d83cb7e7a873830708d6b02a78cd36a592c6fa14bf267b68725103b85c0d77f" dependencies = [ "link-section", "linktime-proc-macro", @@ -2273,11 +2260,11 @@ dependencies = [ [[package]] name = "ctr" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17469f8eb9bdbfad10f71f4cfddfd38b01143520c0e717d8796ccb4d44d44e42" +checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21" dependencies = [ - "cipher 0.5.1", + "cipher 0.5.2", ] [[package]] @@ -2313,7 +2300,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2347,7 +2334,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2361,7 +2348,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2372,7 +2359,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2383,7 +2370,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2415,15 +2402,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4ae5f15dda3c708c0ade84bfee31ccab44a3da4f88015ed22f63732abe300c8" +checksum = "4583a4551df46e2792f82ceeac45e850d2e2d5debba0b91f102385cda5b11f06" [[package]] name = "defmt" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e524506490a1953d237cb87b1cfc1e46f88c18f10a22dfe0f507dc6bfc7f7f" +checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1" dependencies = [ "bitflags 1.3.2", "defmt-macros", @@ -2431,15 +2418,14 @@ dependencies = [ [[package]] name = "defmt-macros" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0a27770e9c8f719a79d8b638281f4d828f77d8fd61e0bd94451b9b85e576a0b" +checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8" dependencies = [ "defmt-parser", - "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2448,7 +2434,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] @@ -2477,9 +2463,6 @@ name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", -] [[package]] name = "derive-new" @@ -2500,7 +2483,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2511,7 +2494,7 @@ checksum = "d08b3a0bcc0d079199cd476b2cae8435016ec11d1c0986c6901c5ac223041534" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2522,7 +2505,7 @@ checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2543,7 +2526,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2553,7 +2536,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2564,7 +2547,7 @@ checksum = "64b697ac90ff296f0fc031ee5a61c7ac31fb9fff50e3fb32873b09223613fc0c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2586,7 +2569,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.118", + "syn 2.0.119", "unicode-xid", ] @@ -2596,7 +2579,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "916a94e407b54f9034d71dd748234cd1e516ced6284009906ae246f177eafe5a" dependencies = [ - "cipher 0.5.1", + "cipher 0.5.2", ] [[package]] @@ -2629,9 +2612,9 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "block-buffer 0.12.0", + "block-buffer 0.12.1", "const-oid 0.10.2", - "crypto-common 0.2.1", + "crypto-common 0.2.2", "ctutils", ] @@ -2671,8 +2654,8 @@ dependencies = [ "half", "hashbrown 0.16.1", "num-traits", - "rand 0.9.4", - "thiserror 2.0.18", + "rand 0.9.5", + "thiserror 2.0.20", "tokio", ] @@ -2687,10 +2670,10 @@ dependencies = [ "diskann-vector", "diskann-wide", "half", - "rand 0.9.4", + "rand 0.9.5", "rand_distr", "rayon", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] @@ -2716,13 +2699,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -2747,7 +2730,7 @@ checksum = "9556bc800956545d6420a640173e5ba7dfa82f38d3ea5a167eb555bc69ac3323" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -2777,7 +2760,7 @@ checksum = "6e39034cee21a2f5bbb66ba0e3689819c4bb5d00382a282006e802a7ffa6c41d" dependencies = [ "cfg-if 1.0.4", "libc", - "socket2 0.6.3", + "socket2 0.6.5", "windows-sys 0.60.2", ] @@ -2889,7 +2872,7 @@ name = "edge_test_file_write_on_full_disk" version = "0.58.1" dependencies = [ "opendal", - "rand 0.10.1", + "rand 0.10.2", "tokio", ] @@ -2917,9 +2900,9 @@ dependencies = [ [[package]] name = "either" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" dependencies = [ "serde", ] @@ -2983,7 +2966,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -3023,8 +3006,8 @@ version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef5da6e9a6ae89f4a91f80ba1caae45a5a924397a19947e18f5121a43285e9bc" dependencies = [ - "http 1.4.2", - "prost 0.14.3", + "http 1.5.0", + "prost 0.14.4", "tokio", "tokio-stream", "tonic 0.14.5", @@ -3054,11 +3037,10 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.4.1" +version = "5.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" dependencies = [ - "concurrent-queue", "parking", "pin-project-lite", ] @@ -3069,7 +3051,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.4.1", + "event-listener 5.4.2", "pin-project-lite", ] @@ -3132,15 +3114,15 @@ dependencies = [ [[package]] name = "fastrace" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74539685f6baa3c33251571272eac7939fc3b93dff97c30381d7a6267394e528" +checksum = "dcef89a7c5b37f7c13551af01f509cbd5d32a8644c27423623639eb923cc2973" dependencies = [ "fastant", "fastrace-macro", "parking_lot 0.12.5", "pin-project", - "rand 0.10.1", + "rand 0.10.2", "rtrb", "serde", ] @@ -3158,22 +3140,22 @@ dependencies = [ [[package]] name = "fastrace-macro" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390d4f754b751905fa9294716c4ead717ffb5fa733a0c2417358b7779fceaeed" +checksum = "2f1fdb97ada2fde7912c9cab29b560d550ccc467ca1f39c952ce4b05f8d152b3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", ] [[package]] @@ -3204,9 +3186,9 @@ checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de" [[package]] name = "fixedbitset" @@ -3220,7 +3202,7 @@ version = "25.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "rustc_version", "serde", ] @@ -3259,7 +3241,7 @@ dependencies = [ "futures-core", "futures-sink", "nanorand", - "spin 0.9.8", + "spin 0.9.9", ] [[package]] @@ -3271,7 +3253,7 @@ dependencies = [ "fastrand", "futures-core", "futures-sink", - "spin 0.9.8", + "spin 0.9.9", ] [[package]] @@ -3329,7 +3311,7 @@ dependencies = [ "foundationdb-sys", "foundationdb-tuple", "futures", - "rand 0.10.1", + "rand 0.10.2", "serde", "serde_bytes", "serde_json", @@ -3354,7 +3336,7 @@ checksum = "0f51be872cad567c58cf475749b25b9bb96e9ab6063af8bbe4f965ecf40e13cb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "try_map", ] @@ -3430,7 +3412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db907f40a527ca2aa2f40a5f68b32ea58aa70f050cd233518e9ffd402cfba6ce" dependencies = [ "anyhow", - "bitflags 2.11.1", + "bitflags 2.13.1", "cmsketch", "equivalent", "foyer-common", @@ -3467,14 +3449,14 @@ dependencies = [ "futures-core", "futures-util", "hashbrown 0.16.1", - "io-uring 0.7.12", + "io-uring 0.7.13", "itertools 0.14.0", "libc", "lz4", "mea", "parking_lot 0.12.5", "pin-project", - "rand 0.9.4", + "rand 0.9.5", "tracing", "twox-hash", "zstd", @@ -3527,16 +3509,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "futf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" -dependencies = [ - "mac", - "new_debug_unreachable", -] - [[package]] name = "futures" version = "0.3.33" @@ -3617,7 +3589,7 @@ checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -3627,7 +3599,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f2f12607f92c69b12ed746fabf9ca4f5c482cba46679c1a75b874ed7c26adb" dependencies = [ "futures-io", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-pki-types", ] @@ -3645,9 +3617,9 @@ checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-timer" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" +checksum = "af43fadb8a98512d547e37b4e92e0ced13e205c061b87b4623eff01d918d6968" [[package]] name = "futures-util" @@ -3693,7 +3665,7 @@ dependencies = [ "g2poly", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -3736,9 +3708,9 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f04ae4152da20c76fe800fa48659201d5cf627c5149ca0b707b69d7eef6cf9" +checksum = "b3b854b0e584ead1a33f18b2fcad7cf7be18b3875c78816b753639aa501513ae" dependencies = [ "cc", "cfg-if 1.0.4", @@ -3791,7 +3763,7 @@ dependencies = [ "i_overlay", "log", "num-traits", - "rand 0.8.6", + "rand 0.8.7", "robust", "rstar 0.12.2", "serde", @@ -3801,9 +3773,9 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94776032c45f950d30a13af6113c2ad5625316c9abfbccee4dd5a6695f8fe0f5" +checksum = "777d18aa0f12f8b285331cd867133ee14422b3f023f6d388034c47d43e28786a" dependencies = [ "approx", "num-traits", @@ -3811,9 +3783,11 @@ dependencies = [ "rstar 0.10.0", "rstar 0.11.0", "rstar 0.12.2", + "rstar 0.13.0", "rstar 0.8.4", "rstar 0.9.3", "serde", + "thiserror 2.0.20", ] [[package]] @@ -3865,17 +3839,15 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if 1.0.4", "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.1", - "wasip2", - "wasip3", "wasm-bindgen", ] @@ -3885,7 +3857,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbd3abb5dcc950e27a8aef9db4a8d966f4df906eee12d186e4064e418ba0038e" dependencies = [ - "prost 0.14.3", + "prost 0.14.4", ] [[package]] @@ -3905,14 +3877,14 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "glob" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "globset" @@ -3941,28 +3913,29 @@ dependencies = [ [[package]] name = "goosefs-sdk" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9bc9414e3b2cb0bd08dfe0eb315b177e86b119c7fa5e16179c92fc7b184860" +checksum = "e1ea4eee6dcbc31b25ab4fd577adc55b677d2bed3aa3016c44c58fbe1b2298a5" dependencies = [ "arc-swap", "async-trait", "bytes", "dashmap 6.2.1", + "fastrand", "futures", "hostname", - "io-uring 0.7.12", + "io-uring 0.7.13", "itoa", "libc", - "lru", + "lru 0.18.2", "memmap2 0.9.11", "moka", - "prost 0.14.3", + "prost 0.14.4", "prost-types", - "rand 0.9.4", + "rand 0.9.5", "reqwest 0.12.28", "serde", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-stream", "tonic 0.14.5", @@ -3989,7 +3962,7 @@ dependencies = [ "parking_lot 0.12.5", "portable-atomic", "quanta", - "rand 0.9.4", + "rand 0.9.5", "smallvec", "spinning_top", "web-time", @@ -4038,16 +4011,16 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.4.2", + "http 1.5.0", "indexmap 2.14.0", "slab", "tokio", @@ -4065,7 +4038,7 @@ dependencies = [ "cfg-if 1.0.4", "crunchy", "num-traits", - "rand 0.9.4", + "rand 0.9.5", "rand_distr", "zerocopy", ] @@ -4136,9 +4109,14 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash 0.2.0", +] [[package]] name = "hashlink" @@ -4155,14 +4133,14 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7949bf7a2d90b051768cf68dcfd75f4cf70a6735d2c9aed94ac5d785f5d9f" dependencies = [ - "aes 0.9.1", + "aes 0.9.2", "base64 0.22.1", - "bitflags 2.11.1", + "bitflags 2.13.1", "bumpalo", "bytes", - "cbc 0.2.0", + "cbc 0.2.1", "chrono", - "cipher 0.5.1", + "cipher 0.5.2", "crc", "ctr", "des", @@ -4177,13 +4155,13 @@ dependencies = [ "md-5 0.11.0", "num-traits", "once_cell", - "prost 0.14.3", + "prost 0.14.4", "prost-types", - "rand 0.10.1", + "rand 0.10.2", "regex", "roxmltree", - "socket2 0.6.3", - "thiserror 2.0.18", + "socket2 0.6.5", + "thiserror 2.0.20", "tokio", "url", "uuid", @@ -4223,10 +4201,10 @@ dependencies = [ "base64 0.22.1", "bytes", "headers-core", - "http 1.4.2", + "http 1.5.0", "httpdate", "mime", - "sha1 0.10.6", + "sha1 0.10.7", ] [[package]] @@ -4235,7 +4213,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.4.2", + "http 1.5.0", ] [[package]] @@ -4265,7 +4243,7 @@ dependencies = [ "atomic-polyfill", "hash32 0.2.1", "rustc_version", - "spin 0.9.8", + "spin 0.9.9", "stable_deref_trait", ] @@ -4305,18 +4283,18 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "hf-xet" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3005542f8cad13a23c2a85674aeeb888e2eb67cc6f413853c8ef169504e284bc" +checksum = "c237ef4fb0ce1962a5117f8bd8c74454b41629826a9df17d14a1840ca18f0754" dependencies = [ "anyhow", "async-trait", "bytes", - "http 1.4.2", + "http 1.5.0", "more-asserts", "serde", "serde_json", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-util", "tokio_with_wasm", @@ -4344,9 +4322,9 @@ dependencies = [ "idna", "ipnet", "once_cell", - "rand 0.9.4", + "rand 0.9.5", "ring", - "thiserror 2.0.18", + "thiserror 2.0.20", "tinyvec", "tokio", "tracing", @@ -4366,10 +4344,10 @@ dependencies = [ "moka", "once_cell", "parking_lot 0.12.5", - "rand 0.9.4", + "rand 0.9.5", "resolv-conf", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tracing", ] @@ -4438,13 +4416,12 @@ checksum = "afe0e1900d2dbe2e2df8e9522b97ebd7a5598ba18478f57e247957022dffedbe" [[package]] name = "html5ever" -version = "0.35.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55d958c2f74b664487a2035fe1dadb032c48718a03b63f3ab0b8537db8549ed4" +checksum = "46a1761807faccc9a19e86944bbf40610014066306f96edcdedc2fb714bcb7b8" dependencies = [ "log", "markup5ever", - "match_token", ] [[package]] @@ -4460,9 +4437,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -4486,18 +4463,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", ] [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" dependencies = [ "bytes", "futures-core", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "pin-project-lite", ] @@ -4516,15 +4493,15 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "hybrid-array" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" dependencies = [ "typenum", ] @@ -4555,16 +4532,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", - "h2 0.4.14", - "http 1.4.2", + "h2 0.4.15", + "http 1.5.0", "http-body 1.1.0", "httparse", "httpdate", @@ -4597,15 +4574,15 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.2", - "hyper 1.9.0", + "http 1.5.0", + "hyper 1.11.0", "hyper-util", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-native-certs 0.8.4", "tokio", "tokio-rustls 0.26.4", "tower-service", - "webpki-roots 1.0.7", + "webpki-roots 1.0.9", ] [[package]] @@ -4626,7 +4603,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.9.0", + "hyper 1.11.0", "hyper-util", "pin-project-lite", "tokio", @@ -4641,7 +4618,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.9.0", + "hyper 1.11.0", "hyper-util", "native-tls", "tokio", @@ -4659,14 +4636,14 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", - "hyper 1.9.0", + "hyper 1.11.0", "ipnet", "libc", "percent-encoding", "pin-project-lite", - "socket2 0.6.3", + "socket2 0.6.5", "system-configuration", "tokio", "tower-service", @@ -4743,12 +4720,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -4756,9 +4734,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -4769,9 +4747,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -4783,15 +4761,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -4803,15 +4781,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -4822,12 +4800,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -4847,9 +4819,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714" dependencies = [ "icu_normalizer", "icu_properties", @@ -4872,7 +4844,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -4897,8 +4869,8 @@ dependencies = [ "proc-macro2", "quote", "strum", - "syn 2.0.118", - "thiserror 2.0.18", + "syn 2.0.119", + "thiserror 2.0.20", ] [[package]] @@ -4942,11 +4914,11 @@ dependencies = [ [[package]] name = "io-uring" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d09b98f7eace8982db770e4408e7470b028ce513ac28fecdc6bf4c30fe92b62" +checksum = "9080b15e63775b9a2ac7dca720f7050a8b955e092ea0f6020a4a80f69998cdc0" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if 1.0.4", "libc", ] @@ -4957,7 +4929,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d40460c0ce33d6ce4b0630ad68ff63d6661961c48b6dba35e5a4d81cfb48222" dependencies = [ - "socket2 0.6.3", + "socket2 0.6.5", "widestring", "windows-registry", "windows-result 0.4.1", @@ -4966,9 +4938,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" [[package]] name = "is_terminal_polyfill" @@ -5012,6 +4984,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -5064,14 +5045,14 @@ dependencies = [ "jiff-core", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "jiff-tzdb" -version = "0.1.6" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" +checksum = "142bd39932ad231f10513df9ab62661fead8719872150b7ad02a2df79f4e141e" [[package]] name = "jiff-tzdb-platform" @@ -5094,7 +5075,7 @@ dependencies = [ "jni-sys", "log", "simd_cesu8", - "thiserror 2.0.18", + "thiserror 2.0.20", "walkdir", "windows-link 0.2.1", ] @@ -5109,7 +5090,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5128,28 +5109,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.98" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if 1.0.4", "futures-util", - "once_cell", "wasm-bindgen", ] @@ -5167,8 +5147,8 @@ dependencies = [ "js-sys", "p256 0.13.2", "p384", - "pem", - "rand 0.8.6", + "pem 3.0.6", + "rand 0.8.7", "rsa", "serde", "serde_json", @@ -5205,9 +5185,9 @@ dependencies = [ [[package]] name = "lazy-regex" -version = "3.6.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bae91019476d3ec7147de9aa291cadb6d870abf2f3015d2da73a90325ac1496" +checksum = "4994ba703f78b083e2f7946dac9251abd83fd43a0365f030e99b69be5b4b9ef9" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -5216,14 +5196,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.6.0" +version = "3.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4de9c1e1439d8b7b3061b2d209809f447ca33241733d9a3c01eabf2dc8d94358" +checksum = "fd97232314824e6dbef1918a871bb93f51070455e3715bf26e19a6d01aa977a0" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5232,15 +5212,9 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.9.8", + "spin 0.9.9", ] -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lexicmp" version = "0.2.0" @@ -5252,9 +5226,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libfuzzer-sys" @@ -5294,14 +5268,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.16" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "libc", "plain", - "redox_syscall 0.7.5", + "redox_syscall 0.9.1", ] [[package]] @@ -5342,9 +5316,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.28" +version = "1.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc3a226e576f50782b3305c5ccf458698f92798987f551c6a02efe8276721e22" +checksum = "85bc9657773828b90eeb625adff10eeac83cc21bbfd8e23a03eaa8a33c9e28d9" dependencies = [ "cc", "pkg-config", @@ -5353,9 +5327,9 @@ dependencies = [ [[package]] name = "link-section" -version = "0.19.1" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dc98458dfe90986c5e2f6ddcf68360c7e5c4252600153e06aa4ee8176c0f8d1" +checksum = "5ee1a0d6e252afe82e7bc2db42fba60e02ddf3b1accaf8cb21d96e34ba61f3d4" [[package]] name = "linked-hash-map" @@ -5365,9 +5339,9 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linktime-proc-macro" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7b0a3383c2a1002d11349c92c85a666a5fb679e96c79d782cf0dbe557fd6ee" +checksum = "348d0075b1fc163b26d72a7f75fc5141daf2fd1bdf128d873cbaf6785d495bdf" [[package]] name = "linux-raw-sys" @@ -5508,7 +5482,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ "cfg-if 1.0.4", - "generator 0.8.8", + "generator 0.8.9", "pin-utils", "scoped-tls", "serde", @@ -5526,6 +5500,15 @@ dependencies = [ "hashbrown 0.15.5", ] +[[package]] +name = "lru" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" +dependencies = [ + "hashbrown 0.17.1", +] + [[package]] name = "lru-slab" version = "0.1.2" @@ -5553,19 +5536,13 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db9a0d582c2874f68138a16ce1867e0ffde6c0bb0a0df85e1f36d04146db488a" +checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" dependencies = [ "twox-hash", ] -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - [[package]] name = "macro_magic" version = "0.5.1" @@ -5575,7 +5552,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5589,7 +5566,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5600,7 +5577,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5611,7 +5588,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5622,26 +5599,15 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" [[package]] name = "markup5ever" -version = "0.35.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311fe69c934650f8f19652b3946075f0fc41ad8757dbb68f1ca14e7900ecc1c3" +checksum = "7122d987ec5f704ee56f6e5b41a7d93722e9aae27ae07cafa4036c4d3f9757de" dependencies = [ "log", "tendril", "web_atoms", ] -[[package]] -name = "match_token" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac84fd3f360fcc43dc5f5d186f02a94192761a080e8bc58621ad4d12296a58cf" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "matchers" version = "0.2.0" @@ -5665,9 +5631,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "matrixmultiply" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" +checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7" dependencies = [ "autocfg", "rawpointer", @@ -5695,18 +5661,18 @@ dependencies = [ [[package]] name = "mea" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2640d335e7273dacdcf51044026139b2e269c3bb0dfc3f8cb3496b85e3f6a42c" +checksum = "31fc7d159de0085ab6dd7ff145a9819442cfd3d098f783263120503c3f3e58b0" dependencies = [ "slab", ] [[package]] name = "memchr" -version = "2.8.2" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memmap2" @@ -5774,7 +5740,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -5848,9 +5814,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.0" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "wasi 0.11.1+wasi-snapshot-preview1", @@ -5859,11 +5825,11 @@ dependencies = [ [[package]] name = "mixtrics" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb252c728b9d77c6ef9103f0c81524fa0a3d3b161d0a936295d7fbeff6e04c11" +checksum = "2c46b5adfb7a3ae4996d327a5bdc90e78fec025806dd312bdbe6f07a755e0ec9" dependencies = [ - "itertools 0.14.0", + "itertools 0.15.0", "parking_lot 0.12.5", ] @@ -5884,7 +5850,7 @@ dependencies = [ "crossbeam-epoch", "crossbeam-utils", "equivalent", - "event-listener 5.4.1", + "event-listener 5.4.2", "futures-util", "parking_lot 0.12.5", "portable-atomic", @@ -5907,9 +5873,9 @@ dependencies = [ [[package]] name = "mongocrypt-sys" -version = "0.1.5+1.15.1" +version = "0.1.6+1.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224484c5d09285a7b8cb0a0c117e847ebd14cb6e4470ecf68cdb89c503b0edb9" +checksum = "851fac73f7fe22f6a3ab87f720ce509cae7c9fd08e7dd27866cc232dee07ccf4" [[package]] name = "mongodb" @@ -5918,7 +5884,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ef2c933617431ad0246fb5b43c425ebdae18c7f7259c87de0726d93b0e7e91b" dependencies = [ "base64 0.22.1", - "bitflags 2.11.1", + "bitflags 2.13.1", "bson", "derive-where", "derive_more", @@ -5935,26 +5901,26 @@ dependencies = [ "mongodb-internal-macros", "pbkdf2", "percent-encoding", - "rand 0.9.4", + "rand 0.9.5", "rustc_version_runtime", - "rustls 0.23.40", + "rustls 0.23.43", "rustversion", "serde", "serde_bytes", "serde_with", - "sha1 0.10.6", + "sha1 0.10.7", "sha2 0.10.9", - "socket2 0.6.3", + "socket2 0.6.5", "stringprep", "strsim", "take_mut", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-rustls 0.26.4", "tokio-util", "typed-builder", "uuid", - "webpki-roots 1.0.7", + "webpki-roots 1.0.9", ] [[package]] @@ -5966,7 +5932,7 @@ dependencies = [ "macro_magic", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6000,7 +5966,7 @@ checksum = "176a5f5e69613d9e88337cf2a65e11135332b4efbcc628404a7c555e4452084c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -6068,7 +6034,7 @@ dependencies = [ "noisy_float", "num-integer", "num-traits", - "rand 0.8.6", + "rand 0.8.7", ] [[package]] @@ -6135,9 +6101,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits", @@ -6154,7 +6120,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.6", + "rand 0.8.7", "smallvec", "zeroize", ] @@ -6170,19 +6136,19 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" +checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441" [[package]] name = "num-derive" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" +checksum = "e4e98dc3b890f6c23a0f9d3d491a2823d0dea0fa656302a13dd225fa924112a8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -6196,11 +6162,10 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "c92800bd69a1eac91786bcfe9da64a897eb72911b8dc3095decbd07429e8048b" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -6231,7 +6196,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -6265,12 +6230,12 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.4.2", + "http 1.5.0", "humantime", "itertools 0.14.0", "parking_lot 0.12.5", "percent-encoding", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tracing", "url", @@ -6316,11 +6281,13 @@ dependencies = [ "ctor", "divan", "futures", - "http 1.4.2", + "http 1.5.0", "libtest-mimic", "log", "logforth", "opendal-core", + "opendal-executor-compio", + "opendal-executor-tokio", "opendal-http-transport-reqwest", "opendal-layer-async-backtrace", "opendal-layer-await-tree", @@ -6412,7 +6379,7 @@ dependencies = [ "opendal-service-webhdfs", "opendal-service-yandex-disk", "opendal-testkit", - "rand 0.10.1", + "rand 0.10.2", "reqwest 0.13.4", "sha2 0.11.0", "size", @@ -6426,7 +6393,7 @@ version = "0.58.1" dependencies = [ "criterion", "opendal", - "rand 0.10.1", + "rand 0.10.2", "tokio", "uuid", ] @@ -6442,7 +6409,7 @@ dependencies = [ "dotenvy", "logforth", "opendal", - "rand 0.10.1", + "rand 0.10.2", "tokio", ] @@ -6451,10 +6418,10 @@ name = "opendal-core" version = "0.58.1" dependencies = [ "anyhow", - "base64 0.23.0", + "base64 0.23.1", "bytes", "futures", - "http 1.4.2", + "http 1.5.0", "jiff", "log", "logforth", @@ -6463,7 +6430,7 @@ dependencies = [ "percent-encoding", "pretty_assertions", "quick-xml", - "rand 0.10.1", + "rand 0.10.2", "reqsign-core", "serde", "serde_json", @@ -6506,6 +6473,24 @@ dependencies = [ "tokio", ] +[[package]] +name = "opendal-executor-compio" +version = "0.58.1" +dependencies = [ + "compio", + "futures", + "opendal-core", +] + +[[package]] +name = "opendal-executor-tokio" +version = "0.58.1" +dependencies = [ + "futures", + "opendal-core", + "tokio", +] + [[package]] name = "opendal-fuzz" version = "0.58.1" @@ -6524,7 +6509,7 @@ version = "0.58.1" dependencies = [ "bytes", "futures", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "opendal-core", "reqwest 0.13.4", @@ -6560,7 +6545,7 @@ name = "opendal-layer-chaos" version = "0.58.1" dependencies = [ "opendal-core", - "rand 0.10.1", + "rand 0.10.2", ] [[package]] @@ -6568,9 +6553,10 @@ name = "opendal-layer-concurrent-limit" version = "0.58.1" dependencies = [ "futures", - "http 1.4.2", + "http 1.5.0", "mea", "opendal-core", + "opendal-executor-tokio", "tokio", ] @@ -6624,7 +6610,7 @@ version = "0.58.1" dependencies = [ "futures", "hotpath", - "http 1.4.2", + "http 1.5.0", "opendal-core", "tokio", ] @@ -6672,7 +6658,7 @@ name = "opendal-layer-observe-metrics-common" version = "0.58.1" dependencies = [ "futures", - "http 1.4.2", + "http 1.5.0", "opendal-core", "tokio", ] @@ -6764,6 +6750,7 @@ version = "0.58.1" dependencies = [ "futures", "opendal-core", + "opendal-executor-tokio", "opendal-layer-retry", "tokio", ] @@ -6775,7 +6762,7 @@ dependencies = [ "anyhow", "dotenvy", "futures", - "http 1.4.2", + "http 1.5.0", "opendal-core", "opentelemetry", "opentelemetry-otlp", @@ -6791,7 +6778,7 @@ name = "opendal-service-aliyun-drive" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -6805,7 +6792,7 @@ name = "opendal-service-alluxio" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -6817,9 +6804,9 @@ dependencies = [ name = "opendal-service-azblob" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "opendal-service-azure-common", @@ -6839,9 +6826,9 @@ dependencies = [ name = "opendal-service-azdls" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -6860,7 +6847,7 @@ name = "opendal-service-azfile" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "opendal-service-azure-common", @@ -6876,7 +6863,7 @@ dependencies = [ name = "opendal-service-azure-common" version = "0.58.1" dependencies = [ - "http 1.4.2", + "http 1.5.0", "opendal-core", ] @@ -6885,7 +6872,7 @@ name = "opendal-service-b2" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -6910,7 +6897,7 @@ name = "opendal-service-cloudflare-kv" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "opendal-core", "serde", "serde_json", @@ -6923,7 +6910,7 @@ dependencies = [ "bytes", "compio", "opendal-core", - "rand 0.10.1", + "rand 0.10.2", "serde", ] @@ -6932,7 +6919,7 @@ name = "opendal-service-cos" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "quick-xml", @@ -6948,7 +6935,7 @@ name = "opendal-service-d1" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "opendal-core", "serde", "serde_json", @@ -6970,9 +6957,9 @@ dependencies = [ name = "opendal-service-dbfs" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -6985,7 +6972,7 @@ name = "opendal-service-dropbox" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "mea", "opendal-core", "serde", @@ -7049,7 +7036,7 @@ dependencies = [ "fastpool", "futures", "futures-rustls", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "rustls-native-certs 0.8.4", @@ -7064,7 +7051,7 @@ version = "0.58.1" dependencies = [ "async-trait", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "percent-encoding", @@ -7082,7 +7069,7 @@ name = "opendal-service-gdrive" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7097,11 +7084,11 @@ version = "0.58.1" dependencies = [ "bytes", "ghac", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "opendal-service-azblob", - "prost 0.14.3", + "prost 0.14.4", "reqsign-azure-storage", "reqsign-core", "serde", @@ -7114,9 +7101,9 @@ dependencies = [ name = "opendal-service-github" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7178,11 +7165,11 @@ dependencies = [ name = "opendal-service-hf" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", "futures", "hf-xet", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "opendal-http-transport-reqwest", @@ -7196,7 +7183,7 @@ dependencies = [ name = "opendal-service-http" version = "0.58.1" dependencies = [ - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7208,10 +7195,10 @@ name = "opendal-service-ipfs" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", - "prost 0.14.3", + "prost 0.14.4", "serde", "tokio", ] @@ -7221,7 +7208,7 @@ name = "opendal-service-ipmfs" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7234,7 +7221,7 @@ name = "opendal-service-koofr" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7248,7 +7235,7 @@ name = "opendal-service-lakefs" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7329,7 +7316,7 @@ name = "opendal-service-obs" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "quick-xml", @@ -7346,7 +7333,7 @@ version = "0.58.1" dependencies = [ "bytes", "futures", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7373,7 +7360,7 @@ name = "opendal-service-oss" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "pretty_assertions", @@ -7390,7 +7377,7 @@ name = "opendal-service-pcloud" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7435,7 +7422,7 @@ version = "0.58.1" dependencies = [ "bytes", "fastpool", - "http 1.4.2", + "http 1.5.0", "opendal-core", "redis", "serde", @@ -7456,10 +7443,10 @@ dependencies = [ name = "opendal-service-s3" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", "crc-fast", - "http 1.4.2", + "http 1.5.0", "log", "md-5 0.11.0", "opendal-core", @@ -7479,7 +7466,7 @@ name = "opendal-service-seafile" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7540,10 +7527,10 @@ dependencies = [ name = "opendal-service-swift" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", "hmac 0.13.0", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "percent-encoding", @@ -7572,7 +7559,7 @@ name = "opendal-service-tos" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "opendal-core", "quick-xml", "reqsign-core", @@ -7586,10 +7573,10 @@ dependencies = [ name = "opendal-service-upyun" version = "0.58.1" dependencies = [ - "base64 0.23.0", + "base64 0.23.1", "bytes", "hmac 0.13.0", - "http 1.4.2", + "http 1.5.0", "log", "md-5 0.11.0", "opendal-core", @@ -7606,7 +7593,7 @@ version = "0.58.1" dependencies = [ "anyhow", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "serde", @@ -7619,7 +7606,7 @@ name = "opendal-service-vercel-blob" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "quick-xml", @@ -7634,7 +7621,7 @@ version = "0.58.1" dependencies = [ "anyhow", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7649,7 +7636,7 @@ version = "0.58.1" dependencies = [ "anyhow", "bytes", - "http 1.4.2", + "http 1.5.0", "log", "mea", "opendal-core", @@ -7664,7 +7651,7 @@ name = "opendal-service-yandex-disk" version = "0.58.1" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "opendal-core", "quick-xml", @@ -7683,7 +7670,7 @@ dependencies = [ "opendal-layer-logging", "opendal-layer-retry", "opendal-layer-timeout", - "rand 0.10.1", + "rand 0.10.2", "sha2 0.11.0", "tokio", "uuid", @@ -7699,7 +7686,7 @@ dependencies = [ "once_cell", "shell-escape", "tempfile", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", ] @@ -7751,17 +7738,17 @@ dependencies = [ "openssh", "openssh-sftp-protocol-error", "ssh_format_error", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", ] [[package]] name = "openssh-sftp-protocol" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c862e0c56553146306507f55958c11ff554e02c46de287e6976e50d815b350" +checksum = "ea33c59ea7b894dffbdb420b01e53dfc8e2a19eaa3237e5aeb333dd788d60fa9" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "num-derive", "num-traits", "openssh-sftp-protocol-error", @@ -7777,17 +7764,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42b54df62ccfd9a7708a83a9d60c46293837e478f9f4c0829360dcfa60ede8d2" dependencies = [ "serde", - "thiserror 2.0.18", + "thiserror 2.0.20", "vec-strings", ] [[package]] name = "openssl" -version = "0.10.79" +version = "0.10.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0b434746ee2832f4f0baf10137e1cabb18cbe6912c69e2e33263c45250f542" +checksum = "77823a27f0babb03091cb9ed9ef80af3b39dbc82f97e8fa530374b7dafd87a45" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "cfg-if 1.0.4", "foreign-types", "libc", @@ -7803,7 +7790,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -7820,9 +7807,9 @@ checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" [[package]] name = "openssl-sys" -version = "0.9.115" +version = "0.9.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "158fe5b292746440aa6e7a7e690e55aeb72d41505e2804c23c6973ad0e9c9781" +checksum = "b47e7e6bb2c38cd930d25a23b40fa52e068c10e85f3e03a7f5ba5aaca5713695" dependencies = [ "cc", "libc", @@ -7840,7 +7827,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 2.0.18", + "thiserror 2.0.20", "tracing", ] @@ -7850,12 +7837,12 @@ version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9966929966d17620d7c316c643ba62631826e10021409357772d5eea84f62c35" dependencies = [ - "http 1.4.2", + "http 1.5.0", "opentelemetry", "opentelemetry-proto", "opentelemetry_sdk", - "prost 0.14.3", - "thiserror 2.0.18", + "prost 0.14.4", + "thiserror 2.0.20", "tokio", "tonic 0.14.5", "tonic-types", @@ -7869,7 +7856,7 @@ checksum = "56d658ba1faf63f7b9c492cfbe6e0ec365440a16132d3270c1065f7b33f1b638" dependencies = [ "opentelemetry", "opentelemetry_sdk", - "prost 0.14.3", + "prost 0.14.4", "tonic 0.14.5", "tonic-prost", ] @@ -7886,8 +7873,8 @@ dependencies = [ "opentelemetry", "percent-encoding", "portable-atomic", - "rand 0.9.4", - "thiserror 2.0.18", + "rand 0.9.5", + "thiserror 2.0.20", "tokio", "tokio-stream", ] @@ -8089,6 +8076,16 @@ dependencies = [ "serde_core", ] +[[package]] +name = "pem" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d354a98a3d1251555de99e8fdd8afda05573c31b82f59063a7b0a29b5527f120" +dependencies = [ + "base64 0.23.1", + "serde_core", +] + [[package]] name = "pem-rfc7468" version = "0.7.0" @@ -8114,8 +8111,8 @@ dependencies = [ "data-encoding", "fs2", "linked-hash-map", - "rand 0.10.1", - "thiserror 2.0.18", + "rand 0.10.2", + "thiserror 2.0.20", "unsigned-varint", "zigzag", ] @@ -8131,45 +8128,25 @@ dependencies = [ "indexmap 2.14.0", ] -[[package]] -name = "phf" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" -dependencies = [ - "phf_macros 0.11.3", - "phf_shared 0.11.3", -] - [[package]] name = "phf" version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", + "phf_macros", + "phf_shared", "serde", ] [[package]] name = "phf_codegen" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", -] - -[[package]] -name = "phf_generator" -version = "0.11.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" dependencies = [ - "phf_shared 0.11.3", - "rand 0.8.6", + "phf_generator", + "phf_shared", ] [[package]] @@ -8179,20 +8156,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" dependencies = [ "fastrand", - "phf_shared 0.13.1", -] - -[[package]] -name = "phf_macros" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" -dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", - "proc-macro2", - "quote", - "syn 2.0.118", + "phf_shared", ] [[package]] @@ -8201,23 +8165,14 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", + "phf_generator", + "phf_shared", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "unicase", ] -[[package]] -name = "phf_shared" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" -dependencies = [ - "siphasher", -] - [[package]] name = "phf_shared" version = "0.13.1" @@ -8230,22 +8185,22 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.12" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9" +checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.12" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389" +checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -8375,9 +8330,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49" +checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" [[package]] name = "portable-atomic-util" @@ -8435,7 +8390,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -8462,33 +8417,11 @@ dependencies = [ "toml_edit", ] -[[package]] -name = "proc-macro-error-attr2" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" -dependencies = [ - "proc-macro2", - "quote", -] - -[[package]] -name = "proc-macro-error2" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" -dependencies = [ - "proc-macro-error-attr2", - "proc-macro2", - "quote", - "syn 2.0.118", -] - [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -8499,7 +8432,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc5b72d8145275d844d4b5f6d4e1eef00c8cd889edb6035c21675d1bb1f45c9f" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "hex", "procfs-core", "rustix 0.38.44", @@ -8511,7 +8444,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "239df02d8349b06fc07398a3a1697b06418223b1c7725085e801e7c0fc6a12ec" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "hex", ] @@ -8543,7 +8476,7 @@ dependencies = [ "parking_lot 0.12.5", "procfs", "protobuf", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] @@ -8566,7 +8499,7 @@ checksum = "9adf1691c04c0a5ff46ff8f262b58beb07b0dbb61f96f9f54f6cbd82106ed87f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -8581,19 +8514,19 @@ dependencies = [ [[package]] name = "prost" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +checksum = "528ac67416ff8646872a3c02cad9cc4ee5dc9f9540c9b10771855c95cb2e5ae1" dependencies = [ "bytes", - "prost-derive 0.14.3", + "prost-derive 0.14.4", ] [[package]] name = "prost-build" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343d3bd7056eda839b03204e68deff7d1b13aba7af2b2fd16890697274262ee7" +checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" dependencies = [ "heck 0.5.0", "itertools 0.14.0", @@ -8601,12 +8534,12 @@ dependencies = [ "multimap", "petgraph", "prettyplease", - "prost 0.14.3", + "prost 0.14.4", "prost-types", - "pulldown-cmark 0.13.3", + "pulldown-cmark 0.13.4", "pulldown-cmark-to-cmark", "regex", - "syn 2.0.118", + "syn 2.0.119", "tempfile", ] @@ -8620,29 +8553,29 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "prost-derive" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "prost-types" -version = "0.14.3" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" +checksum = "f94967dc7688f3054c7fac87473ffae4cc4c3904800e2d9f5b857246d8963b0a" dependencies = [ - "prost 0.14.3", + "prost 0.14.4", ] [[package]] @@ -8697,18 +8630,18 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57206b407293d2bcd3af849ce869d52068623f19e1b5ff8e8778e3309439682b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "memchr", "unicase", ] [[package]] name = "pulldown-cmark" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c3a14896dfa883796f1cb410461aef38810ea05f2b2c33c5aded3649095fdad" +checksum = "e9f068eba8e7071c5f9511831b44f32c740d5adf574e990f946ddb53db2f314e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "memchr", "unicase", ] @@ -8719,7 +8652,7 @@ version = "22.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50793def1b900256624a709439404384204a5dc3a6ec580281bfaac35e882e90" dependencies = [ - "pulldown-cmark 0.13.3", + "pulldown-cmark 0.13.4", ] [[package]] @@ -8749,9 +8682,9 @@ dependencies = [ [[package]] name = "quick_cache" -version = "0.6.21" +version = "0.6.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a70b1b8b47e31d0498ecbc3c5470bb931399a8bfed1fd79d1717a61ce7f96e3" +checksum = "b9c6658afe513a3b484e3abfdaa0d03ef3c0bbf017542c178dd55f94eb3051f9" dependencies = [ "ahash 0.8.12", "equivalent", @@ -8761,19 +8694,19 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ "bytes", "cfg_aliases", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.2", - "rustls 0.23.40", - "socket2 0.6.3", - "thiserror 2.0.18", + "rustc-hash 2.1.3", + "rustls 0.23.43", + "socket2 0.6.5", + "thiserror 2.0.20", "tokio", "tracing", "web-time", @@ -8781,21 +8714,22 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" dependencies = [ "aws-lc-rs", "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.4", + "rand 0.10.2", + "rand_pcg", "ring", - "rustc-hash 2.1.2", - "rustls 0.23.40", + "rustc-hash 2.1.3", + "rustls 0.23.43", "rustls-pki-types", "slab", - "thiserror 2.0.18", + "thiserror 2.0.20", "tinyvec", "tracing", "web-time", @@ -8803,23 +8737,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2 0.6.3", + "socket2 0.6.5", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.46" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -8857,9 +8791,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" dependencies = [ "libc", "rand_chacha 0.3.1", @@ -8868,9 +8802,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.5", @@ -8878,12 +8812,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -8957,7 +8891,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", - "rand 0.9.4", + "rand 0.9.5", ] [[package]] @@ -8969,11 +8903,20 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "rapidhash" -version = "4.4.1" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e48930979c155e2f33aa36ab3119b5ee81332beb6482199a8ecd6029b80b59" +checksum = "5da7e78a036ce858e8d55b7e7dc8ba3a88b78350fd2155d3591bbd966b58589e" dependencies = [ "rustversion", ] @@ -8984,7 +8927,7 @@ version = "11.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -9059,12 +9002,12 @@ dependencies = [ "num-bigint", "percent-encoding", "pin-project-lite", - "rand 0.9.4", - "rustls 0.23.40", + "rand 0.9.5", + "rustls 0.23.43", "rustls-native-certs 0.8.4", "ryu", "sha1_smol", - "socket2 0.6.3", + "socket2 0.6.5", "tokio", "tokio-native-tls", "tokio-rustls 0.26.4", @@ -9088,16 +9031,16 @@ version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] name = "redox_syscall" -version = "0.7.5" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b" +checksum = "07507be7b4a5f9f26eeb41eeaebb1f5a7ff29dfb29739facc21d35bf8b11c21e" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", ] [[package]] @@ -9108,14 +9051,14 @@ checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" dependencies = [ "getrandom 0.2.17", "libredox", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] name = "reflink-copy" -version = "0.1.29" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13362233b147e57674c37b802d216b7c5e3dcccbed8967c84f0d8d223868ae27" +checksum = "d9dd7ab4af0363d5ccfd2838d782a28196cf32a5cc2e4fe3c5dc83f2be588b8b" dependencies = [ "cfg-if 1.0.4", "libc", @@ -9125,9 +9068,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.3" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -9137,9 +9080,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -9154,9 +9097,9 @@ checksum = "cab834c73d247e67f4fae452806d17d3c7501756d98c8808d7c9c7aa7d18f973" [[package]] name = "regex-syntax" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" +checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "rend" @@ -9169,13 +9112,13 @@ dependencies = [ [[package]] name = "reqsign-aliyun-oss" -version = "3.1.3" +version = "3.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e6d659fcdbca6fe2d7ef109c2e28499b7be80501f1bb86c10caf5ec8ac1219" +checksum = "68d24d281f734a463093b7b93aae8b16f5f8496a54fbeec4d2d10b0488295296" dependencies = [ "anyhow", "form_urlencoded", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "reqsign-core", @@ -9193,7 +9136,7 @@ dependencies = [ "bytes", "form_urlencoded", "hex", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "quick-xml", @@ -9212,7 +9155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a0c499f4ed12d04c3d4c78fe4cb01aee22c9dae22848c14db2c6313d9df9f43" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", "log", "quick-xml", "reqsign-aws-core", @@ -9222,17 +9165,17 @@ dependencies = [ [[package]] name = "reqsign-azure-storage" -version = "3.1.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2824e7da3c2cc42ac3406c674eb57c89127fdcd97f3a73c608cfc680505ea134" +checksum = "e8177b4f08620ab7f2e9cab7d7ccb9da1b61c66b889fed46cc0880b0fe75eb6b" dependencies = [ "anyhow", - "base64 0.23.0", + "base64 0.23.1", "bytes", "form_urlencoded", - "http 1.4.2", + "http 1.5.0", "log", - "pem", + "pem 4.0.0", "percent-encoding", "reqsign-core", "rsa", @@ -9248,12 +9191,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4ac1510872d9481205975d264deb39c109797e5068cc882ed9064270eaae5fa" dependencies = [ "anyhow", - "base64 0.23.0", + "base64 0.23.1", "bytes", "futures", "hex", "hmac 0.13.0", - "http 1.4.2", + "http 1.5.0", "jiff", "log", "percent-encoding", @@ -9278,12 +9221,13 @@ dependencies = [ [[package]] name = "reqsign-google" -version = "3.0.4" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4080a227f82a09f68540ecd028622065d7ac4c0bcb8727a25bdcfc0526235792" +checksum = "f81a9d38870892443489c0abb5332edfa81d5a14c437af9caef7c194897c92c1" dependencies = [ + "bytes", "form_urlencoded", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "reqsign-aws-v4", @@ -9296,12 +9240,12 @@ dependencies = [ [[package]] name = "reqsign-huaweicloud-obs" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c59d8964ede51478a1044844a79a63b2cd99801c0a1b3837f9af400e1a93cf8" +checksum = "745a05797db6a44c21b66e303dff97d8072ff18982977cf13b976f7af2fc0d61" dependencies = [ "anyhow", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "reqsign-core", @@ -9309,12 +9253,12 @@ dependencies = [ [[package]] name = "reqsign-tencent-cos" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "764629c90f7c3566a6d4e4641ebab9acd604ce02e16eda4d37c7d7e79e16ed90" +checksum = "b15c5a4df7c3f16823ae242675c5ebfb52d640cc9a50d1fcf943263247fa1730" dependencies = [ "anyhow", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "reqsign-core", @@ -9324,12 +9268,12 @@ dependencies = [ [[package]] name = "reqsign-volcengine-tos" -version = "3.1.0" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ac4120764e6cf8b8bd431c9256bf1defeb2331ae616d353ee9d6b750c39f62" +checksum = "173387eb5ae4cf6a0a7098665ebcc6729862819dc3d95a81aee840767803e3d9" dependencies = [ "anyhow", - "http 1.4.2", + "http 1.5.0", "log", "percent-encoding", "reqsign-core", @@ -9344,10 +9288,10 @@ dependencies = [ "base64 0.22.1", "bytes", "futures-core", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "http-body-util", - "hyper 1.9.0", + "hyper 1.11.0", "hyper-rustls 0.27.9", "hyper-util", "js-sys", @@ -9355,7 +9299,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-pki-types", "serde", "serde_json", @@ -9370,7 +9314,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 1.0.7", + "webpki-roots 1.0.9", ] [[package]] @@ -9384,11 +9328,11 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.4.14", - "http 1.4.2", + "h2 0.4.15", + "http 1.5.0", "http-body 1.1.0", "http-body-util", - "hyper 1.9.0", + "hyper 1.11.0", "hyper-rustls 0.27.9", "hyper-tls", "hyper-util", @@ -9400,7 +9344,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-pki-types", "rustls-platform-verifier", "serde", @@ -9422,15 +9366,15 @@ dependencies = [ [[package]] name = "reqwest-middleware" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199dda04a536b532d0cc04d7979e39b1c763ea749bf91507017069c00b96056f" +checksum = "07bc3f1384cffa4f274dad2d4ddd73aed32fed8f786d96c6be8aa4e5fd3c3b58" dependencies = [ "anyhow", "async-trait", - "http 1.4.2", + "http 1.5.0", "reqwest 0.13.4", - "thiserror 2.0.18", + "thiserror 2.0.20", "tower-service", ] @@ -9464,7 +9408,7 @@ checksum = "3d266d798eaaa2921e14188dfe998bb7cc0528ec26e894b4be0e35fe2b19c89d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -9649,6 +9593,18 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rstar" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5912b862fa5ffb462607bfd1e35036c458c537921f508c8235a83d5f3987edfe" +dependencies = [ + "heapless 0.8.0", + "num-traits", + "serde", + "smallvec", +] + [[package]] name = "rtrb" version = "0.3.4" @@ -9677,15 +9633,15 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.42.0" +version = "1.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c5108e3d4d903e21aac27f12ba5377b6b34f9f44b325e4894c7924169d06995" +checksum = "be2a24f50780bc85f09cc6ac299bdf1424302742d77221106859c9d8b102126a" dependencies = [ "arrayvec", "borsh", "bytes", "num-traits", - "rand 0.8.6", + "rand 0.8.7", "rkyv", "serde", "serde_json", @@ -9700,9 +9656,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -9729,7 +9685,7 @@ version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.4.15", @@ -9742,7 +9698,7 @@ version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "errno", "libc", "linux-raw-sys 0.12.1", @@ -9763,9 +9719,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.40" +version = "0.23.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" dependencies = [ "aws-lc-rs", "log", @@ -9812,9 +9768,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" dependencies = [ "web-time", "zeroize", @@ -9831,7 +9787,7 @@ dependencies = [ "jni", "log", "once_cell", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-native-certs 0.8.4", "rustls-platform-verifier-android", "rustls-webpki 0.103.13", @@ -9871,9 +9827,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "ryu" @@ -9988,7 +9944,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -10001,7 +9957,7 @@ version = "3.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -10100,13 +10056,13 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -10140,7 +10096,7 @@ dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -10156,9 +10112,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" dependencies = [ "cfg-if 1.0.4", "cpufeatures 0.2.17", @@ -10280,15 +10236,15 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simd_cesu8" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ "rustc_version", "simdutf8", @@ -10308,7 +10264,7 @@ checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" dependencies = [ "num-bigint", "num-traits", - "thiserror 2.0.18", + "thiserror 2.0.20", "time", ] @@ -10378,9 +10334,9 @@ checksum = "88414a5ca1f85d82cc34471e975f0f74f6aa54c40f062efa42c0080e7f763f81" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" dependencies = [ "serde", ] @@ -10397,9 +10353,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -10419,18 +10375,18 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "3763264f6b73151db08c50ff20d7d8a0b8796e021cdea7ceedad07b80155fa0e" dependencies = [ "lock_api", ] [[package]] name = "spin" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" +checksum = "023a211cb3138dbc438680b32560ad89f699977624c9f8dbb95a47d5b4c07dd3" [[package]] name = "spinning_top" @@ -10485,7 +10441,7 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 5.4.1", + "event-listener 5.4.2", "futures-core", "futures-intrusive", "futures-io", @@ -10497,12 +10453,12 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rustls 0.23.40", + "rustls 0.23.43", "serde", "serde_json", "sha2 0.10.9", "smallvec", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-stream", "tracing", @@ -10520,7 +10476,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -10543,7 +10499,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.118", + "syn 2.0.119", "tokio", "url", ] @@ -10556,7 +10512,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.11.1", + "bitflags 2.13.1", "byteorder", "bytes", "crc", @@ -10577,15 +10533,15 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.6", + "rand 0.8.7", "rsa", "serde", - "sha1 0.10.6", + "sha1 0.10.7", "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.18", + "thiserror 2.0.20", "tracing", "whoami 1.6.1", ] @@ -10598,7 +10554,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.11.1", + "bitflags 2.13.1", "byteorder", "crc", "dotenvy", @@ -10615,14 +10571,14 @@ dependencies = [ "md-5 0.10.6", "memchr", "once_cell", - "rand 0.8.6", + "rand 0.8.7", "serde", "serde_json", "sha2 0.10.9", "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.18", + "thiserror 2.0.20", "tracing", "whoami 1.6.1", ] @@ -10646,7 +10602,7 @@ dependencies = [ "serde", "serde_urlencoded", "sqlx-core", - "thiserror 2.0.18", + "thiserror 2.0.20", "tracing", "url", ] @@ -10729,30 +10685,29 @@ checksum = "6079d53242246522ec982de613c5c952cc7b1380ef2f8622fcdab9bfe73c0098" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "string_cache" -version = "0.8.9" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" dependencies = [ "new_debug_unreachable", "parking_lot 0.12.5", - "phf_shared 0.11.3", + "phf_shared", "precomputed-hash", - "serde", ] [[package]] name = "string_cache_codegen" -version = "0.5.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" dependencies = [ - "phf_generator 0.11.3", - "phf_shared 0.11.3", + "phf_generator", + "phf_shared", "proc-macro2", "quote", ] @@ -10792,7 +10747,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -10816,14 +10771,14 @@ dependencies = [ "log", "pin-project", "rustls-pki-types", - "thiserror 2.0.18", + "thiserror 2.0.20", ] [[package]] name = "surrealdb" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d1d636f9a9104f4446943111e0703e6d6668bfaba6c4415a31d0450dc46630b" +checksum = "01fef5cc04dd6cb042391d48c0f78a586c56042e999f8cb17f0b97b0a147e2c0" dependencies = [ "anyhow", "async-channel 2.5.0", @@ -10836,7 +10791,7 @@ dependencies = [ "path-clean", "reqwest 0.13.4", "ring", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-pki-types", "semver", "serde", @@ -10859,9 +10814,9 @@ dependencies = [ [[package]] name = "surrealdb-collections" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6222572dc7354295ba8017603d0a5a3e493935a8ec2d7314b9c09152184cd2f" +checksum = "ca3472955f9692427583e78476d5b03c6f750bf11dc8a04383e0d365d7bd5d99" dependencies = [ "revision", "storekey", @@ -10869,9 +10824,9 @@ dependencies = [ [[package]] name = "surrealdb-core" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6add99c7f91bda7acb5d3b9a1b7c0db81a1adebdaedd4b9145f9ccf65fa2a25" +checksum = "8cd76c36f8b545a9371eec050bb2ae83750a6f60bae8c6d92d06956943348f4c" dependencies = [ "addr", "ahash 0.8.12", @@ -10902,7 +10857,7 @@ dependencies = [ "half", "headers", "hex", - "http 1.4.2", + "http 1.5.0", "humantime", "ipnet", "jsonwebtoken", @@ -10918,10 +10873,10 @@ dependencies = [ "parking_lot 0.12.5", "path-clean", "pbkdf2", - "phf 0.13.1", + "phf", "pin-project-lite", "quick_cache", - "rand 0.9.4", + "rand 0.9.5", "rand_core 0.6.4", "rayon", "reblessive", @@ -10935,7 +10890,7 @@ dependencies = [ "semver", "serde", "serde_json", - "sha1 0.10.6", + "sha1 0.10.7", "sha2 0.10.9", "storekey", "strsim", @@ -10945,7 +10900,7 @@ dependencies = [ "surrealdb-strand", "surrealdb-types", "sysinfo 0.37.2", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-util", "tracing", @@ -10972,7 +10927,7 @@ dependencies = [ "flatbuffers", "futures", "geo", - "prost 0.14.3", + "prost 0.14.4", "prost-types", "rust_decimal", "semver", @@ -10985,9 +10940,9 @@ dependencies = [ [[package]] name = "surrealdb-strand" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebb973d3547dbd2384f841d2fefd8a65c57a6cba02759e82c65de248da28b65" +checksum = "a86f53e307b6b8275b15eaff2b718add63605cb804395d156589770c3bf38e56" dependencies = [ "revision", "serde", @@ -10996,9 +10951,9 @@ dependencies = [ [[package]] name = "surrealdb-types" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac180b3201dbd6f809d3f07fa20ff953a03e06f92e051117e60f326a46160d1" +checksum = "e0d70c7f4dbf1198521282a171a03f2f77f38a1225a149f7c0175e758f773b8a" dependencies = [ "anyhow", "async-channel 2.5.0", @@ -11008,9 +10963,9 @@ dependencies = [ "flatbuffers", "geo", "hex", - "http 1.4.2", + "http 1.5.0", "papaya", - "rand 0.9.4", + "rand 0.9.5", "regex", "reqwest 0.13.4", "rust_decimal", @@ -11027,14 +10982,14 @@ dependencies = [ [[package]] name = "surrealdb-types-derive" -version = "3.2.3" +version = "3.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f204a3bd68ba7e1822b86091df5b184f6a674acb4d537f5480f3b7192b08b5" +checksum = "dc11310bfc0ae3e546cd14788f8d36e7616dbe41fa68b4b265b29fea34a7d7e1" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -11056,9 +11011,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.118" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" dependencies = [ "proc-macro2", "quote", @@ -11093,11 +11048,11 @@ dependencies = [ [[package]] name = "synchrony" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416090a4d8f6358526df5f9f65dfe28750b8b7bfd1fd8a5620f483fc4a75722c" +checksum = "f9d6d5fbc4583cf3e5eee953506f13853a42ee6b4a21a983dffffb10c765cb80" dependencies = [ - "event-listener 5.4.1", + "event-listener 5.4.2", "futures-util", "local-event", "loom 0.7.2", @@ -11111,7 +11066,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -11148,7 +11103,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "core-foundation 0.9.4", "system-configuration-sys", ] @@ -11197,7 +11152,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix 1.1.4", "windows-sys 0.61.2", @@ -11205,13 +11160,11 @@ dependencies = [ [[package]] name = "tendril" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +checksum = "5fed54709c5b3a53d09bb1c113ea4f5ceafd1e772ddcb0030a82e1d56c087b08" dependencies = [ - "futf", - "mac", - "utf-8", + "new_debug_unreachable", ] [[package]] @@ -11235,9 +11188,9 @@ dependencies = [ [[package]] name = "thin-vec" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f7e269b48f0a7dd0146680fa24b50cc67fc0373f086a5b2f99bd084639b482" +checksum = "79def32ffcd477db1ff26f76dab9e3a91f0bd42a85ca96577089b24623056f9d" [[package]] name = "thiserror" @@ -11250,11 +11203,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.18", + "thiserror-impl 2.0.20", ] [[package]] @@ -11265,25 +11218,25 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if 1.0.4", ] @@ -11324,7 +11277,7 @@ dependencies = [ "pin-project", "prometheus 0.13.4", "prost 0.12.6", - "rand 0.8.6", + "rand 0.8.7", "regex", "semver", "serde", @@ -11338,12 +11291,11 @@ dependencies = [ [[package]] name = "time" -version = "0.3.47" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", - "itoa", "num-conv", "powerfmt", "serde_core", @@ -11353,15 +11305,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -11398,9 +11350,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -11419,11 +11371,11 @@ checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", - "mio 1.2.0", + "mio 1.2.2", "parking_lot 0.12.5", "pin-project-lite", "signal-hook-registry", - "socket2 0.6.3", + "socket2 0.6.5", "tokio-macros", "windows-sys 0.61.2", ] @@ -11450,13 +11402,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 3.0.3", ] [[package]] @@ -11471,12 +11423,12 @@ dependencies = [ [[package]] name = "tokio-retry" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f644c762e9d396831ae2f8935c954b0d758c4532e924bead0f666d0c1c8640" +checksum = "4a129d95275ebf4c493ec53bf0f8cd95f5ac161bc4f381700809a54f595d4470" dependencies = [ "pin-project-lite", - "rand 0.10.1", + "rand 0.10.2", "tokio", ] @@ -11496,15 +11448,15 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ - "rustls 0.23.40", + "rustls 0.23.43", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" dependencies = [ "futures-core", "pin-project-lite", @@ -11519,7 +11471,7 @@ checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857" dependencies = [ "futures-util", "log", - "rustls 0.23.40", + "rustls 0.23.43", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -11536,10 +11488,10 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.4.2", + "http 1.5.0", "httparse", "js-sys", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-tungstenite", "wasm-bindgen", @@ -11548,14 +11500,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", "futures-io", "futures-sink", + "libc", "pin-project-lite", "tokio", ] @@ -11581,7 +11534,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d01145a2c788d6aae4cd653afec1e8332534d7d783d01897cefcafe4428de992" dependencies = [ "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -11595,9 +11548,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.25.11+spec-1.1.0" +version = "0.25.13+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +checksum = "6975367e4d2ef766d86af01ffad14b622fecc8d4357a998fbc4deb6e9bacaf9b" dependencies = [ "indexmap 2.14.0", "toml_datetime", @@ -11607,9 +11560,9 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] @@ -11655,16 +11608,16 @@ dependencies = [ "axum 0.8.9", "base64 0.22.1", "bytes", - "h2 0.4.14", - "http 1.4.2", + "h2 0.4.15", + "http 1.5.0", "http-body 1.1.0", "http-body-util", - "hyper 1.9.0", + "hyper 1.11.0", "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", "pin-project", - "socket2 0.6.3", + "socket2 0.6.5", "sync_wrapper 1.0.2", "tokio", "tokio-rustls 0.26.4", @@ -11684,7 +11637,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -11694,7 +11647,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a55376a0bbaa4975a3f10d009ad763d8f4108f067c7c2e74f3001fb49778d309" dependencies = [ "bytes", - "prost 0.14.3", + "prost 0.14.4", "tonic 0.14.5", ] @@ -11709,7 +11662,7 @@ dependencies = [ "prost-build", "prost-types", "quote", - "syn 2.0.118", + "syn 2.0.119", "tempfile", "tonic-build", ] @@ -11720,7 +11673,7 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a875a902255423d34c1f20838ab374126db8eb41625b7947a1d54113b0b7399" dependencies = [ - "prost 0.14.3", + "prost 0.14.4", "prost-types", "tonic 0.14.5", ] @@ -11736,7 +11689,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand 0.8.6", + "rand 0.8.7", "slab", "tokio", "tokio-util", @@ -11766,14 +11719,14 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68d6fdd9f81c2819c9a8b0e0cd91660e7746a8e6ea2ba7c6b2b057985f6bcb51" +checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840" dependencies = [ - "bitflags 2.11.1", + "bitflags 2.13.1", "bytes", "futures-util", - "http 1.4.2", + "http 1.5.0", "http-body 1.1.0", "pin-project-lite", "tower 0.5.3", @@ -11814,7 +11767,7 @@ checksum = "050686193eb999b4bb3bc2acfa891a13da00f79734704c4b8b4ef1a10b368a3c" dependencies = [ "crossbeam-channel", "symlink", - "thiserror 2.0.18", + "thiserror 2.0.20", "time", "tracing-subscriber", ] @@ -11827,7 +11780,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -11930,9 +11883,9 @@ dependencies = [ [[package]] name = "triomphe" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" +checksum = "b40688ea6389c8171614b25491f71d4a27946e0c7ce2da1c6de27e25abf1a0ae" dependencies = [ "arc-swap", "serde", @@ -11959,25 +11912,25 @@ checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442" dependencies = [ "bytes", "data-encoding", - "http 1.4.2", + "http 1.5.0", "httparse", "log", - "rand 0.9.4", - "rustls 0.23.40", + "rand 0.9.5", + "rustls 0.23.43", "rustls-pki-types", - "sha1 0.10.6", - "thiserror 2.0.18", + "sha1 0.10.7", + "thiserror 2.0.20", "url", "utf-8", ] [[package]] name = "twox-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +checksum = "8464ec13c3691491391d9fce00f6416c9a48e46972f72d7865688be2080192c9" dependencies = [ - "rand 0.9.4", + "rand 0.10.2", ] [[package]] @@ -11997,14 +11950,14 @@ checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "typenum" -version = "1.20.0" +version = "1.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" +checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20" [[package]] name = "typewit" @@ -12018,7 +11971,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" dependencies = [ - "rand 0.9.4", + "rand 0.9.5", "serde", "web-time", ] @@ -12058,9 +12011,9 @@ checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d" [[package]] name = "unicode-segmentation" -version = "1.13.2" +version = "1.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" +checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8" [[package]] name = "unicode-width" @@ -12134,7 +12087,7 @@ version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", "serde_core", "wasm-bindgen", @@ -12148,9 +12101,9 @@ checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-bag" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0" +checksum = "068e763e8279de7ab94b6afebded2cb701678af094feb1c12ccb061b4783c1be" [[package]] name = "vart" @@ -12232,16 +12185,7 @@ version = "1.0.1+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" dependencies = [ - "wit-bindgen 0.46.0", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" -dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] @@ -12261,18 +12205,18 @@ dependencies = [ [[package]] name = "wasix" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1757e0d1f8456693c7e5c6c629bdb54884e032aa0bb53c155f6a39f94440d332" +checksum = "ae86f02046da16a333a9129d31451423e1657737ecdafed4193838a5f54c5cfe" dependencies = [ "wasi 0.11.1+wasi-snapshot-preview1", ] [[package]] name = "wasm-bindgen" -version = "0.2.121" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if 1.0.4", "once_cell", @@ -12284,9 +12228,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.71" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ "js-sys", "wasm-bindgen", @@ -12294,9 +12238,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.121" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -12304,31 +12248,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.121" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.121" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] [[package]] name = "wasm-bindgen-test" -version = "0.3.71" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af5ec93229ad9ccd0a545a516dec76dc276613f278f6a91aa6b463d5b33d42d0" +checksum = "895a2607575412a4eda1df892084a375ea10dfeadc4d7d2ab87b854e4ddc7ba1" dependencies = [ "async-trait", "cast", @@ -12348,42 +12292,20 @@ dependencies = [ [[package]] name = "wasm-bindgen-test-macro" -version = "0.3.71" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c81b9fef827e575e0e54431736d1baa0d700315d8c62cfef1f61fa3aad0cbeb" +checksum = "4288cb0ebe215033bf949ae1fd046726daa4c32a157f24b9dc6ac387a52aa759" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "wasm-bindgen-test-shared" -version = "0.2.121" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4d8ae7ad5440360e9799dfd42857d126454a88441ddf72d288ef83fa47f527" - -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap 2.14.0", - "wasm-encoder", - "wasmparser", -] +checksum = "33ff1c1b360982e93b6d8ea9c04836f71dba0817a16f91e229cf3a51bdd9d987" [[package]] name = "wasm-streams" @@ -12398,18 +12320,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags 2.11.1", - "hashbrown 0.15.5", - "indexmap 2.14.0", - "semver", -] - [[package]] name = "wasmtimer" version = "0.4.3" @@ -12431,9 +12341,9 @@ checksum = "323f4da9523e9a669e1eaf9c6e763892769b1d38c623913647bfdc1532fe4549" [[package]] name = "web-sys" -version = "0.3.98" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" dependencies = [ "js-sys", "wasm-bindgen", @@ -12451,11 +12361,11 @@ dependencies = [ [[package]] name = "web_atoms" -version = "0.1.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57ffde1dc01240bdf9992e3205668b235e59421fd085e8a317ed98da0178d414" +checksum = "075474b12bcb3d2e3d4546580e9de478eeeead668a1761e2a8860c836b7ef297" dependencies = [ - "phf 0.11.3", + "phf", "phf_codegen", "string_cache", "string_cache_codegen", @@ -12463,9 +12373,9 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" +checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b" dependencies = [ "rustls-pki-types", ] @@ -12476,14 +12386,14 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.7", + "webpki-roots 1.0.9", ] [[package]] name = "webpki-roots" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a" dependencies = [ "rustls-pki-types", ] @@ -12656,7 +12566,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -12667,7 +12577,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -13000,9 +12910,9 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" dependencies = [ "memchr", ] @@ -13013,94 +12923,6 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" -[[package]] -name = "wit-bindgen" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck 0.5.0", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck 0.5.0", - "indexmap 2.14.0", - "prettyplease", - "syn 2.0.118", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn 2.0.118", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags 2.11.1", - "indexmap 2.14.0", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap 2.14.0", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "writeable" version = "0.6.3" @@ -13128,9 +12950,9 @@ dependencies = [ [[package]] name = "xet-client" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b4ebf97728991933d7bdfbb4118173b773e5423d66433fecb969f1aa7786a70" +checksum = "c3b8da8cc70aa2e3c500c0400e012df82c656ab9fca47f9f939fffc5afd89aca" dependencies = [ "anyhow", "async-trait", @@ -13138,10 +12960,10 @@ dependencies = [ "bytes", "crc32fast", "futures", - "http 1.4.2", - "hyper 1.9.0", + "http 1.5.0", + "hyper 1.11.0", "more-asserts", - "rand 0.10.1", + "rand 0.10.2", "redb 3.1.3", "reqwest 0.13.4", "reqwest-middleware", @@ -13150,7 +12972,7 @@ dependencies = [ "serde_repr", "statrs", "tempfile", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-retry", "tokio_with_wasm", @@ -13164,9 +12986,9 @@ dependencies = [ [[package]] name = "xet-core-structures" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe69515f98acd9e3b357dce5f6ebff234c9626b01aa7dd436593747034fe7fd" +checksum = "73503c223783dccc864abde22115e09d12f190448a0baf58ab2c54bc709e2f99" dependencies = [ "async-trait", "base64 0.22.1", @@ -13176,17 +12998,17 @@ dependencies = [ "countio", "futures", "futures-util", - "getrandom 0.4.2", + "getrandom 0.4.3", "heapify", "itertools 0.14.0", "lz4_flex", "more-asserts", - "rand 0.10.1", + "rand 0.10.2", "regex", "safe-transmute", "serde", "static_assertions", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-util", "tracing", @@ -13197,24 +13019,24 @@ dependencies = [ [[package]] name = "xet-data" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "580ba26ccca44d41f1f7dcec838ffb166f629e9c72fb7172839f6d092439a61c" +checksum = "c89052ec5dec2187cad30b86af92cc24fd61c4a57a795f1ff7ff5f38d49184eb" dependencies = [ "anyhow", "async-trait", "bytes", "chrono", "gearhash", - "http 1.4.2", + "http 1.5.0", "itertools 0.14.0", "more-asserts", - "rand 0.10.1", + "rand 0.10.2", "serde", "serde_json", "sha2 0.11.0", "tempfile", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-util", "tokio_with_wasm", @@ -13229,9 +13051,9 @@ dependencies = [ [[package]] name = "xet-runtime" -version = "1.5.4" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca7a88ab94bba9dbf47ca966ca3bb5e6eb1167752a5aff881276bf786cc5d522" +checksum = "af5c60d5eed38ab4c576f4421bae835e7bd07631fb381705605529d2015c106b" dependencies = [ "anyhow", "async-trait", @@ -13249,13 +13071,13 @@ dependencies = [ "more-asserts", "oneshot", "pin-project", - "rand 0.10.1", + "rand 0.10.2", "reqwest 0.13.4", "serde", "serde_json", "shellexpand", "sysinfo 0.38.4", - "thiserror 2.0.18", + "thiserror 2.0.20", "tokio", "tokio-util", "tokio_with_wasm", @@ -13269,9 +13091,9 @@ dependencies = [ [[package]] name = "xml" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "636f85e5ca6488e96401b61eb7de54f4e44755c988af0f52cf90230c312a1a89" +checksum = "2f45bb2c13fec6a6cb4c0f76a7e94839e110a14ec803ec2940777a94c347bc52" [[package]] name = "xml-rs" @@ -13290,9 +13112,9 @@ checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "xxhash-rust" -version = "0.8.15" +version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" +checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6" [[package]] name = "yansi" @@ -13302,9 +13124,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -13319,35 +13141,35 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.48" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.48" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] name = "zerofrom" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272" dependencies = [ "zerofrom-derive", ] @@ -13360,15 +13182,15 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" @@ -13400,7 +13222,7 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn 2.0.118", + "syn 2.0.119", ] [[package]] @@ -13414,9 +13236,9 @@ dependencies = [ [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd" diff --git a/core/Cargo.toml b/core/Cargo.toml index d7d686e71ff3..b412170ddf7b 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -22,6 +22,7 @@ members = [ "benches/vs_*", "core", "edge/*", + "executors/*", "examples/*", "fuzz", "http-transports/*", @@ -44,6 +45,7 @@ version = "0.58.1" [workspace.dependencies] base64 = "0.23" bytes = "1.10" +compio = "0.19.1" ctor = "1.0.7" futures = { version = "0.3", default-features = false } http = "1.4" @@ -82,9 +84,9 @@ unused_async = "warn" all-features = true [features] -# Install facade defaults before `main`: register enabled services and, when -# configured, install the default HTTP transport. Disable this feature when the -# application needs to install its own process-wide HTTP transport. +# Install facade defaults before `main`: register enabled services and install +# configured runtime defaults. Disable this feature when the application needs +# to install its own process-wide defaults. auto-register-services = ["dep:ctor"] blocking = ["opendal-core/blocking"] default = [ @@ -96,7 +98,8 @@ default = [ "layers-retry", "layers-timeout", ] -executors-tokio = ["opendal-core/executors-tokio"] +executors-compio = ["dep:opendal-executor-compio"] +executors-tokio = ["dep:opendal-executor-tokio"] # Default http-transport-reqwest transport feature, used for: # - install default http transport # - feature gate for various of bindings dependency @@ -242,6 +245,8 @@ required-features = ["tests"] [dependencies] ctor = { workspace = true, optional = true } opendal-core = { path = "core", version = "0.58.1", default-features = false } +opendal-executor-compio = { path = "executors/compio", version = "0.58.1", optional = true, default-features = false } +opendal-executor-tokio = { path = "executors/tokio", version = "0.58.1", optional = true, default-features = false } opendal-http-transport-reqwest = { path = "http-transports/reqwest", version = "0.58.1", optional = true, default-features = false } opendal-layer-async-backtrace = { path = "layers/async-backtrace", version = "0.58.1", optional = true, default-features = false } opendal-layer-await-tree = { path = "layers/await-tree", version = "0.58.1", optional = true, default-features = false } diff --git a/core/core/Cargo.toml b/core/core/Cargo.toml index ceedefe1353d..99e577ae7f46 100644 --- a/core/core/Cargo.toml +++ b/core/core/Cargo.toml @@ -38,7 +38,7 @@ unused_async = "warn" all-features = true [features] -default = ["executors-tokio"] +default = [] # Enable opendal's blocking support. blocking = ["internal-tokio-rt"] @@ -46,9 +46,6 @@ blocking = ["internal-tokio-rt"] # Enable tokio runtime. internal-tokio-rt = ["tokio/rt-multi-thread"] -# Enable tokio executors support. -executors-tokio = ["tokio/rt"] - # Enable reqsign integration. # # This wires OpenDAL's `HttpTransporter` into reqsign as an `HttpSend` backend, @@ -92,8 +89,14 @@ uuid = { workspace = true, features = ["serde", "v4", "js"] } web-time = { version = "1.1.0" } [dev-dependencies] +futures = { workspace = true, features = ["executor"] } logforth = { workspace = true } pretty_assertions = "1" rand = { workspace = true } sha2 = { workspace = true } -tokio = { workspace = true, features = ["fs", "macros", "rt-multi-thread"] } +tokio = { workspace = true, features = [ + "fs", + "macros", + "rt-multi-thread", + "time", +] } diff --git a/core/core/src/raw/futures_util.rs b/core/core/src/raw/futures_util.rs index c92722490b42..ca8898bc6073 100644 --- a/core/core/src/raw/futures_util.rs +++ b/core/core/src/raw/futures_util.rs @@ -327,7 +327,7 @@ mod tests { #[tokio::test] async fn test_concurrent_tasks() { - let executor = Executor::new(); + let executor = crate::test_executor(); let mut tasks = ConcurrentTasks::new(executor, 16, 8, |(i, dur)| { Box::pin(async move { @@ -370,7 +370,7 @@ mod tests { #[tokio::test] async fn test_prefetch_backpressure() { - let executor = Executor::new(); + let executor = crate::test_executor(); let concurrent = 4; let prefetch = 2; @@ -428,7 +428,7 @@ mod tests { #[tokio::test] async fn test_prefetch_zero() { - let executor = Executor::new(); + let executor = crate::test_executor(); let concurrent = 4; let prefetch = 0; // No prefetching allowed diff --git a/core/core/src/raw/oio/copy/block_copy.rs b/core/core/src/raw/oio/copy/block_copy.rs index cf0be6891992..4393e78168a6 100644 --- a/core/core/src/raw/oio/copy/block_copy.rs +++ b/core/core/src/raw/oio/copy/block_copy.rs @@ -364,7 +364,7 @@ mod tests { let inner = TestCopy { state: state.clone(), }; - let mut copier = BlockCopier::new(Executor::default(), inner, None, 0, 2, 2); + let mut copier = BlockCopier::new(crate::test_executor(), inner, None, 0, 2, 2); while copier.next().await?.is_some() {} diff --git a/core/core/src/raw/oio/copy/multipart_copy.rs b/core/core/src/raw/oio/copy/multipart_copy.rs index 1fec966d5f75..732746417955 100644 --- a/core/core/src/raw/oio/copy/multipart_copy.rs +++ b/core/core/src/raw/oio/copy/multipart_copy.rs @@ -437,7 +437,8 @@ mod tests { #[tokio::test] async fn test_content_length_hint_skips_source_metadata() -> Result<()> { let inner = TestCopy::new(8); - let mut copier = MultipartCopier::new(Executor::default(), inner.clone(), Some(8), 8, 8, 1); + let mut copier = + MultipartCopier::new(crate::test_executor(), inner.clone(), Some(8), 8, 8, 1); assert_eq!(copier.next().await?, None); assert_eq!(inner.source_metadata_calls.load(Ordering::Relaxed), 0); @@ -448,7 +449,7 @@ mod tests { #[tokio::test] async fn test_missing_content_length_hint_loads_source_metadata() -> Result<()> { let inner = TestCopy::new(8); - let mut copier = MultipartCopier::new(Executor::default(), inner.clone(), None, 8, 8, 1); + let mut copier = MultipartCopier::new(crate::test_executor(), inner.clone(), None, 8, 8, 1); assert_eq!(copier.next().await?, None); assert_eq!(inner.source_metadata_calls.load(Ordering::Relaxed), 1); @@ -467,7 +468,7 @@ mod tests { // source_size=10, part_size=1, copy_once_threshold=0 -> 10 parts needed, only 2 allowed. let inner = TestCopy::new(10); let mut copier = MultipartCopier::new( - /*context=*/ (Executor::default(), capability), + /*context=*/ (crate::test_executor(), capability), /*inner=*/ inner.clone(), /*source_content_length_hint=*/ Some(10), /*copy_once_threshold=*/ 0, diff --git a/core/core/src/raw/oio/write/block_write.rs b/core/core/src/raw/oio/write/block_write.rs index 394b562a78e0..807e16208130 100644 --- a/core/core/src/raw/oio/write/block_write.rs +++ b/core/core/src/raw/oio/write/block_write.rs @@ -326,7 +326,7 @@ mod tests { async fn test_block_writer_with_concurrent_errors() { let mut rng = rng(); - let mut w = BlockWriter::new(Executor::default(), TestWrite::new(), 8); + let mut w = BlockWriter::new(crate::test_executor(), TestWrite::new(), 8); let mut total_size = 0u64; let mut expected_content = Vec::new(); @@ -370,7 +370,7 @@ mod tests { let mut rng = rng(); for _ in 1..100 { - let mut w = BlockWriter::new(Executor::default(), TestWrite::new(), 8); + let mut w = BlockWriter::new(crate::test_executor(), TestWrite::new(), 8); let size = rng.random_range(1..1024); let mut bs = vec![0; size]; diff --git a/core/core/src/raw/oio/write/multipart_write.rs b/core/core/src/raw/oio/write/multipart_write.rs index 56b3d519c084..d5e4a012c09b 100644 --- a/core/core/src/raw/oio/write/multipart_write.rs +++ b/core/core/src/raw/oio/write/multipart_write.rs @@ -422,7 +422,7 @@ mod tests { impl TimeoutExecutor { pub fn new() -> Self { Self { - exec: Executor::new().into_inner(), + exec: crate::test_executor().into_inner(), } } } @@ -432,9 +432,9 @@ mod tests { self.exec.execute(f) } - fn timeout(&self) -> Option> { + fn timeout(&self, _: Duration) -> BoxedStaticFuture<()> { let time = rng().random_range(0..100); - Some(Box::pin(tokio::time::sleep(Duration::from_nanos(time)))) + self.exec.timeout(Duration::from_nanos(time)) } } @@ -488,7 +488,7 @@ mod tests { let mut rng = rng(); for _ in 0..100 { - let mut w = MultipartWriter::new(Executor::default(), TestWrite::new(), 200); + let mut w = MultipartWriter::new(crate::test_executor(), TestWrite::new(), 200); let size = rng.random_range(1..1024); let mut bs = vec![0; size]; rng.fill_bytes(&mut bs); diff --git a/core/core/src/raw/oio/write/position_write.rs b/core/core/src/raw/oio/write/position_write.rs index 944669621c8c..5eb6c8ed27d7 100644 --- a/core/core/src/raw/oio/write/position_write.rs +++ b/core/core/src/raw/oio/write/position_write.rs @@ -239,7 +239,7 @@ mod tests { async fn test_position_writer_with_concurrent_errors() { let mut rng = rng(); - let mut w = PositionWriter::new(Executor::default(), TestWrite::new(), 200); + let mut w = PositionWriter::new(crate::test_executor(), TestWrite::new(), 200); let mut total_size = 0u64; for _ in 0..1000 { diff --git a/core/core/src/types/execute/api.rs b/core/core/src/types/execute/api.rs index d7dadd529f9b..855d50bafaca 100644 --- a/core/core/src/types/execute/api.rs +++ b/core/core/src/types/execute/api.rs @@ -19,6 +19,7 @@ use std::future::Future; use std::pin::Pin; use std::task::Context; use std::task::Poll; +use std::time::Duration; use futures::FutureExt; use futures::future::RemoteHandle; @@ -58,18 +59,18 @@ pub trait Execute: Send + Sync + 'static { /// - Implementor MUST NOT drop futures until it's resolved. fn execute(&self, f: BoxedStaticFuture<()>); - /// Return a future that will be resolved after the given timeout. - /// - /// Default implementation returns None. - fn timeout(&self) -> Option> { - None - } + /// Return a future that resolves after the given timeout. + fn timeout(&self, _: Duration) -> BoxedStaticFuture<()>; } impl Execute for () { fn execute(&self, _: BoxedStaticFuture<()>) { panic!("concurrent tasks executed with no executor has been enabled") } + + fn timeout(&self, _: Duration) -> BoxedStaticFuture<()> { + panic!("concurrent tasks executed with no executor has been enabled") + } } /// Task is generated by Executor that represents an executing task. diff --git a/core/core/src/types/execute/executor.rs b/core/core/src/types/execute/executor.rs index 36a87f33e946..3a9413af838c 100644 --- a/core/core/src/types/execute/executor.rs +++ b/core/core/src/types/execute/executor.rs @@ -19,6 +19,8 @@ use std::fmt::Debug; use std::fmt::Formatter; use std::future::Future; use std::sync::Arc; +use std::sync::OnceLock; +use std::time::Duration; use futures::FutureExt; @@ -26,6 +28,8 @@ use super::*; use crate::raw::BoxedStaticFuture; use crate::raw::MaybeSend; +static DEFAULT_EXECUTOR: OnceLock = OnceLock::new(); + /// Executor that runs futures in background. /// /// Executor is created by users and used by opendal. So it's by design that Executor only @@ -36,6 +40,7 @@ use crate::raw::MaybeSend; #[derive(Clone)] pub struct Executor { executor: Arc, + timeout: Option, } impl Debug for Executor { @@ -52,35 +57,48 @@ impl Default for Executor { impl Executor { /// Create a default executor. - /// - /// The default executor is enabled by feature flags. If no feature flags enabled, the default - /// executor will always return error if users try to perform concurrent tasks. pub fn new() -> Self { - #[cfg(feature = "executors-tokio")] - { - Self::with(executors::TokioExecutor::default()) - } - #[cfg(not(feature = "executors-tokio"))] - { - Self::with(()) - } + Self::with(DefaultExecutor) } /// Create a new executor with given execute impl. pub fn with(exec: impl Execute) -> Self { Self { executor: Arc::new(exec), + timeout: None, } } + /// Install the process-wide default executor. + /// + /// The first installed executor wins. Later calls are ignored. + /// The `opendal` facade installs Tokio by default. + pub fn install_default(exec: impl Execute) { + let _ = DEFAULT_EXECUTOR.set(Self::with(exec)); + } + /// Return the inner executor. pub fn into_inner(self) -> Arc { self.executor } + /// Return a reference to the inner executor. + pub fn inner(&self) -> &dyn Execute { + self.executor.as_ref() + } + + /// Return a copy with the timeout used by internal concurrent operations. + #[doc(hidden)] + pub fn with_timeout(&self, timeout: Duration) -> Self { + Self { + executor: self.executor.clone(), + timeout: Some(timeout), + } + } + /// Return a future that will be resolved after the given timeout. pub(crate) fn timeout(&self) -> Option> { - self.executor.timeout() + Some(self.executor.timeout(self.timeout?)) } /// Run given future in background immediately. @@ -94,3 +112,21 @@ impl Executor { Task::new(handle) } } + +struct DefaultExecutor; + +impl Execute for DefaultExecutor { + fn execute(&self, f: BoxedStaticFuture<()>) { + match DEFAULT_EXECUTOR.get() { + Some(executor) => executor.inner().execute(f), + None => panic!("default executor is not installed"), + } + } + + fn timeout(&self, timeout: Duration) -> BoxedStaticFuture<()> { + match DEFAULT_EXECUTOR.get() { + Some(executor) => executor.inner().timeout(timeout), + None => panic!("default executor is not installed"), + } + } +} diff --git a/core/core/src/types/execute/executors/mod.rs b/core/core/src/types/execute/executors/mod.rs deleted file mode 100644 index 2f371b759f81..000000000000 --- a/core/core/src/types/execute/executors/mod.rs +++ /dev/null @@ -1,27 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -//! executors module provides implementations for the [`Execute`](crate::Execute) trait for widely used runtimes. -//! -//! OpenDAL provides executor integrations through features such as `executors-xxx`. -//! Enable the corresponding feature to select an executor. You can also provide -//! your own executor by implementing the [`Execute`](crate::Execute) trait. - -#[cfg(feature = "executors-tokio")] -mod tokio_executor; -#[cfg(feature = "executors-tokio")] -pub use tokio_executor::TokioExecutor; diff --git a/core/core/src/types/execute/executors/tokio_executor.rs b/core/core/src/types/execute/executors/tokio_executor.rs deleted file mode 100644 index afb02931cff5..000000000000 --- a/core/core/src/types/execute/executors/tokio_executor.rs +++ /dev/null @@ -1,59 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -use crate::raw::*; -use crate::*; - -/// Executor that uses the [`tokio::task::spawn`] to execute futures. -#[derive(Default)] -pub struct TokioExecutor {} - -impl Execute for TokioExecutor { - /// Tokio's JoinHandle has its own `abort` support, so dropping handle won't cancel the task. - fn execute(&self, f: BoxedStaticFuture<()>) { - let _handle = tokio::task::spawn(f); - } -} - -#[cfg(test)] -mod tests { - use std::sync::Arc; - use std::sync::atomic::AtomicBool; - use std::sync::atomic::Ordering; - - use tokio::time::sleep; - - use super::*; - use crate::Executor; - - #[tokio::test] - async fn test_tokio_executor() { - let executor = Executor::with(TokioExecutor::default()); - - let finished = Arc::new(AtomicBool::new(false)); - - let finished_clone = finished.clone(); - let _task = executor.execute(async move { - sleep(Duration::from_secs(1)).await; - finished_clone.store(true, Ordering::Relaxed); - }); - - sleep(Duration::from_secs(2)).await; - // Task must have been finished even without await task. - assert!(finished.load(Ordering::Relaxed)) - } -} diff --git a/core/core/src/types/execute/mod.rs b/core/core/src/types/execute/mod.rs index 43f52150b584..bdb28a8b205f 100644 --- a/core/core/src/types/execute/mod.rs +++ b/core/core/src/types/execute/mod.rs @@ -22,4 +22,21 @@ pub(crate) use api::Task; mod executor; pub use executor::Executor; -pub mod executors; +#[cfg(test)] +pub(crate) fn test_executor() -> Executor { + Executor::with(TestExecutor) +} + +#[cfg(test)] +struct TestExecutor; + +#[cfg(test)] +impl Execute for TestExecutor { + fn execute(&self, f: crate::raw::BoxedStaticFuture<()>) { + let _handle = tokio::task::spawn(f); + } + + fn timeout(&self, timeout: std::time::Duration) -> crate::raw::BoxedStaticFuture<()> { + Box::pin(tokio::time::sleep(timeout)) + } +} diff --git a/core/core/src/types/read/futures_async_reader.rs b/core/core/src/types/read/futures_async_reader.rs index cfb41f0b506a..51f45db01c15 100644 --- a/core/core/src/types/read/futures_async_reader.rs +++ b/core/core/src/types/read/futures_async_reader.rs @@ -257,7 +257,7 @@ mod tests { ) .await?; - let ctx = op.context().clone(); + let ctx = op.context().with_executor(crate::test_executor()); let srv = op.service().clone(); let ctx = Arc::new(new_read_context( ctx, @@ -289,7 +289,7 @@ mod tests { ) .await?; - let ctx = op.context().clone(); + let ctx = op.context().with_executor(crate::test_executor()); let srv = op.service().clone(); let ctx = Arc::new(new_read_context( ctx, diff --git a/core/core/src/types/read/futures_bytes_stream.rs b/core/core/src/types/read/futures_bytes_stream.rs index 703f0fc4d951..ffb0885ef098 100644 --- a/core/core/src/types/read/futures_bytes_stream.rs +++ b/core/core/src/types/read/futures_bytes_stream.rs @@ -156,7 +156,7 @@ mod tests { ) .await?; - let ctx = op.context().clone(); + let ctx = op.context().with_executor(crate::test_executor()); let srv = op.service().clone(); let ctx = Arc::new(new_read_context( ctx, diff --git a/core/core/src/types/read/reader.rs b/core/core/src/types/read/reader.rs index 274fae936e17..5cafbb3fdf96 100644 --- a/core/core/src/types/read/reader.rs +++ b/core/core/src/types/read/reader.rs @@ -628,7 +628,7 @@ mod tests { ) -> Reader { let op = Operator::new(services::Memory::default()).unwrap(); Reader::new(ReadContext::new( - op.context().clone(), + op.context().with_executor(crate::test_executor()), op.service().clone(), "test_file".to_string(), OpRead::new(), @@ -767,6 +767,8 @@ mod tests { #[tokio::test] async fn test_reader_read_with_concurrent() -> Result<()> { let op = Operator::via_iter(services::MEMORY_SCHEME, [])?; + let ctx = op.context().with_executor(crate::test_executor()); + let op = op.with_context(ctx); let path = "test_file"; let content = gen_random_bytes(); @@ -843,6 +845,8 @@ mod tests { #[tokio::test] async fn test_reader_read_suffix_with_chunk_and_concurrent() -> Result<()> { let op = Operator::via_iter(services::MEMORY_SCHEME, [])?; + let ctx = op.context().with_executor(crate::test_executor()); + let op = op.with_context(ctx); let path = "test_file"; op.write(path, Buffer::from("HelloWorld")).await?; diff --git a/core/executors/compio/Cargo.toml b/core/executors/compio/Cargo.toml new file mode 100644 index 000000000000..0f36eb9820c2 --- /dev/null +++ b/core/executors/compio/Cargo.toml @@ -0,0 +1,37 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +[package] +description = "Apache OpenDAL Compio executor implementation" +name = "opendal-executor-compio" +readme = "README.md" + +authors = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +repository = { workspace = true } +rust-version = { workspace = true } +version = { workspace = true } + +[package.metadata.docs.rs] +all-features = true + +[dependencies] +compio = { workspace = true, features = ["dispatcher", "runtime", "time"] } +futures = { workspace = true, features = ["std"] } +opendal-core = { path = "../../core", version = "0.58.1", default-features = false } diff --git a/core/executors/compio/README.md b/core/executors/compio/README.md new file mode 100644 index 000000000000..30cb26926fa1 --- /dev/null +++ b/core/executors/compio/README.md @@ -0,0 +1,27 @@ +# Apache OpenDALâ„¢ Compio Executor + +`opendal-executor-compio` runs OpenDAL background tasks and timers on a Compio dispatcher. + +## Use through `opendal` + +Enable the executor through the `opendal` facade: + +```shell +cargo add opendal --features executors-compio +``` + +The executor is available as `opendal::executors::CompioExecutor`. + +## Use with `opendal-core` + +Add the split crates directly: + +```shell +cargo add opendal-core opendal-executor-compio +``` + +Pass `CompioExecutor` to `Executor::with` when constructing an operation context. + +## License + +Licensed under the Apache License, Version 2.0. diff --git a/core/executors/compio/src/lib.rs b/core/executors/compio/src/lib.rs new file mode 100644 index 000000000000..37ab456f313b --- /dev/null +++ b/core/executors/compio/src/lib.rs @@ -0,0 +1,66 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#![doc = include_str!("../README.md")] +#![cfg_attr(docsrs, feature(doc_cfg))] +#![cfg_attr(docsrs, doc(auto_cfg))] +#![deny(missing_docs)] + +use std::sync::Arc; +use std::time::Duration; + +use compio::dispatcher::Dispatcher; +use futures::channel::oneshot; +use opendal_core::Execute; +use opendal_core::raw::BoxedStaticFuture; + +/// Executor that runs futures and timers on a Compio [`Dispatcher`]. +/// +/// Task submission and timer creation panic if the dispatcher cannot accept +/// work, such as after all worker threads stop. +#[derive(Clone)] +pub struct CompioExecutor { + dispatcher: Arc, +} + +impl CompioExecutor { + /// Create an executor backed by the given dispatcher. + pub fn new(dispatcher: Arc) -> Self { + Self { dispatcher } + } +} + +impl Execute for CompioExecutor { + fn execute(&self, f: BoxedStaticFuture<()>) { + let _ = self.dispatcher.dispatch(move || f); + } + + fn timeout(&self, timeout: Duration) -> BoxedStaticFuture<()> { + let (cancel_tx, cancel_rx) = oneshot::channel::<()>(); + let receiver = match self + .dispatcher + .dispatch(move || async move { compio::time::timeout(timeout, cancel_rx).await }) + { + Ok(receiver) => receiver, + Err(_) => panic!("compio dispatcher is unavailable"), + }; + Box::pin(async move { + let _cancel_on_drop = cancel_tx; + let _ = receiver.await; + }) + } +} diff --git a/core/executors/tokio/Cargo.toml b/core/executors/tokio/Cargo.toml new file mode 100644 index 000000000000..d14c6303d41c --- /dev/null +++ b/core/executors/tokio/Cargo.toml @@ -0,0 +1,40 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +[package] +description = "Apache OpenDAL Tokio executor implementation" +name = "opendal-executor-tokio" +readme = "README.md" + +authors = { workspace = true } +edition = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +repository = { workspace = true } +rust-version = { workspace = true } +version = { workspace = true } + +[package.metadata.docs.rs] +all-features = true + +[dependencies] +opendal-core = { path = "../../core", version = "0.58.1", default-features = false } +tokio = { workspace = true, features = ["rt", "time"] } + +[dev-dependencies] +futures = { workspace = true } +tokio = { workspace = true, features = ["macros", "rt", "time"] } diff --git a/core/executors/tokio/README.md b/core/executors/tokio/README.md new file mode 100644 index 000000000000..c9e6d5ba98bb --- /dev/null +++ b/core/executors/tokio/README.md @@ -0,0 +1,28 @@ +# Apache OpenDALâ„¢ Tokio Executor + +`opendal-executor-tokio` runs OpenDAL background tasks and timers on Tokio. + +## Use through `opendal` + +Applications should normally enable this executor through the `opendal` facade with the +`executors-tokio` feature. The feature is enabled by default. + +```shell +cargo add opendal --features executors-tokio +``` + +The executor is available as `opendal::executors::TokioExecutor`. + +## Use with `opendal-core` + +Add the split crates directly: + +```shell +cargo add opendal-core opendal-executor-tokio +``` + +Pass `TokioExecutor` to `Executor::with` when constructing an operation context. + +## License + +Licensed under the Apache License, Version 2.0. diff --git a/core/executors/tokio/src/lib.rs b/core/executors/tokio/src/lib.rs new file mode 100644 index 000000000000..5d6f5ce59ef6 --- /dev/null +++ b/core/executors/tokio/src/lib.rs @@ -0,0 +1,71 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +#![doc = include_str!("../README.md")] +#![cfg_attr(docsrs, feature(doc_cfg))] +#![cfg_attr(docsrs, doc(auto_cfg))] +#![deny(missing_docs)] + +use std::time::Duration; + +use opendal_core::Execute; +use opendal_core::Executor; +use opendal_core::raw::BoxedStaticFuture; + +/// Executor that uses [`tokio::task::spawn`] to execute futures. +#[derive(Default)] +pub struct TokioExecutor {} + +impl Execute for TokioExecutor { + fn execute(&self, f: BoxedStaticFuture<()>) { + let _handle = tokio::task::spawn(f); + } + + fn timeout(&self, timeout: Duration) -> BoxedStaticFuture<()> { + Box::pin(tokio::time::sleep(timeout)) + } +} + +/// Install Tokio as the process-wide default OpenDAL executor. +#[doc(hidden)] +pub fn install_default() { + Executor::install_default(TokioExecutor::default()); +} + +#[cfg(test)] +mod tests { + use futures::channel::oneshot; + use tokio::time::timeout; + + use super::*; + + #[tokio::test] + async fn test_default_tokio_executor() { + let executor = Executor::default(); + install_default(); + let (tx, rx) = oneshot::channel(); + + executor.inner().execute(Box::pin(async move { + let _ = tx.send(()); + })); + + timeout(Duration::from_secs(1), rx) + .await + .expect("task should finish before timeout") + .expect("task should send completion"); + } +} diff --git a/core/layers/concurrent-limit/Cargo.toml b/core/layers/concurrent-limit/Cargo.toml index 4d525ac22c01..6b7aa0c1b411 100644 --- a/core/layers/concurrent-limit/Cargo.toml +++ b/core/layers/concurrent-limit/Cargo.toml @@ -39,4 +39,5 @@ opendal-core = { path = "../../core", version = "0.58.1", default-features = fal [dev-dependencies] opendal-core = { path = "../../core", version = "0.58.1" } +opendal-executor-tokio = { path = "../../executors/tokio", version = "0.58.1" } tokio = { workspace = true, features = ["macros", "rt", "time"] } diff --git a/core/layers/concurrent-limit/src/lib.rs b/core/layers/concurrent-limit/src/lib.rs index c0efd5a3dec0..cd82e3a9be88 100644 --- a/core/layers/concurrent-limit/src/lib.rs +++ b/core/layers/concurrent-limit/src/lib.rs @@ -499,6 +499,7 @@ mod tests { use super::*; use opendal_core::Operator; use opendal_core::services; + use opendal_executor_tokio::TokioExecutor; use std::future::pending; use std::sync::Arc; use std::time::Duration; @@ -1017,7 +1018,9 @@ mod tests { }), ) .with_context( - OperationContext::new().with_http_transport(HttpTransporter::new(EchoTransport)), + OperationContext::new() + .with_http_transport(HttpTransporter::new(EchoTransport)) + .with_executor(Executor::with(TokioExecutor::default())), ) .layer(ConcurrentLimitLayer::new(1024).with_http_concurrent_limit(2)); diff --git a/core/layers/foyer/src/lib.rs b/core/layers/foyer/src/lib.rs index db63b051bb5e..c78af3623276 100644 --- a/core/layers/foyer/src/lib.rs +++ b/core/layers/foyer/src/lib.rs @@ -361,7 +361,6 @@ mod tests { BlockEngineConfig, DeviceBuilder, Error as FoyerError, ErrorKind as FoyerErrorKind, FsDeviceBuilder, HybridCache, HybridCacheBuilder, RecoverMode, }; - use opendal_core::raw::Layer as _; use opendal_core::raw::oio::Read as _; use opendal_core::raw::oio::ReadStream as _; use opendal_core::{Buffer, Operator, services::Memory}; diff --git a/core/layers/timeout/Cargo.toml b/core/layers/timeout/Cargo.toml index 9f8aaa8702d2..6c9118fd358b 100644 --- a/core/layers/timeout/Cargo.toml +++ b/core/layers/timeout/Cargo.toml @@ -32,11 +32,10 @@ version = { workspace = true } all-features = true [dependencies] +futures = { workspace = true } opendal-core = { path = "../../core", version = "0.58.1", default-features = false } -tokio = { workspace = true, features = ["time"] } [dev-dependencies] -futures = { workspace = true } -opendal-core = { path = "../../core", version = "0.58.1" } +opendal-executor-tokio = { path = "../../executors/tokio", version = "0.58.1" } opendal-layer-retry = { path = "../retry", version = "0.58.1" } -tokio = { workspace = true, features = ["macros", "rt-multi-thread"] } +tokio = { workspace = true, features = ["macros", "rt-multi-thread", "time"] } diff --git a/core/layers/timeout/src/lib.rs b/core/layers/timeout/src/lib.rs index 86a04da0df4f..c622a2872fcd 100644 --- a/core/layers/timeout/src/lib.rs +++ b/core/layers/timeout/src/lib.rs @@ -23,6 +23,8 @@ use std::future::Future; use std::sync::Arc; use std::time::Duration; +use futures::FutureExt; +use futures::select_biased; use opendal_core::raw::*; use opendal_core::*; @@ -102,9 +104,8 @@ use opendal_core::*; /// /// # Implementation Notes /// -/// `TimeoutLayer` uses [`tokio::time::timeout`] to bound service calls and IO -/// body methods. It also supplies an executor timeout so concurrent block write -/// and copy tasks can fail instead of waiting forever. +/// `TimeoutLayer` uses the operation executor's timer directly to bound service +/// calls, IO body methods, and concurrent block write and copy tasks. /// /// This introduces a small amount of overhead for IO operations, but it is needed /// to implement timeouts correctly. OpenDAL used to implement this as a @@ -162,11 +163,7 @@ impl Layer for TimeoutLayer { } fn apply_context(&self, _srv: Servicer, inner: OperationContext) -> OperationContext { - // Concurrent block IO paths read this timeout from the operation context's executor. - let executor = Executor::with(TimeoutExecutor::new( - inner.executor().clone().into_inner(), - self.io_timeout, - )); + let executor = inner.executor().with_timeout(self.io_timeout); inner.with_executor(executor) } } @@ -190,13 +187,25 @@ pub struct TimeoutService { } impl TimeoutService { - async fn timeout>, T>(&self, op: Operation, fut: F) -> Result { - tokio::time::timeout(self.timeout, fut).await.map_err(|_| { - Error::new(ErrorKind::Unexpected, "operation timeout reached") - .with_operation(op) - .with_context("timeout", self.timeout.as_secs_f64().to_string()) - .set_temporary() - })? + async fn timeout>, T>( + &self, + ctx: &OperationContext, + op: Operation, + fut: F, + ) -> Result { + let timer = ctx.executor().inner().timeout(self.timeout); + execute_with_timeout( + timer, + self.timeout, + op.into_static(), + "operation timeout reached", + fut, + ) + .await + } + + fn wrap_io(&self, ctx: &OperationContext, inner: T) -> TimeoutWrapper { + TimeoutWrapper::new(inner, self.io_timeout, ctx.executor().clone()) } } @@ -221,20 +230,24 @@ impl Service for TimeoutService { path: &str, args: OpCreateDir, ) -> Result { - self.timeout(Operation::CreateDir, self.inner.create_dir(ctx, path, args)) - .await + self.timeout( + ctx, + Operation::CreateDir, + self.inner.create_dir(ctx, path, args), + ) + .await } fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) -> Result { self.inner .read(ctx, path, args) - .map(|r| TimeoutWrapper::new(r, self.io_timeout)) + .map(|r| self.wrap_io(ctx, r)) } fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite) -> Result { self.inner .write(ctx, path, args) - .map(|r| TimeoutWrapper::new(r, self.io_timeout)) + .map(|r| self.wrap_io(ctx, r)) } fn copy( @@ -247,7 +260,7 @@ impl Service for TimeoutService { ) -> Result { self.inner .copy(ctx, from, to, args, opts) - .map(|c| TimeoutWrapper::new(c, self.io_timeout)) + .map(|c| self.wrap_io(ctx, c)) } async fn rename( @@ -257,25 +270,27 @@ impl Service for TimeoutService { to: &str, args: OpRename, ) -> Result { - self.timeout(Operation::Rename, self.inner.rename(ctx, from, to, args)) - .await + self.timeout( + ctx, + Operation::Rename, + self.inner.rename(ctx, from, to, args), + ) + .await } async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat) -> Result { - self.timeout(Operation::Stat, self.inner.stat(ctx, path, args)) + self.timeout(ctx, Operation::Stat, self.inner.stat(ctx, path, args)) .await } fn delete(&self, ctx: &OperationContext) -> Result { - self.inner - .delete(ctx) - .map(|r| TimeoutWrapper::new(r, self.io_timeout)) + self.inner.delete(ctx).map(|r| self.wrap_io(ctx, r)) } fn list(&self, ctx: &OperationContext, path: &str, args: OpList) -> Result { self.inner .list(ctx, path, args) - .map(|r| TimeoutWrapper::new(r, self.io_timeout)) + .map(|r| self.wrap_io(ctx, r)) } async fn presign( @@ -284,69 +299,75 @@ impl Service for TimeoutService { path: &str, args: OpPresign, ) -> Result { - self.timeout(Operation::Presign, self.inner.presign(ctx, path, args)) + self.timeout(ctx, Operation::Presign, self.inner.presign(ctx, path, args)) .await } } -struct TimeoutExecutor { - exec: Arc, - timeout: Duration, -} - -impl TimeoutExecutor { - fn new(exec: Arc, timeout: Duration) -> Self { - Self { exec, timeout } - } -} - -impl Execute for TimeoutExecutor { - fn execute(&self, f: BoxedStaticFuture<()>) { - self.exec.execute(f) - } - - fn timeout(&self) -> Option> { - Some(Box::pin(tokio::time::sleep(self.timeout))) - } -} - #[doc(hidden)] pub struct TimeoutWrapper { inner: R, - timeout: Duration, + executor: Executor, } impl TimeoutWrapper { - fn new(inner: R, timeout: Duration) -> Self { - Self { inner, timeout } + fn new(inner: R, timeout: Duration, executor: Executor) -> Self { + Self { + inner, + timeout, + executor, + } } #[inline] async fn io_timeout>, T>( - timeout: Duration, + timer: BoxedStaticFuture<()>, + timeout_duration: Duration, op: &'static str, fut: F, ) -> Result { - tokio::time::timeout(timeout, fut).await.map_err(|_| { - Error::new(ErrorKind::Unexpected, "io operation timeout reached") - .with_operation(op) - .with_context("timeout", timeout.as_secs_f64().to_string()) - .set_temporary() - })? + execute_with_timeout( + timer, + timeout_duration, + op, + "io operation timeout reached", + fut, + ) + .await + } +} + +async fn execute_with_timeout>, T>( + timer: BoxedStaticFuture<()>, + dur: Duration, + op: &'static str, + message: &'static str, + fut: F, +) -> Result { + futures::pin_mut!(fut); + select_biased! { + result = fut.fuse() => result, + _ = timer.fuse() => Err(Error::new(ErrorKind::Unexpected, message) + .with_operation(op) + .with_context("timeout", dur.as_secs_f64().to_string()) + .set_temporary()), } } impl oio::ReadStream for TimeoutWrapper { async fn read(&mut self) -> Result { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.read(); - Self::io_timeout(self.timeout, Operation::Read.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Read.into_static(), fut).await } } impl oio::Read for TimeoutWrapper { async fn open(&self, range: BytesRange) -> Result<(RpRead, Box)> { + let timer = self.executor.inner().timeout(self.timeout); let (rp, stream) = Self::io_timeout( + timer, self.timeout, Operation::Read.into_static(), self.inner.open(range), @@ -354,12 +375,17 @@ impl oio::Read for TimeoutWrapper { .await?; Ok(( rp, - Box::new(TimeoutWrapper::new(stream, self.timeout)) as Box, + Box::new(TimeoutWrapper::new( + stream, + self.timeout, + self.executor.clone(), + )) as Box, )) } async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)> { Self::io_timeout( + self.executor.inner().timeout(self.timeout), self.timeout, Operation::Read.into_static(), self.inner.read(range), @@ -370,54 +396,63 @@ impl oio::Read for TimeoutWrapper { impl oio::Write for TimeoutWrapper { async fn write(&mut self, bs: Buffer) -> Result<()> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.write(bs); - Self::io_timeout(self.timeout, Operation::Write.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Write.into_static(), fut).await } async fn close(&mut self) -> Result { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.close(); - Self::io_timeout(self.timeout, Operation::Write.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Write.into_static(), fut).await } async fn abort(&mut self) -> Result<()> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.abort(); - Self::io_timeout(self.timeout, Operation::Write.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Write.into_static(), fut).await } } impl oio::List for TimeoutWrapper { async fn next(&mut self) -> Result> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.next(); - Self::io_timeout(self.timeout, Operation::List.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::List.into_static(), fut).await } } impl oio::Delete for TimeoutWrapper { async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.delete(path, args); - Self::io_timeout(self.timeout, Operation::Delete.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Delete.into_static(), fut).await } async fn close(&mut self) -> Result<()> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.close(); - Self::io_timeout(self.timeout, Operation::Delete.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Delete.into_static(), fut).await } } impl oio::Copy for TimeoutWrapper { async fn next(&mut self) -> Result> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.next(); - Self::io_timeout(self.timeout, Operation::Copy.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Copy.into_static(), fut).await } async fn close(&mut self) -> Result { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.close(); - Self::io_timeout(self.timeout, Operation::Copy.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Copy.into_static(), fut).await } async fn abort(&mut self) -> Result<()> { + let timer = self.executor.inner().timeout(self.timeout); let fut = self.inner.abort(); - Self::io_timeout(self.timeout, Operation::Copy.into_static(), fut).await + Self::io_timeout(timer, self.timeout, Operation::Copy.into_static(), fut).await } } @@ -426,10 +461,15 @@ mod tests { use std::future::pending; use futures::StreamExt; + use opendal_executor_tokio::TokioExecutor; use tokio::time::timeout; use super::*; + fn test_context() -> OperationContext { + OperationContext::new().with_executor(Executor::with(TokioExecutor::default())) + } + #[derive(Debug, Clone, Default)] struct MockService; @@ -581,7 +621,7 @@ mod tests { #[tokio::test] async fn test_delete_timeout() { let srv = MockService; - let op = Operator::from_parts(OperationContext::default(), Arc::new(srv)) + let op = Operator::from_parts(test_context(), Arc::new(srv)) .layer(TimeoutLayer::default().with_io_timeout(Duration::from_secs(1))); let fut = async { @@ -600,7 +640,7 @@ mod tests { #[tokio::test] async fn test_io_timeout() { let srv = MockService; - let op = Operator::from_parts(OperationContext::default(), Arc::new(srv)) + let op = Operator::from_parts(test_context(), Arc::new(srv)) .layer(TimeoutLayer::default().with_io_timeout(Duration::from_secs(1))); let reader = op.reader("test").await.unwrap(); @@ -615,7 +655,7 @@ mod tests { #[tokio::test] async fn test_list_timeout() { let srv = MockService; - let op = Operator::from_parts(OperationContext::default(), Arc::new(srv)).layer( + let op = Operator::from_parts(test_context(), Arc::new(srv)).layer( TimeoutLayer::default() .with_timeout(Duration::from_secs(1)) .with_io_timeout(Duration::from_secs(1)), @@ -634,7 +674,11 @@ mod tests { async fn test_delete_io_timeout() { use oio::Delete; - let mut deleter = TimeoutWrapper::new(MockDeleter, Duration::from_secs(1)); + let mut deleter = TimeoutWrapper::new( + MockDeleter, + Duration::from_secs(1), + Executor::with(TokioExecutor::default()), + ); let res = deleter.delete("test", OpDelete::default()).await; assert!(res.is_err()); @@ -650,7 +694,7 @@ mod tests { let service = TimeoutLayer::default() .with_io_timeout(Duration::from_millis(100)) .apply_service(Arc::new(MockService)); - let ctx = OperationContext::new(); + let ctx = test_context(); let mut copier = service .copy(&ctx, "f", "t", OpCopy::default(), OpCopier::default()) .unwrap(); @@ -667,7 +711,7 @@ mod tests { .with_timeout(Duration::from_secs(1)) .with_io_timeout(Duration::from_secs(1)); let service = timeout_layer.apply_service(Arc::new(MockService)); - let ctx = OperationContext::new(); + let ctx = test_context(); let mut lister = service.list(&ctx, "test", OpList::default()).unwrap(); diff --git a/core/layers/tracing/src/lib.rs b/core/layers/tracing/src/lib.rs index b1f4dbe8ff4a..8872a159a8e0 100644 --- a/core/layers/tracing/src/lib.rs +++ b/core/layers/tracing/src/lib.rs @@ -24,6 +24,7 @@ use std::pin::Pin; use std::sync::Arc; use std::task::Context; use std::task::Poll; +use std::time::Duration; use futures::Stream; use futures::StreamExt; @@ -190,8 +191,8 @@ impl Execute for TracingExecutor { .execute(Box::pin(f.instrument(Span::current())) as BoxedStaticFuture<()>) } - fn timeout(&self) -> Option> { - self.inner.timeout() + fn timeout(&self, timeout: Duration) -> BoxedStaticFuture<()> { + self.inner.timeout(timeout) } } diff --git a/core/services/compfs/Cargo.toml b/core/services/compfs/Cargo.toml index 6571bab34df7..3725e196992e 100644 --- a/core/services/compfs/Cargo.toml +++ b/core/services/compfs/Cargo.toml @@ -32,7 +32,7 @@ version = { workspace = true } all-features = true [dependencies] -compio = { version = "0.19.0", features = [ +compio = { workspace = true, features = [ "bytes", "dispatcher", "fs", diff --git a/core/src/lib.rs b/core/src/lib.rs index 197bf54f5328..f438a1c87638 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -25,29 +25,41 @@ pub use opendal_core::*; +/// Runtime executor implementations. +pub mod executors { + #[cfg(feature = "executors-compio")] + pub use opendal_executor_compio::CompioExecutor; + #[cfg(feature = "executors-tokio")] + pub use opendal_executor_tokio::TokioExecutor; +} + #[cfg(feature = "tests")] pub extern crate opendal_testkit as tests; /// Install the global defaults provided by the facade crate. /// /// This function is safe to call multiple times. It registers enabled services -/// and installs the default HTTP transport when the corresponding feature is -/// enabled. +/// and installs the default executor and HTTP transport when their +/// corresponding features are enabled. /// -/// # Process-wide HTTP transport +/// # Process-wide defaults /// /// When `auto-register-services` is enabled, a process constructor calls this -/// function before `main`. If a default HTTP transport feature is also enabled, -/// that transport occupies the process-wide default because -/// [`HttpTransporter::install_default`] uses first-installed-wins semantics. +/// function before `main`. Enabled executor and HTTP transport integrations +/// occupy their process-wide defaults using first-installed-wins semantics. /// /// Applications that need to install their own process-wide transport should /// disable `auto-register-services`, call [`init_default_registry`] explicitly /// when URI-based construction is needed, and install the transport themselves. -/// Per-operator transports can be configured regardless of this setting. +/// They must also call [`Executor::install_default`] or configure an executor through +/// [`OperationContext`]. Per-operator runtime resources can be configured +/// regardless of this setting. pub fn install_default() { init_default_registry(); + #[cfg(feature = "executors-tokio")] + opendal_executor_tokio::install_default(); + #[cfg(feature = "http-transport-reqwest")] opendal_http_transport_reqwest::install_default(); }