opendal 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +89 -56
  3. data/Cargo.toml +1 -1
  4. data/DEPENDENCIES.rust.tsv +55 -41
  5. data/LICENSE +201 -0
  6. data/LICENSE-MPL-2.0.txt +373 -0
  7. data/NOTICE +5 -0
  8. data/core/CHANGELOG.md +175 -0
  9. data/core/Cargo.lock +225 -298
  10. data/core/Cargo.toml +100 -94
  11. data/core/DEPENDENCIES.rust.tsv +44 -73
  12. data/core/benches/metadata/README.md +21 -0
  13. data/core/benches/metadata/main.rs +541 -0
  14. data/core/benches/vs_fs/Cargo.toml +1 -1
  15. data/core/benches/vs_s3/Cargo.toml +1 -1
  16. data/core/core/Cargo.toml +7 -2
  17. data/core/core/src/blocking/delete.rs +5 -1
  18. data/core/core/src/blocking/operator.rs +12 -0
  19. data/core/core/src/blocking/read/std_reader.rs +25 -0
  20. data/core/core/src/docs/concepts.rs +70 -94
  21. data/core/core/src/docs/internals/accessor.rs +62 -293
  22. data/core/core/src/docs/internals/layer.rs +43 -59
  23. data/core/core/src/docs/internals/mod.rs +21 -23
  24. data/core/core/src/docs/mod.rs +10 -6
  25. data/core/core/src/docs/performance/concurrent_write.md +92 -55
  26. data/core/core/src/docs/performance/http_optimization.md +120 -104
  27. data/core/core/src/docs/performance/mod.rs +8 -6
  28. data/core/core/src/docs/rfcs/5485_conditional_reader.md +4 -0
  29. data/core/core/src/docs/rfcs/7182_restore_api.md +139 -557
  30. data/core/core/src/docs/rfcs/7945_limited_read.md +210 -0
  31. data/core/core/src/docs/rfcs/7948_s3_provider_presets.md +254 -0
  32. data/core/core/src/docs/rfcs/8109_writer_copy_from.md +330 -0
  33. data/core/core/src/docs/rfcs/8145_conflict_error_kind.md +210 -0
  34. data/core/core/src/docs/rfcs/8147_write_if_not_changed.md +233 -0
  35. data/core/core/src/docs/rfcs/8188_compose_api.md +292 -0
  36. data/core/core/src/docs/rfcs/8194_compact_metadata_and_operation_args.md +444 -0
  37. data/core/core/src/docs/rfcs/README.md +14 -3
  38. data/core/core/src/docs/rfcs/mod.rs +46 -22
  39. data/core/core/src/docs/specs/README.md +34 -0
  40. data/core/core/src/docs/specs/conditional-operations.md +156 -0
  41. data/core/core/src/docs/specs/metadata.md +63 -0
  42. data/core/core/src/docs/specs/mod.rs +26 -0
  43. data/core/core/src/docs/upgrade.md +114 -1
  44. data/core/core/src/layers/capability_override.rs +15 -2
  45. data/core/core/src/layers/complete.rs +347 -43
  46. data/core/core/src/layers/correctness_check.rs +718 -51
  47. data/core/core/src/layers/error_context.rs +76 -2
  48. data/core/core/src/layers/simulate.rs +91 -28
  49. data/core/core/src/lib.rs +1 -0
  50. data/core/core/src/raw/accessor.rs +91 -15
  51. data/core/core/src/raw/enum_utils.rs +7 -0
  52. data/core/core/src/raw/http_util/header.rs +22 -17
  53. data/core/core/src/raw/oio/compose/api.rs +92 -0
  54. data/core/core/src/raw/oio/compose/mod.rs +19 -0
  55. data/core/core/src/raw/oio/copy/api.rs +3 -3
  56. data/core/core/src/raw/oio/copy/block_copy.rs +32 -4
  57. data/core/core/src/raw/oio/copy/multipart_copy.rs +36 -7
  58. data/core/core/src/raw/oio/entry.rs +48 -22
  59. data/core/core/src/raw/oio/list/flat_list.rs +1 -1
  60. data/core/core/src/raw/oio/list/hierarchy_list.rs +3 -2
  61. data/core/core/src/raw/oio/mod.rs +3 -0
  62. data/core/core/src/raw/oio/read/position_read.rs +1 -1
  63. data/core/core/src/raw/oio/write/api.rs +40 -0
  64. data/core/core/src/raw/oio/write/append_write.rs +4 -4
  65. data/core/core/src/raw/oio/write/block_write.rs +2 -2
  66. data/core/core/src/raw/oio/write/multipart_write.rs +181 -48
  67. data/core/core/src/raw/oio/write/position_write.rs +1 -1
  68. data/core/core/src/raw/operation.rs +6 -0
  69. data/core/core/src/raw/ops.rs +1191 -456
  70. data/core/core/src/raw/rps.rs +11 -0
  71. data/core/core/src/raw/time.rs +14 -3
  72. data/core/core/src/services/memory/backend.rs +5 -10
  73. data/core/core/src/services/memory/lister.rs +4 -4
  74. data/core/core/src/services/memory/writer.rs +7 -6
  75. data/core/core/src/types/buffer.rs +102 -12
  76. data/core/core/src/types/bytes_range.rs +20 -1
  77. data/core/core/src/types/capability.rs +65 -0
  78. data/core/core/src/types/compact.rs +329 -0
  79. data/core/core/src/types/compose/composer.rs +183 -0
  80. data/core/core/src/types/compose/input.rs +57 -0
  81. data/core/core/src/types/compose/mod.rs +23 -0
  82. data/core/core/src/types/context/read.rs +16 -11
  83. data/core/core/src/types/context/write.rs +150 -2
  84. data/core/core/src/types/copy.rs +5 -3
  85. data/core/core/src/types/delete/deleter.rs +20 -12
  86. data/core/core/src/types/delete/input.rs +22 -64
  87. data/core/core/src/types/delete/mod.rs +0 -1
  88. data/core/core/src/types/entry.rs +8 -14
  89. data/core/core/src/types/error.rs +28 -11
  90. data/core/core/src/types/metadata.rs +709 -322
  91. data/core/core/src/types/mod.rs +9 -1
  92. data/core/core/src/types/operator/operator.rs +278 -29
  93. data/core/core/src/types/operator/operator_futures.rs +466 -105
  94. data/core/core/src/types/options.rs +631 -158
  95. data/core/core/src/types/read/futures_async_reader.rs +663 -50
  96. data/core/core/src/types/read/reader.rs +23 -5
  97. data/core/core/src/types/write/futures_async_writer.rs +27 -0
  98. data/core/core/src/types/write/writer.rs +47 -5
  99. data/core/http-transports/reqwest/Cargo.toml +1 -1
  100. data/core/layers/async-backtrace/Cargo.toml +2 -2
  101. data/core/layers/async-backtrace/src/lib.rs +21 -2
  102. data/core/layers/await-tree/Cargo.toml +2 -2
  103. data/core/layers/await-tree/src/lib.rs +25 -2
  104. data/core/layers/capability-check/Cargo.toml +2 -2
  105. data/core/layers/capability-check/src/lib.rs +98 -10
  106. data/core/layers/chaos/Cargo.toml +2 -2
  107. data/core/layers/chaos/src/lib.rs +18 -3
  108. data/core/layers/concurrent-limit/Cargo.toml +3 -3
  109. data/core/layers/concurrent-limit/src/lib.rs +53 -13
  110. data/core/layers/dtrace/Cargo.toml +2 -2
  111. data/core/layers/dtrace/src/lib.rs +29 -2
  112. data/core/layers/fastmetrics/Cargo.toml +3 -3
  113. data/core/layers/fastrace/Cargo.toml +2 -2
  114. data/core/layers/fastrace/src/lib.rs +28 -2
  115. data/core/layers/foyer/Cargo.toml +2 -2
  116. data/core/layers/foyer/src/full.rs +16 -19
  117. data/core/layers/foyer/src/lib.rs +67 -14
  118. data/core/layers/hotpath/Cargo.toml +2 -2
  119. data/core/layers/hotpath/src/lib.rs +20 -2
  120. data/core/layers/immutable-index/Cargo.toml +2 -2
  121. data/core/layers/immutable-index/src/lib.rs +48 -24
  122. data/core/layers/logging/Cargo.toml +2 -2
  123. data/core/layers/logging/src/lib.rs +46 -2
  124. data/core/layers/metrics/Cargo.toml +3 -3
  125. data/core/layers/mime-guess/Cargo.toml +2 -2
  126. data/core/layers/mime-guess/src/lib.rs +31 -4
  127. data/core/layers/observe-metrics-common/Cargo.toml +2 -2
  128. data/core/layers/observe-metrics-common/src/lib.rs +55 -2
  129. data/core/layers/otelmetrics/Cargo.toml +3 -3
  130. data/core/layers/oteltrace/Cargo.toml +2 -2
  131. data/core/layers/oteltrace/src/lib.rs +27 -2
  132. data/core/layers/prometheus/Cargo.toml +3 -3
  133. data/core/layers/prometheus-client/Cargo.toml +3 -3
  134. data/core/layers/retry/Cargo.toml +4 -4
  135. data/core/layers/retry/src/lib.rs +76 -19
  136. data/core/layers/route/Cargo.toml +3 -3
  137. data/core/layers/route/src/lib.rs +34 -7
  138. data/core/layers/tail-cut/Cargo.toml +2 -2
  139. data/core/layers/tail-cut/src/lib.rs +28 -2
  140. data/core/layers/throttle/Cargo.toml +2 -2
  141. data/core/layers/throttle/src/lib.rs +19 -2
  142. data/core/layers/timeout/Cargo.toml +3 -3
  143. data/core/layers/timeout/src/lib.rs +38 -13
  144. data/core/layers/tracing/Cargo.toml +2 -2
  145. data/core/layers/tracing/src/lib.rs +24 -3
  146. data/core/services/aliyun-drive/Cargo.toml +2 -2
  147. data/core/services/aliyun-drive/src/backend.rs +34 -24
  148. data/core/services/aliyun-drive/src/core.rs +143 -54
  149. data/core/services/aliyun-drive/src/lister.rs +19 -18
  150. data/core/services/aliyun-drive/src/reader.rs +4 -1
  151. data/core/services/aliyun-drive/src/writer.rs +3 -3
  152. data/core/services/alluxio/Cargo.toml +1 -1
  153. data/core/services/alluxio/src/backend.rs +1 -1
  154. data/core/services/alluxio/src/core.rs +113 -94
  155. data/core/services/alluxio/src/reader.rs +7 -3
  156. data/core/services/alluxio/src/writer.rs +2 -2
  157. data/core/services/azblob/Cargo.toml +2 -2
  158. data/core/services/azblob/src/backend.rs +17 -9
  159. data/core/services/azblob/src/copier.rs +41 -15
  160. data/core/services/azblob/src/core.rs +372 -135
  161. data/core/services/azblob/src/deleter.rs +41 -18
  162. data/core/services/azblob/src/lister.rs +16 -10
  163. data/core/services/azblob/src/reader.rs +4 -1
  164. data/core/services/azblob/src/writer.rs +48 -15
  165. data/core/services/azdls/Cargo.toml +3 -3
  166. data/core/services/azdls/src/backend.rs +45 -15
  167. data/core/services/azdls/src/config.rs +4 -1
  168. data/core/services/azdls/src/core.rs +276 -87
  169. data/core/services/azdls/src/deleter.rs +13 -4
  170. data/core/services/azdls/src/lister.rs +18 -12
  171. data/core/services/azdls/src/reader.rs +6 -2
  172. data/core/services/azdls/src/writer.rs +44 -23
  173. data/core/services/azfile/Cargo.toml +2 -2
  174. data/core/services/azfile/src/backend.rs +24 -8
  175. data/core/services/azfile/src/core.rs +195 -77
  176. data/core/services/azfile/src/deleter.rs +8 -1
  177. data/core/services/azfile/src/lister.rs +20 -14
  178. data/core/services/azfile/src/reader.rs +5 -2
  179. data/core/services/azfile/src/writer.rs +27 -15
  180. data/core/services/azure-common/Cargo.toml +1 -1
  181. data/core/services/b2/Cargo.toml +2 -2
  182. data/core/services/b2/src/backend.rs +30 -11
  183. data/core/services/b2/src/core.rs +134 -120
  184. data/core/services/b2/src/deleter.rs +1 -1
  185. data/core/services/b2/src/lister.rs +5 -2
  186. data/core/services/b2/src/reader.rs +5 -2
  187. data/core/services/b2/src/writer.rs +29 -12
  188. data/core/services/cacache/Cargo.toml +1 -1
  189. data/core/services/cacache/src/backend.rs +4 -5
  190. data/core/services/cacache/src/reader.rs +4 -1
  191. data/core/services/cacache/src/writer.rs +6 -2
  192. data/core/services/cloudflare-kv/Cargo.toml +1 -1
  193. data/core/services/cloudflare-kv/src/backend.rs +26 -15
  194. data/core/services/cloudflare-kv/src/config.rs +13 -2
  195. data/core/services/cloudflare-kv/src/core.rs +62 -56
  196. data/core/services/cloudflare-kv/src/deleter.rs +12 -3
  197. data/core/services/cloudflare-kv/src/lister.rs +66 -17
  198. data/core/services/cloudflare-kv/src/reader.rs +14 -9
  199. data/core/services/cloudflare-kv/src/writer.rs +10 -7
  200. data/core/services/compfs/Cargo.toml +1 -1
  201. data/core/services/compfs/src/backend.rs +11 -7
  202. data/core/services/compfs/src/lister.rs +7 -7
  203. data/core/services/compfs/src/writer.rs +1 -1
  204. data/core/services/cos/Cargo.toml +1 -1
  205. data/core/services/cos/src/backend.rs +129 -16
  206. data/core/services/cos/src/core.rs +198 -80
  207. data/core/services/cos/src/deleter.rs +4 -1
  208. data/core/services/cos/src/lister.rs +42 -27
  209. data/core/services/cos/src/reader.rs +6 -2
  210. data/core/services/cos/src/writer.rs +45 -21
  211. data/core/services/d1/Cargo.toml +1 -1
  212. data/core/services/d1/src/backend.rs +6 -5
  213. data/core/services/d1/src/core.rs +79 -63
  214. data/core/services/d1/src/reader.rs +4 -1
  215. data/core/services/d1/src/writer.rs +6 -2
  216. data/core/services/dashmap/Cargo.toml +1 -1
  217. data/core/services/dashmap/src/backend.rs +2 -2
  218. data/core/services/dashmap/src/reader.rs +4 -1
  219. data/core/services/dashmap/src/writer.rs +11 -8
  220. data/core/services/dbfs/Cargo.toml +1 -1
  221. data/core/services/dbfs/src/backend.rs +21 -15
  222. data/core/services/dbfs/src/core.rs +65 -60
  223. data/core/services/dbfs/src/deleter.rs +4 -1
  224. data/core/services/dbfs/src/lister.rs +10 -10
  225. data/core/services/dbfs/src/writer.rs +6 -3
  226. data/core/services/dropbox/Cargo.toml +2 -2
  227. data/core/services/dropbox/src/backend.rs +30 -23
  228. data/core/services/dropbox/src/core.rs +65 -63
  229. data/core/services/dropbox/src/deleter.rs +1 -1
  230. data/core/services/dropbox/src/lister.rs +17 -8
  231. data/core/services/dropbox/src/reader.rs +4 -1
  232. data/core/services/dropbox/src/writer.rs +13 -10
  233. data/core/services/etcd/Cargo.toml +1 -1
  234. data/core/services/etcd/src/backend.rs +8 -5
  235. data/core/services/etcd/src/core.rs +5 -11
  236. data/core/services/etcd/src/lister.rs +6 -1
  237. data/core/services/etcd/src/reader.rs +4 -1
  238. data/core/services/etcd/src/writer.rs +6 -3
  239. data/core/services/foundationdb/Cargo.toml +1 -1
  240. data/core/services/foundationdb/src/backend.rs +6 -5
  241. data/core/services/foundationdb/src/reader.rs +4 -1
  242. data/core/services/foundationdb/src/writer.rs +6 -2
  243. data/core/services/foyer/Cargo.toml +3 -3
  244. data/core/services/foyer/src/backend.rs +6 -5
  245. data/core/services/foyer/src/reader.rs +4 -1
  246. data/core/services/foyer/src/writer.rs +6 -2
  247. data/core/services/fs/Cargo.toml +1 -1
  248. data/core/services/fs/src/backend.rs +4 -3
  249. data/core/services/fs/src/core.rs +44 -26
  250. data/core/services/fs/src/lister.rs +9 -6
  251. data/core/services/fs/src/writer.rs +20 -13
  252. data/core/services/ftp/Cargo.toml +4 -6
  253. data/core/services/ftp/src/backend.rs +9 -5
  254. data/core/services/ftp/src/core.rs +9 -7
  255. data/core/services/ftp/src/lister.rs +7 -8
  256. data/core/services/ftp/src/reader.rs +3 -3
  257. data/core/services/ftp/src/writer.rs +3 -3
  258. data/core/services/gcs/Cargo.toml +4 -2
  259. data/core/services/gcs/src/backend.rs +53 -7
  260. data/core/services/gcs/src/composer.rs +705 -0
  261. data/core/services/gcs/src/copier.rs +14 -4
  262. data/core/services/gcs/src/core.rs +828 -124
  263. data/core/services/gcs/src/deleter.rs +33 -18
  264. data/core/services/gcs/src/lib.rs +1 -0
  265. data/core/services/gcs/src/lister.rs +21 -12
  266. data/core/services/gcs/src/reader.rs +12 -5
  267. data/core/services/gcs/src/writer.rs +632 -10
  268. data/core/services/gcs-grpc/Cargo.toml +58 -0
  269. data/core/services/gcs-grpc/README.md +19 -0
  270. data/core/services/gcs-grpc/proto/README.md +23 -0
  271. data/core/services/gcs-grpc/proto/google/storage/v2/storage.proto +171 -0
  272. data/core/services/gcs-grpc/proto/upstream-descriptor.bin +0 -0
  273. data/core/services/gcs-grpc/src/backend.rs +449 -0
  274. data/core/services/gcs-grpc/src/config.rs +116 -0
  275. data/core/services/gcs-grpc/src/copier.rs +98 -0
  276. data/core/services/gcs-grpc/src/core.rs +298 -0
  277. data/core/services/gcs-grpc/src/deleter.rs +65 -0
  278. data/core/services/gcs-grpc/src/docs.md +19 -0
  279. data/core/services/gcs-grpc/src/generated/google.storage.v2.rs +541 -0
  280. data/core/services/gcs-grpc/src/generated/mod.rs +24 -0
  281. data/core/services/gcs-grpc/src/lib.rs +43 -0
  282. data/core/services/gcs-grpc/src/lister.rs +125 -0
  283. data/core/services/gcs-grpc/src/reader.rs +140 -0
  284. data/core/services/gcs-grpc/src/writer.rs +780 -0
  285. data/core/services/gdrive/Cargo.toml +2 -2
  286. data/core/services/gdrive/src/backend.rs +123 -69
  287. data/core/services/gdrive/src/core.rs +87 -69
  288. data/core/services/gdrive/src/deleter.rs +8 -2
  289. data/core/services/gdrive/src/lister.rs +38 -26
  290. data/core/services/gdrive/src/path_index.rs +2 -2
  291. data/core/services/gdrive/src/reader.rs +9 -3
  292. data/core/services/gdrive/src/writer.rs +13 -7
  293. data/core/services/ghac/Cargo.toml +2 -2
  294. data/core/services/ghac/src/backend.rs +5 -2
  295. data/core/services/ghac/src/core.rs +59 -37
  296. data/core/services/ghac/src/reader.rs +5 -2
  297. data/core/services/ghac/src/writer.rs +16 -6
  298. data/core/services/github/Cargo.toml +1 -1
  299. data/core/services/github/src/backend.rs +16 -8
  300. data/core/services/github/src/core.rs +88 -76
  301. data/core/services/github/src/lister.rs +17 -15
  302. data/core/services/github/src/reader.rs +5 -2
  303. data/core/services/github/src/writer.rs +12 -6
  304. data/core/services/goosefs/Cargo.toml +2 -2
  305. data/core/services/goosefs/src/backend.rs +2 -2
  306. data/core/services/goosefs/src/core.rs +291 -208
  307. data/core/services/goosefs/src/docs.md +3 -0
  308. data/core/services/goosefs/src/lister.rs +2 -3
  309. data/core/services/goosefs/src/reader.rs +7 -3
  310. data/core/services/goosefs/src/writer.rs +21 -10
  311. data/core/services/goosefs/tests/safe_conditional_put.rs +37 -0
  312. data/core/services/gridfs/Cargo.toml +2 -2
  313. data/core/services/gridfs/src/backend.rs +12 -8
  314. data/core/services/gridfs/src/core.rs +1 -1
  315. data/core/services/gridfs/src/reader.rs +4 -1
  316. data/core/services/gridfs/src/writer.rs +6 -2
  317. data/core/services/hdfs/Cargo.toml +1 -1
  318. data/core/services/hdfs/src/backend.rs +1 -1
  319. data/core/services/hdfs/src/core.rs +7 -4
  320. data/core/services/hdfs/src/lister.rs +7 -9
  321. data/core/services/hdfs/src/writer.rs +5 -1
  322. data/core/services/hdfs-native/Cargo.toml +1 -1
  323. data/core/services/hdfs-native/src/backend.rs +1 -1
  324. data/core/services/hdfs-native/src/core.rs +44 -50
  325. data/core/services/hdfs-native/src/lister.rs +8 -10
  326. data/core/services/hdfs-native/src/writer.rs +5 -1
  327. data/core/services/hf/Cargo.toml +4 -3
  328. data/core/services/hf/src/backend.rs +4 -3
  329. data/core/services/hf/src/core.rs +907 -153
  330. data/core/services/hf/src/lister.rs +16 -6
  331. data/core/services/hf/src/reader.rs +377 -57
  332. data/core/services/hf/src/writer.rs +6 -2
  333. data/core/services/http/Cargo.toml +3 -3
  334. data/core/services/http/src/backend.rs +8 -6
  335. data/core/services/http/src/core.rs +57 -35
  336. data/core/services/http/src/reader.rs +5 -2
  337. data/core/services/ipfs/Cargo.toml +1 -1
  338. data/core/services/ipfs/src/backend.rs +20 -9
  339. data/core/services/ipfs/src/core.rs +43 -34
  340. data/core/services/ipfs/src/reader.rs +5 -2
  341. data/core/services/ipmfs/Cargo.toml +1 -1
  342. data/core/services/ipmfs/src/backend.rs +17 -8
  343. data/core/services/ipmfs/src/core.rs +66 -60
  344. data/core/services/ipmfs/src/deleter.rs +5 -2
  345. data/core/services/ipmfs/src/lister.rs +15 -12
  346. data/core/services/ipmfs/src/reader.rs +5 -2
  347. data/core/services/ipmfs/src/writer.rs +6 -3
  348. data/core/services/koofr/Cargo.toml +2 -2
  349. data/core/services/koofr/src/backend.rs +46 -17
  350. data/core/services/koofr/src/core.rs +64 -48
  351. data/core/services/koofr/src/deleter.rs +4 -1
  352. data/core/services/koofr/src/lister.rs +11 -10
  353. data/core/services/koofr/src/reader.rs +5 -2
  354. data/core/services/koofr/src/writer.rs +13 -7
  355. data/core/services/lakefs/Cargo.toml +1 -1
  356. data/core/services/lakefs/src/backend.rs +25 -8
  357. data/core/services/lakefs/src/core.rs +79 -73
  358. data/core/services/lakefs/src/deleter.rs +4 -1
  359. data/core/services/lakefs/src/lister.rs +17 -14
  360. data/core/services/lakefs/src/reader.rs +5 -2
  361. data/core/services/lakefs/src/writer.rs +11 -10
  362. data/core/services/memcached/Cargo.toml +1 -1
  363. data/core/services/memcached/src/backend.rs +57 -7
  364. data/core/services/memcached/src/config.rs +13 -2
  365. data/core/services/memcached/src/core.rs +11 -1
  366. data/core/services/memcached/src/reader.rs +4 -1
  367. data/core/services/memcached/src/writer.rs +6 -2
  368. data/core/services/mini_moka/Cargo.toml +1 -1
  369. data/core/services/mini_moka/src/backend.rs +8 -8
  370. data/core/services/mini_moka/src/reader.rs +4 -1
  371. data/core/services/mini_moka/src/writer.rs +11 -7
  372. data/core/services/moka/Cargo.toml +1 -1
  373. data/core/services/moka/src/backend.rs +7 -7
  374. data/core/services/moka/src/reader.rs +4 -1
  375. data/core/services/moka/src/writer.rs +10 -6
  376. data/core/services/mongodb/Cargo.toml +2 -2
  377. data/core/services/mongodb/src/backend.rs +7 -6
  378. data/core/services/mongodb/src/core.rs +1 -1
  379. data/core/services/mongodb/src/reader.rs +4 -1
  380. data/core/services/mongodb/src/writer.rs +6 -2
  381. data/core/services/monoiofs/Cargo.toml +2 -2
  382. data/core/services/monoiofs/src/backend.rs +16 -10
  383. data/core/services/monoiofs/src/core.rs +8 -9
  384. data/core/services/monoiofs/src/reader.rs +8 -10
  385. data/core/services/monoiofs/src/writer.rs +19 -24
  386. data/core/services/mysql/Cargo.toml +2 -2
  387. data/core/services/mysql/src/backend.rs +7 -6
  388. data/core/services/mysql/src/core.rs +1 -1
  389. data/core/services/mysql/src/lister.rs +7 -3
  390. data/core/services/mysql/src/reader.rs +4 -1
  391. data/core/services/mysql/src/writer.rs +6 -2
  392. data/core/services/obs/Cargo.toml +1 -1
  393. data/core/services/obs/src/backend.rs +29 -11
  394. data/core/services/obs/src/core.rs +81 -82
  395. data/core/services/obs/src/deleter.rs +4 -1
  396. data/core/services/obs/src/lister.rs +12 -5
  397. data/core/services/obs/src/reader.rs +5 -2
  398. data/core/services/obs/src/writer.rs +40 -19
  399. data/core/services/onedrive/Cargo.toml +2 -2
  400. data/core/services/onedrive/src/backend.rs +30 -21
  401. data/core/services/onedrive/src/config.rs +2 -2
  402. data/core/services/onedrive/src/core.rs +191 -90
  403. data/core/services/onedrive/src/deleter.rs +5 -2
  404. data/core/services/onedrive/src/graph_model.rs +10 -51
  405. data/core/services/onedrive/src/lister.rs +60 -24
  406. data/core/services/onedrive/src/reader.rs +17 -2
  407. data/core/services/onedrive/src/writer.rs +26 -15
  408. data/core/services/opfs/Cargo.toml +1 -1
  409. data/core/services/opfs/src/backend.rs +6 -13
  410. data/core/services/opfs/src/core.rs +33 -37
  411. data/core/services/opfs/src/lister.rs +4 -4
  412. data/core/services/opfs/src/writer.rs +1 -3
  413. data/core/services/oss/Cargo.toml +1 -1
  414. data/core/services/oss/src/backend.rs +40 -8
  415. data/core/services/oss/src/core.rs +192 -92
  416. data/core/services/oss/src/deleter.rs +16 -6
  417. data/core/services/oss/src/lister.rs +43 -27
  418. data/core/services/oss/src/reader.rs +6 -2
  419. data/core/services/oss/src/writer.rs +40 -22
  420. data/core/services/pcloud/Cargo.toml +1 -1
  421. data/core/services/pcloud/src/backend.rs +40 -6
  422. data/core/services/pcloud/src/core.rs +80 -66
  423. data/core/services/pcloud/src/deleter.rs +8 -1
  424. data/core/services/pcloud/src/lister.rs +4 -1
  425. data/core/services/pcloud/src/reader.rs +5 -2
  426. data/core/services/pcloud/src/writer.rs +6 -3
  427. data/core/services/persy/Cargo.toml +1 -1
  428. data/core/services/persy/src/backend.rs +6 -5
  429. data/core/services/persy/src/core.rs +60 -15
  430. data/core/services/persy/src/reader.rs +4 -1
  431. data/core/services/persy/src/writer.rs +6 -2
  432. data/core/services/postgresql/Cargo.toml +2 -2
  433. data/core/services/postgresql/src/backend.rs +7 -6
  434. data/core/services/postgresql/src/core.rs +1 -1
  435. data/core/services/postgresql/src/reader.rs +4 -1
  436. data/core/services/postgresql/src/writer.rs +6 -2
  437. data/core/services/redb/Cargo.toml +1 -1
  438. data/core/services/redb/src/backend.rs +6 -5
  439. data/core/services/redb/src/reader.rs +4 -1
  440. data/core/services/redb/src/writer.rs +6 -2
  441. data/core/services/redis/Cargo.toml +1 -1
  442. data/core/services/redis/src/backend.rs +18 -8
  443. data/core/services/redis/src/config.rs +13 -2
  444. data/core/services/redis/src/reader.rs +8 -4
  445. data/core/services/redis/src/writer.rs +6 -2
  446. data/core/services/rocksdb/Cargo.toml +1 -1
  447. data/core/services/rocksdb/src/backend.rs +6 -5
  448. data/core/services/rocksdb/src/lister.rs +6 -5
  449. data/core/services/rocksdb/src/reader.rs +4 -1
  450. data/core/services/rocksdb/src/writer.rs +6 -2
  451. data/core/services/s3/Cargo.toml +5 -4
  452. data/core/services/s3/src/backend.rs +995 -39
  453. data/core/services/s3/src/compatible_services.md +57 -0
  454. data/core/services/s3/src/config.rs +16 -0
  455. data/core/services/s3/src/copier.rs +190 -55
  456. data/core/services/s3/src/core.rs +299 -190
  457. data/core/services/s3/src/deleter.rs +26 -7
  458. data/core/services/s3/src/docs.md +57 -0
  459. data/core/services/s3/src/lister.rs +55 -36
  460. data/core/services/s3/src/reader.rs +22 -2
  461. data/core/services/s3/src/writer.rs +154 -32
  462. data/core/services/seafile/Cargo.toml +2 -2
  463. data/core/services/seafile/src/backend.rs +3 -3
  464. data/core/services/seafile/src/core.rs +105 -79
  465. data/core/services/seafile/src/lister.rs +11 -8
  466. data/core/services/seafile/src/reader.rs +5 -2
  467. data/core/services/seafile/src/writer.rs +6 -3
  468. data/core/services/sftp/Cargo.toml +1 -1
  469. data/core/services/sftp/src/backend.rs +19 -4
  470. data/core/services/sftp/src/core.rs +51 -46
  471. data/core/services/sftp/src/lister.rs +4 -4
  472. data/core/services/sftp/src/writer.rs +1 -1
  473. data/core/services/sled/Cargo.toml +1 -1
  474. data/core/services/sled/src/backend.rs +6 -5
  475. data/core/services/sled/src/core.rs +28 -6
  476. data/core/services/sled/src/lister.rs +6 -5
  477. data/core/services/sled/src/reader.rs +4 -1
  478. data/core/services/sled/src/writer.rs +6 -2
  479. data/core/services/sqlite/Cargo.toml +2 -2
  480. data/core/services/sqlite/src/backend.rs +12 -7
  481. data/core/services/sqlite/src/core.rs +3 -3
  482. data/core/services/sqlite/src/reader.rs +4 -1
  483. data/core/services/sqlite/src/writer.rs +7 -3
  484. data/core/services/surrealdb/Cargo.toml +2 -2
  485. data/core/services/surrealdb/src/backend.rs +7 -6
  486. data/core/services/surrealdb/src/core.rs +1 -1
  487. data/core/services/surrealdb/src/reader.rs +4 -1
  488. data/core/services/surrealdb/src/writer.rs +6 -2
  489. data/core/services/swift/Cargo.toml +1 -1
  490. data/core/services/swift/src/backend.rs +38 -8
  491. data/core/services/swift/src/core.rs +63 -67
  492. data/core/services/swift/src/deleter.rs +8 -2
  493. data/core/services/swift/src/lister.rs +11 -8
  494. data/core/services/swift/src/reader.rs +5 -2
  495. data/core/services/swift/src/writer.rs +17 -8
  496. data/core/services/tikv/Cargo.toml +2 -2
  497. data/core/services/tikv/src/backend.rs +7 -6
  498. data/core/services/tikv/src/core.rs +31 -14
  499. data/core/services/tikv/src/reader.rs +4 -1
  500. data/core/services/tikv/src/writer.rs +6 -2
  501. data/core/services/tos/Cargo.toml +2 -2
  502. data/core/services/tos/src/backend.rs +45 -21
  503. data/core/services/tos/src/copier.rs +44 -17
  504. data/core/services/tos/src/core.rs +147 -117
  505. data/core/services/tos/src/deleter.rs +9 -3
  506. data/core/services/tos/src/docs.md +1 -1
  507. data/core/services/tos/src/lister.rs +43 -28
  508. data/core/services/tos/src/reader.rs +5 -2
  509. data/core/services/tos/src/writer.rs +37 -16
  510. data/core/services/upyun/Cargo.toml +1 -1
  511. data/core/services/upyun/src/backend.rs +30 -7
  512. data/core/services/upyun/src/core.rs +122 -87
  513. data/core/services/upyun/src/deleter.rs +4 -1
  514. data/core/services/upyun/src/lister.rs +10 -10
  515. data/core/services/upyun/src/reader.rs +5 -2
  516. data/core/services/upyun/src/writer.rs +19 -7
  517. data/core/services/vercel-artifacts/Cargo.toml +1 -1
  518. data/core/services/vercel-artifacts/src/backend.rs +6 -3
  519. data/core/services/vercel-artifacts/src/core.rs +32 -27
  520. data/core/services/vercel-artifacts/src/reader.rs +5 -2
  521. data/core/services/vercel-artifacts/src/writer.rs +6 -3
  522. data/core/services/vercel-blob/Cargo.toml +1 -1
  523. data/core/services/vercel-blob/src/backend.rs +23 -6
  524. data/core/services/vercel-blob/src/core.rs +92 -81
  525. data/core/services/vercel-blob/src/lister.rs +12 -3
  526. data/core/services/vercel-blob/src/reader.rs +5 -2
  527. data/core/services/vercel-blob/src/writer.rs +19 -7
  528. data/core/services/webdav/Cargo.toml +2 -2
  529. data/core/services/webdav/src/backend.rs +25 -5
  530. data/core/services/webdav/src/core.rs +116 -59
  531. data/core/services/webdav/src/deleter.rs +4 -1
  532. data/core/services/webdav/src/lister.rs +4 -1
  533. data/core/services/webdav/src/reader.rs +6 -2
  534. data/core/services/webdav/src/writer.rs +17 -7
  535. data/core/services/webhdfs/Cargo.toml +2 -2
  536. data/core/services/webhdfs/src/backend.rs +24 -11
  537. data/core/services/webhdfs/src/core.rs +99 -98
  538. data/core/services/webhdfs/src/deleter.rs +5 -2
  539. data/core/services/webhdfs/src/lister.rs +21 -9
  540. data/core/services/webhdfs/src/reader.rs +5 -2
  541. data/core/services/webhdfs/src/writer.rs +49 -14
  542. data/core/services/yandex-disk/Cargo.toml +1 -1
  543. data/core/services/yandex-disk/src/backend.rs +28 -6
  544. data/core/services/yandex-disk/src/core.rs +97 -79
  545. data/core/services/yandex-disk/src/deleter.rs +4 -1
  546. data/core/services/yandex-disk/src/lister.rs +25 -9
  547. data/core/services/yandex-disk/src/reader.rs +5 -2
  548. data/core/services/yandex-disk/src/writer.rs +6 -3
  549. data/core/src/lib.rs +5 -0
  550. data/core/testkit/Cargo.toml +4 -4
  551. data/core/testkit/src/utils.rs +53 -8
  552. data/core/tests/behavior/async_compose.rs +297 -0
  553. data/core/tests/behavior/async_copy.rs +162 -1
  554. data/core/tests/behavior/async_delete.rs +364 -3
  555. data/core/tests/behavior/async_read.rs +86 -0
  556. data/core/tests/behavior/async_restore.rs +162 -0
  557. data/core/tests/behavior/async_stat.rs +90 -0
  558. data/core/tests/behavior/async_write.rs +330 -2
  559. data/core/tests/behavior/main.rs +4 -0
  560. data/core/upgrade.md +114 -1
  561. data/src/capability.rs +0 -1
  562. data/src/io.rs +0 -1
  563. data/src/lister.rs +0 -1
  564. data/src/metadata.rs +0 -1
  565. data/src/operator_info.rs +0 -1
  566. metadata +44 -2
