GitHub user Xuanwo edited 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>

---
**Mailing list thread:** 
https://lists.apache.org/thread/p0crhc7goolgbt3nndjcdh25hd6lt4jm


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]

  • v0.55.0 via GitHub
    • Re: v0.55.0 via GitHub

Reply via email to