diff --git a/CHANGELOG.md b/CHANGELOG.md index 8786afbb39e..83458a8a120 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/) and this project adheres to [Semantic Versioning](https://semver.org/). +## [v0.27.0] - 2023-02-11 + +### Added + +- feat: Add Retryable Pager Support (#1304) +- feat: Add Sled support (#1305) +- feat: Add Object::scan() support (#1314) +- feat: Add object page size support (#1318) + +### Changed + +- refactor: Hide backon from our public API (#1302) +- refactor: Don't expose ops structs to users directly (#1303) +- refactor: Move and rename ObjectPager and ObjectEntry for more clear semantics (#1308) +- refactor: Implement strong typed pager (#1311) +- deps: remove unused deps (#1321) +- refactor: Extract scan as a new API and remove ListStyle (#1324) + +### Docs + +- docs: Add risingwave in projects (#1322) + +### Fixed + +- ci: Fix dev container Dockerfile (#1298) +- fix: Rocksdb's scheme not output correctly (#1300) +- chore: fix name typo in oss backend (#1316) +- chore: Add typos-cli and fix typos (#1320) + ## [v0.26.2] - 2023-02-07 ### Added @@ -1311,6 +1340,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/). Hello, OpenDAL! +[v0.27.0]: https://github.com/datafuselabs/opendal/compare/v0.26.2...v0.27.0 [v0.26.2]: https://github.com/datafuselabs/opendal/compare/v0.26.1...v0.26.2 [v0.26.1]: https://github.com/datafuselabs/opendal/compare/v0.26.0...v0.26.1 [v0.26.0]: https://github.com/datafuselabs/opendal/compare/v0.25.2...v0.26.0 diff --git a/Cargo.toml b/Cargo.toml index ba1aef13c56..7560477e3b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ keywords = ["storage", "fs", "s3", "azblob", "gcs"] license = "Apache-2.0" name = "opendal" repository = "https://github.com/datafuselabs/opendal" -version = "0.26.2" +version = "0.27.0" # MSRV of OpenDAL. Please update this field while bump. rust-version = "1.60" diff --git a/binaries/oay/Cargo.lock b/binaries/oay/Cargo.lock index b11f77657ba..744b5e0b41d 100644 --- a/binaries/oay/Cargo.lock +++ b/binaries/oay/Cargo.lock @@ -1105,7 +1105,7 @@ checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "opendal" -version = "0.26.2" +version = "0.27.0" dependencies = [ "anyhow", "async-compat", diff --git a/binaries/oay/Cargo.toml b/binaries/oay/Cargo.toml index d787fad2ace..0f689093a8e 100644 --- a/binaries/oay/Cargo.toml +++ b/binaries/oay/Cargo.toml @@ -17,7 +17,7 @@ clap = { version = "4", features = ["cargo"] } env_logger = "0.10" futures = "0.3" log = "0.4" -opendal = { version = "0.26", path = "../../" } +opendal = { version = "0.27", path = "../../" } percent-encoding = "2" sluice = "0.5" tokio = { version = "1.20", features = ["rt-multi-thread", "macros"] } diff --git a/binaries/oli/Cargo.lock b/binaries/oli/Cargo.lock index 818404116cb..50cb9804dba 100644 --- a/binaries/oli/Cargo.lock +++ b/binaries/oli/Cargo.lock @@ -812,7 +812,7 @@ checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "opendal" -version = "0.26.2" +version = "0.27.0" dependencies = [ "anyhow", "async-compat", diff --git a/binaries/oli/Cargo.toml b/binaries/oli/Cargo.toml index f12284ed097..3d4387d2cde 100644 --- a/binaries/oli/Cargo.toml +++ b/binaries/oli/Cargo.toml @@ -15,7 +15,7 @@ anyhow = "1" clap = { version = "4", features = ["cargo", "string"] } env_logger = "0.10" log = "0.4" -opendal = { version = "0.26", path = "../../" } +opendal = { version = "0.27", path = "../../" } tokio = { version = "1.20", features = ["fs", "macros", "rt-multi-thread"] } [dev-dependencies] diff --git a/bindings/nodejs/Cargo.toml b/bindings/nodejs/Cargo.toml index 3e892610716..9b6a52abd90 100644 --- a/bindings/nodejs/Cargo.toml +++ b/bindings/nodejs/Cargo.toml @@ -9,7 +9,7 @@ crate-type = ["cdylib"] [dependencies] napi = "2" napi-derive = "2" -opendal = { version = "0.26", path = "../../" } +opendal = { version = "0.27", path = "../../" } [build-dependencies] napi-build = "2" diff --git a/bindings/object_store/Cargo.toml b/bindings/object_store/Cargo.toml index 460f431c9de..811f25a3e1b 100644 --- a/bindings/object_store/Cargo.toml +++ b/bindings/object_store/Cargo.toml @@ -14,7 +14,7 @@ bytes = "1" chrono = "0.4.23" futures = "0.3" object_store = "0.5" -opendal = { version = "0.26", path = "../../" } +opendal = { version = "0.27", path = "../../" } tokio = "1" [dev-dependencies] diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml index 1b18440e9c8..92652f28c54 100644 --- a/bindings/python/Cargo.toml +++ b/bindings/python/Cargo.toml @@ -8,5 +8,5 @@ crate-type = ["cdylib"] name = "opendal" [dependencies] -opendal = { version = "0.26", path = "../../" } +opendal = { version = "0.27", path = "../../" } pyo3 = { version = "0.18", features = ["extension-module"] } diff --git a/src/docs/upgrade.md b/src/docs/upgrade.md index e55afeca0fc..26be79f4d60 100644 --- a/src/docs/upgrade.md +++ b/src/docs/upgrade.md @@ -1,3 +1,64 @@ +# Upgrade to v0.27 + +In v0.27, we refactored our `list` related logic and added `scan` support. So make `Pager` and `BlockingPager` associated types in `Accessor` too! + +```diff +pub trait Accessor: Send + Sync + Debug + Unpin + 'static { + type Reader: output::Read; + type BlockingReader: output::BlockingRead; ++ type Pager: output::Page; ++ type BlockingPager: output::BlockingPage; +} +``` + +## User defined layers + +Due to this change, all layers implementation should be changed. If there is not changed over pager, they can by changed like the following: + +```diff +impl LayeredAccessor for MyAccessor { + type Inner = A; + type Reader = MyReader; + type BlockingReader = MyReader; ++ type Pager = A::Pager; ++ type BlockingPager = A::BlockingPager; + ++ async fn list(&self, path: &str, args: OpList) -> Result<(RpList, Self::Pager)> { ++ self.inner.list(path, args).await ++ } + ++ async fn scan(&self, path: &str, args: OpScan) -> Result<(RpScan, Self::Pager)> { ++ self.inner.scan(path, args).await ++ } + ++ fn blocking_list(&self, path: &str, args: OpList) -> Result<(RpList, Self::BlockingPager)> { ++ self.inner.blocking_list(path, args) ++ } + ++ fn blocking_scan(&self, path: &str, args: OpScan) -> Result<(RpScan, Self::BlockingPager)> { ++ self.inner.blocking_scan(path, args) ++ } +} +``` + +## Usage of ops + +To reduce the understanding overhead, we move all `OpXxx` into `opendal::ops` now. User may need to change: + +```diff +- use opendal::OpWrite; ++ use opendal::ops::OpWrite; +``` + +## Usage of RetryLayer + +`backon` is the implementation detail of our `RetryLayer`, so we hide it from our public API. Users of `RetryLayer` need to change the code like: + +```diff +- RetryLayer::new(backon::ExponentialBackoff::default()) ++ RetryLayer::new() +``` + # Upgrade to v0.26 In v0.26 we have replaced all internal dynamic dispatch usage with static dispatch. With this change, we can ensure that all operations performed inside OpenDAL are zero cost.