data/core/Cargo.toml CHANGED
@@ -39,9 +39,10 @@ homepage = "https://opendal.apache.org/"
39
39
  license = "Apache-2.0"
40
40
  repository = "https://github.com/apache/opendal"
41
41
  rust-version = "1.91"
42
- version = "0.58.1"
42
+ version = "0.59.0"
43
43
 
44
44
  [workspace.dependencies]
45
+ asyncband = { version = "0.6" }
45
46
  base64 = "0.23"
46
47
  bytes = "1.10"
47
48
  ctor = "1.0.7"
@@ -49,7 +50,6 @@ futures = { version = "0.3", default-features = false }
49
50
  http = "1.4"
50
51
  log = { version = "0.4.32" }
51
52
  logforth = { version = "0.30.1", features = ["starter-log"] }
52
- mea = "0.6"
53
53
  quick-xml = { version = "0.41.0", default-features = false }
54
54
  rand = "0.10.1"
55
55
  serde = { version = "1", default-features = false }
@@ -168,6 +168,7 @@ services-foyer = ["dep:opendal-service-foyer"]
168
168
  services-fs = ["dep:opendal-service-fs"]
169
169
  services-ftp = ["dep:opendal-service-ftp"]
170
170
  services-gcs = ["dep:opendal-service-gcs"]
