github apache/opendal v0.58.0

5 hours ago

Breaking Changes

  • core: Operator::new(builder) now returns Result<Operator> directly. Remove the old .finish() call.
  • core: Runtime resources now live in the root-exported OperationContext. Replace Operator::http_transport(...) and Operator::executor(...) with Operator::with_context(...); replace Operator::from_service(...) with Operator::from_parts(...); use service(), context(), or into_parts() instead of inner(), into_inner(), or executor_ref().
  • core: OperatorInfo::native_capability() has been removed. Use OperatorInfo::capability() as the public availability contract.
  • core: BytesRange is now public and reader APIs accept values convertible to it, including BytesRange::suffix(size) for suffix reads.
  • raw API: Out-of-tree services must implement raw::Service, and layers must use Layer::apply_service and Layer::apply_context. The old typed layer pipeline has been removed.
  • raw API: Stateful read, write, delete, list, and copy factories now return OIO bodies synchronously; move asynchronous work into the returned body.
  • raw API: raw::AtomicContentLength, raw::PathCacher, raw::PathQuery, and the internal-path-cache feature have been removed.
  • bindings/java: OperatorInfo.fullCapability and OperatorInfo.nativeCapability have been replaced by OperatorInfo.capability.

What's Changed

Added

  • feat(binding/go): Add ListOptions with recursive support by @FrankYang0529 in #7605
  • feat(website): introduce a design system and rebuild the homepage by @Xuanwo in #7638
  • feat(binding/go): expose all metata fields to golang by @dentiny in #7646
  • feat(website): add Paimon Rust to logo wall by @QuakeWang in #7643
  • feat(lister.go): Add opendal_list_options_set_limit and opendal_list_options_set_start_after by @FrankYang0529 in #7649
  • feat(binding/go): expose all write options by @dentiny in #7647
  • feat(services/oss): support content_encoding in write operations by @ITpandaffm in #7658
  • feat(binding/go): expose all read options by @dentiny in #7665
  • feat(services/azdls): support conditional read headers by @YuangGao in #7667
  • feat(delete.go): add options version and recursive by @FrankYang0529 in #7676
  • feat(binding/go): expose all stats options by @dentiny in #7670
  • feat(binding/go): upgrade FFI package to latest version by @dentiny in #7681
  • feat(core): Add copy source version support by @Xuanwo in #7679
  • feat(lister.go): Add opendal_list_options_set_versions and opendal_list_options_set_deleted by @FrankYang0529 in #7645
  • feat(website): add GooseFS to logo wall and services by @XuQianJin-Stars in #7709
  • feat(copy.go): add copy options by @FrankYang0529 in #7707
  • feat(binding/go): add missing read options by @dentiny in #7728
  • feat(website): Add per-service configuration reference pages by @Xuanwo in #7730
  • feat(core)!: Add suffix read support by @Xuanwo in #7734
  • feat(metrics): add operation label to a few backends [1/N] by @dentiny in #7530
  • [2/N] feat(metrics): annotate metrics with operation name by @dentiny in #7748
  • feat(core): expose operator base service and context by @ngg in #7788
  • feat(services/swift): support list with start_after by @edmc-ss in #7810
  • feat(binding/go): add presign with options by @dentiny in #7814
  • feat(fs): copy with metadata by @dentiny in #7535
  • feat(services/webdav): support conditional read headers by @YuangGao in #7637
  • feat(services/obs): support if_modified_since and if_unmodified_since… by @YuangGao in #7708
  • feat(binding/go): add reader with options by @ryankert01 in #7817
  • feat(services/http): support if_modified_since and if_unmodified_since by @YuangGao in #7636
  • feat(services/hf): honor HF_HUB_DISABLE_XET to force http download mode by @AlJohri in #7819
  • feat(core): add conditional rename option by @hfutatzhanghb in #7815
  • feat(binding/go): add write with metadata by @ryankert01 in #7827
  • feat(http-transport-reqwest): allow tls options by @erickguan in #7798
  • feat(dev): support dotnet version updates by @Xuanwo in #7862

