Skip to content

Releases: apache/opendal

v0.17.1

19 Sep 01:43
v0.17.1
ae62297
Compare
Choose a tag to compare

What's Changed

  • feat: redis service implement by @ClSlaid in #679
  • feat: Implement AsyncBufRead for IntoReader by @Xuanwo in #690
  • refactor: avoid unnecessary parent creating in Redis service by @ClSlaid in #692
  • feat: expose security token of s3 by @ClSlaid in #693
  • fix: Handle write data in async way for IPMFS by @xprazak2 in #694
  • refactor: Refactor HTTP Client to split sending and incoming logic by @Xuanwo in #695
  • ci: Try make ipfs test stable by @Xuanwo in #696
  • Bump to version 0.17.1 by @Xuanwo in #698

Full Changelog: v0.17.0...v0.17.1

v0.17.0

15 Sep 04:44
v0.17.0
36ebc48
Compare
Choose a tag to compare

Upgrade to v0.17

OpenDAL v0.17 refactor the Accessor to make space for future features.

We move path String out of the OpXxx to function args so that we don't need to clone twice.

- async fn read(&self, args: OpRead) -> Result<BytesReader>
+ async fn read(&self, path: &str, args: OpRead) -> Result<BytesReader>

For more information about this change, please refer to RFC-0661: Path In Accessor.

And since OpenDAL v0.17, we will use rustls as default tls engine for our underlying http client. Since this release, we will not depend on openssl anymore.


What's Changed

  • RFC: Path In Accessor by @Xuanwo in #661
  • feat: Implement RFC-0661: Path In Accessor by @Xuanwo in #664
  • docs: Add how to implement service docs by @Xuanwo in #665
  • fix: Immutable Index Layer could return duplicated pathes by @Xuanwo in #671
  • feat: Hide http client internal details from users by @Xuanwo in #672
  • feat: make rustls the default tls implementation by @sunng87 in #674
  • fix: Remove not needed type parameter for immutable_layer by @Xuanwo in #677
  • refactor: update redis support rfc by @ClSlaid in #676
  • feat: Implement benches for layers by @Xuanwo in #681
  • fix: Don't trace buf field in poll_read by @Xuanwo in #682
  • docs: update metrics documentation by @ClSlaid in #684
  • fix: List non-exist dir should return empty by @Xuanwo in #683
  • fix: Add path validation for fs backend by @Xuanwo in #685
  • Bump to version 0.17 by @Xuanwo in #686

Full Changelog: v0.16.0...v0.17.0

v0.16.0

12 Sep 06:20
v0.16.0
be95130
Compare
Choose a tag to compare

Upgrade to v0.16

OpenDAL v0.16 refactor the internal implementation of http service. Since v0.16, http service can be used directly without enabling services-http feature. Accompany by these changes, http service has the following breaking changes:

  • services-http feature has been deprecated. Enabling services-http is a no-op now.
  • http service is read only services and can't be used to list or write.

OpenDAL introduces a new layer ImmutableIndexLayer that can add list capability for services:

use opendal::layers::ImmutableIndexLayer;
use opendal::Operator;
use opendal::Scheme;

async fn main() {
    let mut iil = ImmutableIndexLayer::default();

    for i in ["file", "dir/", "dir/file", "dir_without_prefix/file"] {
        iil.insert(i.to_string())
    }

    let op = Operator::from_env(Scheme::Http)?.layer(iil);
}

For more information about this change, please refer to RFC-0627: Split Capabilities.


What's Changed

New Contributors

Full Changelog: v0.15.0...v0.16.0

v0.15.0

05 Sep 03:59
v0.15.0
65c2564
Compare
Choose a tag to compare

What's Changed

  • ci: Add alias domains support by @Xuanwo in #600
  • RFC-0599: Blocking API by @Xuanwo in #599
  • feat: Add blocking API in Accessor by @Xuanwo in #604
  • feat: Implement blocking API for fs by @Xuanwo in #606
  • feat: improve observability of BytesReader and DirStreamer by @ClSlaid in #603
  • feat: Add behavior tests for blocking operations by @Xuanwo in #607
  • feat: Implement blocking operations for layers by @Xuanwo in #608
  • deps: Bump versions of oay and oli deps by @Xuanwo in #617
  • feat: Add integration tests for ipfs by @Xuanwo in #610
  • docs: Add detailed docs for ipfs by @Xuanwo in #618
  • refactor: Extrace normalize_root functions by @Xuanwo in #619
  • refactor: Extrace build_abs_path and build_rooted_abs_path by @Xuanwo in #620
  • refactor: Extract build_rel_path by @Xuanwo in #621
  • feat: implemented ftp backend by @ArberSephirotheca in #581
  • RFC-0627: Split Capabilities by @Xuanwo in #627
  • feat: Rename ipfs to ipmfs to better reflect its naming by @Xuanwo in #629

New Contributors

Full Changelog: v0.14.1...v0.15.0

v0.14.1

30 Aug 04:58
v0.14.1
6f8f4ae
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.14.0...v0.14.1

v0.14.0

28 Aug 04:40
v0.14.0
5e49ac2
Compare
Choose a tag to compare