171
+ services-gcs-grpc = ["dep:opendal-service-gcs-grpc"]
171
172
  services-gdrive = ["dep:opendal-service-gdrive"]
172
173
  services-ghac = ["dep:opendal-service-ghac"]
173
174
  services-github = ["dep:opendal-service-github"]
@@ -233,6 +234,10 @@ required-features = ["tests"]
233
234
  harness = false
234
235
  name = "types"
235
236
 
237
+ [[bench]]
238
+ harness = false
239
+ name = "metadata"
240
+
236
241
  [[test]]
237
242
  harness = false
238
243
  name = "behavior"
@@ -241,102 +246,103 @@ required-features = ["tests"]
241
246
 
242
247
  [dependencies]
243
248
  ctor = { workspace = true, optional = true }
244
- opendal-core = { path = "core", version = "0.58.1", default-features = false }
245
- opendal-http-transport-reqwest = { path = "http-transports/reqwest", version = "0.58.1", optional = true, default-features = false }
246
- opendal-layer-async-backtrace = { path = "layers/async-backtrace", version = "0.58.1", optional = true, default-features = false }
247
- opendal-layer-await-tree = { path = "layers/await-tree", version = "0.58.1", optional = true, default-features = false }
248
- opendal-layer-capability-check = { path = "layers/capability-check", version = "0.58.1", optional = true, default-features = false }
249
- opendal-layer-chaos = { path = "layers/chaos", version = "0.58.1", optional = true, default-features = false }
250
- opendal-layer-concurrent-limit = { path = "layers/concurrent-limit", version = "0.58.1", optional = true, default-features = false }
251
- opendal-layer-fastmetrics = { path = "layers/fastmetrics", version = "0.58.1", optional = true, default-features = false }
252
- opendal-layer-fastrace = { path = "layers/fastrace", version = "0.58.1", optional = true, default-features = false }
253
- opendal-layer-foyer = { path = "layers/foyer", version = "0.58.1", optional = true, default-features = false }
254
- opendal-layer-hotpath = { path = "layers/hotpath", version = "0.58.1", optional = true, default-features = false }
255
- opendal-layer-immutable-index = { path = "layers/immutable-index", version = "0.58.1", optional = true, default-features = false }
256
- opendal-layer-logging = { path = "layers/logging", version = "0.58.1", optional = true, default-features = false }
257
- opendal-layer-metrics = { path = "layers/metrics", version = "0.58.1", optional = true, default-features = false }
258
- opendal-layer-mime-guess = { path = "layers/mime-guess", version = "0.58.1", optional = true, default-features = false }
259
- opendal-layer-observe-metrics-common = { path = "layers/observe-metrics-common", version = "0.58.1", optional = true, default-features = false }
260
- opendal-layer-otelmetrics = { path = "layers/otelmetrics", version = "0.58.1", optional = true, default-features = false }
261
- opendal-layer-oteltrace = { path = "layers/oteltrace", version = "0.58.1", optional = true, default-features = false }
262
- opendal-layer-prometheus = { path = "layers/prometheus", version = "0.58.1", optional = true, default-features = false }
263
- opendal-layer-prometheus-client = { path = "layers/prometheus-client", version = "0.58.1", optional = true, default-features = false }
264
- opendal-layer-retry = { path = "layers/retry", version = "0.58.1", optional = true, default-features = false }
265
- opendal-layer-route = { path = "layers/route", version = "0.58.1", optional = true, default-features = false }
266
- opendal-layer-tail-cut = { path = "layers/tail-cut", version = "0.58.1", optional = true, default-features = false }
267
- opendal-layer-throttle = { path = "layers/throttle", version = "0.58.1", optional = true, default-features = false }
268
- opendal-layer-timeout = { path = "layers/timeout", version = "0.58.1", optional = true, default-features = false }
269
- opendal-layer-tracing = { path = "layers/tracing", version = "0.58.1", optional = true, default-features = false }
270
- opendal-service-aliyun-drive = { path = "services/aliyun-drive", version = "0.58.1", optional = true, default-features = false }
271
- opendal-service-alluxio = { path = "services/alluxio", version = "0.58.1", optional = true, default-features = false }
272
- opendal-service-azblob = { path = "services/azblob", version = "0.58.1", optional = true, default-features = false }
273
- opendal-service-azdls = { path = "services/azdls", version = "0.58.1", optional = true, default-features = false }
274
- opendal-service-azfile = { path = "services/azfile", version = "0.58.1", optional = true, default-features = false }
275
- opendal-service-b2 = { path = "services/b2", version = "0.58.1", optional = true, default-features = false }
276
- opendal-service-cacache = { path = "services/cacache", version = "0.58.1", optional = true, default-features = false }
277
- opendal-service-cloudflare-kv = { path = "services/cloudflare-kv", version = "0.58.1", optional = true, default-features = false }
278
- opendal-service-compfs = { path = "services/compfs", version = "0.58.1", optional = true, default-features = false }
279
- opendal-service-cos = { path = "services/cos", version = "0.58.1", optional = true, default-features = false }
280
- opendal-service-d1 = { path = "services/d1", version = "0.58.1", optional = true, default-features = false }
281
- opendal-service-dashmap = { path = "services/dashmap", version = "0.58.1", optional = true, default-features = false }
282
- opendal-service-dbfs = { path = "services/dbfs", version = "0.58.1", optional = true, default-features = false }
283
- opendal-service-dropbox = { path = "services/dropbox", version = "0.58.1", optional = true, default-features = false }
284
- opendal-service-etcd = { path = "services/etcd", version = "0.58.1", optional = true, default-features = false }
285
- opendal-service-foundationdb = { path = "services/foundationdb", version = "0.58.1", optional = true, default-features = false }
286
- opendal-service-foyer = { path = "services/foyer", version = "0.58.1", optional = true, default-features = false }
287
- opendal-service-fs = { path = "services/fs", version = "0.58.1", optional = true, default-features = false }
288
- opendal-service-ftp = { path = "services/ftp", version = "0.58.1", optional = true, default-features = false }
289
- opendal-service-gcs = { path = "services/gcs", version = "0.58.1", optional = true, default-features = false }
290
- opendal-service-gdrive = { path = "services/gdrive", version = "0.58.1", optional = true, default-features = false }
291
- opendal-service-ghac = { path = "services/ghac", version = "0.58.1", optional = true, default-features = false }
292
- opendal-service-github = { path = "services/github", version = "0.58.1", optional = true, default-features = false }
293
- opendal-service-goosefs = { path = "services/goosefs", version = "0.58.1", optional = true, default-features = false }
294
- opendal-service-gridfs = { path = "services/gridfs", version = "0.58.1", optional = true, default-features = false }
295
- opendal-service-hdfs = { path = "services/hdfs", version = "0.58.1", optional = true, default-features = false }
296
- opendal-service-hdfs-native = { path = "services/hdfs-native", version = "0.58.1", optional = true, default-features = false }
297
- opendal-service-hf = { path = "services/hf", version = "0.58.1", optional = true, default-features = false }
298
- opendal-service-http = { path = "services/http", version = "0.58.1", optional = true, default-features = false }
299
- opendal-service-ipfs = { path = "services/ipfs", version = "0.58.1", optional = true, default-features = false }
300
- opendal-service-ipmfs = { path = "services/ipmfs", version = "0.58.1", optional = true, default-features = false }
301
- opendal-service-koofr = { path = "services/koofr", version = "0.58.1", optional = true, default-features = false }
302
- opendal-service-lakefs = { path = "services/lakefs", version = "0.58.1", optional = true, default-features = false }
303
- opendal-service-memcached = { path = "services/memcached", version = "0.58.1", optional = true, default-features = false }
304
- opendal-service-mini-moka = { path = "services/mini_moka", version = "0.58.1", optional = true, default-features = false }
305
- opendal-service-moka = { path = "services/moka", version = "0.58.1", optional = true, default-features = false }
306
- opendal-service-mongodb = { path = "services/mongodb", version = "0.58.1", optional = true, default-features = false }
307
- opendal-service-monoiofs = { path = "services/monoiofs", version = "0.58.1", optional = true, default-features = false }
308
- opendal-service-mysql = { path = "services/mysql", version = "0.58.1", optional = true, default-features = false }
309
- opendal-service-obs = { path = "services/obs", version = "0.58.1", optional = true, default-features = false }
310
- opendal-service-onedrive = { path = "services/onedrive", version = "0.58.1", optional = true, default-features = false }
311
- opendal-service-oss = { path = "services/oss", version = "0.58.1", optional = true, default-features = false }
312
- opendal-service-pcloud = { path = "services/pcloud", version = "0.58.1", optional = true, default-features = false }
313
- opendal-service-persy = { path = "services/persy", version = "0.58.1", optional = true, default-features = false }
314
- opendal-service-postgresql = { path = "services/postgresql", version = "0.58.1", optional = true, default-features = false }
315
- opendal-service-redb = { path = "services/redb", version = "0.58.1", optional = true, default-features = false }
316
- opendal-service-redis = { path = "services/redis", version = "0.58.1", optional = true, default-features = false }
317
- opendal-service-rocksdb = { path = "services/rocksdb", version = "0.58.1", optional = true, default-features = false }
318
- opendal-service-s3 = { path = "services/s3", version = "0.58.1", optional = true, default-features = false }
319
- opendal-service-seafile = { path = "services/seafile", version = "0.58.1", optional = true, default-features = false }
320
- opendal-service-sftp = { path = "services/sftp", version = "0.58.1", optional = true, default-features = false }
321
- opendal-service-sled = { path = "services/sled", version = "0.58.1", optional = true, default-features = false }
322
- opendal-service-sqlite = { path = "services/sqlite", version = "0.58.1", optional = true, default-features = false }
323
- opendal-service-surrealdb = { path = "services/surrealdb", version = "0.58.1", optional = true, default-features = false }
324
- opendal-service-swift = { path = "services/swift", version = "0.58.1", optional = true, default-features = false }
325
- opendal-service-tikv = { path = "services/tikv", version = "0.58.1", optional = true, default-features = false }
326
- opendal-service-tos = { path = "services/tos", version = "0.58.1", optional = true, default-features = false }
327
- opendal-service-upyun = { path = "services/upyun", version = "0.58.1", optional = true, default-features = false }
328
- opendal-service-vercel-artifacts = { path = "services/vercel-artifacts", version = "0.58.1", optional = true, default-features = false }
329
- opendal-service-vercel-blob = { path = "services/vercel-blob", version = "0.58.1", optional = true, default-features = false }
330
- opendal-service-webdav = { path = "services/webdav", version = "0.58.1", optional = true, default-features = false }
331
- opendal-service-webhdfs = { path = "services/webhdfs", version = "0.58.1", optional = true, default-features = false }
332
- opendal-service-yandex-disk = { path = "services/yandex-disk", version = "0.58.1", optional = true, default-features = false }
333
- opendal-testkit = { path = "testkit", version = "0.58.1", optional = true }
249
+ opendal-core = { path = "core", version = "0.59.0", default-features = false }
250
+ opendal-http-transport-reqwest = { path = "http-transports/reqwest", version = "0.59.0", optional = true, default-features = false }
251
+ opendal-layer-async-backtrace = { path = "layers/async-backtrace", version = "0.59.0", optional = true, default-features = false }
252
+ opendal-layer-await-tree = { path = "layers/await-tree", version = "0.59.0", optional = true, default-features = false }
253
+ opendal-layer-capability-check = { path = "layers/capability-check", version = "0.59.0", optional = true, default-features = false }
254
+ opendal-layer-chaos = { path = "layers/chaos", version = "0.59.0", optional = true, default-features = false }
255
+ opendal-layer-concurrent-limit = { path = "layers/concurrent-limit", version = "0.59.0", optional = true, default-features = false }
256
+ opendal-layer-fastmetrics = { path = "layers/fastmetrics", version = "0.59.0", optional = true, default-features = false }
257
+ opendal-layer-fastrace = { path = "layers/fastrace", version = "0.59.0", optional = true, default-features = false }
258
+ opendal-layer-foyer = { path = "layers/foyer", version = "0.59.0", optional = true, default-features = false }
259
+ opendal-layer-hotpath = { path = "layers/hotpath", version = "0.59.0", optional = true, default-features = false }
260
+ opendal-layer-immutable-index = { path = "layers/immutable-index", version = "0.59.0", optional = true, default-features = false }
261
+ opendal-layer-logging = { path = "layers/logging", version = "0.59.0", optional = true, default-features = false }
262
+ opendal-layer-metrics = { path = "layers/metrics", version = "0.59.0", optional = true, default-features = false }
263
+ opendal-layer-mime-guess = { path = "layers/mime-guess", version = "0.59.0", optional = true, default-features = false }
264
+ opendal-layer-observe-metrics-common = { path = "layers/observe-metrics-common", version = "0.59.0", optional = true, default-features = false }
265
+ opendal-layer-otelmetrics = { path = "layers/otelmetrics", version = "0.59.0", optional = true, default-features = false }
266
+ opendal-layer-oteltrace = { path = "layers/oteltrace", version = "0.59.0", optional = true, default-features = false }
267
+ opendal-layer-prometheus = { path = "layers/prometheus", version = "0.59.0", optional = true, default-features = false }
268
+ opendal-layer-prometheus-client = { path = "layers/prometheus-client", version = "0.59.0", optional = true, default-features = false }
269
+ opendal-layer-retry = { path = "layers/retry", version = "0.59.0", optional = true, default-features = false }
270
+ opendal-layer-route = { path = "layers/route", version = "0.59.0", optional = true, default-features = false }
271
+ opendal-layer-tail-cut = { path = "layers/tail-cut", version = "0.59.0", optional = true, default-features = false }
272
+ opendal-layer-throttle = { path = "layers/throttle", version = "0.59.0", optional = true, default-features = false }
273
+ opendal-layer-timeout = { path = "layers/timeout", version = "0.59.0", optional = true, default-features = false }
274
+ opendal-layer-tracing = { path = "layers/tracing", version = "0.59.0", optional = true, default-features = false }
275
+ opendal-service-aliyun-drive = { path = "services/aliyun-drive", version = "0.59.0", optional = true, default-features = false }
276
+ opendal-service-alluxio = { path = "services/alluxio", version = "0.59.0", optional = true, default-features = false }
277
+ opendal-service-azblob = { path = "services/azblob", version = "0.59.0", optional = true, default-features = false }
278
+ opendal-service-azdls = { path = "services/azdls", version = "0.59.0", optional = true, default-features = false }
279
+ opendal-service-azfile = { path = "services/azfile", version = "0.59.0", optional = true, default-features = false }
280
+ opendal-service-b2 = { path = "services/b2", version = "0.59.0", optional = true, default-features = false }
281
+ opendal-service-cacache = { path = "services/cacache", version = "0.59.0", optional = true, default-features = false }
282
+ opendal-service-cloudflare-kv = { path = "services/cloudflare-kv", version = "0.59.0", optional = true, default-features = false }
283
+ opendal-service-compfs = { path = "services/compfs", version = "0.59.0", optional = true, default-features = false }
284
+ opendal-service-cos = { path = "services/cos", version = "0.59.0", optional = true, default-features = false }
285
+ opendal-service-d1 = { path = "services/d1", version = "0.59.0", optional = true, default-features = false }
286
+ opendal-service-dashmap = { path = "services/dashmap", version = "0.59.0", optional = true, default-features = false }
287
+ opendal-service-dbfs = { path = "services/dbfs", version = "0.59.0", optional = true, default-features = false }
288
+ opendal-service-dropbox = { path = "services/dropbox", version = "0.59.0", optional = true, default-features = false }
289
+ opendal-service-etcd = { path = "services/etcd", version = "0.59.0", optional = true, default-features = false }
290
+ opendal-service-foundationdb = { path = "services/foundationdb", version = "0.59.0", optional = true, default-features = false }
291
+ opendal-service-foyer = { path = "services/foyer", version = "0.59.0", optional = true, default-features = false }
292
+ opendal-service-fs = { path = "services/fs", version = "0.59.0", optional = true, default-features = false }
293
+ opendal-service-ftp = { path = "services/ftp", version = "0.59.0", optional = true, default-features = false }
294
+ opendal-service-gcs = { path = "services/gcs", version = "0.59.0", optional = true, default-features = false }
295
+ opendal-service-gcs-grpc = { path = "services/gcs-grpc", version = "0.59.0", optional = true, default-features = false }
296
+ opendal-service-gdrive = { path = "services/gdrive", version = "0.59.0", optional = true, default-features = false }
297
+ opendal-service-ghac = { path = "services/ghac", version = "0.59.0", optional = true, default-features = false }
298
+ opendal-service-github = { path = "services/github", version = "0.59.0", optional = true, default-features = false }
299
+ opendal-service-goosefs = { path = "services/goosefs", version = "0.59.0", optional = true, default-features = false }
300
+ opendal-service-gridfs = { path = "services/gridfs", version = "0.59.0", optional = true, default-features = false }
301
+ opendal-service-hdfs = { path = "services/hdfs", version = "0.59.0", optional = true, default-features = false }
302
+ opendal-service-hdfs-native = { path = "services/hdfs-native", version = "0.59.0", optional = true, default-features = false }
303
+ opendal-service-hf = { path = "services/hf", version = "0.59.0", optional = true, default-features = false }
304
+ opendal-service-http = { path = "services/http", version = "0.59.0", optional = true, default-features = false }
305
+ opendal-service-ipfs = { path = "services/ipfs", version = "0.59.0", optional = true, default-features = false }
306
+ opendal-service-ipmfs = { path = "services/ipmfs", version = "0.59.0", optional = true, default-features = false }
307
+ opendal-service-koofr = { path = "services/koofr", version = "0.59.0", optional = true, default-features = false }
308
+ opendal-service-lakefs = { path = "services/lakefs", version = "0.59.0", optional = true, default-features = false }
309
+ opendal-service-memcached = { path = "services/memcached", version = "0.59.0", optional = true, default-features = false }
310
+ opendal-service-mini-moka = { path = "services/mini_moka", version = "0.59.0", optional = true, default-features = false }
311
+ opendal-service-moka = { path = "services/moka", version = "0.59.0", optional = true, default-features = false }
312
+ opendal-service-mongodb = { path = "services/mongodb", version = "0.59.0", optional = true, default-features = false }
313
+ opendal-service-monoiofs = { path = "services/monoiofs", version = "0.59.0", optional = true, default-features = false }
314
+ opendal-service-mysql = { path = "services/mysql", version = "0.59.0", optional = true, default-features = false }
315
+ opendal-service-obs = { path = "services/obs", version = "0.59.0", optional = true, default-features = false }
316
+ opendal-service-onedrive = { path = "services/onedrive", version = "0.59.0", optional = true, default-features = false }
317
+ opendal-service-oss = { path = "services/oss", version = "0.59.0", optional = true, default-features = false }
318
+ opendal-service-pcloud = { path = "services/pcloud", version = "0.59.0", optional = true, default-features = false }
319
+ opendal-service-persy = { path = "services/persy", version = "0.59.0", optional = true, default-features = false }
320
+ opendal-service-postgresql = { path = "services/postgresql", version = "0.59.0", optional = true, default-features = false }
321
+ opendal-service-redb = { path = "services/redb", version = "0.59.0", optional = true, default-features = false }
322
+ opendal-service-redis = { path = "services/redis", version = "0.59.0", optional = true, default-features = false }
323
+ opendal-service-rocksdb = { path = "services/rocksdb", version = "0.59.0", optional = true, default-features = false }
324
+ opendal-service-s3 = { path = "services/s3", version = "0.59.0", optional = true, default-features = false }
325
+ opendal-service-seafile = { path = "services/seafile", version = "0.59.0", optional = true, default-features = false }
326
+ opendal-service-sftp = { path = "services/sftp", version = "0.59.0", optional = true, default-features = false }
327
+ opendal-service-sled = { path = "services/sled", version = "0.59.0", optional = true, default-features = false }
328
+ opendal-service-sqlite = { path = "services/sqlite", version = "0.59.0", optional = true, default-features = false }
329
+ opendal-service-surrealdb = { path = "services/surrealdb", version = "0.59.0", optional = true, default-features = false }
330
+ opendal-service-swift = { path = "services/swift", version = "0.59.0", optional = true, default-features = false }
331
+ opendal-service-tikv = { path = "services/tikv", version = "0.59.0", optional = true, default-features = false }
332
+ opendal-service-tos = { path = "services/tos", version = "0.59.0", optional = true, default-features = false }
333
+ opendal-service-upyun = { path = "services/upyun", version = "0.59.0", optional = true, default-features = false }
334
+ opendal-service-vercel-artifacts = { path = "services/vercel-artifacts", version = "0.59.0", optional = true, default-features = false }
335
+ opendal-service-vercel-blob = { path = "services/vercel-blob", version = "0.59.0", optional = true, default-features = false }
336
+ opendal-service-webdav = { path = "services/webdav", version = "0.59.0", optional = true, default-features = false }
337
+ opendal-service-webhdfs = { path = "services/webhdfs", version = "0.59.0", optional = true, default-features = false }
338
+ opendal-service-yandex-disk = { path = "services/yandex-disk", version = "0.59.0", optional = true, default-features = false }
339
+ opendal-testkit = { path = "testkit", version = "0.59.0", optional = true }
334
340
 
