NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2531 most downloaded on crates.io
Apache OpenDAL™: One Layer, All Storage.
Last release 3 days ago
05 Oct 2026
Release timing varies
gaps range from 1 weeks to 5 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
3 versions withdrawn
withdrawn after publishing
5 years old
160 releases · first in 2022
One column per quarter.
bindings/dotnet 0.2.3 0.3.0 Declared breaking change
Hi everyone,
Apache OpenDAL 0.59.4 is now available.
OpenDAL is an Open Data Access Layer that provides unified access to storage services.
Thanks to everyone who contributed and verified this release.
The Apache OpenDAL community
| Package | Previous | Target | Reason |
|---|---|---|---|
| core | 0.59.3 | 0.59.4 | Weekly patch |
| integrations/dav-server | 0.7.9 | 0.7.10 | Weekly patch |
| integrations/object_store | 0.60.3 | 0.60.4 | Weekly patch |
| integrations/parquet | 0.10.3 | 0.10.4 | Weekly patch |
| integrations/unftp-sbe | 0.4.9 | 0.4.10 | Weekly patch |
| bindings/c | 0.47.6 | 0.47.7 | Weekly patch |
| bindings/cpp | 0.45.33 | 0.45.34 | Weekly patch |
| bindings/java | 0.50.6 | 0.50.7 | Weekly patch |
| bindings/nodejs | 0.49.11 | 0.49.12 | Weekly patch |
| bindings/python | 0.47.10 | 0.47.11 | Weekly patch |
| bindings/ruby | 0.1.14 | 0.1.15 | Weekly patch |
| bindings/dotnet | 0.2.3 | 0.3.0 | Declared breaking change |
bindings/dotnetop.ReadAsync(path, token) with op.ReadAsync(path, cancellationToken: token).op.WriteAsync(path, bytes, token) with op.WriteAsync(path, bytes, cancellationToken: token).op.StatAsync(path, token) with op.StatAsync(path, cancellationToken: token).op.ListAsync(path, token) with op.ListAsync(path, cancellationToken: token).Calls that already pass options positionally, and calls that pass no token, are unaffected.
BufferCursor, an implementation of Read + Seek for Buffer by @trxcllnt in #8320Full Changelog: v0.59.3...v0.59.4
No breaking changes declared in this release range.
Hi everyone,
Apache OpenDAL 0.59.3 is now available.
OpenDAL is an Open Data Access Layer that provides unified access to storage services.
Thanks to everyone who contributed and verified this release.
The Apache OpenDAL community
| Package | Previous | Target | Reason |
|---|---|---|---|
| core | 0.59.2 | 0.59.3 | Weekly patch |
| integrations/dav-server | 0.7.8 | 0.7.9 | Weekly patch |
| integrations/object_store | 0.60.2 | 0.60.3 | Weekly patch |
| integrations/parquet | 0.10.2 | 0.10.3 | Weekly patch |
| integrations/unftp-sbe | 0.4.8 | 0.4.9 | Weekly patch |
| bindings/c | 0.47.5 | 0.47.6 | Weekly patch |
| bindings/cpp | 0.45.32 | 0.45.33 | Weekly patch |
| bindings/java | 0.50.5 | 0.50.6 | Weekly patch |
| bindings/nodejs | 0.49.10 | 0.49.11 | Weekly patch |
| bindings/python | 0.47.9 | 0.47.10 | Weekly patch |
| bindings/ruby | 0.1.13 | 0.1.14 | Weekly patch |
| bindings/dotnet | 0.2.2 | 0.2.3 | Weekly patch |
No breaking changes declared in this release range.
Full Changelog: v0.59.1...v0.59.3
No breaking changes declared in this release range.
Hi everyone,
Apache OpenDAL 0.59.2 is now available.
OpenDAL is an Open Data Access Layer that provides unified access to storage services.
Thanks to everyone who contributed and verified this release.
The Apache OpenDAL community
| Package | Previous | Target | Reason |
|---|---|---|---|
| core | 0.59.1 | 0.59.2 | Weekly patch |
| integrations/dav-server | 0.7.7 | 0.7.8 | Weekly patch |
| integrations/object_store | 0.60.1 | 0.60.2 | Weekly patch |
| integrations/parquet | 0.10.1 | 0.10.2 | Weekly patch |
| integrations/unftp-sbe | 0.4.7 | 0.4.8 | Weekly patch |
| bindings/c | 0.47.4 | 0.47.5 | Weekly patch |
| bindings/cpp | 0.45.31 | 0.45.32 | Weekly patch |
| bindings/java | 0.50.4 | 0.50.5 | Weekly patch |
| bindings/nodejs | 0.49.9 | 0.49.10 | Weekly patch |
| bindings/python | 0.47.8 | 0.47.9 | Weekly patch |
| bindings/ruby | 0.1.12 | 0.1.13 | Weekly patch |
| bindings/dotnet | 0.2.1 | 0.2.2 | Weekly patch |
No breaking changes declared in this release range.
Full Changelog: v0.59.1...v0.59.2
Include the changelog in the opendal-core crate so packages downloaded from crates.io compile. #8223
opendal-core crate so packages downloaded from crates.io compile. #8223goosefs-site.properties. #8216Full Changelog: v0.59.0...v0.59.1
opendal-core crate so packages downloaded from crates.io compile. https://github.com/apache/opendal/pull/8223goosefs-site.properties. https://github.com/apache/opendal/pull/8216Full Changelog: https://github.com/apache/opendal/compare/v0.59.0...v0.59.1
Core: construct Metadata with MetadataBuilder . Direct constructors, setters, and with_* methods have been removed; Metadata::user_metadata() now retu
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.DeleteInput has been removed. Pass (String, DeleteOptions) when delete options are required; custom IntoDeleteInput implementations must return that pair.Capability and the public operation option structs gained fields. Use ..Default::default() in struct literals to remain source-compatible.ErrorKind::Conflict. Conditional failures still return ErrorKind::ConditionNotMatch; update recovery logic that grouped both cases together.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.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.CloudflareKvConfig, MemcachedConfig, and RedisConfig now use Option<raw::SignedDuration> for public default_ttl fields.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.
Full Changelog: v0.58.2...v0.59.0
Metadata and raw operation arguments now use immutable compact representations. Construct metadata with MetadataBuilder, use into_builder() to modify existing metadata, and convert public options into finalized raw arguments. DeleteInput has been removed.OpCopier has been removed. Raw Service::copy implementations now receive copy execution settings through OpCopy.object_store_opendal 0.60 uses opendal 0.59. Update direct OpenDAL dependencies together.parquet_opendal 0.10 uses opendal 0.59. Update direct OpenDAL dependencies together.Operator.DeleteAsync now accepts DeleteOptions before the cancellation token. Pass the token as cancellationToken: token, or pass null for options before a positional token.integrations/object_store: object_store_opendal 0.59 implements the object_store 0.14 API. Update direct object_store dependencies to 0.14. Projects t
object_store_opendal 0.59 implements the object_store 0.14 API. Update direct object_store dependencies to 0.14. Projects that require object_store 0.13, including DataFusion 54 users, should pin object_store_opendal = "=0.58.0". We missed object_store breaking version changes in previous opendal 0.58 releases. We yanked bad object_store_opendal releases so you can expect object_store_opendal follows SemVer.**kwargs types in generated stubs by @trim21 in #8012Full Changelog: v0.58.1...v0.58.2
feat(bindings/python): add from_uri constructor for Operator and AsyncOperator by @chitralverma in #7869
Full Changelog: v0.58.0...v0.58.1
Full Changelog: https://github.com/apache/opendal/compare/v0.58.0...v0.58.1
core: Operator::new(builder) now returns a finished Operator; remove the old .finish() call. The typed runtime composition pipeline has been replaced
Operator::new(builder) now returns a finished Operator; remove the old .finish() call. The typed runtime composition pipeline has been replaced by Service / ServiceDyn / Servicer plus OperationContext.Service / ServiceDyn factories for read, write, delete, list, and copy now return OIO bodies synchronously. Move asynchronous work into the returned body implementation.OperatorInfo::native_capability() and native/full capability APIs have been removed. Use OperatorInfo::capability() as the composed operator availability contract.OperationContext, Operator::with_context, Operator::from_parts, and Operator::into_parts; inner, into_inner, executor_ref, http_transport, executor, and from_service have been removed.raw::AtomicContentLength, raw::PathCacher, raw::PathQuery, and the internal-path-cache feature have been removed.BytesRange is now public and suffix reads are expressed with BytesRange::suffix(size).capability; previous full and native capability APIs were removed or renamed.services: S3-compatible services now use skip_signature for unsigned requests. S3, OSS, and GCS keep allow_anonymous as a deprecated alias; TOS users…
Operator::copy, copy_options, copy_with, and blocking copy APIs now return Metadata instead of (). Custom raw copy implementations must implement the new copier flow and return server-side completion metadata from oio::Copy::close.RpRead now carries optional Metadata observed while opening a read operation. Out-of-tree raw services that previously populated RpRead size or range fields must return RpRead::new(metadata) when read metadata is available, or RpRead::default() otherwise.RetryInterceptor::intercept now takes a single RetryEvent<'_> argument instead of (&Error, Duration). Update custom retry interceptors to read retry error, delay, operation, and attempt data from the event.service_operation label for service-specific request names. Update Prometheus, OpenTelemetry, fastmetrics, or custom metrics consumers that assume the previous HTTP metric label set.skip_signature for unsigned requests. S3, OSS, and GCS keep allow_anonymous as a deprecated alias; TOS users must migrate to skip_signature because allow_anonymous has been removed. GCS skip_signature now unconditionally bypasses signing instead of falling back on credential errors.repo_type is now required for the Hugging Face service. Set repo_type explicitly, for example model, dataset, space, or bucket, instead of relying on the previous implicit model default.TosBuilder::enable_versioning and TosConfig::enable_versioning have been removed. TOS now declares versioned stat/read/delete capabilities natively.ServiceConfig now uses canonical service names. Replace ServiceConfig.Huggingface with ServiceConfig.Hf; generated scheme() values for services such as Aliyun Drive, Cloudflare KV, HDFS Native, Vercel Artifacts, Vercel Blob, and Yandex Disk now return hyphenated canonical schemes instead of underscore variants.core: service-builder http_client hooks and TimeoutLayer::with_speed have been removed after deprecation. Move HTTP customization to layered/client AP…
Scheme-based APIs are now fully string-based. Migrate Operator::from_map and Operator::via_map call sites to from_iter and via_iter, and stop matching on Scheme values directly.http_client hooks and TimeoutLayer::with_speed have been removed after deprecation. Move HTTP customization to layered/client APIs and replace with_speed with with_io_timeout.opendal::raw::tests. Use opendal::tests or depend on opendal-testkit directly for out-of-tree services and integrations.parquet_opendal now targets Arrow 58 and ships as 0.8.0. Downstream integrations pinned to older Arrow releases must upgrade together.file as an alias scheme for fs by @userzhy in https://github.com/apache/opendal/pull/7075OperatorInputStream by @Xuanwo in https://github.com/apache/opendal/pull/7088get_ranges 2x performance degradation by @comphead in https://github.com/apache/opendal/pull/7380hf scheme instead of huggingface by @kszucs in https://github.com/apache/opendal/pull/7193with_speed method by @koushiro in https://github.com/apache/opendal/pull/6793Scheme enum from some bindings by @koushiro in https://github.com/apache/opendal/pull/6776refactor: Remove deprecated project virtiofs by @Xuanwo in https://github.com/apache/opendal/pull/6682
connection_pool_max_size option to memcached and redis builders by @trxcllnt in https://github.com/apache/opendal/pull/6759config.rs instead by @Xuanwo in https://github.com/apache/opendal/pull/6667BytesRange::new by @TheR1sing3un in https://github.com/apache/opendal/pull/6570Operator::from_map and Operator::via_map by @koushiro in https://github.com/apache/opendal/pull/6775list_with_version capability by @koushiro in https://github.com/apache/opendal/pull/6781S3::security_token by @koushiro in https://github.com/apache/opendal/pull/6779feat: Conditional reader for cos by @pmupkin in https://github.com/apache/opendal/pull/6424
create_dir support for OPFS by @crwen in https://github.com/apache/opendal/pull/6542docs: Remove deprecated APIs and polish docs for public APIs by @Xuanwo in https://github.com/apache/opendal/pull/6220
Operator::update_http_client() by @Xuanwo in https://github.com/apache/opendal/pull/6290with_user_metadata signature by @meteorgan in https://github.com/apache/opendal/pull/5960sync::Cache with future::Cache by @koushiro in https://github.com/apache/opendal/pull/6270refactor(bindings/java): deprecate append in favor of write with append=true by @kingsword09 in https://github.com/apache/opendal/pull/6169
Error::backtrace() by @xxchan in https://github.com/apache/opendal/pull/6196refactor(core): Deprecate not used options in OpList by @Xuanwo in https://github.com/apache/opendal/pull/6050
feat(services/gcs): implement write returns metadata by @meteorgan in https://github.com/apache/opendal/pull/5933
feat(bindings/python) detailed error message by @asukaminato0721 in https://github.com/apache/opendal/pull/5646
Write Returns Metadata for oss by @meteorgan in https://github.com/apache/opendal/pull/5688is_exist to exists to align with nodejs API style by @yihong0618 in https://github.com/apache/opendal/pull/5731write_has_xxx capabilities by @Ziy1-Tan in https://github.com/apache/opendal/pull/5908write_with_cache_control in Gcs by @wlinna in https://github.com/apache/opendal/pull/5658feat(services/s3): Added crc64nvme for s3 by @geetanshjuneja in https://github.com/apache/opendal/pull/5580
feat(core): implement if_modified_since and if_unmodified_since for stat_with by @meteorgan in https://github.com/apache/opendal/pull/5528
object_store_opendal now compiles on wasm32-unknown-unknown by @XiangpengHao in https://github.com/apache/opendal/pull/5530refactor(core): Deprecate OpList::version and add versions instead by @geetanshjuneja in https://github.com/apache/opendal/pull/5481
Metadata by @Xuanwo in https://github.com/apache/opendal/pull/5497feat(adapter/kv): support async iterating on scan results by @PragmaTwice in https://github.com/apache/opendal/pull/5208
if_not_exist in OpWrite by @kemingy in https://github.com/apache/opendal/pull/5305to_bytes when NonContiguous contains a single Bytes by @ever0de in https://github.com/apache/opendal/pull/5388OpWrite by @Frank-III in https://github.com/apache/opendal/pull/5360content_encoding to MetaData by @Frank-III in https://github.com/apache/opendal/pull/5400content encoding to Opwrite by @Frank-III in https://github.com/apache/opendal/pull/5390/ when not presented by @Frank-III in https://github.com/apache/opendal/pull/5382stat instead of Entry::metadata in fetch_placeholders by @ho-229 in https://github.com/apache/opendal/pull/5416gh-pages by @Xuanwo in https://github.com/apache/opendal/pull/5290info method of trait Access and trait LayeredAccess by @koushiro in https://github.com/apache/opendal/pull/5258info method of kv::Adapter and typed_kv::Adapter by @koushiro in https://github.com/apache/opendal/pull/5259chore(core/blocking_operator): deduplicate deprecated is_exist logic by @simonsan in https://github.com/apache/opendal/pull/5261
File.readline by @TennyZhuang in https://github.com/apache/opendal/pull/5271clap_derive to reduce boilerplate code by @koushiro in https://github.com/apache/opendal/pull/5233[DISCUSS] prefix for discussion by @Xuanwo in https://github.com/apache/opendal/pull/5210is_exist logic by @simonsan in https://github.com/apache/opendal/pull/5261feat(bindings/c): add opendal_operator_exists and mark is_exist deprecated by @PragmaTwice in https://github.com/apache/opendal/pull/5199
ManuallyDrop instead of forget to make sure pointer is valid by @ethe in https://github.com/apache/opendal/pull/5166feat(core)!: make list return path itself by @meteorgan in https://github.com/apache/opendal/pull/4959
num_cpus with std::thread::available_parallelism by @miroim in https://github.com/apache/opendal/pull/5080PrometheusClientLayerBuilder type by @koushiro in https://github.com/apache/opendal/pull/5093feat(ovfs): support read and write by @zjregee in https://github.com/apache/opendal/pull/5016
integrations/cloudfilter for ofs by @ho-229 in https://github.com/apache/opendal/pull/4935fn root semantics; fix missing root for some services; rm duplicated normalize ops by @yjhmelody in https://github.com/apache/opendal/pull/5035scheme field from PrometheusAccessor and PrometheusMetricWrapper type by @koushiro in https://github.com/apache/opendal/pull/5026starts_with by @haoqixu in https://github.com/apache/opendal/pull/5036increment_request_total of write operation by @koushiro in https://github.com/apache/opendal/pull/5023token method semantics by @yjhmelody in https://github.com/apache/opendal/pull/5045feat(ovfs): add lookup and unit tests by @zjregee in https://github.com/apache/opendal/pull/4997
feat(o): Add cargo-o layout by @Xuanwo in https://github.com/apache/opendal/pull/4934
put_multipart in object_store by @Rachelint in https://github.com/apache/opendal/pull/4793AsyncWriter for parquet integrations by @WenyXu in https://github.com/apache/opendal/pull/4958AsyncReader for parquet integrations by @WenyXu in https://github.com/apache/opendal/pull/4972allow_anonymous by @jdockerty in https://github.com/apache/opendal/pull/4979feat(services/fs): Support fs config by @meteorgan in https://github.com/apache/opendal/pull/4853
Buffer::to_bytes() by cloning contiguous bytes by @LDeakin in https://github.com/apache/opendal/pull/4858root on using PrometheusClientLayer by @flaneur2020 in https://github.com/apache/opendal/pull/4907Content-Type based on the extension in the path. by @czy-29 in https://github.com/apache/opendal/pull/4912Arc<AccessInfo> for metadata by @Lzzzzzt in https://github.com/apache/opendal/pull/4883MimeGuessLayer. by @czy-29 in https://github.com/apache/opendal/pull/4916refactor: Move ChunkedWrite logic into WriteContext by @Xuanwo in https://github.com/apache/opendal/pull/4826
oio::Write. by @yuchanns in https://github.com/apache/opendal/pull/4821feat(services/compfs): basic Access impl by @George-Miao in https://github.com/apache/opendal/pull/4693
Access impl by @George-Miao in https://github.com/apache/opendal/pull/4693OpendalStorage by @George-Miao in https://github.com/apache/opendal/pull/4765WriteOptions for write methods by @bxb100 in https://github.com/apache/opendal/pull/4785OpendalMetadata by @George-Miao in https://github.com/apache/opendal/pull/4819MadsimLayer by @zzzk1 in https://github.com/apache/opendal/pull/4788feat(core): sets default chunk_size and sends buffer > chunk_size directly by @evenyag in https://github.com/apache/opendal/pull/4710
size for RangeWrite. by @reswqa in https://github.com/apache/opendal/pull/4755/ by @yuchanns in https://github.com/apache/opendal/pull/4754feat(core/types): change oio::BlockingReader to Arc by @hoslo in https://github.com/apache/opendal/pull/4577
Arc<dyn oio::BlockingReader> by @hoslo in https://github.com/apache/opendal/pull/4577AccessorDyn by @morristai in https://github.com/apache/opendal/pull/4574ci: Address Node.js 16 actions are deprecated by @Xuanwo in https://github.com/apache/opendal/pull/4293
Arc::from_iter by @Xuanwo in https://github.com/apache/opendal/pull/4440HttpClient::with() constructor by @waynexia in https://github.com/apache/opendal/pull/4447Buffer as cache in RangeWrite by @reswqa in https://github.com/apache/opendal/pull/4476Buffer as cache in OneshotWrite by @reswqa in https://github.com/apache/opendal/pull/4477Buffer by @George-Miao in https://github.com/apache/opendal/pull/4530IoBuf for Buffer by @George-Miao in https://github.com/apache/opendal/pull/4532oio::Read to async in trait by @Xuanwo in https://github.com/apache/opendal/pull/4336oio::List to async fn in trait by @Xuanwo in https://github.com/apache/opendal/pull/4352oio::Write to async in trait by @Xuanwo in https://github.com/apache/opendal/pull/4358File::read to PyResult<&PyBytes> by @reswqa in https://github.com/apache/opendal/pull/4360oio::WriteBuf and oio::ChunkedBytes after refactor by @Xuanwo in https://github.com/apache/opendal/pull/4361ofs API public by @ho-229 in https://github.com/apache/opendal/pull/4387Accessor to async fn in trait by @George-Miao in https://github.com/apache/opendal/pull/4562Accessor by @George-Miao in https://github.com/apache/opendal/pull/4564size argument for python File::read by @reswqa in https://github.com/apache/opendal/pull/4359File::write should return the written bytes by @reswqa in https://github.com/apache/opendal/pull/4367WebdavFile continuous reading and writing by @G-XD in https://github.com/apache/opendal/pull/4374service-* from default features by @xxchan in https://github.com/apache/opendal/pull/4311yaml file type by @jbampton in https://github.com/apache/opendal/pull/4339rdf file type as indent_size = 2 by @jbampton in https://github.com/apache/opendal/pull/4341indent_style = tab for Go by @jbampton in https://github.com/apache/opendal/pull/4342feat(services/vercel_blob): support vercel blob by @hoslo in https://github.com/apache/opendal/pull/4103
= by @Xuanwo in https://github.com/apache/opendal/pull/4105core/src/services/http/docs.md by @jbampton in https://github.com/apache/opendal/pull/4226website/README.md by @jbampton in https://github.com/apache/opendal/pull/4228github to GitHub by @jbampton in https://github.com/apache/opendal/pull/4232bindings/c/CONTRIBUTING.md by @jbampton in https://github.com/apache/opendal/pull/4235CONTRIBUTING by @jbampton in https://github.com/apache/opendal/pull/4237bindings/README.md by @jbampton in https://github.com/apache/opendal/pull/4238examples/rust by @jbampton in https://github.com/apache/opendal/pull/4241Who is using OpenDAL list by @jbampton in https://github.com/apache/opendal/pull/4263feat(ofs): introduce ofs execute bin by @oowl in https://github.com/apache/opendal/pull/4033
feat: add behavior tests for blocking buffer reader by @WenyXu in https://github.com/apache/opendal/pull/3872
MultipartUploadWriter by @WenyXu in https://github.com/apache/opendal/pull/3915RangeWriter by @WenyXu in https://github.com/apache/opendal/pull/3923concurrent and buffer parameters into FuzzInput by @WenyXu in https://github.com/apache/opendal/pull/3921From<Error> by @bokket in https://github.com/apache/opendal/pull/3891From<Error> by @suyanhanx in https://github.com/apache/opendal/pull/3903From<Error> by @suyanhanx in https://github.com/apache/opendal/pull/3910From<Error> by @G-XD in https://github.com/apache/opendal/pull/3914From<Error> by @suyanhanx in https://github.com/apache/opendal/pull/3938next_offset by @WenyXu in https://github.com/apache/opendal/pull/3927feat(service/memcached): Add MemCachedConfig by @ankit-pn in https://github.com/apache/opendal/pull/3827
CompleteReader by @WenyXu in https://github.com/apache/opendal/pull/3861bindings_python.yml by @messense in https://github.com/apache/opendal/pull/3837BufferReader by @WenyXu in https://github.com/apache/opendal/pull/3864cur of BufferReader by @WenyXu in https://github.com/apache/opendal/pull/3865feat(core): service add HuggingFace file system by @morristai in https://github.com/apache/opendal/pull/3670
actual & expected to pass ci by @Young-Flash in https://github.com/apache/opendal/pull/3733get_file_id_by_path by @G-XD in https://github.com/apache/opendal/pull/3801feat(bindings/C): Add opendal_operator_rename and opendal_operator_copy by @jiaoew1991 in https://github.com/apache/opendal/pull/3517
ftp for python and java binding by @ZutJoe in https://github.com/apache/opendal/pull/3659Page to List by @Xuanwo in https://github.com/apache/opendal/pull/3589raw::tests been excluded unexpectedly by @Xuanwo in https://github.com/apache/opendal/pull/3623stat and stat_with by @Xuanwo in https://github.com/apache/opendal/pull/3657feat(binding/java): add rename support by @G-XD in https://github.com/apache/opendal/pull/3238
rename support by @G-XD in https://github.com/apache/opendal/pull/3238Metadata a POJO by @G-XD in https://github.com/apache/opendal/pull/3277memoryview instead of bytes to avoid copy by @messense in https://github.com/apache/opendal/pull/3310Metadata::metakey() api by @G-XD in https://github.com/apache/opendal/pull/3373list_with in Operator::list by @G-XD in https://github.com/apache/opendal/pull/3305OPENDAL_DISABLE_RANDOM_ROOT by @suyanhanx in https://github.com/apache/opendal/pull/3456connection_string config description in doc by @xring in https://github.com/apache/opendal/pull/3388range_reader change in upgrade doc by @wcy-fdu in https://github.com/apache/opendal/pull/3401testWriteFileWithNonAsciiName behavior test by @G-XD in https://github.com/apache/opendal/pull/3424linux-aarch_64 by @amunra in https://github.com/apache/opendal/pull/3527feat: allow using prometheus-client crate with PrometheusClientLayer by @flaneur2020 in https://github.com/apache/opendal/pull/3134
prometheus-client crate with PrometheusClientLayer by @flaneur2020 in https://github.com/apache/opendal/pull/3134BlockingLayer for non-blocking services that don't support blocking by @messense in https://github.com/apache/opendal/pull/3198copy test by @G-XD in https://github.com/apache/opendal/pull/3207WebdavFs to dav-server-fs-opendal by @Young-Flash in https://github.com/apache/opendal/pull/3119feat(service/etcd): support list by @G-XD in https://github.com/apache/opendal/pull/2755
read_dir by @Young-Flash in https://github.com/apache/opendal/pull/2736OpMonad to support custom IO monad by @silver-ymz in https://github.com/apache/opendal/pull/2789WebdavMetaData by @Young-Flash in https://github.com/apache/opendal/pull/2857_pin with !Unpin as argument by @morristai in https://github.com/apache/opendal/pull/2886content_length to writer by @Xuanwo in https://github.com/apache/opendal/pull/3044parse_batch_delete_response with Multipart::parse by @G-XD in https://github.com/apache/opendal/pull/3071webdav_put signatures by using OpWrite. by @laipz8200 in https://github.com/apache/opendal/pull/3076webdav_get. by @laipz8200 in https://github.com/apache/opendal/pull/3081oss_put_object signatures by using OpWrite by @sysu-yunz in https://github.com/apache/opendal/pull/3080http methods signature by using OpRead/OpStat by @miroim in https://github.com/apache/opendal/pull/3083gcs methods signature by using OpXxxx by @wavty in https://github.com/apache/opendal/pull/3087fixtures from core/src/services/{service} to top-level fixtures/{service} by @G-XD in https://github.com/apache/opendal/pull/3088webhdfs methods signature by using OpXxxx by @cxorm in https://github.com/apache/opendal/pull/3109us-east-1 for non-aws s3 by @G-XD in https://github.com/apache/opendal/pull/2812flush before sync_all by @WenyXu in https://github.com/apache/opendal/pull/3053Github to GitHub by @jbampton in https://github.com/apache/opendal/pull/3012MacOS to macOS by @jbampton in https://github.com/apache/opendal/pull/3013feat: add a behaviour test for InvalidInput by @dqhl76 in https://github.com/apache/opendal/pull/2644
stat by @suyanhanx in https://github.com/apache/opendal/pull/2649HADOOP_CONF_DIR setting in guidance document by @wcy-fdu in https://github.com/apache/opendal/pull/2713feat(binding/lua): add rename and create_dir operator function by @oowl in https://github.com/apache/opendal/pull/2564
oay.toml by @messense in https://github.com/apache/opendal/pull/2615delete_with on blocking operator by @suyanhanx in https://github.com/apache/opendal/pull/2633feat(raw/http_util): Implement mixed multipart parser by @Xuanwo in https://github.com/apache/opendal/pull/2430
is_exist create_dir copy rename delete by @silver-ymz in https://github.com/apache/opendal/pull/2475Monad wrapper by @silver-ymz in https://github.com/apache/opendal/pull/2482std feature for futures to allow futures::AsyncRead by @Xuanwo in https://github.com/apache/opendal/pull/2450vercel artifacts for FromStr by @cijiugechu in https://github.com/apache/opendal/pull/2519create with new by @NiwakaDev in https://github.com/apache/opendal/pull/2427feat(services/webdav): support redirection when get 302/307 response during read operation by @Yansongsongsong in https://github.com/apache/opendal/pu
Nothing published for this version
ci: Fix Node.js 12 actions deprecated warning
ops to raw::ops (#2325)feat(services/onedrive): Implement list, create_dir, stat and upload ing large files
list, create_dir, stat and upload
ing large files (#2231)abi3 to avoid building on different python
version (#2255)append (#2260)scan from raw API (#2262)feat(writer): configurable buffer size of unsized write
" (#2226)feat(services/onedrive): Add read and write support for OneDrive
read_with_override_cache_control (#2155)Contributing and add Developing (#2169)feat(core): add test for stat_with_if_none_match
stat_with_if_none_match (#2122)cache-control to Metadata (#2136)write_with_cache_control (#2131)write_with_content_type (#2140)read_with_if_none_match (#2141)feat: Add behavior test for read_with_if_match & stat_with_if_match
PreconditionFailed to ConditionNotMatch (#2104)start-after support for list (#2096)content length=0 for gcs initiate_resumable_upload (#2110)package.json repository info (#2078)feat: Add OpenTelemetry Trace Layer
start-after support for list (#2071)--provenance (#2046)feat: Add wasabi service implementation
Create to CreateDir for its behavior changed (#2019)feat(services/azdfs): support rename
feat(bindings/java): add cucumber test
copy and rename (#1866)feat(bindings/nodejs): Support presign
oli rm (#1774)oli stat (#1778)oli cp -r (#1787)Operator::scan and Operator::remove_all (#1779)feat(oli): add config file to oli
feat: Infer storage name based on endpoint
index.d.ts (#1664)__repr__ to Operator and AsyncOperator (#1683)pyo3/entension-module feature when building with maturin (#1680)Your coding agent can read these notes before it upgrades. Set up the MCP server →