Changed

  • refactor: switch S3 crc32c checksum to crc-fast by @PsiACE in #7662
  • refactor(core): Rename oio::Read to ReadStream by @Xuanwo in #7675
  • refactor(core): Move read range to raw reader by @Xuanwo in #7678
  • refactor!: Refactor runtime service composition by @Xuanwo in #7743
  • refactor!: simplify stateful operation factories by @Xuanwo in #7746
  • refactor!: Remove native and full capability APIs by @Xuanwo in #7747
  • refactor: introduce HTTP transporter API by @Xuanwo in #7759
  • refactor(foyer): implement Code manually to drop bincode dependency by @Xuanwo in #7772
  • refactor(core)!: remove unused AtomicContentLength util by @Xuanwo in #7773
  • refactor(core): delegate presign_stat/presign_read to their _with variants by @Xuanwo in #7775
  • refactor(core)!: remove unused PathCacher and internal-path-cache feature by @Xuanwo in #7778
  • refactor(core)!: rework Operator runtime composition API by @Xuanwo in #7779
  • refactor(core): make reqsign-core an optional dependency by @Xuanwo in #7784
  • refactor(core): lazy open positioned read handles by @Xuanwo in #7796
  • refactor: normalize service module layout by @Xuanwo in #7797
  • refactor(bindings/python): use declarative pymodule syntax by @chitralverma in #7812
  • refactor(bindings/python): generate type stubs with pyo3 introspection by @chitralverma in #7824

Fixed

  • fix(services/hf): avoid logging full HTML error pages by @kszucs in #7634
  • fix(website): mobile drawer menu by @suyanhanx in #7644
  • fix(services/azdls): Handle not modified as condition mismatch by @Xuanwo in #7674
  • fix(ci): release dotnet workflow by @Fatorin in #7673
  • fix(services): bound batch-delete result allocation against malformed server responses by @tonghuaroot in #7683
  • fix(services/fs): confine object keys to the configured root by rejecting parent-dir traversal by @tonghuaroot in #7684
  • fix(layers): Align reader observability by @Xuanwo in #7687
  • fix(services/webdav): remove unnecessary mut by @Xuanwo in #7717
  • fix(services/fs): preserve backslash in filenames on Unix during list by @tonghuaroot in #7721
  • fix(services): confine compfs/monoiofs object keys to root by rejecting parent-dir traversal by @tonghuaroot in #7702
  • fix(fuzz): fall back to fs operator so fuzz targets produce real coverage by @tonghuaroot in #7723
  • fix(services/fs): cache fs reader by @dentiny in #7782
  • fix(services/onedrive): build correct children URL when listing root by @tonghuaroot in #7720
  • fix(services/memcached): TCP address resolution by @flip1995 in #7701
  • fix(webdav): support multiple propstat entries by @ZeonXr in #7823
  • Fix C binding empty byte buffers by @fallintoplace in #7807
  • fix(layers/foyer): preserve read args while filling full-object cache by @tonghuaroot in #7718
  • fix(fuzz): resolve fuzz_reader timeout on OSS-Fuzz by @tonghuaroot in #7831
  • fix(object_store): export send future helper by @hfutatzhanghb in #7851
  • fix(services/sqlite): stat getting the entire object by @erickguan in #7853
  • fix(services): improve stat implementation by @erickguan in #7857
  • fix(layers/tracing): propagate spans to executor tasks by @ngg in #7864

Docs

CI

