Releases: apache/opendal
v0.17.1
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
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
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. Enablingservices-http
is a no-op now.- http service is read only services and can't be used to
list
orwrite
.
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
- Bump to version 0.15 by @Xuanwo in #630
- feat: Implement tests for read-only services by @Xuanwo in #634
- refactor: Migrate all behavior tests to capability based by @Xuanwo in #635
- feat(services/ftp): Implemented multi connection by @ArberSephirotheca in #637
- refactor: Remove list support from http service by @Xuanwo in #639
- RFC-0623: Redis Service by @ClSlaid in #623
- refactor: Replace isahc with reqwest and ureq by @Xuanwo in #642
- deps: Bump reqsign to v0.4 by @Xuanwo in #643
- Finalize FTP read operation by @ArberSephirotheca in #644
- feat: Implement service for IPFS HTTP Gateway by @Xuanwo in #645
- docs: Add docs for ipfs by @Xuanwo in #649
- docs: Fix typo by @Xuanwo in #650
- feat: Add ImmutableIndexLayer by @Xuanwo in #651
- feat: derive Hash for Scheme by @damooo in #653
- feat(services/ftp): Setup integration tests by @Xuanwo in #648
- docs: Add docs for ftp services by @Xuanwo in #655
- chore(deps): Update criterion requirement from 0.3 to 0.4 by @dependabot in #656
- chore(deps): Update quick-xml requirement from 0.24 to 0.25 by @dependabot in #657
- deps: Remove not used features by @Xuanwo in #658
- Bump to version 0.16 by @Xuanwo in #659
New Contributors
Full Changelog: v0.15.0...v0.16.0
v0.15.0
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
andDirStreamer
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
- @ArberSephirotheca made their first contribution in #581
Full Changelog: v0.14.1...v0.15.0
v0.14.1
What's Changed
- docs: Add obs in OpenDAL lib docs by @Xuanwo in #585
- feat: Add IPFS backend by @xprazak2 in #481
- refactor: IPFS service cleanup by @Xuanwo in #590
- chore(deps): Update quick-xml requirement from 0.23 to 0.24 by @dependabot in #588
- fix(services/s3): If input range is
0..
, don't insert range header by @Xuanwo in #592 - Bump to version 0.14.1 by @Xuanwo in #593
Full Changelog: v0.14.0...v0.14.1
v0.14.0
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 acceptimpl Into<Vec<u8>>
instead ofAsRef<&[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
- refactor(ops): Promote ops as a parent mod by @Xuanwo in #553
- RFC-0554: Write Refactor by @Xuanwo in #554
- feat: Implement huaweicloud obs service other op support by @eastfisher in #557
- refactor: Implement RFC-0554 Write Refactor by @Xuanwo in #556
- refactor: Remove all unused qualifications by @eastfisher in #560
- feat: Add new operations in Accessor by @Xuanwo in #564
- feat: Implement obs create and write by @eastfisher in #565
- refactor: Fix typo in azblob backend by @eastfisher in #569
- RFC-0561: List metadata reuse by @ClSlaid in #561
- feat(services/s3): Implement Multipart support by @Xuanwo in #571
- feat: Implement MultipartObject public API by @Xuanwo in #574
- feat: Implement integration tests for multipart by @Xuanwo in #575
- feat: Implement presign for write multipart by @Xuanwo in #576
- test: Add assert of public struct size by @Xuanwo in #578
- feat: List metadata reuse by @ClSlaid in #577
- feat: Implement integration test for obs by @Xuanwo in #572
- refactor: change ObjectError's op from &'static str to Operation by @eastfisher in #580
- docs: Add docs for obs service by @eastfisher in #579
- refactor: Remove deprecated APIs by @Xuanwo in #582
- Bump to version 0.14 by @Xuanwo in #583
Full Changelog: v0.13.1...v0.14.0
v0.13.1
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
- @eastfisher made their first contribution in #540
Full Changelog: v0.13.0...v0.13.1
v0.13.0
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
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 byBuilder::build()
) - All services
Backend::build()
(replace byBuilder::default()
)
The following APIs have been removed:
- public struct
Metadata
(deprecated in v0.8, replaced byObjectMetadata
)
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
What's Changed
- feat: try to support epoll by @PsiACE in #478
- chore: Fix oay and oli Cargo.lock not updated by @Xuanwo in #480
- docs: Add downloads in README by @Xuanwo in #485
- docs: Update slogan for OpenDAL by @Xuanwo in #486
- chore(deps): Bump clap from 3.2.15 to 3.2.16 in /oli by @dependabot in #488
- chore(deps): Bump clap from 3.2.15 to 3.2.16 in /oay by @dependabot in #487
- feat: Support using rustls for TLS by @sunng87 in #491
- fix: Uri encode continuation-token before signing by @Xuanwo in #494
- deps: Lower the requirement of deps by @Xuanwo in #495
- Revert "feat: try to support epoll" by @Xuanwo in #496
- Bump to version 0.11.4 by @Xuanwo in #497
New Contributors
Full Changelog: v0.11.3...v0.11.4