Skip to content

Releases: apache/opendal

v0.22.6

20 Dec 06:40
v0.22.6
49834ed
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.22.5...v0.22.6

v0.22.5

13 Dec 05:49
v0.22.5
89a6602
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.22.4...v0.22.5

v0.22.4

13 Dec 05:03
v0.22.4
ad0500b
Compare
Choose a tag to compare

What's Changed

  • chore(deps): update base64 requirement from 0.13 to 0.20 by @dependabot in #1067
  • fix: read a large range without error and add test by @Ranxy in #1068
  • fix(services/oss): Enable standard behavior for oss range by @Xuanwo in #1070
  • improve blocking read use read_to_end by @sundy-li in #1072
  • feat(services/gcs): Fully implement default credential support by @Xuanwo in #1073
  • Bump to version 0.22.4 by @Xuanwo in #1074

New Contributors

Full Changelog: v0.22.3...v0.22.4

v0.22.3

11 Dec 14:35
v0.22.3
37089d8
Compare
Choose a tag to compare

What's Changed

  • fix(services/moka): Don't print all content in cache by @Xuanwo in #1057
  • feat(layers/metrics): Merge error and failure counters together by @Xuanwo in #1058
  • feat: Set MSRV to 1.60 by @Xuanwo in #1060
  • feat: Add unwind safe flag for operator by @Xuanwo in #1061
  • feat(azblob): Add build from connection string support by @Xuanwo in #1064
  • Bump to version 0.22.3 by @Xuanwo in #1065

Full Changelog: v0.22.2...v0.22.3

v0.22.2

07 Dec 11:04
v0.22.2
3e07402
Compare
Choose a tag to compare

What's Changed

  • feat(presign): support presign head method for s3 and oss by @ZhiHanZ in #1049
  • chore: use opendal method instead of write by hand by @ZhiHanZ in #1050
  • Bump to version 0.22.2 by @Xuanwo in #1051

New Contributors

Full Changelog: v0.22.1...v0.22.2

v0.22.1

05 Dec 12:43
v0.22.1
8191873
Compare
Choose a tag to compare

What's Changed

  • fix(services/s3): Allow disable loading from imds_v2 and assume_role by @Xuanwo in #1044
  • Bump to version 0.22.1 by @Xuanwo in #1045

Full Changelog: v0.22.0...v0.22.1

v0.22.0

04 Dec 18:25
v0.22.0
8905807
Compare
Choose a tag to compare

What's Changed

  • chore(deps): update env_logger requirement from 0.9 to 0.10 by @dependabot in #1015
  • docs: Fix broken links in docs by @Xuanwo in #1016
  • feat: improve temp file organization when enable atomic write in fs by @killme2008 in #1017
  • refactor: Polish error handling of different services by @Xuanwo in #1018
  • refactor: Merge metadata and content cache together by @Xuanwo in #1020
  • feat: Allow configure LoggingLayer's level by @Xuanwo in #1021
  • feat: Enable users to specify the cache policy by @Xuanwo in #1024
  • feat: Implement presign for oss by @Xuanwo in #1035
  • fix(services/fs): Make sure writing file is truncated by @Xuanwo in #1036
  • refactor(layer/cache): Allow users implement cache by themselves by @Xuanwo in #1040
  • Bump to version 0.22 by @Xuanwo in #1041

Full Changelog: v0.21.2...v0.22.0

v0.21.2

27 Nov 11:36
v0.21.2
4cbcf66
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.21.1...v0.21.2

v0.21.1

26 Nov 01:56
v0.21.1
ecaf4fe
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.21.0...v0.21.1

v0.21.0

25 Nov 16:22
v0.21.0
ff9e093
Compare
Choose a tag to compare

Upgrade to v0.21

v0.21 is an internal refactor version of OpenDAL. In this version, we refactored our error handling and our Accessor APIs. Thanks to those internal changes, we added an object-level metadata cache, making it nearly zero cost to reuse existing metadata continuously.

Let's start with our errors.