Chore

  • chore(services/compfs): bump compio version by @George-Miao in #7666
  • chore(deps): update reqwest requirement from 0.12.24 to 0.13.1 in /integrations/dav-server by @dependabot[bot] in #7171
  • chore(deps): bump the logs-errors-checksums group in /core with 2 updates by @dependabot[bot] in #7697
  • chore(deps): bump tokio from 1.52.2 to 1.52.3 in /core in the async-runtime group by @dependabot[bot] in #7696
  • chore(deps): bump the others group in /bindings/go/tests/behavior_tests with 4 updates by @dependabot[bot] in #7689
  • chore(deps): bump golang.org/x/sys from 0.24.0 to 0.45.0 in /bindings/go in the others group by @dependabot[bot] in #7688
  • chore(deps): update object_store requirement from 0.12.3 to 0.13.0 in /integrations/object_store by @dependabot[bot] in #7118
  • chore(deps): bump the http-serialization-utils group in /core with 6 updates by @dependabot[bot] in #7693
  • chore(deps): bump the pyo3 group in /bindings/python with 3 updates by @dependabot[bot] in #7690
  • chore(deps): bump the others group in /core with 22 updates by @dependabot[bot] in #7698
  • chore(deps): bump the others group across 1 directory with 5 updates by @dependabot[bot] in #7652
  • chore(deps): bump the third-party-actions group with 4 updates by @dependabot[bot] in #7695
  • chore(deps): bump the github-actions group with 3 updates by @dependabot[bot] in #7691
  • chore(deps-dev): update activesupport requirement from ~> 8.0.5 to ~> 8.1.3 in /bindings/ruby by @dependabot[bot] in #7753
  • chore(deps): bump golang.org/x/sys from 0.45.0 to 0.46.0 in /bindings/go by @dependabot[bot] in #7751
  • chore(deps): update datafusion requirement from 53.0.0 to 54.0.0 in /integrations/object_store by @dependabot[bot] in #7754
  • chore(deps): bump the http-serialization-utils group across 1 directory with 3 updates by @dependabot[bot] in #7755
  • chore: upgrade pyo3 to 0.29 by @Xuanwo in #7789
  • chore: Update copyright year in NOTICE file by @tisonkun in #7792
  • chore(bindings/java): migrate to jni 0.22 by @Xuanwo in #7777
  • chore(deps): bump the others group across 1 directory with 6 updates by @dependabot[bot] in #7776
  • chore(deps-dev): update minitest-reporters requirement from ~> 1.7.1 to ~> 1.8.0 in /bindings/ruby by @dependabot[bot] in #7774
  • chore(deps): update rb-sys-env requirement from 0.1.2 to 0.2.3 in /bindings/ruby by @dependabot[bot] in #7770
  • chore(deps): update mlua requirement from 0.9 to 0.11 in /bindings/lua by @dependabot[bot] in #7766
  • chore(deps): update ext-php-rs requirement from 0.13.1 to 0.15.15 in /bindings/php by @dependabot[bot] in #7767
  • chore(deps): bump the third-party-actions group across 1 directory with 2 updates by @dependabot[bot] in #7757
  • chore(bindings/python): replace pyright with ty for type checking by @chitralverma in #7813
  • chore(deps): bump syn from 2.0.100 to 2.0.117 in /dev by @dependabot[bot] in #7846
  • chore(deps): bump minijinja from 2.5.0 to 2.21.0 in /dev by @dependabot[bot] in #7845
  • chore(deps): bump semver from 1.0.25 to 1.0.27 in /dev by @dependabot[bot] in #7842
  • chore(deps): bump flate2 from 1.1.0 to 1.1.9 in /dev by @dependabot[bot] in #7843
  • chore(deps): bump the others group in /core with 6 updates by @dependabot[bot] in #7847
  • chore(deps): bump clap from 4.5.23 to 4.5.60 in /dev by @dependabot[bot] in #7844
  • chore(deps): bump the logs-errors-checksums group across 1 directory with 2 updates by @dependabot[bot] in #7841
  • chore(deps): bump the http-serialization-utils group across 1 directory with 3 updates by @dependabot[bot] in #7835
  • chore(deps): bump crate-ci/typos from 1.47.2 to 1.48.0 in the third-party-actions group by @dependabot[bot] in #7837
  • chore(deps): bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #7833
  • chore: MSRV 1.91 by @tisonkun in #7849
  • chore(release): finalize Ruby binding version by @Xuanwo in #7861
  • chore(release): prepare v0.58.0 by @Xuanwo in #7867

New Contributors

Full Changelog: v0.57.0...v0.58.0

Don't miss a new opendal release

NewReleases is sending notifications on new releases.