This is an automated email from the ASF dual-hosted git repository.

Xuanwo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/opendal.git


The following commit(s) were added to refs/heads/main by this push:
     new 1e0fc7319 docs: update v0.57.0 release notes (#7628)
1e0fc7319 is described below

commit 1e0fc73190afb7e221c7badda7ef43fe40592940
Author: Xuanwo <[email protected]>
AuthorDate: Thu May 28 17:10:54 2026 +0800

    docs: update v0.57.0 release notes (#7628)
---
 CHANGELOG.md                  |  9 ++++++++-
 bindings/java/upgrade.md      | 13 +++++++++++++
 bindings/python/upgrade.md    | 11 +++++++++++
 core/core/src/docs/upgrade.md | 35 +++++++++++++++++++++++++++++++++++
 4 files changed, 67 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 362ba0317..d32d2b5f9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,13 +7,15 @@ and this project adheres to [Semantic 
Versioning](https://semver.org/).
 
 <!-- Release notes generated with: gh release create v_draft --generate-notes 
--draft -->
 
-## [v0.57.0] - 2026-05-25
+## [v0.57.0] - 2026-05-28
 
 ### Breaking Changes
 * core: `Operator::copy`, `copy_options`, `copy_with`, and blocking copy APIs 
now return `Metadata` instead of `()`. Custom raw copy implementations must 
implement the new copier flow and return server-side completion metadata from 
`oio::Copy::close`.
+* core: `RpRead` now carries optional `Metadata` observed while opening a read 
operation. Out-of-tree raw services that previously populated `RpRead` size or 
range fields must return `RpRead::new(metadata)` when read metadata is 
available, or `RpRead::default()` otherwise.
 * core: `RetryInterceptor::intercept` now takes a single `RetryEvent<'_>` 
argument instead of `(&Error, Duration)`. Update custom retry interceptors to 
read retry error, delay, operation, and attempt data from the event.
 * observability: HTTP metrics now include the `service_operation` label for 
service-specific request names. Update Prometheus, OpenTelemetry, fastmetrics, 
or custom metrics consumers that assume the previous HTTP metric label set.
 * services: S3-compatible services now use `skip_signature` for unsigned 
requests. S3, OSS, and GCS keep `allow_anonymous` as a deprecated alias; TOS 
users must migrate to `skip_signature` because `allow_anonymous` has been 
removed. GCS `skip_signature` now unconditionally bypasses signing instead of 
falling back on credential errors.
+* services/hf: `repo_type` is now required for the Hugging Face service. Set 
`repo_type` explicitly, for example `model`, `dataset`, `space`, or `bucket`, 
instead of relying on the previous implicit `model` default.
 * services/tos: `TosBuilder::enable_versioning` and 
`TosConfig::enable_versioning` have been removed. TOS now declares versioned 
stat/read/delete capabilities natively.
 * bindings/java: generated `ServiceConfig` now uses canonical service names. 
Replace `ServiceConfig.Huggingface` with `ServiceConfig.Hf`; generated 
`scheme()` values for services such as Aliyun Drive, Cloudflare KV, HDFS 
Native, Vercel Artifacts, Vercel Blob, and Yandex Disk now return hyphenated 
canonical schemes instead of underscore variants.
 
@@ -72,6 +74,10 @@ and this project adheres to [Semantic 
Versioning](https://semver.org/).
 * feat(copy): add conditional destination copy by @dentiny in 
https://github.com/apache/opendal/pull/7600
 * feat(s3): validate multipart copy part number by @dentiny in 
https://github.com/apache/opendal/pull/7585
 * feat(core): return metadata from copy by @Xuanwo in 
https://github.com/apache/opendal/pull/7606
+* feat: C/Go bindings support layers by @yuchanns in 
https://github.com/apache/opendal/pull/7611
+* feat(core): return metadata from read by @Xuanwo in 
https://github.com/apache/opendal/pull/7624
+* feat(core): complete copy_with_if_match implementation by @YuangGao in 
https://github.com/apache/opendal/pull/7627
+* feat(services/hf): add download_mode option and require explicit repo_type 
by @kszucs in https://github.com/apache/opendal/pull/7625
 ### Changed
 * refactor(services/s3): complete capability override migration by @Xuanwo in 
https://github.com/apache/opendal/pull/7546
 * refactor(services/oss): complete capability override migration by @Xuanwo in 
https://github.com/apache/opendal/pull/7549
@@ -122,6 +128,7 @@ and this project adheres to [Semantic 
Versioning](https://semver.org/).
 * docs: reshape README around action cards by @Xuanwo in 
https://github.com/apache/opendal/pull/7578
 * docs: tune service logo presentation by @Xuanwo in 
https://github.com/apache/opendal/pull/7581
 * docs(services/tos): add service docs by @ddupg in 
https://github.com/apache/opendal/pull/7587
+* docs: update read returns metadata RFC by @Xuanwo in 
https://github.com/apache/opendal/pull/7623
 ### CI
 * ci(bindings/dotnet): drive releases via workflow_dispatch with previe… by 
@Fatorin in https://github.com/apache/opendal/pull/7422
 * ci: drop skipStagingRepositoryClose for smoother staging by @tisonkun in 
https://github.com/apache/opendal/pull/7436
diff --git a/bindings/java/upgrade.md b/bindings/java/upgrade.md
index 661f3765c..d83057bb9 100644
--- a/bindings/java/upgrade.md
+++ b/bindings/java/upgrade.md
@@ -2,6 +2,19 @@
 
 ## Breaking changes
 
+### Hugging Face config requires `repoType`
+
+`ServiceConfig.Hf` no longer relies on the backend's implicit `model` default. 
Set `repoType` explicitly when creating Hugging Face operators:
+
+```diff
+ ServiceConfig.Hf config = ServiceConfig.Hf.builder()
++    .repoType("model")
+     .repoId("username/repo")
+     .build();
+```
+
+Use the appropriate value for the repository: `model`, `dataset`, `space`, or 
`bucket`.
+
 ### Generated service configs use canonical service names
 
 Generated `ServiceConfig` entries now use canonical OpenDAL service names.
diff --git a/bindings/python/upgrade.md b/bindings/python/upgrade.md
index d365283c4..bf15c936e 100644
--- a/bindings/python/upgrade.md
+++ b/bindings/python/upgrade.md
@@ -1,5 +1,16 @@
 # Upgrade to v0.47
 
+## Breaking change: Hugging Face config requires `repo_type`
+
+The `hf` service no longer relies on the backend's implicit `model` default. 
Set `repo_type` explicitly when creating Hugging Face operators:
+
+```diff
+-op = opendal.Operator("hf", repo_id="username/repo")
++op = opendal.Operator("hf", repo_type="model", repo_id="username/repo")
+```
+
+Use the appropriate value for the repository: `model`, `dataset`, `space`, or 
`bucket`.
+
 ## 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:
diff --git a/core/core/src/docs/upgrade.md b/core/core/src/docs/upgrade.md
index d0a495e6a..881153ec9 100644
--- a/core/core/src/docs/upgrade.md
+++ b/core/core/src/docs/upgrade.md
@@ -2,6 +2,12 @@
 
 ## Public API
 
+### Read response metadata
+
+Read operations can now expose metadata returned by the underlying service 
while opening the read response. `Reader::metadata()` returns the complete 
object metadata already observed by this reader, and `BufferStream::metadata()` 
can open the read response and return metadata before the response body is 
consumed.
+
+`Operator::read`, `read_with`, and `read_options` still return `Buffer`.
+
 ### Copy APIs return `Metadata`
 
 `Operator::copy`, `copy_options`, `copy_with`, and their blocking equivalents 
now return `Metadata` instead of `()`, matching write completion behavior.
@@ -20,6 +26,21 @@ Out-of-tree raw services and layers that implement copy must 
migrate to the new
 
 HTTP metrics emitted by the metrics layers now include a `service_operation` 
label for backend-specific request names such as `GetObject` or `UploadPart`. 
Metrics consumers and dashboards that assume the previous HTTP metric label set 
must be updated.
 
+## Raw API
+
+### `RpRead` carries optional `Metadata`
+
+`RpRead` now carries optional complete object `Metadata` observed while 
opening a read operation. The old size/range fields have been removed.
+
+Out-of-tree services should return:
+
+- `RpRead::new(metadata)` when the read response natively provides metadata.
+- `RpRead::default()` when the service does not provide read metadata.
+
+The `metadata.content_length()` value must describe the full object size, even 
for range reads.
+
+## Services
+
 ### `allow_anonymous` renamed to `skip_signature`
 
 S3-compatible services now use `skip_signature` to describe requests that 
bypass credential loading and request signing:
@@ -28,6 +49,20 @@ S3-compatible services now use `skip_signature` to describe 
requests that bypass
 - For TOS, migrate from `allow_anonymous(true)` / `allow_anonymous = true` to 
`skip_signature()` / `skip_signature = true`.
 - For GCS, the behavior changed from fallback-on-credential-error to an 
unconditional signing bypass. If requests should be signed, do not set either 
`skip_signature` or the deprecated `allow_anonymous` alias.
 
+### Hugging Face `repo_type` is required
+
+The Hugging Face service no longer defaults `repo_type` to `model`. Set it 
explicitly when constructing the service:
+
+```diff
+ let builder = opendal_service_hf::Hf::default()
++    .repo_type("model")
+     .repo_id("username/repo");
+```
+
+For config maps and environment-driven setup, add `repo_type = "model"` or the 
correct repository type: `model`, `dataset`, `space`, or `bucket`.
+
+The service also adds a `download_mode` option. The default is `xet`; set 
`download_mode = "http"` to force plain HTTP downloads.
+
 ### TOS versioning option removed
 
 `TosBuilder::enable_versioning` and `TosConfig::enable_versioning` have been 
removed. TOS now declares versioned stat/read/delete capabilities natively.

Reply via email to