Releases: apache/opendal
v0.40.0
Checkout our OwO #1 to know more about this release!
Upgrade Note
Public API
RFC-2578 Merge Append Into Write
RFC-2578 merges append
into write
and removes append
API.
- For writing a file at once, please use
op.write()
for convenience. - For appending a file, please use
op.write_with().append(true)
instead ofop.append()
.
The same rule applies to writer()
and writer_with()
.
RFC-2774 Lister API
RFC-2774 proposes a new lister
API to replace current list
and scan
. And we add a new API list
to return entries directly.
- For listing a directory at once, please use
list()
for convenience. - For listing a directory recursively, please use
list_with().delimiter("")
orlister_with().delimiter("")
instead ofscan()
. - For listing in streaming, please use
lister()
orlister_with()
instead.
RFC-2779 List With Metakey
RFC-2779 proposes a new op.list_with().metakey()
API to allow list with metakey and removes op.metadata(&entry)
API.
Please use op.list_with().metakey()
instead of op.metadata(&entry)
, for example:
// Before
let entries: Vec<Entry> = op.list("dir/").await?;
for entry in entris {
let meta = op.metadata(&entry, Metakey::ContentLength | Metakey::ContentType).await?;
println!("{} {}", entry.name(), entry.metadata().content_length());
}
// After
let entries: Vec<Entry> = op
.list_with("dir/")
.metakey(Metakey::ContentLength | Metakey::ContentType).await?;
for entry in entris {
println!("{} {}", entry.name(), entry.metadata().content_length());
}
RFC-2852: Native Capability
RFC-2852 proposes new native_capability
and full_capability
API to allow users to check if the underlying service supports a capability natively.
native_capability
returnstrue
if the capability is supported natively.full_capability
returnstrue
if the capability is supported, maybe via a layer.
Most of time, you can use full_capability
to replace capability
call. But if to check if the capability is supported natively for better performance design, please use native_capability
instead.
Buffered Writer
OpenDAL v0.40 added buffered writer support!
Users don't need to specify the content_length()
for writer anymore!
- let mut w = op.writer_with("path/to/file").content_length(1024).await?;
+ let mut w = op.writer_with("path/to/file").await?;
Users can specify the buffer()
to control the size we call underlying storage:
let mut w = op.writer_with("path/to/file").buffer(8 * 1024 * 1024).await?;
If buffer is not specified, we will call underlying storage everytime we call write
. Otherwise, we will make sure to call underlying storage when buffer is full or close
is called.
Raw API
RFC-3017 Remove Write Copy From
RFC-3017 removes copy_from
API from the oio::Write
trait. Users who implements services and layers by hand should remove this API.
What's Changed
Added
- feat(service/etcd): support list by @G-XD in #2755
- feat: setup the integrate with PHP binding by @godruoyi in #2726
- feat(oay): Add
read_dir
by @Young-Flash in #2736 - feat(obs): support loading credential from env by @everpcpc in #2767
- feat: add async backtrace layer by @dqhl76 in #2765
- feat: Add OCaml Binding by @Ranxy in #2757
- feat(bindings/haskell): support logging layer by @silver-ymz in #2705
- feat: Add FoundationDB Support for OpenDAL by @ArmandoZ in #2751
- feat(oay): add write for oay webdav by @Young-Flash in #2769
- feat: Implement RFC-2774 Lister API by @Xuanwo in #2787
- feat(bindings/haskell): enhance original
OpMonad
to support custom IO monad by @silver-ymz in #2789 - feat: Add into_seekable_read_by_range support for blocking read by @Xuanwo in #2799
- feat(layers/blocking): add blocking layer by @yah01 in #2780
- feat: Add async list with metakey support by @Xuanwo in #2803
- feat(binding/php): Add basic io by @godruoyi in #2782
- feat: fuzz test support read from .env by different services by @dqhl76 in #2824
- feat(services/rocksdb): Add scan support by @JLerxky in #2827
- feat: Add postgresql support for OpenDAL by @Xuanwo in #2815
- feat: ci for php binding by @godruoyi in #2830
- feat: Add create_dir, remove, copy and rename API for oay-webdav by @Young-Flash in #2832
- feat(oli): oli stat should show path as specified by users by @sarutak in #2842
- feat(services/moka, services/mini-moka): Add scan support by @JLerxky in #2850
- feat(oay): impl some method for
WebdavMetaData
by @Young-Flash in #2857 - feat: Implement list with metakey for blocking by @Xuanwo in #2861
- feat(services/redis): add redis cluster support by @G-XD in #2858
- feat(services/dropbox): read support range by @suyanhanx in #2848
- feat(layers/logging): Allow users to control print backtrace or not by @Xuanwo in #2872
- feat: add native & full capability by @yah01 in #2874
- feat: Implement RFC-2758 Merge Append Into Write by @Xuanwo in #2880
- feat(binding/ocaml): Add support for operator reader and metadata by @Ranxy in #2881
- feat(core): replace field
_pin
with!Unpin
as argument by @morristai in #2886 - feat: Add retry for Writer::sink operation by @Xuanwo in #2896
- feat: remove operator range_read and range_reader API by @oowl in #2898
- feat(core): Add unit test for ChunkedCursor by @Xuanwo in #2907
- feat(types): remove blocking operation range_read and range_reader API by @oowl in #2912
- feat(types): add stat_with API for blocking operator by @oowl in #2915
- feat(services/gdrive): credential manage by @suyanhanx in #2914
- feat(core): Implement Exact Buf Writer by @Xuanwo in #2917
- feat: Add benchmark for buf write by @Xuanwo in #2922
- feat(core/raw): Add stream support for multipart by @Xuanwo in #2923
- feat(types): synchronous blocking operator and operator's API by @oowl in #2924
- feat(bindings/java): bundled services by @tisonkun in #2934
- feat(core/raw): support stream body for mixedpart by @silver-ymz in #2936
- feat(bindings/python): expose presign api by @silver-ymz in #2950
- feat(bindings/nodejs): Implement presign test by @suyanhanx in #2969
- docs(services/gdrive): update service doc by @suyanhanx in #2973
- feat(bindings/cpp): init cpp binding by @silver-ymz in #2980
- feat: gcs insert object support cache control by @fatelei in #2974
- feat(bindings/cpp): expose all api returned by value by @silver-ymz in #3001
- feat(services/gdrive): implement rename by @suyanhanx in #3007
- feat(bindings/cpp): expose reader by @silver-ymz in #3004
- feat(bindings/cpp): expose lister by @silver-ymz in #3011
- feat(core): Avoid copy if input is larger than buffer_size by @Xuanwo in #3016
- feat(service/gdrive): add gdrive list support by @Young-Flash in #3025
- feat(services/etcd): Enable etcd connection pool by @Xuanwo in #3041
- feat: Add buffer support for all services by @Xuanwo in #3045
- feat(bindings/ja...
v0.39.0
Upgrade to v0.39
Public API
Service S3 Role Arn Behavior
In PR #2687, OpenDAL changed the behavior when role_arn
has been specified.
OpenDAL used to override role_arn simply. But since this version, OpenDAL will make sure to use assume_role with specified role_arn
and external_id
(if supplied).
RetryLayer supports RetryInterceptor
In PR #2666, RetryLayer
supports RetryInterceptor
. To implement this change, RetryLayer
changed it's in-memory layout by adding a new generic parameter I
to RetryLayer<I>
.
Users who stores RetryLayer
in struct or enum will need to change the type if they don't want to use default behavior.
Raw API
In PR #2698, OpenDAL re-org the internal structure of opendal::raw::oio
and changed some APIs name.
What's Changed
Added
- feat: add a behaviour test for InvalidInput by @dqhl76 in #2644
- feat(services/persy): add a basic persy service impl by @PsiACE in #2648
- feat(services/vercel_artifacts): Impl
stat
by @suyanhanx in #2649 - feat(test): add fuzz test for range_reader by @dqhl76 in #2609
- feat(core/http_util): Remove sensitive header like Set-Cookie by @Xuanwo in #2664
- feat: Add RetryInterceptor support for RetryLayer by @Xuanwo in #2666
- feat: support kerberos for hdfs service by @zuston in #2668
- feat: support append for hdfs by @zuston in #2671
- feat(s3): Use us-east-1 while head bucket returns 403 without X-Amz-Bucket-Region by @john8628 in #2677
- feat(oay): Add webdav basic read impl by @Young-Flash in #2658
- feat(services/redis): enable TLS by @Stormshield-robinc in #2670
- feat(services/etcd): introduce new service backend etcd by @G-XD in #2672
- feat(service/obs):add multipart upload function support by @A-Stupid-Sun in #2685
- feat(services/s3): Add assume role support by @Xuanwo in #2687
- feat(services/tikv): introduce new service backend tikv by @oowl in #2565
- feat(service/cos): add multipart upload function support by @ArmandoZ in #2697
- feat(oio): Add MultipartUploadWrite to easier the work for Writer by @Xuanwo in #2699
- feat(test): add fuzz target for writer by @dqhl76 in #2706
- feat: cos multipart uploads write by @parkma99 in #2712
- feat(layers): support await_tree instrument by @oowl in #2623
- feat(tests): Extract fuzz test of #2717 by @Xuanwo in #2720
- feat: oss multipart uploads write by @parkma99 in #2723
- feat: add override_content_type by @G-XD in #2734
Changed
- refactor(services/redis): Polish features of redis by @Xuanwo in #2681
- refactor(services/s3): Check header first for region detect by @Xuanwo in #2691
- refactor(raw/oio): Reorganize to allow adding more features by @Xuanwo in #2698
- refactor: Polish fuzz build time by @Xuanwo in #2721
Fixed
- fix(services/cos): fix cos service comments by @A-Stupid-Sun in #2656
- fix(test): profile setting warning by @dqhl76 in #2657
- fix(bindings/C): fix the memory found in valgrind. by @Ji-Xinyou in #2673
- fix: owncloud test sometimes fail by @dqhl76 in #2684
- fix(services/obs): remove content-length check in backend by @suyanhanx in #2686
- fix: fix
HADOOP_CONF_DIR
setting in guidance document by @wcy-fdu in #2713 - fix: Seek before the start of file should be invalid by @Xuanwo in #2718
- fix(layer/minitrace): fix doctest by @andylokandy in #2728
Docs
- docs: add instructions to fix wrong vote mail and uploads by @ClSlaid in #2682
- doc(services/tikv): add tikv service backend to readme by @oowl in #2711
- docs(bindings/java): improve safety doc for get_current_env by @tisonkun in #2733
CI
- ci(services/webdav): Setup integration test for owncloud by @dqhl76 in #2659
- ci: Fix unexpected error in owncloud by @Xuanwo in #2663
- ci: upgrade hawkeye action by @tisonkun in #2665
- ci: Make owncloud happy by reduce the concurrency by @Xuanwo in #2667
- ci: Setup protoc in rust builder by @Xuanwo in #2674
- ci: Fix Cargo.lock not updated by @Xuanwo in #2680
- ci: Add services fuzz test for read/write/range_read by @dqhl76 in #2710
Chore
- chore: Update CODEOWNERS by @Xuanwo in #2676
- chore(bindings/python): upgrade pyo3 to 0.19 by @messense in #2694
- chore: upgrade quick-xml to 0.29 by @messense in #2696
- chore(download): update version 0.38.1 by @suyanhanx in #2714
- chore(service/minitrace): update to v0.5.0 by @andylokandy in #2725
New Contributors
- @zuston made their first contribution in #2668
- @john8628 made their first contribution in #2677
- @wildbartty made their first contribution in #2653
- @Stormshield-robinc made their first contribution in #2670
- @G-XD made their first contribution in #2672
- @ArmandoZ made their first contribution in #2697
Full Changelog: v0.38.1...v0.39.0
v0.38.1
What's Changed
Added
- feat(binding/lua): add rename and create_dir operator function by @oowl in #2564
- feat(services/azblob): support sink by @suyanhanx in #2574
- feat(services/gcs): support sink by @suyanhanx in #2576
- feat(services/oss): support sink by @suyanhanx in #2577
- feat(services/obs): support sink by @suyanhanx in #2578
- feat(services/cos): impl sink by @suyanhanx in #2587
- feat(service): Support stat for Dropbox by @Zheaoli in #2588
- feat(services/dropbox): impl create_dir and polish error handling by @suyanhanx in #2600
- feat(services/dropbox): Implement refresh token support by @Xuanwo in #2604
- feat(service/dropbox): impl batch delete by @suyanhanx in #2606
- feat(CI): set Kvrocks test for service redis by @suyanhanx in #2613
- feat(core): object versioning APIs by @suyanhanx in #2614
- feat(oay): actually read configuration from
oay.toml
by @messense in #2615 - feat(services/webdav): impl sink by @suyanhanx in #2622
- feat(services/fs): impl Sink for Fs by @Ji-Xinyou in #2626
- feat(core): impl
delete_with
on blocking operator by @suyanhanx in #2633 - feat(bindings/C): add support for list in C binding by @Ji-Xinyou in #2448
- feat(services/s3): Add detect_region support for S3Builder by @parkma99 in #2634
Changed
- refactor(core): Add ErrorKind InvalidInput to indicate users input error by @dqhl76 in #2637
- refactor(services/s3): Add more detect logic for detect_region by @Xuanwo in #2645
Fixed
- fix(doc): fix codeblock rendering by @xxchan in #2592
- fix(service/minitrace): should set local parent by @andylokandy in #2620
- fix(service/minitrace): update doc by @andylokandy in #2621
Docs
- doc(bindings/haskell): add module document by @silver-ymz in #2566
- docs: Update license related comments by @Prashanth-Chandra in #2573
- docs: add hdfs namenode High Availability related troubleshoot by @wcy-fdu in #2601
- docs: polish release doc by @PsiACE in #2608
- docs(blog): add Apache OpenDAL(Incubating): Access Data Freely by @PsiACE in #2607
- docs(RFC): Object Versioning by @suyanhanx in #2602
CI
- ci: Disable bindings/java deploy for now by @tisonkun in #2560
- ci: Disable the failed stage-release job instead by @tisonkun in #2561
- ci: add haddock generator for haskell binding by @silver-ymz in #2569
- ci(binding/lua): add luarocks package manager support by @oowl in #2558
- build(deps): bump predicates from 2.1.5 to 3.0.1 by @dependabot in #2583
- build(deps): bump tower-http from 0.4.0 to 0.4.1 by @dependabot in #2582
- build(deps): bump chrono from 0.4.24 to 0.4.26 by @dependabot in #2581
- build(deps): bump redis from 0.22.3 to 0.23.0 by @dependabot in #2580
- build(deps): bump cbindgen from 0.24.3 to 0.24.5 by @dependabot in #2579
- ci: upgrade hawkeye to v3 by @tisonkun in #2585
- ci(services/webdav): Setup integration test for nextcloud by @Xuanwo in #2631
Chore
- chore: add haskell binding link to website by @silver-ymz in #2571
- chore: fix cargo warning for resolver by @xxchan in #2590
- chore: bump log to 0.4.19 by @xxchan in #2591
- chore(deps): update deps to latest version by @suyanhanx in #2596
- chore: Add release 0.38.0 to download by @PsiACE in #2597
- chore(service/minitrace): automatically generate span name by @andylokandy in #2618
New Contributors
- @Prashanth-Chandra made their first contribution in #2573
- @andylokandy made their first contribution in #2618
- @parkma99 made their first contribution in #2634
Full Changelog: v0.38.0...v0.38.1
v0.38.0
Upgrade to v0.38
There are no public API changes.
Raw API
OpenDAL add the Write::sink
API to enable streaming writing. This is a breaking change for users who depend on the raw API.
For a quick fix, users who have implemented opendal::raw::oio::Write
can return an Unsupported
error for Write::sink()
.
More detailes could be found at RFC: Writer sink
API.
What's Changed
Added
- feat(raw/http_util): Implement mixed multipart parser by @Xuanwo in #2430
- feat(services/gcs): Add batch delete support by @wcy-fdu in #2142
- feat(core): Add Write::sink API by @Xuanwo in #2440
- feat(services/s3): Allow retry for unexpected 499 error by @Xuanwo in #2453
- feat(layer): add throttle layer by @morristai in #2444
- feat(bindings/haskell): init haskell binding by @silver-ymz in #2463
- feat(core): add capability check by @unixzii in #2461
- feat(bindings/haskell): add CONTRIBUTING.md by @silver-ymz in #2466
- feat(bindings/haskell): add CI test for haskell binding by @silver-ymz in #2468
- feat(binding/lua): introduce opendal lua binding by @oowl in #2469
- feat(bindings/swift): add Swift binding by @unixzii in #2470
- feat(bindings/haskell): support
is_exist
create_dir
copy
rename
delete
by @silver-ymz in #2475 - feat(bindings/haskell): add
Monad
wrapper by @silver-ymz in #2482 - feat(bindings/dotnet): basic structure by @tisonkun in #2485
- feat(services/dropbox): Support create/read/delete for Dropbox by @Zheaoli in #2264
- feat(bindings/java): support load system lib by @tisonkun in #2502
- feat(blocking operator): add remove_all api by @infdahai in #2449
- feat(core): adopt WebHDFS LISTSTATUS_BATCH for better performance by @morristai in #2499
- feat(bindings/haskell): support stat by @silver-ymz in #2504
- feat(adapters-kv): add rename and copy support to kv adapters by @oowl in #2513
- feat: Implement sink for services s3 by @Xuanwo in #2508
- feat(adapters-kv): add rename and copy support to non typed kv adapters by @oowl in #2515
- feat: Implement test harness via libtest-mimic instead by @Xuanwo in #2517
- feat(service/sled): introduce tree support by @oowl in #2516
- feat(bindings/haskell): support list and scan by @silver-ymz in #2527
- feat(services/redb): support redb service by @oowl in #2526
- feat(core): implement service for Mini Moka by @morristai in #2537
- feat(core): add Mini Moka GitHub Action workflow job by @morristai in #2539
- feat(services): add cacache backend by @PsiACE in #2548
- feat: Implement Writer::copy so user can copy from AsyncRead by @Xuanwo in #2552
Changed
- refactor(bindings/C): refactor c bindings to call all APIs using pointer by @Ji-Xinyou in #2489
Fixed
- fix(services/azblob): Fix azblob batch max operations by @A-Stupid-Sun in #2434
- fix(services/sftp): change default root config to remote server setting by @silver-ymz in #2431
- fix: Enable
std
feature for futures to allowfutures::AsyncRead
by @Xuanwo in #2450 - fix(services/gcs): GCS should support create dir by @Xuanwo in #2467
- fix(bindings/C): use copy_from_slice instead of from_static in opendal_bytes by @Ji-Xinyou in #2473
- fix(bindings/swift): reorg the package to correct its name by @unixzii in #2479
- fix: Fix the build for zig binding by @Xuanwo in #2493
- fix(service/webhdfs): fix webhdfs config builder for disable_list_batch by @morristai in #2509
- fix(core/types): add missing
vercel artifacts
forFromStr
by @cijiugechu in #2519 - fix(types/operator): fix operation limit error default size by @oowl in #2536
Docs
- docs: Replace
create
withnew
by @NiwakaDev in #2427 - docs(services/redis): fix redis via config example by @A-Stupid-Sun in #2443
- docs: add rust usage example by @Young-Flash in #2447
- docs: Polish rust examples by @Xuanwo in #2456
- docs: polish docs and fix typos by @suyanhanx in #2458
- docs: fix a typo on the landing page by @unixzii in #2460
- docs(examples/rust): Add 01-init-operator by @Xuanwo in #2464
- docs: update readme.md to match the output by @rrain7 in #2486
- docs: Update components for Libraries and Services by @Xuanwo in #2487
- docs: Add OctoBase into our users list by @Xuanwo in #2506
- docs: Fix scan not checked for sled services by @Xuanwo in #2507
- doc(binding/lua): Improve readme doc for contribute and usage by @oowl in #2511
- doc(services/redb): add doc for redb service backend by @oowl in #2538
- doc(bindings/swift): add CONTRIBUTING.md by @unixzii in #2540
- docs: Add new rust example 02-async-io by @Xuanwo in #2541
- docs: Fix link for CONTRIBUTING.md by @HuSharp in #2544
- doc: polish release doc by @suyanhanx in #2531
- docs: Move verify to upper folder by @Xuanwo in #2546
- doc(binding/lua): add ldoc generactor for lua binding by @oowl in #2549
- docs: Add new architectural image for OpenDAL by @Xuanwo in #2553
- docs: Polish README for core and bindings by @Xuanwo in #2554
CI
- ci: Fix append test should use copy_buf to avoid call times by @Xuanwo in #2436
- build(bindings/ruby): fix compile rb-sys on Apple M1 by @tisonkun in #2451
- ci: Use summary for zig test to fix build by @Xuanwo in #2480
- ci(workflow): add lua binding test workflow by @oowl in #2478
- build(deps): bump actions/setup-python from 3 to 4 by @dependabot in #2481
- ci(bindings/swift): add CI for Swift binding by @unixzii in #2492
- ci: Try to make webhdfs tests more stable by @Xuanwo in #2503
- ci(bindings/java): auto release snapshot by @tisonkun in #2521
- ci: Disable the stage snapshot CI by @Xuanwo in #2528
- ci: fix opendal-java snapshot releases by @tisonkun in #2532
- ci: Fix typo in binding java CI by @Xuanwo in #2534
- ci(bindings/swift): optimize time consumption of CI pipeline by @unixzii in #2545
- ci: Fix PR label not updated while edited by @Xuanwo in #2547
- ci: automatic java binding release by @tisonkun in #2557
Chore
- chore: Add redis bench support by @Xuanwo in #2438
- chore(bindings/nodejs): update index.d.ts by @suyanhanx in #2459
- chore: Add re...
v0.37.0
Upgrade to v0.37
In v0.37.0, OpenDAL bump the version of reqsign
to v0.13.0.
There are no public API and raw API changes.
What's Changed
Added
- feat(services/webdav): support redirection when get 302/307 response during read operation by @Yansongsongsong in #2256
- feat: Add Zig Bindings Module by @kassane in #2374
- feat: Implement Timeout Layer by @Xuanwo in #2395
- feat(bindings/c): add opendal_operator_blocking_delete method by @jiaoew1991 in #2416
- feat(services/obs): add append support by @infdahai in #2422
Changed
- refactor(bindings/zig): enable tests and more by @tisonkun in #2375
- refactor(bindings/zig): add errors handler and module test by @kassane in #2381
- refactor(http_util): Adopt reqwest's redirect support by @Xuanwo in #2390
Fixed
- fix(bindings/zig): reflect C interface changes by @tisonkun in #2378
- fix(services/azblob): Fix batch delete doesn't work on azure by @Xuanwo in #2382
- fix(services/oss): Fix oss batch max operations by @A-Stupid-Sun in #2414
- fix(core): Don't wake up operator futures while not ready by @Xuanwo in #2415
- fix(services/s3): Fix s3 batch max operations by @A-Stupid-Sun in #2418
Docs
- docs: service doc for s3 by @suyanhanx in #2376
- docs(bindings/C): The documentation for OpenDAL C binding by @Ji-Xinyou in #2373
- docs: add link for c binding by @suyanhanx in #2380
- docs: docs for kv services by @suyanhanx in #2396
- docs: docs for fs related services by @suyanhanx in #2397
- docs(bindings/java): do not release snapshot versions anymore by @tisonkun in #2398
- docs: doc for ipmfs by @suyanhanx in #2408
- docs: add service doc for oss by @A-Stupid-Sun in #2409
- docs: improvement of Python binding by @ideal in #2411
- docs: doc for download by @suyanhanx in #2424
- docs: Add release guide by @Xuanwo in #2425
CI
- ci: Enable semantic PRs by @Xuanwo in #2370
- ci: improve licenserc settings by @tisonkun in #2377
- build(deps): bump reqwest from 0.11.15 to 0.11.18 by @dependabot in #2389
- build(deps): bump pyo3 from 0.18.2 to 0.18.3 by @dependabot in #2388
- ci: Enable nextest for all behavior tests by @Xuanwo in #2400
- ci: reflect ascii file rewrite by @tisonkun in #2419
- ci: Remove website from git archive by @Xuanwo in #2420
- ci: Add integration tests for Cloudflare R2 by @Xuanwo in #2423
Chore
- chore(bindings/python): upgrade maturin to 1.0 by @messense in #2369
- chore: Fix license headers for release/labler by @Xuanwo in #2371
- chore(bindings/C): add one simple read/write example into readme and code by @Ji-Xinyou in #2421
New Contributors
- @kassane made their first contribution in #2374
- @A-Stupid-Sun made their first contribution in #2409
- @ideal made their first contribution in #2411
- @jiaoew1991 made their first contribution in #2416
Full Changelog: v0.36.0...v0.37.0
v0.36.0
Upgrade to v0.36
Public API
In v0.36, OpenDAL improving the xxx_with
API by allow it to be called in chain:
After this change, all xxx_with
alike call will be changed from
let bs = op.read_with(
"path/to/file",
OpRead::new()
.with_range(0..=1024)
.with_if_match("<etag>")
.with_if_none_match("<etag>")
.with_override_cache_control("<cache_control>")
.with_override_content_disposition("<content_disposition>")
).await?;
to
let bs = op.read_with("path/to/file")
.range(0..=1024)
.if_match("<etag>")
.if_none_match("<etag>")
.override_cache_control("<cache_control>")
.override_content_disposition("<content_disposition>")
.await?;
For blocking API calls, we will need a call()
at the end:
let bs = bop.read_with("path/to/file")
.range(0..=1024)
.if_match("<etag>")
.if_none_match("<etag>")
.override_cache_control("<cache_control>")
.override_content_disposition("<content_disposition>")
.call()?;
Along with this change, users don't need to call OpXxx
anymore so we moved it to raw
API.
More detailes could be found at [RFC: Chain Based Operator API][https://opendal.apache.org/docs/rust/opendal/docs/rfcs/rfc_2299_chain_based_operator_api/index.html].
Raw API
Migrated opendal::ops
to opendal::raw::ops
.
v0.36.0 - 2023-05-30
Added
- feat(service/fs): add append support for fs (#2296)
- feat(services/sftp): add append support for sftp (#2297)
- RFC-2299: Chain based Operator API (#2299)
- feat(services/azblob): add append support (#2302)
- feat(bindings/nodejs): add append support (#2322)
- feat(bindings/C): opendal_operator_ptr construction using kvs (#2329)
- feat(services/cos): append support (#2332)
- feat(bindings/java): implement Operator#delete (#2345)
- feat(bindings/java): support append (#2350)
- feat(bindings/java): save one jni call in the hot path (#2353)
- feat: server side encryption support for azblob (#2347)
Changed
- refactor(core): Implement RFC-2299 for stat_with (#2303)
- refactor(core): Implement RFC-2299 for BlockingOperator::write_with (#2305)
- refactor(core): Implement RFC-2299 for appender_with (#2307)
- refactor(core): Implement RFC-2299 for read_with (#2308)
- refactor(core): Implement RFC-2299 for read_with (#2308)
- refactor(core): Implement RFC-2299 for append_with (#2312)
- refactor(core): Implement RFC-2299 for write_with (#2315)
- refactor(core): Implement RFC-2299 for reader_with (#2316)
- refactor(core): Implement RFC-2299 for writer_with (#2317)
- refactor(core): Implement RFC-2299 for presign_read_with (#2314)
- refactor(core): Implement RFC-2299 for presign_write_with (#2320)
- refactor(core): Implement RFC-2299 for list_with (#2323)
- refactor: Move
ops
toraw::ops
(#2325) - refactor(bindings/C): align bdd test with the feature tests (#2340)
- refactor(bindings/java): narrow unsafe boundary (#2351)
Fixed
Docs
- docs: add service doc for azdfs (#2310)
- docs(bidnings/java): how to deploy snapshots (#2311)
- docs(bidnings/java): how to deploy snapshots (#2311)
- docs: Fixed links of languages to open in same tab (#2327)
- docs: Adopt docusaurus pathname protocol (#2330)
- docs(bindings/nodejs): update lib desc (#2331)
- docs(bindings/java): update the README file (#2338)
- docs: add service doc for fs (#2337)
- docs: add service doc for cos (#2341)
- docs: add service doc for dashmap (#2342)
- docs(bindings/java): for BlockingOperator (#2344)
CI
- build(bindings/java): prepare for snapshot release (#2301)
- build(bindings/java): support multiple platform java bindings (#2324)
- ci(binding/nodejs): Use docker to build nodejs binding (#2328)
- build(bindings/java): prepare for automatically multiple platform deploy (#2335)
- ci: add bindings java docs and integrate with website (#2346)
- ci: avoid copy gitignore to site folder (#2348)
- ci(bindings/c): Add diff check (#2359)
- ci: Cache librocksdb to speed up CI (#2360)
- ci: Don't load rocksdb for all workflows (#2362)
- ci: Fix Node.js 12 actions deprecated warning (#2363)
- ci: Speed up python docs build (#2364)
- ci: Adopt setup-node's cache logic instead (#2365)
Chore
- chore(test): Avoid test names becoming prefixes of other tests (#2333)
- chore(bindings/java): improve OpenDALException tests and docs (#2343)
- chore(bindings/java): post release 0.1.0 (#2352)
- chore(docs): split docs build into small jobs (#2356)'
- chore: protect branch gh-pages (#2358)
New Contributors
- @j178 made their first contribution in #2307
- @dqhl76 made their first contribution in #2310
- @infdahai made their first contribution in #2312
- @manulpatel made their first contribution in #2327
Full Changelog: v0.35.0...v0.36.0
v0.35.0
NOTE: This release is not yet an official ASF release.
Upgrade to v0.35
Public API
- OpenDAL removes rarely used
Operator::from_env
andOperator::from_iter
APIs- Users can use
Operator::via_map
instead.
- Users can use
Raw API
- OpenDAL adds
append
support with could break existing layers. Please make sureappend
requests have been forward correctly. - After the merging of
scan
andlist
, OpenDAL removes thescan
from raw API. Please uselist_without_delimiter
instead.
v0.35.0 - 2023-05-23
Added
- feat(services/onedrive): Implement
list
,create_dir
,stat
and upload
ing large files (#2231) - feat(bindings/C): Initially support stat in C binding (#2249)
- feat(bindings/python): Enable
abi3
to avoid building on different python
version (#2255) - feat(bindings/C): support BDD tests using GTest (#2254)
- feat(services/sftp): setup integration tests (#2192)
- feat(core): Add trait and public API for
append
(#2260) - feat(services/sftp): support copy and rename for sftp (#2263)
- feat(services/sftp): support copy and read_seek (#2267)
- feat: Add COS service support (#2269)
- feat(services/cos): Add support for loading from env (#2271)
- feat(core): add presign support for obs (#2253)
- feat(services/sftp): setup integration tests (#2192)
- feat(core): add presign support for obs (#2253)
- feat(core): public API of append (#2284)
- test(core): test for append (#2286)
- feat(services/oss): add append support (#2279)
- feat(bindings/java): implement async ops to pass AsyncStepsTest (#2291)
Changed
- services/gdrive: port code to GdriveCore & add path_2_id cache (#2203)
- refactor: Minimize futures dependencies (#2248)
- refactor: Add Operator::via_map to support init without generic type parameters (#2280)
- refactor(binding/java): build, async and docs (#2276)
Fixed
- fix: Fix bugs that failed wasabi's integration tests (#2273)
Removed
- feat(core): remove
scan
from raw API (#2262)
Docs
- chore(s3): update builder region doc (#2247)
- docs: Add services in readme (#2251)
- docs: Unify capabilities list for kv services (#2257)
- docs(nodejs): fix some example code errors (#2277)
- docs(bindings/C): C binding contributing documentation (#2266)
- docs: Add new docs that available for all languages (#2285)
- docs: Remove unlicensed svg (#2289)
- fix(website): double active route (#2290)
CI
- ci: Enable test for cos (#2270)
- ci: Add integration tests for supabase (#2272)
- ci: replace set-output for docs (#2275)
- ci: Fix unit tests (#2282)
- ci: Cleanup NOTICE file (#2281)
- ci: Fix release not contains incubating (#2292)
Chore
- chore(core): remove unnecessary path prefix (#2265)
New Contributors
- @saiintbrisson made their first contribution in #2247
- @lqhuang made their first contribution in #2257
- @morristai made their first contribution in #2265
- @C-Dao made their first contribution in #2277
Full Changelog: v0.34.0...v0.35.0
v0.34.0
NOTE: This release is not yet an official ASF release. We are waiting for the vote.
v0.34.0 - 2023-05-09
Added
- feat(writer): configurable buffer size of unsized write (#2143)
- feat(oay): Add basic s3 list_objects_v2 with start_after support (#2219)
- feat: Add typed kv adapter and migrate moka to it (#2222)
- feat: migrate service dashmap (#2225)
- feat(services/memory): migrate service memory (#2229)
- feat: Add assert for public types to ensure Send + Sync (#2237)
- feat(services/gcs): Add abort support for writer (#2242)
Changed
- refactor: Replace futures::ready with std::task::ready (#2221)
- refactor: Use list without delimiter to replace scan (#2243)
Fixed
- fix(services/gcs): checked_rem_euclid could return Some(0) (#2220)
- fix(tests): Etag must be wrapped by
"
(#2226) - fix(services/s3): Return error if credential load fail instead skip (#2233)
- fix(services/s3): Return error if region not set for AWS S3 (#2234)
- fix(services/gcs): rsa 0.9 breaks gcs presign (#2236)
Chore
- chore: change log subscriber from env_logger to tracing-subscriber (#2238)
- chore: Fix build of wasabi (#2241)
New Contributors
Full Changelog: v0.33.3...v0.34.0
v0.33.3
NOTE: This release is not yet an official ASF release. We are waiting for the vote.
v0.33.3 - 2023-05-06
Added
- feat(services/onedrive): Add read and write support for OneDrive (#2129)
- test(core): test for
read_with_override_cache_control
(#2155) - feat(http_util): Implement multipart/form-data support (#2157)
- feat(http_util): Implement multipart/mixed support (#2161)
- RFC-2133: Introduce Append API (#2133)
- feat(services/sftp): Add read/write/stat support for sftp (#2186)
- feat(services/gdrive): Add read & write & delete support for GoogleDrive (#2184)
- feat(services/vercel): Add vercel remote cache support (#2193)
- feat(tests): Enable supabase integration tests (#2190)
- feat(core): merge scan and list (#2214)
Changed
- refactor(java): refactor java code for java binding (#2145)
- refactor(layers/logging): parsing level str (#2160)
- refactor: Move not initiated logic to utils instead (#2196)
- refactor(services/memcached): Rewrite memecached connection entirely (#2204)
Fixed
Docs
- docs(website): try to add opendal logo (#2159)
- doc: update vision to be more clear (#2164)
- docs: Refactor
Contributing
and addDeveloping
(#2169) - docs: Merge DEVELOPING into CONTRIBUTING (#2172)
- docs: fix some grammar errors in the doc of Operator (#2173)
- docs(nodejs): Add CONTRIBUTING docs (#2174)
- docs: Add CONTRIBUTING for python (#2188)
CI
- ci: Use microsoft rust devcontainer instead (#2165)
- ci(devcontainer): Install development deps (#2167)
- chore: set workspace default members (#2168)
- ci: Setup vercel artifacts integration tests (#2197)
- ci: Remove not used odev tools (#2202)
- ci: Add tools to generate NOTICE and all deps licenses (#2205)
- ci: use Temurin JDK 11 to build the bindings-java (#2213)
Chore
- chore(deps): bump clap from 4.1.11 to 4.2.5 (#2183)
- chore(deps): bump futures from 0.3.27 to 0.3.28 (#2181)
- chore(deps): bump assert_cmd from 2.0.10 to 2.0.11 (#2180)
- chore: Refactor behavior test (#2189)
- chore: update readme for more information that is more friendly to newcomers (#2217)
New Contributors
- @SteveLauC made their first contribution in #2173
- @Retrospection made their first contribution in #2193
- @nodece made their first contribution in #2213
Full Changelog: v0.33.2...v0.33.3
v0.33.2
NOTE: This release is not yet an official ASF release. We are still in the process of learning how to create a formal one.
v0.33.2 - 2023-04-27
Added
- feat(core): add test for
stat_with_if_none_match
(#2122) - feat(services/gcs): Add start-after support for list (#2107)
- feat(services/azblob): Add supporting presign (#2120)
- feat(services/gcs): Add supporting presign support (#2126)
- feat(java): connect rust async/await with java future (#2112)
- docs: add hdfs classpath related troubleshoot (#2130)
- fix(clippy): suppress dead_code check (#2135)
- feat(core): Add
cache-control
to Metadata (#2136) - fix(services/gcs): Remove HOST header to avoid gcs RESET connection (#2139)
- test(core): test for
write_with_cache_control
(#2131) - test(core): test for
write_with_content_type
(#2140) - test(core): test for
read_with_if_none_match
(#2141) - feat(services/supabase): Add read/write/stat support for supabase (#2119)
Docs
- docs: add hdfs classpath related troubleshoot (#2130)
CI
- ci: Mark job as skipped if owner is not apache (#2128)
- ci: Enable native-tls to test gcs presign for workaround (#2138)
New Contributors
- @ShadowySpirits made their first contribution in #2112
Full Changelog: v0.33.1...v0.33.2