335
341
  [target.'cfg(target_os = "linux")'.dependencies]
336
- opendal-layer-dtrace = { path = "layers/dtrace", version = "0.58.1", optional = true, default-features = false }
342
+ opendal-layer-dtrace = { path = "layers/dtrace", version = "0.59.0", optional = true, default-features = false }
337
343
 
338
344
  [target.'cfg(target_arch = "wasm32")'.dependencies]
339
- opendal-service-opfs = { path = "services/opfs", version = "0.58.1", optional = true, default-features = false }
345
+ opendal-service-opfs = { path = "services/opfs", version = "0.59.0", optional = true, default-features = false }
340
346
 
341
347
  [dev-dependencies]
342
348
  anyhow = "1.0"
@@ -1,40 +1,33 @@
1
1
  crate Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 ISC LGPL-2.1-or-later MIT MIT-0 Unicode-3.0 Unlicense Zlib
2
- aes@0.8.4 X X
3
2
  allocator-api2@0.2.21 X X
4
- anyhow@1.0.103 X X
3
+ anyhow@1.0.104 X X
5
4
  arc-swap@1.9.1 X X
6
5
  async-lock@3.4.2 X X
7
- async-trait@0.1.89 X X
6
+ async-trait@0.1.91 X X
7
+ asyncband@0.6.7 X
8
8
  atomic-waker@1.1.2 X X