Upgrade to v0.14

OpenDAL v0.14 removed all deprecated APIs in previous versions, including:

  • Operator::with_backoff in v0.13
  • All services Builder::finish() in v0.12
  • All services Backend::build() in v0.12

Please visit related version's upgrade guide for migration.

And in OpenDAL v0.14, we introduce a break change for write operations.

pub trait Accessor {
    - async fn write(&self, args: &OpWrite) -> Result<BytesWriter> {}
    + async fn write(&self, args: &OpWrite, r: BytesReader) -> Result<u64> {}
}

The following APIs have affected by this change:

  • Object::write now accept impl Into<Vec<u8>> instead of AsRef<&[u8]>
  • Object::writer has been removed.
  • Object::write_from has been added to support write from a reader.
  • All layers should be refactored to adapt new Accessor trait.

For more information about this change, please refer to RFC-0554: Write Refactor.


What's Changed

Full Changelog: v0.13.1...v0.14.0

v0.13.1

22 Aug 00:48
v0.13.1
7dad75e
Compare
Choose a tag to compare

What's Changed

  • chore: Crates.io doesn't allow keywords more than five by @Xuanwo in #539
  • feat: Add walk for BatchOperator by @Xuanwo in #543
  • feat: Mark Scheme non_exhaustive and extendable by @Xuanwo in #544
  • feat: Try to limit the max_connections for http client by @Xuanwo in #545
  • feat: Implement huaweicloud obs service read support by @eastfisher in #540
  • docs: Fix gcs is missing from index by @Xuanwo in #546
  • docs: Fix typo by @Xuanwo in #550
  • Bump to version 0.13.1 by @Xuanwo in #551

New Contributors

Full Changelog: v0.13.0...v0.13.1

v0.13.0

17 Aug 07:06
v0.13.0
1c2f6ef
Compare
Choose a tag to compare

Upgrade to v0.13

OpenDAL deprecate Operator::with_backoff since v0.13.

Please use RetryLayer instead:

use anyhow::Result;
use backon::ExponentialBackoff;
use opendal::layers::RetryLayer;
use opendal::Operator;
use opendal::Scheme;

let _ = Operator::from_env(Scheme::Fs)
    .expect("must init")
    .layer(RetryLayer::new(ExponentialBackoff::default()));

What's Changed

  • chore: Fix cargo publish by @Xuanwo in #520
  • feat: Refactor metrics and hide under feature layers-metrics by @Xuanwo in #521
  • refactor: Rewrite retry layer support by @Xuanwo in #522
  • feat(layer): Add TracingLayer support by @Xuanwo in #523
  • feature: Google Cloud Storage support skeleton by @ClSlaid in #513
  • styles: Make xuanwo happy by @Xuanwo in #524
  • feat: Add LoggingLayer to replace service internal logs by @Xuanwo in #526
  • fix: Make ProtocolViolation a retryable error by @Xuanwo in #528
  • feat: Implement integration tests for gcs by @Xuanwo in #532
  • docs: Add docs for new layers by @Xuanwo in #534
  • docs: Add docs for gcs backend by @ClSlaid in #535
  • Bump to version 0.13 by @Xuanwo in #537

Full Changelog: v0.12.0...v0.13.0

v0.12.0

12 Aug 16:05
v0.12.0
8f9a387
Compare
Choose a tag to compare

Upgrade to v0.12

OpenDAL introduces breaking changes for services initiation.

Since v0.12, Operator::new will accept impl Accessor + 'static instead of Arc<dyn Accessor>:

impl Operator {
    pub fn new(accessor: impl Accessor + 'static) -> Self { .. }
}

Every service's Builder now have a build() API which can be run without async:

let mut builder = fs::Builder::default();
let op: Operator = Operator::new(builder.build()?);

Along with these changes, Operator::from_iter and Operator::from_env now is a blocking API too.

For more information about this change, please refer to RFC-0501: New Builder.

The following APIs have been deprecated:

  • All services Builder::finish() (replaced by Builder::build())
  • All services Backend::build() (replace by Builder::default())

The following APIs have been removed:

  • public struct Metadata (deprecated in v0.8, replaced by ObjectMetadata)

Visit Upgrade Notes for more information.


What's Changed

  • chore(deps): Bump anyhow from 1.0.58 to 1.0.60 in /oay by @dependabot in #499
  • chore(deps): Bump anyhow from 1.0.58 to 1.0.60 in /oli by @dependabot in #500
  • RFC-0501: New Builder by @Xuanwo in #501
  • refactor: Remove deprecated struct Metadata by @Xuanwo in #503
  • feat: Use isahc to replace hyper by @Xuanwo in #471
  • feat: Implement RFC-0501 New Builder by @Xuanwo in #510
  • refactor: make parse http error code public by @ClSlaid in #511
  • refactor: Extrace new http error APIs by @Xuanwo in #515
  • refactor: Simplify the error response parse logic by @Xuanwo in #516
  • Bump to version 0.12 by @Xuanwo in #518

New Contributors

Full Changelog: v0.11.4...v0.12.0

v0.11.4

02 Aug 07:52
v0.11.4
df822e0
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.11.3...v0.11.4