Skip to content

v0.59.0

Latest

Choose a tag to compare

@Xuanwo Xuanwo released this 04 Sep 04:45
· 5 commits to main since this release
v0.59.0
3e190ac

Breaking Changes

  • Core: construct Metadata with MetadataBuilder. Direct constructors, setters, and with_* methods have been removed; Metadata::user_metadata() now returns a borrowed UserMetadata view. Metadata and frozen operation value blocks must fit within u16::MAX encoded bytes.
  • Core: DeleteInput has been removed. Pass (String, DeleteOptions) when delete options are required; custom IntoDeleteInput implementations must return that pair.
  • Core: Capability and the public operation option structs gained fields. Use ..Default::default() in struct literals to remain source-compatible.
  • Core: service conflicts can now return ErrorKind::Conflict. Conditional failures still return ErrorKind::ConditionNotMatch; update recovery logic that grouped both cases together.
  • Raw API: OpCopier has been merged into OpCopy. Raw operation mutation methods and direct From<WriteOptions>, From<DeleteOptions>, and From<CopyOptions> conversions have been removed; use capability-aware from_options constructors.
  • Raw API: listed entries now contain finalized Metadata; raw::oio::Entry::set_mode and metadata_mut have been removed. The new Compose and Restore variants also changed implicit numeric Operation discriminants, which are not a stable contract.
  • Services: CloudflareKvConfig, MemcachedConfig, and RedisConfig now use Option<raw::SignedDuration> for public default_ttl fields.
  • Integrations: object_store_opendal 0.60 and parquet_opendal 0.10 use opendal 0.59. Update direct OpenDAL dependencies together.

See the core upgrade guide, object_store integration guide, and Parquet integration guide for migration examples.

What's Changed

Added

  • feat(bindings/dotnet): add DeleteOptions with delete functions by @Fatorin in #8098
  • feat(services/s3): add conditional delete with if-match by @YuangGao in #7607
  • feat(bindings/dotnet): support conditional delete with if-match by @Fatorin in #8137
  • feat(services/s3): support S3 Express session authentication by @Xuanwo in #8135
  • feat(services/s3): support object restoration by @Xuanwo in #8143
  • feat(services): support conditional delete for Azure services by @Xuanwo in #8142
  • RFC: Add limited read by @Xuanwo in #7945
  • feat(services/azdls): support custom credential providers by @zakariya-s in #8030
  • feat(core): add conflict error kind by @Xuanwo in #8154
  • feat(parquet): expose writer abort by @starpact in #8102
  • feat: support if_not_changed preconditions by @Xuanwo in #8156
  • feat(services/s3): support Writer::copy_from by @Xuanwo in #8140
  • feat(services/gcs-grpc): add GCS gRPC service by @Xuanwo in #8153
  • feat(services/gcs): support compose by @Xuanwo in #8191

Changed

  • refactor(services/monoiofs): use asyncband channels by @tisonkun in #8126
  • refactor(bindings/dotnet): generate capability and service configs from core by @Fatorin in #8146
  • refactor(services): standardize error normalization by @Xuanwo in #8174
  • refactor!: merge OpCopier into OpCopy by @Xuanwo in #8190
  • refactor!: compact metadata and operation arguments by @Xuanwo in #8196

Fixed

  • fix(bindings/dotnet): correct stream error kind and if-modified-since test by @Fatorin in #8121
  • Reapply "fix(core): deserialize duration config values from strings" by @erickguan in #8123
  • fix: Canonicalize HuggingFace IDs to avoid inconsistent API by @mhambre in #8108
  • fix(services/goosefs): skip CreateDirectory when rename parent already exists by @XuQianJin-Stars in #8129
  • fix(services/azblob): carry content type and user metadata on Put Block List by @PDGGK in #8148
  • fix(services/memcached): reject a TTL over 30 days by @PDGGK in #8150
  • fix(dev): validate integration version bumps by @Xuanwo in #8139
  • fix(services/ghac): propagate v2 finalize errors by @fly1d in #8136
  • fix(services/hf): cache XET classification and CAS auth tokens by @kszucs in #8106
  • fix(core): add missing tokio test features so crates build on their own by @Lstarsky0 in #8103
  • fix(ci): use distinct reusable concurrency groups by @jsk1004ha in #8119
  • fix(bindings/python): fix sized File.readline by @Xuanwo in #8169
  • fix: repair azfile, b2, and conditional read behavior by @Xuanwo in #8175
  • fix(core): align conditional missing-target semantics by @Xuanwo in #8172
  • fix(bindings): enable gcs-grpc service by @Xuanwo in #8185
  • fix: update generated gcs-grpc service docs by @Xuanwo in #8186
  • fix(bindings/python): remove greenlet benchmark dependencies by @Xuanwo in #8189

Docs

  • docs: add AI-assisted contribution policy by @Xuanwo in #8099
  • RFC-8147: write_if_not_changed by @Xuanwo in #8147
  • RFC-8145: Distinguish conflicts from unmet conditions by @Xuanwo in #8145
  • docs: forbid speculative service changes in agent guidance by @Xuanwo in #8152
  • docs: clarify helper function guidelines by @Xuanwo in #8155
  • docs: establish OpenDAL specifications by @Xuanwo in #8183
  • docs: add RFC for whole-object composition by @Xuanwo in #8188
  • RFC: Compact metadata and operation arguments by @Xuanwo in #8194

CI

Chore

  • chore(services/hf): bump hf-xet to 1.6.0 by @kszucs in #8113
  • chore(services/ftp): upgrade suppaftp to 10 and switch to tokio by @Xuanwo in #8184

New Contributors

Full Changelog: v0.58.2...v0.59.0