9
- autocfg@1.5.0 X X
10
9
  aws-lc-rs@1.16.3 X X
11
10
  aws-lc-sys@0.40.0 X X X X X
12
11
  backon@1.6.0 X
13
12
  base64@0.22.1 X X
14
- base64ct@1.8.3 X X
13
+ base64@0.23.0 X X
15
14
  bitflags@2.11.1 X X
16
- block-buffer@0.10.4 X X
17
15
  block-buffer@0.12.0 X X
18
- block-padding@0.3.3 X X
19
16
  bumpalo@3.20.3 X X
20
17
  bytes@1.12.1 X
21
- cbc@0.1.2 X X
22
- cc@1.2.61 X X
18
+ cc@1.4.0 X X
23
19
  cfg-if@1.0.4 X X
24
20
  chacha20@0.10.0 X X
25
- cipher@0.4.4 X X
26
21
  cmake@0.1.58 X X
27
22
  cmov@0.5.3 X X
28
23
  combine@4.6.7 X
29
24
  concurrent-queue@2.5.0 X X
30
25
  const-oid@0.10.2 X X
31
- const-oid@0.9.6 X X
32
26
  const-random@0.1.18 X X
33
27
  const-random-macro@0.1.16 X X
34
28
  core-foundation@0.10.1 X X