Error Handling

As described in RFC-0977: Refactor Error, we refactor opendal error by a new error
called opendal::Error.

This change will affect all APIs that are used to return io::Error.

To migrate this, please replace std::io::Error with opendal::Error:

- use std::io::Result;
+ use opendal::Result;

And the following error kinds should be updated:

  • std::io::ErrorKind::NotFound => opendal::ErrorKind::ObjectNotFound
  • std::io::ErrorKind::PermissionDenied => opendal::ErrorKind::ObjectPermissionDenied

And since v0.21, we will return errors ObjectIsADirectory and ObjectNotADirectory instead of anyhow::Error.

Accessor API

In v0.21, we refactor the whole Accessor's API:

- async fn write(&self, path: &str, args: OpWrite, r: BytesReader) -> Result<u64>
+ async fn write(&self, path: &str, args: OpWrite, r: BytesReader) -> Result<RpWrite>

Since v0.21, we will return a reply struct for different operations called RpWrite instead of an exact type. We can split OpenDAL's public API and raw API with this change.

ObjectList and ObjectPage

Since v0.21, Accessor will return ObjectPager for List:

- async fn list(&self, path: &str, args: OpList) -> Result<ObjectStreamer>
+ async fn list(&self, path: &str, args: OpList) -> Result<(RpList, ObjectPager)>

And Object will return an ObjectLister which is built upon ObjectPage:

pub async fn list(&self) -> Result<ObjectLister> { ... }

ObjectLister can be used as an object stream as before. It also provides the function next_page to get the underlying pages directly:

impl ObjectLister {
    pub async fn next_page(&mut self) -> Result<Option<Vec<Object>>>;
}

Code Layout

Since v0.21, we have categorized all APIs into public and raw.

Public APIs are exposed under opendal::Xxx; they are user-face APIs that are easy to use and understand.

Raw APIs are exposed under opendal::raw::Xxx; they are implementation details for underlying services and layers.

Please replace all usage of opendal::io_util::* and opendal::http_util::* to opendal::raw::* instead.

With this change, new users of OpenDAL maybe be it easier to get started.

Summary

Sorry for introducing too much breaking change in a single version. This version can be a solid version for preparing OpenDAL v1.0.

What's Changed

  • docs: Add greptimedb and mars into projects by @Xuanwo in #975
  • RFC-0977: Refactor Error by @Xuanwo in #977
  • refactor: Use seperate Error instead of std::io::Error to avoid confusing by @Xuanwo in #976
  • fix: RetryAccessor is too verbose by @Xuanwo in #980
  • refactor: Return ReplyCreate for create operation by @Xuanwo in #981
  • refactor: Add ReplyRead for read operation by @Xuanwo in #982
  • refactor: Add RpWrite for write operation by @Xuanwo in #983
  • refactor: Add RpStat for stat operation by @Xuanwo in #984
  • refactor: Add RpDelete for delete operations by @Xuanwo in #985
  • refactor: Add RpPresign for presign operation by @Xuanwo in #986
  • refactor: Add reply for all multipart operations by @Xuanwo in #988
  • refactor: Add Reply for all blocking operations by @Xuanwo in #989
  • feat: impl atomic write for fs service by @killme2008 in #991
  • refactor: Avoid accessor in object entry by @Xuanwo in #992
  • refactor: Move accessor into raw apis by @Xuanwo in #994
  • refactor: Move io to raw by @Xuanwo in #996
  • feat: Add OperatorMetadata to avoid expose AccessorMetadata by @Xuanwo in #997
  • refactor: Move {path,wrapper,http_util,io_util} into raw modules by @Xuanwo in #998
  • refactor: Move ObjectEntry and ObjectPage into raw by @Xuanwo in #999
  • refactor: Accept Operator intead of Arc by @Xuanwo in #1001
  • feat: Improve display for error by @Xuanwo in #1002
  • Bump to version 0.21 by @Xuanwo in #1003

Full Changelog: v0.20.1...v0.21.0