GitHub user Xuanwo created a discussion: v0.55.0
# Rust Core Upgrade to v0.55
## Public API
### Timestamp types now come from `jiff`
All public metadata APIs that previously exposed `chrono::DateTime<Utc>` now
use `jiff::Timestamp`. For example, `Metadata::last_modified()` and related
setters return/accept `Timestamp` values (`core/src/types/metadata.rs`). Update
downstream crates to depend on `jiff` if they manipulate these timestamps or
convert them to other formats.
### Scheme handling is string-based
`OperatorInfo::scheme()` now returns `&'static str` instead of `Scheme`, and
`Operator::via_iter` accepts `impl AsRef<str>` (typically the
`services::*_SCHEME` constants). Additionally, the deprecated constructors
`Operator::from_map` and `Operator::via_map` have been removed. Migrate any
code that relied on the enum variants or the removed constructors to the new
string-based constants and `from_iter`/`via_iter`.
### List APIs only support `versions`
`OpList::with_version()`/`version()` and `Capability::list_with_version` have
been removed after a long deprecation cycle. Use `with_versions()`/`versions()`
on `OpList` and read `Capability::list_with_versions` instead.
### `S3Builder::security_token` removed
`S3Builder` no longer exposes the deprecated `security_token()` helper. Use
`session_token()` exclusively when configuring temporary credentials.
### KV-style services no longer pretend to support `list`
Services that never returned meaningful results for `Operator::list` (such as
D1, FoundationDB, GridFS, Memcached, MongoDB, MySQL, Persy, PostgreSQL, Redb,
Redis, SurrealDB, TiKV, etc.) now rely on the default `Unsupported`
implementation. Those features will be implemented later.
## Raw API
### Deprecated KV adapters removed
The legacy `opendal::raw::adapters::{kv, typed_kv}` modules have been deleted.
Services should directly implement `Access` instead of depending on the
adapters. Remove the corresponding imports and shim layers from any out-of-tree
services.
# Bindings Python Upgrade to v0.47
## Breaking change: Module exports are explicit
`opendal.__init__` now only re-exports the `capability`, `exceptions`, `file`,
`layers`, `services`, `types`, `Operator`, and `AsyncOperator` symbols. Imports
such as:
```python
from opendal import Metadata, Layer
```
no longer work. Update them to use the dedicated submodules:
```python
from opendal.types import Metadata
from opendal.layers import Layer
```
The legacy helper module `opendal.__base` has also been removed together with
`_Base`.
## Breaking change: Capability accessors renamed
Both `Operator.full_capability()` and `AsyncOperator.full_capability()` have
been renamed to `capability()`. Adjust your code accordingly:
```diff
-caps = op.full_capability()
+caps = op.capability()
```
## Breaking change: Service identifiers now have typed enums
The constructors for `Operator` / `AsyncOperator` provide overloads that accept
`opendal.services.Scheme` members. While plain strings are still accepted at
runtime, type checkers (pyright/mypy) expect the new enum values. Migrate code
bases that relied on importing the old `Scheme` enum from `opendal` to `from
opendal import services` and use `services.Scheme.<NAME>`.
<!-- Release notes generated using configuration in .github/release.yml at
v0.55.0 -->
## What's Changed
### Added
* feat(services/oss): allow users to specify endpoint addressing style by
@howardlau1999 in https://github.com/apache/opendal/pull/6504
* feat(bindings/ruby): publish ruby binding by @erickguan in
https://github.com/apache/opendal/pull/6539
* feat(services/s3): add support for HTTP 429 TooManyRequests for S3-compatible
services by @justinjoseph89 in https://github.com/apache/opendal/pull/6589
* feat: Add Operator Registry by @Xuanwo in
https://github.com/apache/opendal/pull/6608
* feat: Add from_uri support for more object storage services by @Xuanwo in
https://github.com/apache/opendal/pull/6665
* feat(services/webdav): Implement write returns metadata by @yunchipang in
https://github.com/apache/opendal/pull/6660
* feat: Add from_uri support for http/webdav/ftp/sftp by @Xuanwo in
https://github.com/apache/opendal/pull/6666
* feat(services/swift): Implement write returns metadata by @yunchipang in
https://github.com/apache/opendal/pull/6669
* feat(buffer): add chunk iterator for Buffer by @TennyZhuang in
https://github.com/apache/opendal/pull/6672
* feat(services/dropbox): Implement write returns metadata by @yunchipang in
https://github.com/apache/opendal/pull/6673
* feat: Add from_uri support for all services by @Xuanwo in
https://github.com/apache/opendal/pull/6668
* chore(bindings/python): Add Justfile and format codebase by @chitralverma in
https://github.com/apache/opendal/pull/6677
* feat: Introduce TailCutLayer by @Xuanwo in
https://github.com/apache/opendal/pull/6680
* feat(services/gdrive): Implement write returns metadata by @yunchipang in
https://github.com/apache/opendal/pull/6683
* feat(bindings/python): Add stubs for Exception and Capability by
@chitralverma in https://github.com/apache/opendal/pull/6690
* feat(bindings/python): Add stubs for some more types by @chitralverma in
https://github.com/apache/opendal/pull/6703
* feat(bindings/python)!: Add stubs for remaining types by @chitralverma in
https://github.com/apache/opendal/pull/6720
* feat(bindings/python)!: Stubs fix for operator and __version__ by
@chitralverma in https://github.com/apache/opendal/pull/6728
* RFC-6707: Capability Override Layer by @Xuanwo in
https://github.com/apache/opendal/pull/6707
* feat(bindings/python)!: Generate stubs for Operator overloads and Scheme by
@chitralverma in https://github.com/apache/opendal/pull/6729
* feat(bindings/nodejs): add concurrent limit layer by @kingsword09 in
https://github.com/apache/opendal/pull/6739
* feat(bindings/python): Enable ftp/hdfs_native/sftp for python by
@chitralverma in https://github.com/apache/opendal/pull/6745
* feat: implement content-md5 for s3 by @waynexia in
https://github.com/apache/opendal/pull/6508
* feat(services/compfs): implement IoVectoredBuf for Buffer by @meteorgan in
https://github.com/apache/opendal/pull/6762
* feat(services/lakefs): Implement write returns metadata by @kingsword09 in
https://github.com/apache/opendal/pull/6770
* Add `connection_pool_max_size` option to memcached and redis builders by
@trxcllnt in https://github.com/apache/opendal/pull/6759
* fix:(bindings/python) Gate service-sftp on windows targets by @chitralverma
in https://github.com/apache/opendal/pull/6777
* feat(binding/nodejs): add TimeoutLayer, LoggingLayer and ThrottleLayer in
nodejs binding by @Kilerd in https://github.com/apache/opendal/pull/6772
### Changed
* refactor: Migrate cloudflare_kv from adapter::kv to Access instead by
@kingsword09 in https://github.com/apache/opendal/pull/6340
* refactor: Centralize date/time handling with Timestamp wrapper by @dami0806
in https://github.com/apache/opendal/pull/6650
* refactor: Move Config related back to `config.rs` instead by @Xuanwo in
https://github.com/apache/opendal/pull/6667
* refactor: Remove deprecated project virtiofs by @Xuanwo in
https://github.com/apache/opendal/pull/6682
* refactor(core): remove conditional compilation in PageList trait by @crwen in
https://github.com/apache/opendal/pull/6715
* refactor: migrate tikv service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6713
* refactor: migrate memcached service from adapter::kv to impl Access directly
by @koushiro in https://github.com/apache/opendal/pull/6714
* refactor: migrate mysql service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6716
* refactor: migrate postgresql service from adapter::kv to impl Access directly
by @koushiro in https://github.com/apache/opendal/pull/6718
* refactor: migrate persy service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6721
* refactor: migrate foundationdb service from adapter::kv to impl Access
directly by @koushiro in https://github.com/apache/opendal/pull/6722
* refactor: migrate surrealdb service from adapter::kv to impl Access directly
by @koushiro in https://github.com/apache/opendal/pull/6723
* refactor: migrate mongodb service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6724
* refactor: migrate d1 service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6725
* refactor: migrate gridfs service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6726
* refactor: Migrate sqlite from adapter::kv to Access instead by @NoxTav in
https://github.com/apache/opendal/pull/6328
* refactor: migrate sled service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6731
* refactor: migrate rocksdb service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6732
* refactor: migrate redb service from adapter::kv to impl Access directly by
@koushiro in https://github.com/apache/opendal/pull/6733
* refactor: Remove deprecated kv and typed_kv adapters by @kingsword09 in
https://github.com/apache/opendal/pull/6734
* refactor(hdfs): restructure HdfsBackend and introduce HdfsCore by
@kingsword09 in https://github.com/apache/opendal/pull/6736
* refactor(hdfs-native): restructure HdfsNativeBackend and introduce
HdfsNativeCore by @kingsword09 in https://github.com/apache/opendal/pull/6737
* refactor(services): impl Debug for all service builders by @koushiro in
https://github.com/apache/opendal/pull/6756
* refactor(types)!: use string-based scheme over enum-based approach by
@koushiro in https://github.com/apache/opendal/pull/6765
### Fixed
* fix(services/cloudflare_kv): Use DEFAULT_SCHEME constant for Cloudflare KV
scheme by @kingsword09 in https://github.com/apache/opendal/pull/6568
* fix(bindings/d): Enhance D bindings build script and tests for OpenDAL by
@kingsword09 in https://github.com/apache/opendal/pull/6569
* fix(services/obs): send Range header only for non-full reads by @QuakeWang in
https://github.com/apache/opendal/pull/6574
* ci: Fix default branch name in Ruby release workflow by @erickguan in
https://github.com/apache/opendal/pull/6585
* fix: expose ListDyn + WriteDyn by @bonsairobo in
https://github.com/apache/opendal/pull/6596
* fix(integrations/cloud_filter): upgrade cloud_filter to resolve CI failures
after Rust 1.90.0 by @kingsword09 in https://github.com/apache/opendal/pull/6602
* fix(integrations/unftp-sbe): properly shutdown after write by @choucavalier
in https://github.com/apache/opendal/pull/6601
* fix(azblob): don't call AzureStorageConfig::from_env on wasm by @bonsairobo
in https://github.com/apache/opendal/pull/6594
* fix: censor the "sig" query param for Azure SAS URIs by @bonsairobo in
https://github.com/apache/opendal/pull/6603
* fix(bindings/ruby): publish ruby binding gem by @erickguan in
https://github.com/apache/opendal/pull/6606
* fix(docs): docs.rs built failed by @FreeChenMou in
https://github.com/apache/opendal/pull/6658
* fix(layers/throttle): await limiter before throttled writes by @TennyZhuang
in https://github.com/apache/opendal/pull/6671
* fix:(bindings/python) Minor fix in stubs by @chitralverma in
https://github.com/apache/opendal/pull/6744
* fix: retry on 409 with AWS S3 by @wolfv in
https://github.com/apache/opendal/pull/6742
* fix(bindings/ruby): fix release build error by @erickguan in
https://github.com/apache/opendal/pull/6766
* fix(binding/nodejs): add missing lister methods by @Kilerd in
https://github.com/apache/opendal/pull/6769
* fix(bindings/python): Update python/stubgen & core/hdfs-native by
@chitralverma in https://github.com/apache/opendal/pull/6774
### Docs
* doc(bindinds/ruby): add examples and links by @erickguan in
https://github.com/apache/opendal/pull/6609
* docs: spelling and minor wording change by @carlsonp in
https://github.com/apache/opendal/pull/6620
* docs(bin): add badges to bin tools README by @kingsword09 in
https://github.com/apache/opendal/pull/6642
* docs(python): add documentation for local usage by @jayceslesar in
https://github.com/apache/opendal/pull/6480
* docs(apps): add migration guide, update links; remove bin/{oli,ofs} (#6689)
by @tao12345666333 in https://github.com/apache/opendal/pull/6705
* docs(core/types): add some comments for Buffer by @meteorgan in
https://github.com/apache/opendal/pull/6746
* docs: Make it clear that bindings have different version with rust core. by
@0lai0 in https://github.com/apache/opendal/pull/6780
### CI
* ci: Switch from --nocapture to --no-capture by @kingsword09 in
https://github.com/apache/opendal/pull/6567
* ci: Add patch file to Ruby release workflow by @erickguan in
https://github.com/apache/opendal/pull/6592
* build: enhance build website by @tisonkun in
https://github.com/apache/opendal/pull/6640
* ci: use shas fix action permissions by @kenwoodjw in
https://github.com/apache/opendal/pull/6659
* ci: Bump doc toolchain to allow opendal docs build by @Xuanwo in
https://github.com/apache/opendal/pull/6661
* ci: build and test on python3.14t by @kenwoodjw in
https://github.com/apache/opendal/pull/6670
* ci(nodejs): enable npm trusted publishing by @kingsword09 in
https://github.com/apache/opendal/pull/6685
* ci: remove ofs behavior tests and planning (#6689) by @tao12345666333 in
https://github.com/apache/opendal/pull/6704
* ci: Auto add ML thread link in github discussion by @Xuanwo in
https://github.com/apache/opendal/pull/6709
* ci: Fix bug in discussion thread link auto append by @Xuanwo in
https://github.com/apache/opendal/pull/6711
* ci: Fix GHA CI again by @Xuanwo in https://github.com/apache/opendal/pull/6712
* ci: Remove hdfs-native from arm platform by @Xuanwo in
https://github.com/apache/opendal/pull/6792
### Chore
* ci: switches etcd image to official etcd image by @kingsword09 in
https://github.com/apache/opendal/pull/6562
* chore(bindings/nodejs): replace custom sleep with setTimeout in tests by
@kingsword09 in https://github.com/apache/opendal/pull/6563
* chore(layers/prometheus-client): upgrade prometheus-client dependency to
v0.24 by @koushiro in https://github.com/apache/opendal/pull/6523
* chore(core): typo: update comments on `BytesRange::new` by @TheR1sing3un in
https://github.com/apache/opendal/pull/6570
* chore(website): update The ASF logo by @suyanhanx in
https://github.com/apache/opendal/pull/6575
* chore: fix website build by @tisonkun in
https://github.com/apache/opendal/pull/6579
* chore: make clippy happy when using rust 1.90.0 by @kingsword09 in
https://github.com/apache/opendal/pull/6590
* chore: apache project provides code under ALv2 by @tisonkun in
https://github.com/apache/opendal/pull/6598
* chore: remove dead project openval by @Xuanwo in
https://github.com/apache/opendal/pull/6604
* chore: upgrade opentelemetry to 0.31.0 by @tisonkun in
https://github.com/apache/opendal/pull/6623
* chore(deps): bump tempfile from 3.20.0 to 3.23.0 in /bin/ofs by
@dependabot[bot] in https://github.com/apache/opendal/pull/6611
* chore(deps): bump tempfile from 3.21.0 to 3.23.0 in /bin/oli by
@dependabot[bot] in https://github.com/apache/opendal/pull/6610
* chore(deps): update datafusion requirement from 49.0.2 to 50.0.0 in
/integrations/object_store by @dependabot[bot] in
https://github.com/apache/opendal/pull/6613
* chore(deps): bump @docusaurus/plugin-client-redirects from 3.8.1 to 3.9.1 in
/website by @dependabot[bot] in https://github.com/apache/opendal/pull/6614
* chore: avoid build warning by @tisonkun in
https://github.com/apache/opendal/pull/6627
* build: update docusaurus together by @asukaminato0721 in
https://github.com/apache/opendal/pull/6626
* chore(deps): bump the github-actions group with 8 updates by @dependabot[bot]
in https://github.com/apache/opendal/pull/6633
* chore(deps): bump logforth from 0.27.0 to 0.28.1 in /bin/ofs by
@dependabot[bot] in https://github.com/apache/opendal/pull/6629
* chore(deps): bump the http-serialization-utils group in /core with 7 updates
by @dependabot[bot] in https://github.com/apache/opendal/pull/6634
* chore(deps): bump clap from 4.5.38 to 4.5.41 in /bin/oli by @dependabot[bot]
in https://github.com/apache/opendal/pull/6630
* chore(deps): bump the logs-errors-checksums group in /core with 2 updates by
@dependabot[bot] in https://github.com/apache/opendal/pull/6635
* chore(deps): bump the pyo3 group in /bindings/python with 2 updates by
@dependabot[bot] in https://github.com/apache/opendal/pull/6631
* chore(deps): bump the third-party-actions group with 2 updates by
@dependabot[bot] in https://github.com/apache/opendal/pull/6636
* chore(deps): bump axum from 0.7.9 to 0.8.6 in /bin/oay by @dependabot[bot] in
https://github.com/apache/opendal/pull/6612
* chore(deps): bump the others group in /core with 15 updates by
@dependabot[bot] in https://github.com/apache/opendal/pull/6637
* chore: OpenDAL MSRV to 1.85 and edition 2024 by @fatelei in
https://github.com/apache/opendal/pull/6615
* refactor!: migrate chrono to jiff by @tisonkun in
https://github.com/apache/opendal/pull/6643
* chore: support more error codes for S3-compatible services by @leiysky in
https://github.com/apache/opendal/pull/6651
* chore: fixup timestamp refactor by @tisonkun in
https://github.com/apache/opendal/pull/6663
* chore: remove oay: delete bin/oay; drop CI; update release/dev tooling,
dependabot, docs by @tao12345666333 in
https://github.com/apache/opendal/pull/6691
* chore: cleanup for moving oli/ofs and removing oay (#6689) by @tao12345666333
in https://github.com/apache/opendal/pull/6700
* chore(deps): bump actions/setup-node from 5 to 6 in the github-actions group
by @dependabot[bot] in https://github.com/apache/opendal/pull/6695
* chore(deps): bump the http-serialization-utils group across 1 directory with
3 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6717
* chore(deps): bump the others group in /core with 2 updates by
@dependabot[bot] in https://github.com/apache/opendal/pull/6698
* chore(deps): bump tokio from 1.47.1 to 1.48.0 in /core in the async-runtime
group by @dependabot[bot] in https://github.com/apache/opendal/pull/6696
* chore: remove integrations cloud_filter and fuse3; update CI/docs/README by
@tao12345666333 in https://github.com/apache/opendal/pull/6727
* chore: fixup README render and broken links by @tisonkun in
https://github.com/apache/opendal/pull/6735
* chore: apply suggestions from clippy 1.91.0 by @kingsword09 in
https://github.com/apache/opendal/pull/6754
* chore: cleanup some useless code related to services that were removed due to
lack of maintenance by @koushiro in https://github.com/apache/opendal/pull/6763
* chore: rename delete module => deleter module; ServiceAccessor =>
ServiceBackend by @koushiro in https://github.com/apache/opendal/pull/6757
* chore(services): unify scheme usage by @koushiro in
https://github.com/apache/opendal/pull/6764
* chore(services): remove empty list operation and update docs of all services
by @koushiro in https://github.com/apache/opendal/pull/6768
* Bump to version 0.55.0 by @Xuanwo in
https://github.com/apache/opendal/pull/6771
* chore(types)!: remove deprecated `Operator::from_map` and `Operator::via_map`
by @koushiro in https://github.com/apache/opendal/pull/6775
* chore(types)!: remove deprecated `list_with_version` capability by @koushiro
in https://github.com/apache/opendal/pull/6781
* chore(services/s3)!: remove deprecated `S3::security_token` by @koushiro in
https://github.com/apache/opendal/pull/6779
* chore(services/fs): use NotADirectory directly by @meteorgan in
https://github.com/apache/opendal/pull/6786
* chore: Fix build by @Xuanwo in https://github.com/apache/opendal/pull/6789
* chore: Don't introduce openssl for python binding by @Xuanwo in
https://github.com/apache/opendal/pull/6790
## New Contributors
* @TheR1sing3un made their first contribution in
https://github.com/apache/opendal/pull/6570
* @howardlau1999 made their first contribution in
https://github.com/apache/opendal/pull/6504
* @QuakeWang made their first contribution in
https://github.com/apache/opendal/pull/6574
* @justinjoseph89 made their first contribution in
https://github.com/apache/opendal/pull/6589
* @bonsairobo made their first contribution in
https://github.com/apache/opendal/pull/6596
* @choucavalier made their first contribution in
https://github.com/apache/opendal/pull/6601
* @carlsonp made their first contribution in
https://github.com/apache/opendal/pull/6620
* @FreeChenMou made their first contribution in
https://github.com/apache/opendal/pull/6658
* @dami0806 made their first contribution in
https://github.com/apache/opendal/pull/6650
* @yunchipang made their first contribution in
https://github.com/apache/opendal/pull/6660
* @jayceslesar made their first contribution in
https://github.com/apache/opendal/pull/6480
* @NoxTav made their first contribution in
https://github.com/apache/opendal/pull/6328
* @wolfv made their first contribution in
https://github.com/apache/opendal/pull/6742
* @trxcllnt made their first contribution in
https://github.com/apache/opendal/pull/6759
* @sebbASF made their first contribution in
https://github.com/apache/opendal/pull/6783
* @0lai0 made their first contribution in
https://github.com/apache/opendal/pull/6780
**Full Changelog**: https://github.com/apache/opendal/compare/v0.54.1...v0.55.0
<hr /><em>This discussion was created from the release <a
href='https://github.com/apache/opendal/releases/tag/v0.55.0'>v0.55.0</a>.</em>
GitHub link: https://github.com/apache/opendal/discussions/6814
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]