35
29
  core-foundation@0.9.4 X X
36
30
  core-foundation-sys@0.8.7 X X
37
- cpufeatures@0.2.17 X X
38
31
  cpufeatures@0.3.0 X X
39
32
  crc-fast@1.10.0 X X
40
33
  crossbeam-channel@0.5.15 X X
@@ -43,10 +36,9 @@ crossbeam-utils@0.8.21 X X
43
36
  crunchy@0.2.4 X
44
37
  crypto-common@0.1.7 X X
45
38
  crypto-common@0.2.1 X X
46
- ctor@1.0.8 X X
39
+ ctor@1.0.11 X X
47
40
  ctutils@0.4.2 X X
48
41
  dashmap@6.2.1 X
49
- der@0.7.10 X X
50
42
  digest@0.10.7 X X
51
43
  digest@0.11.3 X X
52
44
  displaydoc@0.2.5 X X
@@ -65,15 +57,15 @@ fnv@1.0.7 X X
65
57
  foldhash@0.1.5 X
66
58
  form_urlencoded@1.2.2 X X
67
59
  fs_extra@1.3.0 X
68
- futures@0.3.32 X X
69
- futures-channel@0.3.32 X X
70
- futures-core@0.3.32 X X
71
- futures-executor@0.3.32 X X
72
- futures-io@0.3.32 X X
73
- futures-macro@0.3.32 X X
74
- futures-sink@0.3.32 X X
75
- futures-task@0.3.32 X X
76
- futures-util@0.3.32 X X
60
+ futures@0.3.33 X X
61
+ futures-channel@0.3.33 X X
62
+ futures-core@0.3.33 X X
63
+ futures-executor@0.3.33 X X
64
+ futures-io@0.3.33 X X
65
+ futures-macro@0.3.33 X X
66
+ futures-sink@0.3.33 X X
67
+ futures-task@0.3.33 X X
68
+ futures-util@0.3.33 X X
77
69
  generic-array@0.14.7 X
78
70
  getrandom@0.2.17 X X
79
71
  getrandom@0.3.4 X X
@@ -83,13 +75,12 @@ goosefs-sdk@0.1.8 X
83
75
  h2@0.4.14 X
84
76
  hashbrown@0.14.5 X X
85
77
  hashbrown@0.15.5 X X
86
- hashbrown@0.17.0 X X
78
+ hashbrown@0.17.1 X X
87
79
  hex@0.4.3 X X
88
- hmac@0.12.1 X X
89
80
  hmac@0.13.0 X X
90
81
  hostname@0.4.2 X
91
82
  http@1.4.2 X X
92
- http-body@1.0.1 X
83
+ http-body@1.1.0 X
93
84
  http-body-util@0.1.3 X
94
85
  httparse@1.10.1 X X
95
86
  httpdate@1.0.3 X X
@@ -108,12 +99,12 @@ icu_provider@2.1.1 X
108
99
  idna@1.1.0 X X
109
100
  idna_adapter@1.2.1 X X
110
101
  indexmap@2.14.0 X X
111
- inout@0.1.4 X X
112
102
  io-uring@0.7.12 X X
113
103
  ipnet@2.12.0 X X
114
104
  itertools@0.14.0 X X
115
105
  itoa@1.0.18 X X
116
- jiff@0.2.32 X X
106
+ jiff@0.2.35 X X
107
+ jiff-core@0.1.0 X X
117
108
  jiff-tzdb@0.1.6 X X
118
109
  jiff-tzdb-platform@0.1.3 X X
119
110
  jni@0.22.4 X X
@@ -122,10 +113,8 @@ jni-sys@0.4.1 X X
122
113
  jni-sys-macros@0.4.1 X X
123
114
  jobserver@0.1.34 X X
124
115
  js-sys@0.3.98 X X
125
- lazy_static@1.5.0 X X
126
116
  libc@0.2.186 X X
127
- libm@0.2.16 X
128
- link-section@0.19.0 X X
117
+ link-section@0.19.1 X X
129
118
  linktime-proc-macro@0.2.0 X X
130
119
  linux-raw-sys@0.12.1 X X X
131
120
  litemap@0.8.2 X
@@ -139,37 +128,28 @@ memmap2@0.9.11 X X
139
128
  mime@0.3.17 X X
140
129
  mio@1.2.0 X
141
130
  moka@0.12.15 X X
142
- num-bigint-dig@0.8.6 X X
143
- num-integer@0.1.46 X X
144
- num-iter@0.1.45 X X
145
- num-traits@0.2.19 X X
146
131
  once_cell@1.21.4 X X
147
- opendal@0.58.1 X
148
- opendal-core@0.58.1 X
149
- opendal-http-transport-reqwest@0.58.1 X
150
- opendal-layer-concurrent-limit@0.58.1 X
151
- opendal-layer-logging@0.58.1 X
152
- opendal-layer-retry@0.58.1 X
153
- opendal-layer-timeout@0.58.1 X
154
- opendal-service-fs@0.58.1 X
155
- opendal-service-goosefs@0.58.1 X
156
- opendal-service-opfs@0.58.1 X
157
- opendal-service-s3@0.58.1 X
158
- opendal-testkit@0.58.1 X
132
+ opendal@0.59.0 X
133
+ opendal-core@0.59.0 X
134
+ opendal-http-transport-reqwest@0.59.0 X
135
+ opendal-layer-concurrent-limit@0.59.0 X
136
+ opendal-layer-logging@0.59.0 X
137
+ opendal-layer-retry@0.59.0 X
138
+ opendal-layer-timeout@0.59.0 X
139
+ opendal-service-fs@0.59.0 X
140
+ opendal-service-goosefs@0.59.0 X
141
+ opendal-service-opfs@0.59.0 X
142
+ opendal-service-s3@0.59.0 X
143
+ opendal-testkit@0.59.0 X
159
144
  openssl-probe@0.2.1 X X
160
145
  ordered-multimap@0.7.3 X
161
146
  parking@2.2.1 X X
162
147
  parking_lot@0.12.5 X X
163
148
  parking_lot_core@0.9.12 X X
164
- pbkdf2@0.12.2 X X
165
- pem-rfc7468@0.7.0 X X
166
149
  percent-encoding@2.3.2 X X
167
150
  pin-project@1.1.12 X X
168
151
  pin-project-internal@1.1.12 X X
169
152
  pin-project-lite@0.2.17 X X
170
- pkcs1@0.7.5 X X
171
- pkcs5@0.7.1 X X
172
- pkcs8@0.10.2 X X
173
153
  portable-atomic@1.13.1 X X
174
154
  portable-atomic-util@0.2.7 X X
175
155
  potential_utf@0.1.5 X
@@ -178,27 +158,23 @@ proc-macro2@1.0.106 X X
178
158
  prost@0.14.3 X
179
159
  prost-derive@0.14.3 X
180
160
  prost-types@0.14.3 X
181
- quick-xml@0.40.1 X
182
161
  quick-xml@0.41.0 X
183
162
  quote@1.0.46 X X
184
163
  r-efi@5.3.0 X X X
185
164
  r-efi@6.0.0 X X X
186
165
  rand@0.10.1 X X
187
- rand@0.8.6 X X
188
166
  rand@0.9.4 X X
189
- rand_chacha@0.3.1 X X
190
167
  rand_chacha@0.9.0 X X
191
168
  rand_core@0.10.1 X X
192
- rand_core@0.6.4 X X
193
169
  rand_core@0.9.5 X X
194
170
  redox_syscall@0.5.18 X
195
- reqsign-aws-v4@3.0.1 X
196
- reqsign-core@3.0.1 X
197
- reqsign-file-read-tokio@3.0.1 X
171
+ reqsign-aws-core@3.1.1 X
172
+ reqsign-aws-v4@3.3.0 X
173
+ reqsign-core@3.3.1 X
174
+ reqsign-file-read-tokio@3.0.6 X
198
175
  reqwest@0.12.28 X X
199
176
  reqwest@0.13.4 X X
200
177
  ring@0.17.14 X X
201
- rsa@0.9.10 X X
202
178
  rust-ini@0.21.3 X
203
179
  rustc_version@0.4.1 X X
204
180
  rustix@1.1.4 X X X
@@ -210,36 +186,31 @@ rustls-platform-verifier-android@0.1.1 X X
210
186
  rustls-webpki@0.103.13 X
211
187
  rustversion@1.0.22 X X
212
188
  ryu@1.0.23 X X
213
- salsa20@0.10.2 X X
214
189
  same-file@1.0.6 X X
215
190
  schannel@0.1.29 X
216
191
  scopeguard@1.2.0 X X
217
- scrypt@0.11.0 X X
218
192
  security-framework@3.7.0 X X
219
193
  security-framework-sys@2.17.0 X X
220
194
  semver@1.0.28 X X
221
195
  send_wrapper@0.6.0 X X
222
- serde@1.0.228 X X
223
- serde_core@1.0.228 X X
224
- serde_derive@1.0.228 X X
225
- serde_json@1.0.150 X X
196
+ serde@1.0.229 X X
197
+ serde_core@1.0.229 X X
198
+ serde_derive@1.0.229 X X
199
+ serde_json@1.0.151 X X
226
200
  serde_urlencoded@0.7.1 X X
227
201
  sha1@0.11.0 X X
228
- sha2@0.10.9 X X
229
202
  sha2@0.11.0 X X
230
- shlex@1.3.0 X X
231
- signature@2.2.0 X X
203
+ shlex@2.0.1 X X
232
204
  simd_cesu8@1.1.1 X X
233
205
  simdutf8@0.1.5 X X
234
206
  slab@0.4.12 X
235
207
  smallvec@1.15.1 X X
236
208
  socket2@0.6.3 X X
237
209
  spin@0.10.0 X
238
- spin@0.9.8 X
239
- spki@0.7.3 X X
240
210
  stable_deref_trait@1.2.1 X X
241
211
  subtle@2.6.1 X
242
212
  syn@2.0.118 X X
213
+ syn@3.0.3 X X
243
214
  sync_wrapper@1.0.2 X
244
215
  synstructure@0.13.2 X
245
216
  system-configuration@0.7.0 X X
@@ -249,7 +220,7 @@ thiserror@2.0.18 X X
249
220
  thiserror-impl@2.0.18 X X
250
221
  tiny-keccak@2.0.2 X
251
222
  tinystr@0.8.3 X
252
- tokio@1.52.3 X
223
+ tokio@1.53.1 X
253
224
  tokio-macros@2.7.0 X
254
225
  tokio-rustls@0.26.4 X X
255
226
  tokio-stream@0.1.18 X
@@ -269,7 +240,7 @@ unicode-ident@1.0.24 X X X
269
240
  untrusted@0.9.0 X
270
241
  url@2.5.8 X X
271
242
  utf8_iter@1.0.4 X X
272
- uuid@1.23.4 X X
243
+ uuid@1.24.0 X X
273
244
  version_check@0.9.5 X X
274
245
  walkdir@2.5.0 X X
275
246
  want@0.3.1 X
@@ -0,0 +1,21 @@
1
+ # Metadata benchmarks
2
+
3
+ This benchmark keeps only the final compact representation and replicas of the
4
+ field-per-option types that it replaced. The replicas preserve the old owned
5
+ field layout so the comparison remains available after the original types have
6
+ been removed.
7
+
8
+ Run the complete suite from `core/`:
9
+
10
+ ```shell
11
+ cargo bench --bench metadata
12
+ ```
13
+
14
+ Use a filter while iterating on one path:
15
+
16
+ ```shell
17
+ cargo bench --bench metadata -- clone
18
+ ```
19
+
20
+ The retained-value groups use Divan's allocation profiler. Construction groups
21
+ measure creation separately, while clone and lookup groups reuse an input value.