This is page 74 of 74. Use http://codebase.md/apache/opendal?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .asf.yaml
├── .config
│ └── nextest.toml
├── .devcontainer
│ ├── devcontainer.json
│ └── post_create.sh
├── .editorconfig
├── .env.example
├── .gitattributes
├── .github
│ ├── actions
│ │ ├── fuzz_test
│ │ │ └── action.yaml
│ │ ├── setup
│ │ │ └── action.yaml
│ │ ├── setup-hadoop
│ │ │ └── action.yaml
│ │ ├── setup-ocaml
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_c
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_cpp
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_go
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_java
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_nodejs
│ │ │ └── action.yaml
│ │ ├── test_behavior_binding_python
│ │ │ └── action.yaml
│ │ ├── test_behavior_core
│ │ │ └── action.yaml
│ │ └── test_behavior_integration_object_store
│ │ └── action.yml
│ ├── CODEOWNERS
│ ├── dependabot.yml
│ ├── ISSUE_TEMPLATE
│ │ ├── 1-bug-report.yml
│ │ ├── 2-feature-request.yml
│ │ ├── 3-new-release.md
│ │ └── config.yml
│ ├── pull_request_template.md
│ ├── release.yml
│ ├── scripts
│ │ ├── test_behavior
│ │ │ ├── __init__.py
│ │ │ ├── plan.py
│ │ │ └── test_plan.py
│ │ ├── test_go_binding
│ │ │ ├── generate_test_scheme.py
│ │ │ └── matrix.yaml
│ │ └── weekly_update
│ │ ├── .gitignore
│ │ ├── .python-version
│ │ ├── main.py
│ │ ├── pyproject.toml
│ │ ├── README.md
│ │ └── uv.lock
│ ├── services
│ │ ├── aliyun_drive
│ │ │ └── aliyun_drive
│ │ │ └── disable_action.yml
│ │ ├── alluxio
│ │ │ └── alluxio
│ │ │ └── action.yml
│ │ ├── azblob
│ │ │ ├── azure_azblob
│ │ │ │ └── action.yml
│ │ │ └── azurite_azblob
│ │ │ └── action.yml
│ │ ├── azdls
│ │ │ └── azdls
│ │ │ └── action.yml
│ │ ├── azfile
│ │ │ └── azfile
│ │ │ └── action.yml
│ │ ├── b2
│ │ │ └── b2
│ │ │ └── action.yml
│ │ ├── cacache
│ │ │ └── cacache
│ │ │ └── action.yml
│ │ ├── compfs
│ │ │ └── compfs
│ │ │ └── action.yml
│ │ ├── cos
│ │ │ └── cos
│ │ │ └── action.yml
│ │ ├── dashmap
│ │ │ └── dashmap
│ │ │ └── action.yml
│ │ ├── dropbox
│ │ │ └── dropbox
│ │ │ └── disable_action.yml
│ │ ├── etcd
│ │ │ ├── etcd
│ │ │ │ └── action.yml
│ │ │ ├── etcd-cluster
│ │ │ │ └── action.yml
│ │ │ └── etcd-tls
│ │ │ └── action.yml
│ │ ├── fs
│ │ │ └── local_fs
│ │ │ └── action.yml
│ │ ├── ftp
│ │ │ └── vsftpd
│ │ │ └── disable_action.yml
│ │ ├── gcs
│ │ │ ├── gcs
│ │ │ │ └── action.yml
│ │ │ └── gcs_with_default_storage_class
│ │ │ └── action.yml
│ │ ├── gdrive
│ │ │ └── gdrive
│ │ │ └── action.yml
│ │ ├── gridfs
│ │ │ ├── gridfs
│ │ │ │ └── action.yml
│ │ │ └── gridfs_with_basic_auth
│ │ │ └── action.yml
│ │ ├── hdfs
│ │ │ ├── hdfs_cluster
│ │ │ │ └── action.yml
│ │ │ ├── hdfs_cluster_with_atomic_write_dir
│ │ │ │ └── action.yml
│ │ │ ├── hdfs_default
│ │ │ │ └── action.yml
│ │ │ ├── hdfs_default_gcs
│ │ │ │ └── action.yml
│ │ │ ├── hdfs_default_on_azurite_azblob
│ │ │ │ └── action.yml
│ │ │ ├── hdfs_default_on_minio_s3
│ │ │ │ └── action.yml
│ │ │ └── hdfs_default_with_atomic_write_dir
│ │ │ └── action.yml
│ │ ├── hdfs_native
│ │ │ └── hdfs_native_cluster
│ │ │ └── action.yml
│ │ ├── http
│ │ │ ├── caddy
│ │ │ │ └── action.yml
│ │ │ └── nginx
│ │ │ └── action.yml
│ │ ├── huggingface
│ │ │ └── huggingface
│ │ │ └── action.yml
│ │ ├── koofr
│ │ │ └── koofr
│ │ │ └── disable_action.yml
│ │ ├── memcached
│ │ │ ├── memcached
│ │ │ │ └── action.yml
│ │ │ └── memcached_with_auth
│ │ │ └── action.yml
│ │ ├── memory
│ │ │ └── memory
│ │ │ └── action.yml
│ │ ├── mini_moka
│ │ │ └── mini_moka
│ │ │ └── action.yml
│ │ ├── moka
│ │ │ └── moka
│ │ │ └── action.yml
│ │ ├── mongodb
│ │ │ ├── mongodb_with_basic_auth
│ │ │ │ └── action.yml
│ │ │ └── mongodb_with_no_auth
│ │ │ └── action.yml
│ │ ├── monoiofs
│ │ │ └── monoiofs
│ │ │ └── action.yml
│ │ ├── mysql
│ │ │ └── mysql
│ │ │ └── action.yml
│ │ ├── oss
│ │ │ ├── oss
│ │ │ │ └── action.yml
│ │ │ └── oss_with_versioning
│ │ │ └── action.yml
│ │ ├── persy
│ │ │ └── persy
│ │ │ └── action.yml
│ │ ├── postgresql
│ │ │ └── postgresql
│ │ │ └── action.yml
│ │ ├── redb
│ │ │ └── redb
│ │ │ └── action.yml
│ │ ├── redis
│ │ │ ├── dragonfly
│ │ │ │ └── action.yml
│ │ │ ├── kvrocks
│ │ │ │ └── action.yml
│ │ │ ├── redis
│ │ │ │ └── action.yml
│ │ │ ├── redis_tls
│ │ │ │ └── action.yml
│ │ │ ├── redis_with_cluster
│ │ │ │ └── action.yml
│ │ │ └── redis_with_cluster_tls
│ │ │ └── action.yml
│ │ ├── rocksdb
│ │ │ └── rocksdb
│ │ │ └── action.yml
│ │ ├── s3
│ │ │ ├── 0_minio_s3
│ │ │ │ └── action.yml
│ │ │ ├── aws_s3
│ │ │ │ └── action.yml
│ │ │ ├── aws_s3_with_list_objects_v1
│ │ │ │ └── action.yml
│ │ │ ├── aws_s3_with_sse_c
│ │ │ │ └── action.yml
│ │ │ ├── aws_s3_with_versioning
│ │ │ │ └── action.yml
│ │ │ ├── aws_s3_with_virtual_host
│ │ │ │ └── action.yml
│ │ │ ├── ceph_radios_s3_with_versioning
│ │ │ │ └── disable_action.yml
│ │ │ ├── ceph_rados_s3
│ │ │ │ └── disable_action.yml
│ │ │ ├── minio_s3_with_anonymous
│ │ │ │ └── action.yml
│ │ │ ├── minio_s3_with_list_objects_v1
│ │ │ │ └── action.yml
│ │ │ ├── minio_s3_with_versioning
│ │ │ │ └── action.yml
│ │ │ └── r2
│ │ │ └── disabled_action.yml
│ │ ├── seafile
│ │ │ └── seafile
│ │ │ └── action.yml
│ │ ├── sftp
│ │ │ ├── sftp
│ │ │ │ └── action.yml
│ │ │ └── sftp_with_default_root
│ │ │ └── action.yml
│ │ ├── sled
│ │ │ ├── sled
│ │ │ │ └── action.yml
│ │ │ └── sled_with_tree
│ │ │ └── action.yml
│ │ ├── sqlite
│ │ │ └── sqlite
│ │ │ └── action.yml
│ │ ├── swift
│ │ │ ├── ceph_rados_swift
│ │ │ │ └── action.yml
│ │ │ └── swift
│ │ │ └── action.yml
│ │ ├── tikv
│ │ │ └── tikv
│ │ │ └── disable_action.yml
│ │ ├── webdav
│ │ │ ├── 0_nginx
│ │ │ │ └── action.yml
│ │ │ ├── jfrog
│ │ │ │ └── disabled_action.yml
│ │ │ ├── nextcloud
│ │ │ │ └── action.yml
│ │ │ ├── nginx_with_empty_password
│ │ │ │ └── action.yml
│ │ │ ├── nginx_with_password
│ │ │ │ └── action.yml
│ │ │ ├── nginx_with_redirect
│ │ │ │ └── action.yml
│ │ │ └── owncloud
│ │ │ └── action.yml
│ │ └── webhdfs
│ │ ├── webhdfs
│ │ │ └── action.yml
│ │ ├── webhdfs_with_list_batch_disabled
│ │ │ └── action.yml
│ │ └── webhdfs_with_user_name
│ │ └── action.yml
│ └── workflows
│ ├── ci_bindings_c.yml
│ ├── ci_bindings_cpp.yml
│ ├── ci_bindings_d.yml
│ ├── ci_bindings_dart.yml
│ ├── ci_bindings_dotnet.yml
│ ├── ci_bindings_go.yml
│ ├── ci_bindings_haskell.yml
│ ├── ci_bindings_java.yml
│ ├── ci_bindings_lua.yml
│ ├── ci_bindings_nodejs.yml
│ ├── ci_bindings_ocaml.yml
│ ├── ci_bindings_php.yml
│ ├── ci_bindings_python.yml
│ ├── ci_bindings_ruby.yml
│ ├── ci_bindings_swift.yml
│ ├── ci_bindings_zig.yml
│ ├── ci_check.yml
│ ├── ci_core.yml
│ ├── ci_integration_dav_server.yml
│ ├── ci_integration_object_store.yml
│ ├── ci_integration_parquet.yml
│ ├── ci_integration_spring.yml
│ ├── ci_integration_unftp_sbe.yml
│ ├── ci_odev.yml
│ ├── ci_weekly_update.yml
│ ├── discussion-thread-link.yml
│ ├── docs.yml
│ ├── full-ci-promote.yml
│ ├── release_dart.yml
│ ├── release_java.yml
│ ├── release_nodejs.yml
│ ├── release_python.yml
│ ├── release_ruby.yml
│ ├── release_rust.yml
│ ├── service_test_ghac.yml
│ ├── test_behavior_binding_c.yml
│ ├── test_behavior_binding_cpp.yml
│ ├── test_behavior_binding_go.yml
│ ├── test_behavior_binding_java.yml
│ ├── test_behavior_binding_nodejs.yml
│ ├── test_behavior_binding_python.yml
│ ├── test_behavior_core.yml
│ ├── test_behavior_integration_object_store.yml
│ ├── test_behavior.yml
│ ├── test_edge.yml
│ └── test_fuzz.yml
├── .gitignore
├── .taplo.toml
├── .typos.toml
├── .vscode
│ └── settings.json
├── .yamlfmt
├── AGENTS.md
├── bindings
│ ├── java
│ │ ├── .cargo
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── .mvn
│ │ │ └── wrapper
│ │ │ └── maven-wrapper.properties
│ │ ├── Cargo.toml
│ │ ├── DEPENDENCIES.md
│ │ ├── DEPENDENCIES.rust.tsv
│ │ ├── mvnw
│ │ ├── mvnw.cmd
│ │ ├── pom.xml
│ │ ├── README.md
│ │ ├── src
│ │ │ ├── async_operator.rs
│ │ │ ├── convert.rs
│ │ │ ├── error.rs
│ │ │ ├── executor.rs
│ │ │ ├── layer.rs
│ │ │ ├── lib.rs
│ │ │ ├── main
│ │ │ │ ├── java
│ │ │ │ │ └── org
│ │ │ │ │ └── apache
│ │ │ │ │ └── opendal
│ │ │ │ │ ├── AsyncExecutor.java
│ │ │ │ │ ├── AsyncOperator.java
│ │ │ │ │ ├── Capability.java
│ │ │ │ │ ├── Entry.java
│ │ │ │ │ ├── Environment.java
│ │ │ │ │ ├── layer
│ │ │ │ │ │ ├── ConcurrentLimitLayer.java
│ │ │ │ │ │ ├── package-info.java
│ │ │ │ │ │ └── RetryLayer.java
│ │ │ │ │ ├── Layer.java
│ │ │ │ │ ├── ListOptions.java
│ │ │ │ │ ├── Metadata.java
│ │ │ │ │ ├── NativeLibrary.java
│ │ │ │ │ ├── NativeObject.java
│ │ │ │ │ ├── OpenDAL.java
│ │ │ │ │ ├── OpenDALException.java
│ │ │ │ │ ├── Operator.java
│ │ │ │ │ ├── OperatorInfo.java
│ │ │ │ │ ├── OperatorInputStream.java
│ │ │ │ │ ├── OperatorOutputStream.java
│ │ │ │ │ ├── package-info.java
│ │ │ │ │ ├── PresignedRequest.java
│ │ │ │ │ ├── ReadOptions.java
│ │ │ │ │ ├── ServiceConfig.java
│ │ │ │ │ ├── StatOptions.java
│ │ │ │ │ └── WriteOptions.java
│ │ │ │ └── resources
│ │ │ │ ├── bindings.properties
│ │ │ │ └── META-INF
│ │ │ │ └── NOTICE
│ │ │ ├── operator_input_stream.rs
│ │ │ ├── operator_output_stream.rs
│ │ │ ├── operator.rs
│ │ │ ├── test
│ │ │ │ └── java
│ │ │ │ └── org
│ │ │ │ └── apache
│ │ │ │ └── opendal
│ │ │ │ └── test
│ │ │ │ ├── AsyncExecutorTest.java
│ │ │ │ ├── behavior
│ │ │ │ │ ├── AsyncCopyTest.java
│ │ │ │ │ ├── AsyncCreateDirTest.java
│ │ │ │ │ ├── AsyncListTest.java
│ │ │ │ │ ├── AsyncPresignTest.java
│ │ │ │ │ ├── AsyncReadOnlyTest.java
│ │ │ │ │ ├── AsyncRenameTest.java
│ │ │ │ │ ├── AsyncStatOptionsTest.java
│ │ │ │ │ ├── AsyncWriteOptionsTest.java
│ │ │ │ │ ├── AsyncWriteTest.java
│ │ │ │ │ ├── BehaviorExtension.java
│ │ │ │ │ ├── BehaviorTestBase.java
│ │ │ │ │ ├── BlockingCopyTest.java
│ │ │ │ │ ├── BlockingCreateDirTest.java
│ │ │ │ │ ├── BlockingListTest.java
│ │ │ │ │ ├── BlockingReadOnlyTest.java
│ │ │ │ │ ├── BlockingRenameTest.java
│ │ │ │ │ ├── BlockingStatOptionsTest.java
│ │ │ │ │ ├── BlockingWriteOptionTest.java
│ │ │ │ │ ├── BlockingWriteTest.java
│ │ │ │ │ └── RegressionTest.java
│ │ │ │ ├── condition
│ │ │ │ │ └── OpenDALExceptionCondition.java
│ │ │ │ ├── LayerTest.java
│ │ │ │ ├── MetadataTest.java
│ │ │ │ ├── OperatorDuplicateTest.java
│ │ │ │ ├── OperatorInfoTest.java
│ │ │ │ ├── OperatorInputOutputStreamTest.java
│ │ │ │ ├── OperatorUtf8DecodeTest.java
│ │ │ │ └── UtilityTest.java
│ │ │ └── utility.rs
│ │ ├── tools
│ │ │ └── build.py
│ │ ├── upgrade.md
│ │ └── users.md
│ ├── nodejs
│ │ ├── .cargo
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── .node-version
│ │ ├── .npmignore
│ │ ├── .npmrc
│ │ ├── .prettierignore
│ │ ├── benchmark
│ │ │ ├── deno.ts
│ │ │ ├── node.js
│ │ │ └── README.md
│ │ ├── build.rs
│ │ ├── Cargo.toml
│ │ ├── CONTRIBUTING.md
│ │ ├── DEPENDENCIES.md
│ │ ├── DEPENDENCIES.rust.tsv
│ │ ├── devbox.json
│ │ ├── devbox.lock
│ │ ├── generated.d.ts
│ │ ├── generated.js
│ │ ├── index.cjs
│ │ ├── index.d.ts
│ │ ├── index.mjs
│ │ ├── npm
│ │ │ ├── darwin-arm64
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── darwin-x64
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── linux-arm64-gnu
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── linux-arm64-musl
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── linux-x64-gnu
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── linux-x64-musl
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ ├── win32-arm64-msvc
│ │ │ │ ├── package.json
│ │ │ │ └── README.md
│ │ │ └── win32-x64-msvc
│ │ │ ├── package.json
│ │ │ └── README.md
│ │ ├── package.json
│ │ ├── pnpm-lock.yaml
│ │ ├── README.md
│ │ ├── scripts
│ │ │ └── header.mjs
│ │ ├── src
│ │ │ ├── capability.rs
│ │ │ ├── layer.rs
│ │ │ ├── lib.rs
│ │ │ └── options.rs
│ │ ├── tests
│ │ │ ├── service.test.mjs
│ │ │ ├── suites
│ │ │ │ ├── async.suite.mjs
│ │ │ │ ├── asyncDeleteOptions.suite.mjs
│ │ │ │ ├── asyncLister.suite.mjs
│ │ │ │ ├── asyncListOptions.suite.mjs
│ │ │ │ ├── asyncReadOptions.suite.mjs
│ │ │ │ ├── asyncStatOptions.suite.mjs
│ │ │ │ ├── asyncWriteOptions.suite.mjs
│ │ │ │ ├── index.mjs
│ │ │ │ ├── layer.suite.mjs
│ │ │ │ ├── services.suite.mjs
│ │ │ │ ├── sync.suite.mjs
│ │ │ │ ├── syncDeleteOptions.suite.mjs
│ │ │ │ ├── syncLister.suite.mjs
│ │ │ │ ├── syncListOptions.suite.mjs
│ │ │ │ ├── syncReadOptions.suite.mjs
│ │ │ │ ├── syncStatOptions.suite.mjs
│ │ │ │ └── syncWriteOptions.suite.mjs
│ │ │ └── utils.mjs
│ │ ├── theme
│ │ │ ├── index.tsx
│ │ │ └── package.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.theme.json
│ │ ├── typedoc.json
│ │ ├── upgrade.md
│ │ └── vitest.config.mjs
│ ├── python
│ │ ├── .gitignore
│ │ ├── benchmark
│ │ │ ├── async_opendal_benchmark.py
│ │ │ ├── async_origin_s3_benchmark_with_gevent.py
│ │ │ └── README.md
│ │ ├── Cargo.toml
│ │ ├── CONTRIBUTING.md
│ │ ├── DEPENDENCIES.md
│ │ ├── DEPENDENCIES.rust.tsv
│ │ ├── docs
│ │ │ ├── api
│ │ │ │ ├── async_file.md
│ │ │ │ ├── async_operator.md
│ │ │ │ ├── capability.md
│ │ │ │ ├── exceptions.md
│ │ │ │ ├── file.md
│ │ │ │ ├── layers.md
│ │ │ │ ├── operator.md
│ │ │ │ └── types.md
│ │ │ └── index.md
│ │ ├── justfile
│ │ ├── mkdocs.yml
│ │ ├── pyproject.toml
│ │ ├── pyrightconfig.json
│ │ ├── python
│ │ │ └── opendal
│ │ │ ├── __init__.py
│ │ │ ├── capability.pyi
│ │ │ ├── exceptions.pyi
│ │ │ ├── file.pyi
│ │ │ ├── layers.pyi
│ │ │ ├── operator.pyi
│ │ │ ├── py.typed
│ │ │ ├── services.pyi
│ │ │ └── types.pyi
│ │ ├── README.md
│ │ ├── ruff.toml
│ │ ├── src
│ │ │ ├── capability.rs
│ │ │ ├── errors.rs
│ │ │ ├── file.rs
│ │ │ ├── layers.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── metadata.rs
│ │ │ ├── operator.rs
│ │ │ ├── options.rs
│ │ │ ├── services.rs
│ │ │ └── utils.rs
│ │ ├── template
│ │ │ └── module.html.jinja2
│ │ ├── tests
│ │ │ ├── conftest.py
│ │ │ ├── test_async_check.py
│ │ │ ├── test_async_copy.py
│ │ │ ├── test_async_delete.py
│ │ │ ├── test_async_exists.py
│ │ │ ├── test_async_list.py
│ │ │ ├── test_async_pickle_types.py
│ │ │ ├── test_async_rename.py
│ │ │ ├── test_capability.py
│ │ │ ├── test_exceptions.py
│ │ │ ├── test_pickle_rw.py
│ │ │ ├── test_read.py
│ │ │ ├── test_sync_check.py
│ │ │ ├── test_sync_copy.py
│ │ │ ├── test_sync_delete.py
│ │ │ ├── test_sync_exists.py
│ │ │ ├── test_sync_list.py
│ │ │ ├── test_sync_pickle_types.py
│ │ │ ├── test_sync_rename.py
│ │ │ └── test_write.py
│ │ ├── upgrade.md
│ │ ├── users.md
│ │ └── uv.lock
│ └── README.md
├── CHANGELOG.md
├── CITATION.cff
├── CLAUDE.md
├── CONTRIBUTING.md
├── core
│ ├── benches
│ │ ├── ops
│ │ │ ├── main.rs
│ │ │ ├── read.rs
│ │ │ ├── README.md
│ │ │ ├── utils.rs
│ │ │ └── write.rs
│ │ ├── README.md
│ │ ├── types
│ │ │ ├── buffer.rs
│ │ │ ├── main.rs
│ │ │ ├── README.md
│ │ │ └── tasks.rs
│ │ ├── vs_fs
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── src
│ │ │ └── main.rs
│ │ └── vs_s3
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── src
│ │ └── main.rs
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── CHANGELOG.md
│ ├── CONTRIBUTING.md
│ ├── core
│ │ ├── Cargo.toml
│ │ └── src
│ │ ├── blocking
│ │ │ ├── delete.rs
│ │ │ ├── list.rs
│ │ │ ├── mod.rs
│ │ │ ├── operator.rs
│ │ │ ├── read
│ │ │ │ ├── buffer_iterator.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── reader.rs
│ │ │ │ ├── std_bytes_iterator.rs
│ │ │ │ └── std_reader.rs
│ │ │ └── write
│ │ │ ├── mod.rs
│ │ │ ├── std_writer.rs
│ │ │ └── writer.rs
│ │ ├── docs
│ │ │ ├── comparisons
│ │ │ │ ├── mod.rs
│ │ │ │ └── vs_object_store.md
│ │ │ ├── concepts.rs
│ │ │ ├── internals
│ │ │ │ ├── accessor.rs
│ │ │ │ ├── layer.rs
│ │ │ │ └── mod.rs
│ │ │ ├── mod.rs
│ │ │ ├── performance
│ │ │ │ ├── concurrent_write.md
│ │ │ │ ├── http_optimization.md
│ │ │ │ └── mod.rs
│ │ │ ├── rfcs
│ │ │ │ ├── 0000_example.md
│ │ │ │ ├── 0041_object_native_api.md
│ │ │ │ ├── 0044_error_handle.md
│ │ │ │ ├── 0057_auto_region.md
│ │ │ │ ├── 0069_object_stream.md
│ │ │ │ ├── 0090_limited_reader.md
│ │ │ │ ├── 0112_path_normalization.md
│ │ │ │ ├── 0191_async_streaming_io.md
│ │ │ │ ├── 0203_remove_credential.md
│ │ │ │ ├── 0221_create_dir.md
│ │ │ │ ├── 0247_retryable_error.md
│ │ │ │ ├── 0293_object_id.md
│ │ │ │ ├── 0337_dir_entry.md
│ │ │ │ ├── 0409_accessor_capabilities.md
│ │ │ │ ├── 0413_presign.md
│ │ │ │ ├── 0423_command_line_interface.md
│ │ │ │ ├── 0429_init_from_iter.md
│ │ │ │ ├── 0438_multipart.md
│ │ │ │ ├── 0443_gateway.md
│ │ │ │ ├── 0501_new_builder.md
│ │ │ │ ├── 0554_write_refactor.md
│ │ │ │ ├── 0561_list_metadata_reuse.md
│ │ │ │ ├── 0599_blocking_api.md
│ │ │ │ ├── 0623_redis_service.md
│ │ │ │ ├── 0627_split_capabilities.md
│ │ │ │ ├── 0661_path_in_accessor.md
│ │ │ │ ├── 0793_generic_kv_services.md
│ │ │ │ ├── 0926_object_reader.md
│ │ │ │ ├── 0977_refactor_error.md
│ │ │ │ ├── 1085_object_handler.md
│ │ │ │ ├── 1391_object_metadataer.md
│ │ │ │ ├── 1398_query_based_metadata.md
│ │ │ │ ├── 1420_object_writer.md
│ │ │ │ ├── 1477_remove_object_concept.md
│ │ │ │ ├── 1735_operation_extension.md
│ │ │ │ ├── 2083_writer_sink_api.md
│ │ │ │ ├── 2133_append_api.md
│ │ │ │ ├── 2299_chain_based_operator_api.md
│ │ │ │ ├── 2602_object_versioning.md
│ │ │ │ ├── 2758_merge_append_into_write.md
│ │ │ │ ├── 2774_lister_api.md
│ │ │ │ ├── 2779_list_with_metakey.md
│ │ │ │ ├── 2852_native_capability.md
│ │ │ │ ├── 2884_merge_range_read_into_read.md
│ │ │ │ ├── 3017_remove_write_copy_from.md
│ │ │ │ ├── 3197_config.md
│ │ │ │ ├── 3232_align_list_api.md
│ │ │ │ ├── 3243_list_prefix.md
│ │ │ │ ├── 3356_lazy_reader.md
│ │ │ │ ├── 3526_list_recursive.md
│ │ │ │ ├── 3574_concurrent_stat_in_list.md
│ │ │ │ ├── 3734_buffered_reader.md
│ │ │ │ ├── 3898_concurrent_writer.md
│ │ │ │ ├── 3911_deleter_api.md
│ │ │ │ ├── 4382_range_based_read.md
│ │ │ │ ├── 4638_executor.md
│ │ │ │ ├── 5314_remove_metakey.md
│ │ │ │ ├── 5444_operator_from_uri.md
│ │ │ │ ├── 5479_context.md
│ │ │ │ ├── 5485_conditional_reader.md
│ │ │ │ ├── 5495_list_with_deleted.md
│ │ │ │ ├── 5556_write_returns_metadata.md
│ │ │ │ ├── 5871_read_returns_metadata.md
│ │ │ │ ├── 6189_remove_native_blocking.md
│ │ │ │ ├── 6209_glob_support.md
│ │ │ │ ├── 6213_options_api.md
│ │ │ │ ├── 6370_foyer_integration.md
│ │ │ │ ├── 6678_simulate_layer.md
│ │ │ │ ├── 6707_capability_override_layer.md
│ │ │ │ ├── 6817_checksum.md
│ │ │ │ ├── 6828_core.md
│ │ │ │ ├── 7130_route_layer.md
│ │ │ │ ├── mod.rs
│ │ │ │ └── README.md
│ │ │ └── upgrade.md
│ │ ├── layers
│ │ │ ├── complete.rs
│ │ │ ├── correctness_check.rs
│ │ │ ├── error_context.rs
│ │ │ ├── http_client.rs
│ │ │ ├── mod.rs
│ │ │ ├── simulate.rs
│ │ │ └── type_eraser.rs
│ │ ├── lib.rs
│ │ ├── raw
│ │ │ ├── accessor.rs
│ │ │ ├── atomic_util.rs
│ │ │ ├── enum_utils.rs
│ │ │ ├── futures_util.rs
│ │ │ ├── http_util
│ │ │ │ ├── body.rs
│ │ │ │ ├── bytes_content_range.rs
│ │ │ │ ├── bytes_range.rs
│ │ │ │ ├── client.rs
│ │ │ │ ├── error.rs
│ │ │ │ ├── header.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multipart.rs
│ │ │ │ └── uri.rs
│ │ │ ├── layer.rs
│ │ │ ├── mod.rs
│ │ │ ├── oio
│ │ │ │ ├── buf
│ │ │ │ │ ├── flex_buf.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── pooled_buf.rs
│ │ │ │ │ └── queue_buf.rs
│ │ │ │ ├── delete
│ │ │ │ │ ├── api.rs
│ │ │ │ │ ├── batch_delete.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── one_shot_delete.rs
│ │ │ │ ├── entry.rs
│ │ │ │ ├── list
│ │ │ │ │ ├── api.rs
│ │ │ │ │ ├── flat_list.rs
│ │ │ │ │ ├── hierarchy_list.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── page_list.rs
│ │ │ │ │ └── prefix_list.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── read
│ │ │ │ │ ├── api.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ └── write
│ │ │ │ ├── api.rs
│ │ │ │ ├── append_write.rs
│ │ │ │ ├── block_write.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multipart_write.rs
│ │ │ │ ├── one_shot_write.rs
│ │ │ │ └── position_write.rs
│ │ │ ├── operation.rs
│ │ │ ├── ops.rs
│ │ │ ├── path_cache.rs
│ │ │ ├── path.rs
│ │ │ ├── rps.rs
│ │ │ ├── serde_util.rs
│ │ │ ├── std_io_util.rs
│ │ │ ├── time.rs
│ │ │ ├── tokio_util.rs
│ │ │ └── version.rs
│ │ ├── services
│ │ │ ├── memory
│ │ │ │ ├── backend.rs
│ │ │ │ ├── config.rs
│ │ │ │ ├── core.rs
│ │ │ │ ├── deleter.rs
│ │ │ │ ├── docs.md
│ │ │ │ ├── lister.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── writer.rs
│ │ │ └── mod.rs
│ │ └── types
│ │ ├── buffer.rs
│ │ ├── builder.rs
│ │ ├── capability.rs
│ │ ├── context
│ │ │ ├── mod.rs
│ │ │ ├── read.rs
│ │ │ └── write.rs
│ │ ├── delete
│ │ │ ├── deleter.rs
│ │ │ ├── futures_delete_sink.rs
│ │ │ ├── input.rs
│ │ │ └── mod.rs
│ │ ├── entry.rs
│ │ ├── error.rs
│ │ ├── execute
│ │ │ ├── api.rs
│ │ │ ├── executor.rs
│ │ │ ├── executors
│ │ │ │ ├── mod.rs
│ │ │ │ └── tokio_executor.rs
│ │ │ └── mod.rs
│ │ ├── list.rs
│ │ ├── metadata.rs
│ │ ├── mod.rs
│ │ ├── mode.rs
│ │ ├── operator
│ │ │ ├── builder.rs
│ │ │ ├── info.rs
│ │ │ ├── mod.rs
│ │ │ ├── operator_futures.rs
│ │ │ ├── operator.rs
│ │ │ ├── registry.rs
│ │ │ └── uri.rs
│ │ ├── options.rs
│ │ ├── read
│ │ │ ├── buffer_stream.rs
│ │ │ ├── futures_async_reader.rs
│ │ │ ├── futures_bytes_stream.rs
│ │ │ ├── mod.rs
│ │ │ └── reader.rs
│ │ └── write
│ │ ├── buffer_sink.rs
│ │ ├── futures_async_writer.rs
│ │ ├── futures_bytes_sink.rs
│ │ ├── mod.rs
│ │ └── writer.rs
│ ├── DEPENDENCIES.md
│ ├── DEPENDENCIES.rust.tsv
│ ├── edge
│ │ ├── file_write_on_full_disk
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── src
│ │ │ └── main.rs
│ │ ├── README.md
│ │ ├── s3_aws_assume_role_with_web_identity
│ │ │ ├── Cargo.toml
│ │ │ ├── README.md
│ │ │ └── src
│ │ │ └── main.rs
│ │ └── s3_read_on_wasm
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── src
│ │ │ └── lib.rs
│ │ └── webdriver.json
│ ├── fuzz
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── fuzz_reader.rs
│ │ ├── fuzz_writer.rs
│ │ └── README.md
│ ├── layers
│ │ ├── async-backtrace
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── await-tree
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── capability-check
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── chaos
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── concurrent-limit
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── dtrace
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── fastmetrics
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── fastrace
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── foyer
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── hotpath
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── immutable-index
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── logging
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── metrics
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── mime-guess
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── observe-metrics-common
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── otelmetrics
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── oteltrace
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── prometheus
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── prometheus-client
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── retry
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── route
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── tail-cut
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── throttle
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── timeout
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ └── tracing
│ │ ├── Cargo.toml
│ │ └── src
│ │ └── lib.rs
│ ├── LICENSE
│ ├── README.md
│ ├── services
│ │ ├── aliyun-drive
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── alluxio
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── azblob
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── azdls
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── azfile
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── azure-common
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ └── lib.rs
│ │ ├── b2
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── cacache
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── cloudflare-kv
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── model.rs
│ │ │ └── writer.rs
│ │ ├── compfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── cos
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── d1
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── model.rs
│ │ │ └── writer.rs
│ │ ├── dashmap
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── dbfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── dropbox
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── builder.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── etcd
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── foundationdb
│ │ │ ├── build.rs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── fs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── ftp
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── err.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── gcs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── uri.rs
│ │ │ └── writer.rs
│ │ ├── gdrive
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── builder.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── ghac
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── github
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── mod.rs
│ │ │ └── writer.rs
│ │ ├── gridfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── hdfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── hdfs-native
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── http
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ └── lib.rs
│ │ ├── huggingface
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ └── lister.rs
│ │ ├── ipfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── ipld.rs
│ │ │ └── lib.rs
│ │ ├── ipmfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── builder.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── koofr
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── lakefs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── memcached
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── binary.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── mini_moka
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── moka
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── mongodb
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── monoiofs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── reader.rs
│ │ │ └── writer.rs
│ │ ├── mysql
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── obs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── onedrive
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── builder.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── graph_model.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── opfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ └── utils.rs
│ │ ├── oss
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── pcloud
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── persy
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── postgresql
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── redb
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── redis
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── delete.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── rocksdb
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── s3
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── compatible_services.md
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── mod.rs
│ │ │ └── writer.rs
│ │ ├── seafile
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── sftp
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── reader.rs
│ │ │ ├── utils.rs
│ │ │ └── writer.rs
│ │ ├── sled
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── sqlite
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── surrealdb
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── swift
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── compatible_services.md
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── tikv
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── upyun
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── vercel-artifacts
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── builder.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ └── writer.rs
│ │ ├── vercel-blob
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── webdav
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ └── writer.rs
│ │ ├── webhdfs
│ │ │ ├── Cargo.toml
│ │ │ └── src
│ │ │ ├── backend.rs
│ │ │ ├── config.rs
│ │ │ ├── core.rs
│ │ │ ├── deleter.rs
│ │ │ ├── docs.md
│ │ │ ├── error.rs
│ │ │ ├── lib.rs
│ │ │ ├── lister.rs
│ │ │ ├── message.rs
│ │ │ └── writer.rs
│ │ └── yandex-disk
│ │ ├── Cargo.toml
│ │ └── src
│ │ ├── backend.rs
│ │ ├── config.rs
│ │ ├── core.rs
│ │ ├── deleter.rs
│ │ ├── docs.md
│ │ ├── error.rs
│ │ ├── lib.rs
│ │ ├── lister.rs
│ │ └── writer.rs
│ ├── src
│ │ └── lib.rs
│ ├── testkit
│ │ ├── Cargo.toml
│ │ └── src
│ │ ├── lib.rs
│ │ ├── read.rs
│ │ ├── utils.rs
│ │ └── write.rs
│ ├── tests
│ │ ├── behavior
│ │ │ ├── async_copy.rs
│ │ │ ├── async_create_dir.rs
│ │ │ ├── async_delete.rs
│ │ │ ├── async_list.rs
│ │ │ ├── async_presign.rs
│ │ │ ├── async_read.rs
│ │ │ ├── async_rename.rs
│ │ │ ├── async_stat.rs
│ │ │ ├── async_write.rs
│ │ │ ├── main.rs
│ │ │ ├── README.md
│ │ │ └── utils.rs
│ │ └── data
│ │ ├── normal_dir
│ │ │ └── .gitkeep
│ │ ├── normal_file.txt
│ │ ├── special_dir !@#$%^&()_+-=;',
│ │ │ └── .gitkeep
│ │ └── special_file !@#$%^&()_+-=;',.txt
│ ├── upgrade.md
│ └── users.md
├── deny.toml
├── DEPENDENCIES.md
├── dev
│ ├── Cargo.lock
│ ├── Cargo.toml
│ ├── README.md
│ └── src
│ ├── generate
│ │ ├── java.j2
│ │ ├── java.rs
│ │ ├── mod.rs
│ │ ├── parser.rs
│ │ ├── python.j2
│ │ └── python.rs
│ ├── main.rs
│ └── release
│ ├── mod.rs
│ └── package.rs
├── doap.rdf
├── fixtures
│ ├── alluxio
│ │ └── docker-compose-alluxio.yml
│ ├── azblob
│ │ └── docker-compose-azurite.yml
│ ├── data
│ │ ├── normal_dir
│ │ │ └── .gitkeep
│ │ ├── normal_file.txt
│ │ ├── special_dir !@#$%^&()_+-=;',
│ │ │ └── .gitkeep
│ │ └── special_file !@#$%^&()_+-=;',.txt
│ ├── etcd
│ │ ├── ca-key.pem
│ │ ├── ca.pem
│ │ ├── client-key.pem
│ │ ├── client.pem
│ │ ├── docker-compose-cluster.yml
│ │ ├── docker-compose-standalone-tls.yml
│ │ ├── docker-compose-standalone.yml
│ │ ├── server-key.pem
│ │ └── server.pem
│ ├── ftp
│ │ └── docker-compose-vsftpd.yml
│ ├── hdfs
│ │ ├── azurite-azblob-core-site.xml
│ │ ├── docker-compose-hdfs-cluster.yml
│ │ ├── gcs-core-site.xml
│ │ ├── hdfs-site.xml
│ │ └── minio-s3-core-site.xml
│ ├── http
│ │ ├── Caddyfile
│ │ ├── docker-compose-caddy.yml
│ │ ├── docker-compose-nginx.yml
│ │ └── nginx.conf
│ ├── libsql
│ │ ├── docker-compose-auth.yml
│ │ └── docker-compose.yml
│ ├── memcached
│ │ ├── docker-compose-memcached-with-auth.yml
│ │ └── docker-compose-memcached.yml
│ ├── mongodb
│ │ ├── docker-compose-basic-auth.yml
│ │ └── docker-compose-no-auth.yml
│ ├── mysql
│ │ ├── docker-compose.yml
│ │ └── init.sql
│ ├── postgresql
│ │ ├── docker-compose.yml
│ │ └── init.sql
│ ├── redis
│ │ ├── docker-compose-dragonfly.yml
│ │ ├── docker-compose-kvrocks.yml
│ │ ├── docker-compose-redis-cluster-tls.yml
│ │ ├── docker-compose-redis-cluster.yml
│ │ ├── docker-compose-redis-tls.yml
│ │ ├── docker-compose-redis.yml
│ │ └── ssl
│ │ ├── .gitignore
│ │ ├── ca.crt
│ │ ├── ca.key
│ │ ├── ca.srl
│ │ ├── README.md
│ │ ├── redis.crt
│ │ ├── redis.key
│ │ └── req.conf
│ ├── s3
│ │ ├── docker-compose-ceph-rados.yml
│ │ └── docker-compose-minio.yml
│ ├── seafile
│ │ └── docker-compose-seafile.yml
│ ├── sftp
│ │ ├── change_root_dir.sh
│ │ ├── docker-compose-sftp-with-default-root.yml
│ │ ├── docker-compose-sftp.yml
│ │ ├── health-check.sh
│ │ ├── test_ssh_key
│ │ └── test_ssh_key.pub
│ ├── sqlite
│ │ └── data.sql
│ ├── swift
│ │ ├── docker-compose-ceph-rados.yml
│ │ └── docker-compose-swift.yml
│ ├── tikv
│ │ ├── gen_cert.sh
│ │ ├── pd-tls.toml
│ │ ├── pd.toml
│ │ ├── ssl
│ │ │ ├── ca-key.pem
│ │ │ ├── ca.pem
│ │ │ ├── client-key.pem
│ │ │ ├── client.pem
│ │ │ ├── pd-server-key.pem
│ │ │ ├── pd-server.pem
│ │ │ ├── tikv-server-key.pem
│ │ │ └── tikv-server.pem
│ │ ├── tikv-tls.toml
│ │ └── tikv.toml
│ ├── webdav
│ │ ├── config
│ │ │ └── nginx
│ │ │ └── http.conf
│ │ ├── docker-compose-webdav-jfrog.yml
│ │ ├── docker-compose-webdav-nextcloud.yml
│ │ ├── docker-compose-webdav-owncloud.yml
│ │ ├── docker-compose-webdav-with-auth.yml
│ │ ├── docker-compose-webdav-with-empty-passwd.yml
│ │ ├── docker-compose-webdav.yml
│ │ └── health-check-nextcloud.sh
│ └── webhdfs
│ └── docker-compose-webhdfs.yml
├── justfile
├── LICENSE
├── licenserc.toml
├── NOTICE
├── README.md
├── rust-toolchain.toml
├── rustfmt.toml
└── scripts
├── constants.py
├── dependencies.py
├── merge_local_staging.py
├── README.md
├── verify.py
└── workspace.py
```
# Files
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
```markdown
1 | # Change Log
2 |
3 | All notable changes to this project will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/)
6 | and this project adheres to [Semantic Versioning](https://semver.org/).
7 |
8 | <!-- Release notes generated with: gh release create v_draft --generate-notes --draft -->
9 |
10 | ## [v0.55.0] - 2025-11-11
11 | ### Added
12 | * feat(services/oss): allow users to specify endpoint addressing style by @howardlau1999 in https://github.com/apache/opendal/pull/6504
13 | * feat(bindings/ruby): publish ruby binding by @erickguan in https://github.com/apache/opendal/pull/6539
14 | * feat(services/s3): add support for HTTP 429 TooManyRequests for S3-compatible services by @justinjoseph89 in https://github.com/apache/opendal/pull/6589
15 | * feat: Add Operator Registry by @Xuanwo in https://github.com/apache/opendal/pull/6608
16 | * feat: Add from_uri support for more object storage services by @Xuanwo in https://github.com/apache/opendal/pull/6665
17 | * feat(services/webdav): Implement write returns metadata by @yunchipang in https://github.com/apache/opendal/pull/6660
18 | * feat: Add from_uri support for http/webdav/ftp/sftp by @Xuanwo in https://github.com/apache/opendal/pull/6666
19 | * feat(services/swift): Implement write returns metadata by @yunchipang in https://github.com/apache/opendal/pull/6669
20 | * feat(buffer): add chunk iterator for Buffer by @TennyZhuang in https://github.com/apache/opendal/pull/6672
21 | * feat(services/dropbox): Implement write returns metadata by @yunchipang in https://github.com/apache/opendal/pull/6673
22 | * feat: Add from_uri support for all services by @Xuanwo in https://github.com/apache/opendal/pull/6668
23 | * chore(bindings/python): Add Justfile and format codebase by @chitralverma in https://github.com/apache/opendal/pull/6677
24 | * feat: Introduce TailCutLayer by @Xuanwo in https://github.com/apache/opendal/pull/6680
25 | * feat(services/gdrive): Implement write returns metadata by @yunchipang in https://github.com/apache/opendal/pull/6683
26 | * feat(bindings/python): Add stubs for Exception and Capability by @chitralverma in https://github.com/apache/opendal/pull/6690
27 | * feat(bindings/python): Add stubs for some more types by @chitralverma in https://github.com/apache/opendal/pull/6703
28 | * feat(bindings/python)!: Add stubs for remaining types by @chitralverma in https://github.com/apache/opendal/pull/6720
29 | * feat(bindings/python)!: Stubs fix for operator and __version__ by @chitralverma in https://github.com/apache/opendal/pull/6728
30 | * RFC-6707: Capability Override Layer by @Xuanwo in https://github.com/apache/opendal/pull/6707
31 | * feat(bindings/python)!: Generate stubs for Operator overloads and Scheme by @chitralverma in https://github.com/apache/opendal/pull/6729
32 | * feat(bindings/nodejs): add concurrent limit layer by @kingsword09 in https://github.com/apache/opendal/pull/6739
33 | * feat(bindings/python): Enable ftp/hdfs_native/sftp for python by @chitralverma in https://github.com/apache/opendal/pull/6745
34 | * feat: implement content-md5 for s3 by @waynexia in https://github.com/apache/opendal/pull/6508
35 | * feat(services/compfs): implement IoVectoredBuf for Buffer by @meteorgan in https://github.com/apache/opendal/pull/6762
36 | * feat(services/lakefs): Implement write returns metadata by @kingsword09 in https://github.com/apache/opendal/pull/6770
37 | * Add `connection_pool_max_size` option to memcached and redis builders by @trxcllnt in https://github.com/apache/opendal/pull/6759
38 | * fix:(bindings/python) Gate service-sftp on windows targets by @chitralverma in https://github.com/apache/opendal/pull/6777
39 | * feat(binding/nodejs): add TimeoutLayer, LoggingLayer and ThrottleLayer in nodejs binding by @Kilerd in https://github.com/apache/opendal/pull/6772
40 | ### Changed
41 | * refactor: Migrate cloudflare_kv from adapter::kv to Access instead by @kingsword09 in https://github.com/apache/opendal/pull/6340
42 | * refactor: Centralize date/time handling with Timestamp wrapper by @dami0806 in https://github.com/apache/opendal/pull/6650
43 | * refactor: Move Config related back to `config.rs` instead by @Xuanwo in https://github.com/apache/opendal/pull/6667
44 | * refactor: Remove deprecated project virtiofs by @Xuanwo in https://github.com/apache/opendal/pull/6682
45 | * refactor(core): remove conditional compilation in PageList trait by @crwen in https://github.com/apache/opendal/pull/6715
46 | * refactor: migrate tikv service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6713
47 | * refactor: migrate memcached service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6714
48 | * refactor: migrate mysql service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6716
49 | * refactor: migrate postgresql service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6718
50 | * refactor: migrate persy service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6721
51 | * refactor: migrate foundationdb service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6722
52 | * refactor: migrate surrealdb service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6723
53 | * refactor: migrate mongodb service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6724
54 | * refactor: migrate d1 service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6725
55 | * refactor: migrate gridfs service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6726
56 | * refactor: Migrate sqlite from adapter::kv to Access instead by @NoxTav in https://github.com/apache/opendal/pull/6328
57 | * refactor: migrate sled service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6731
58 | * refactor: migrate rocksdb service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6732
59 | * refactor: migrate redb service from adapter::kv to impl Access directly by @koushiro in https://github.com/apache/opendal/pull/6733
60 | * refactor: Remove deprecated kv and typed_kv adapters by @kingsword09 in https://github.com/apache/opendal/pull/6734
61 | * refactor(hdfs): restructure HdfsBackend and introduce HdfsCore by @kingsword09 in https://github.com/apache/opendal/pull/6736
62 | * refactor(hdfs-native): restructure HdfsNativeBackend and introduce HdfsNativeCore by @kingsword09 in https://github.com/apache/opendal/pull/6737
63 | * refactor(services): impl Debug for all service builders by @koushiro in https://github.com/apache/opendal/pull/6756
64 | * refactor(types)!: use string-based scheme over enum-based approach by @koushiro in https://github.com/apache/opendal/pull/6765
65 | ### Fixed
66 | * fix(services/cloudflare_kv): Use DEFAULT_SCHEME constant for Cloudflare KV scheme by @kingsword09 in https://github.com/apache/opendal/pull/6568
67 | * fix(bindings/d): Enhance D bindings build script and tests for OpenDAL by @kingsword09 in https://github.com/apache/opendal/pull/6569
68 | * fix(services/obs): send Range header only for non-full reads by @QuakeWang in https://github.com/apache/opendal/pull/6574
69 | * ci: Fix default branch name in Ruby release workflow by @erickguan in https://github.com/apache/opendal/pull/6585
70 | * fix: expose ListDyn + WriteDyn by @bonsairobo in https://github.com/apache/opendal/pull/6596
71 | * fix(integrations/cloud_filter): upgrade cloud_filter to resolve CI failures after Rust 1.90.0 by @kingsword09 in https://github.com/apache/opendal/pull/6602
72 | * fix(integrations/unftp-sbe): properly shutdown after write by @choucavalier in https://github.com/apache/opendal/pull/6601
73 | * fix(azblob): don't call AzureStorageConfig::from_env on wasm by @bonsairobo in https://github.com/apache/opendal/pull/6594
74 | * fix: censor the "sig" query param for Azure SAS URIs by @bonsairobo in https://github.com/apache/opendal/pull/6603
75 | * fix(bindings/ruby): publish ruby binding gem by @erickguan in https://github.com/apache/opendal/pull/6606
76 | * fix(docs): docs.rs built failed by @FreeChenMou in https://github.com/apache/opendal/pull/6658
77 | * fix(layers/throttle): await limiter before throttled writes by @TennyZhuang in https://github.com/apache/opendal/pull/6671
78 | * fix:(bindings/python) Minor fix in stubs by @chitralverma in https://github.com/apache/opendal/pull/6744
79 | * fix: retry on 409 with AWS S3 by @wolfv in https://github.com/apache/opendal/pull/6742
80 | * fix(bindings/ruby): fix release build error by @erickguan in https://github.com/apache/opendal/pull/6766
81 | * fix(binding/nodejs): add missing lister methods by @Kilerd in https://github.com/apache/opendal/pull/6769
82 | * fix(bindings/python): Update python/stubgen & core/hdfs-native by @chitralverma in https://github.com/apache/opendal/pull/6774
83 | ### Docs
84 | * doc(bindinds/ruby): add examples and links by @erickguan in https://github.com/apache/opendal/pull/6609
85 | * docs: spelling and minor wording change by @carlsonp in https://github.com/apache/opendal/pull/6620
86 | * docs(bin): add badges to bin tools README by @kingsword09 in https://github.com/apache/opendal/pull/6642
87 | * docs(python): add documentation for local usage by @jayceslesar in https://github.com/apache/opendal/pull/6480
88 | * docs(apps): add migration guide, update links; remove bin/{oli,ofs} (#6689) by @tao12345666333 in https://github.com/apache/opendal/pull/6705
89 | * docs(core/types): add some comments for Buffer by @meteorgan in https://github.com/apache/opendal/pull/6746
90 | * docs: Make it clear that bindings have different version with rust core. by @0lai0 in https://github.com/apache/opendal/pull/6780
91 | ### CI
92 | * ci: Switch from --nocapture to --no-capture by @kingsword09 in https://github.com/apache/opendal/pull/6567
93 | * ci: Add patch file to Ruby release workflow by @erickguan in https://github.com/apache/opendal/pull/6592
94 | * build: enhance build website by @tisonkun in https://github.com/apache/opendal/pull/6640
95 | * ci: use shas fix action permissions by @kenwoodjw in https://github.com/apache/opendal/pull/6659
96 | * ci: Bump doc toolchain to allow opendal docs build by @Xuanwo in https://github.com/apache/opendal/pull/6661
97 | * ci: build and test on python3.14t by @kenwoodjw in https://github.com/apache/opendal/pull/6670
98 | * ci(nodejs): enable npm trusted publishing by @kingsword09 in https://github.com/apache/opendal/pull/6685
99 | * ci: remove ofs behavior tests and planning (#6689) by @tao12345666333 in https://github.com/apache/opendal/pull/6704
100 | * ci: Auto add ML thread link in github discussion by @Xuanwo in https://github.com/apache/opendal/pull/6709
101 | * ci: Fix bug in discussion thread link auto append by @Xuanwo in https://github.com/apache/opendal/pull/6711
102 | * ci: Fix GHA CI again by @Xuanwo in https://github.com/apache/opendal/pull/6712
103 | ### Chore
104 | * ci: switches etcd image to official etcd image by @kingsword09 in https://github.com/apache/opendal/pull/6562
105 | * chore(bindings/nodejs): replace custom sleep with setTimeout in tests by @kingsword09 in https://github.com/apache/opendal/pull/6563
106 | * chore(layers/prometheus-client): upgrade prometheus-client dependency to v0.24 by @koushiro in https://github.com/apache/opendal/pull/6523
107 | * chore(core): typo: update comments on `BytesRange::new` by @TheR1sing3un in https://github.com/apache/opendal/pull/6570
108 | * chore(website): update The ASF logo by @suyanhanx in https://github.com/apache/opendal/pull/6575
109 | * chore: fix website build by @tisonkun in https://github.com/apache/opendal/pull/6579
110 | * chore: make clippy happy when using rust 1.90.0 by @kingsword09 in https://github.com/apache/opendal/pull/6590
111 | * chore: apache project provides code under ALv2 by @tisonkun in https://github.com/apache/opendal/pull/6598
112 | * chore: remove dead project openval by @Xuanwo in https://github.com/apache/opendal/pull/6604
113 | * chore: upgrade opentelemetry to 0.31.0 by @tisonkun in https://github.com/apache/opendal/pull/6623
114 | * chore(deps): bump tempfile from 3.20.0 to 3.23.0 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6611
115 | * chore(deps): bump tempfile from 3.21.0 to 3.23.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6610
116 | * chore(deps): update datafusion requirement from 49.0.2 to 50.0.0 in /integrations/object_store by @dependabot[bot] in https://github.com/apache/opendal/pull/6613
117 | * chore(deps): bump @docusaurus/plugin-client-redirects from 3.8.1 to 3.9.1 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6614
118 | * chore: avoid build warning by @tisonkun in https://github.com/apache/opendal/pull/6627
119 | * build: update docusaurus together by @asukaminato0721 in https://github.com/apache/opendal/pull/6626
120 | * chore(deps): bump the github-actions group with 8 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6633
121 | * chore(deps): bump logforth from 0.27.0 to 0.28.1 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6629
122 | * chore(deps): bump the http-serialization-utils group in /core with 7 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6634
123 | * chore(deps): bump clap from 4.5.38 to 4.5.41 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6630
124 | * chore(deps): bump the logs-errors-checksums group in /core with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6635
125 | * chore(deps): bump the pyo3 group in /bindings/python with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6631
126 | * chore(deps): bump the third-party-actions group with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6636
127 | * chore(deps): bump axum from 0.7.9 to 0.8.6 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6612
128 | * chore(deps): bump the others group in /core with 15 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6637
129 | * chore: OpenDAL MSRV to 1.85 and edition 2024 by @fatelei in https://github.com/apache/opendal/pull/6615
130 | * refactor!: migrate chrono to jiff by @tisonkun in https://github.com/apache/opendal/pull/6643
131 | * chore: support more error codes for S3-compatible services by @leiysky in https://github.com/apache/opendal/pull/6651
132 | * chore: fixup timestamp refactor by @tisonkun in https://github.com/apache/opendal/pull/6663
133 | * chore: remove oay: delete bin/oay; drop CI; update release/dev tooling, dependabot, docs by @tao12345666333 in https://github.com/apache/opendal/pull/6691
134 | * chore: cleanup for moving oli/ofs and removing oay (#6689) by @tao12345666333 in https://github.com/apache/opendal/pull/6700
135 | * chore(deps): bump actions/setup-node from 5 to 6 in the github-actions group by @dependabot[bot] in https://github.com/apache/opendal/pull/6695
136 | * chore(deps): bump the http-serialization-utils group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6717
137 | * chore(deps): bump the others group in /core with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6698
138 | * chore(deps): bump tokio from 1.47.1 to 1.48.0 in /core in the async-runtime group by @dependabot[bot] in https://github.com/apache/opendal/pull/6696
139 | * chore: remove integrations cloud_filter and fuse3; update CI/docs/README by @tao12345666333 in https://github.com/apache/opendal/pull/6727
140 | * chore: fixup README render and broken links by @tisonkun in https://github.com/apache/opendal/pull/6735
141 | * chore: apply suggestions from clippy 1.91.0 by @kingsword09 in https://github.com/apache/opendal/pull/6754
142 | * chore: cleanup some useless code related to services that were removed due to lack of maintenance by @koushiro in https://github.com/apache/opendal/pull/6763
143 | * chore: rename delete module => deleter module; ServiceAccessor => ServiceBackend by @koushiro in https://github.com/apache/opendal/pull/6757
144 | * chore(services): unify scheme usage by @koushiro in https://github.com/apache/opendal/pull/6764
145 | * chore(services): remove empty list operation and update docs of all services by @koushiro in https://github.com/apache/opendal/pull/6768
146 | * Bump to version 0.55.0 by @Xuanwo in https://github.com/apache/opendal/pull/6771
147 | * chore(types)!: remove deprecated `Operator::from_map` and `Operator::via_map` by @koushiro in https://github.com/apache/opendal/pull/6775
148 | * chore(types)!: remove deprecated `list_with_version` capability by @koushiro in https://github.com/apache/opendal/pull/6781
149 | * chore(services/s3)!: remove deprecated `S3::security_token` by @koushiro in https://github.com/apache/opendal/pull/6779
150 | * chore(services/fs): use NotADirectory directly by @meteorgan in https://github.com/apache/opendal/pull/6786
151 |
152 | ## [v0.54.1] - 2025-09-02
153 |
154 | ### Added
155 | * feat: Conditional reader for cos by @pmupkin in https://github.com/apache/opendal/pull/6424
156 | * feat: Add project layout for openval by @Xuanwo in https://github.com/apache/opendal/pull/6427
157 | * feat: Add if-not-exists support for copy with azblob as example by @Xuanwo in https://github.com/apache/opendal/pull/6447
158 | * feat(bindings/cpp): enhance Metadata API with comprehensive feature a… by @JackDrogon in https://github.com/apache/opendal/pull/6445
159 | * feat: Add prefetch support for concurrent read by @Xuanwo in https://github.com/apache/opendal/pull/6449
160 | * feat(bindings/cpp): adopt Google C++ Style Guide for API naming by @JackDrogon in https://github.com/apache/opendal/pull/6448
161 | * feat(object_store): Implement copy, rename and return metadata after writing by @codephage2020 in https://github.com/apache/opendal/pull/6452
162 | * feat(object_store): Implement copy_if_not_exists, put_multipart_opts and metadata in GetResult by @codephage2020 in https://github.com/apache/opendal/pull/6468
163 | * chore(deps): add groups for nodejs by @asukaminato0721 in https://github.com/apache/opendal/pull/6469
164 | * feat(bindings/ocaml): add more blocking api for ocaml by @asukaminato0721 in https://github.com/apache/opendal/pull/6238
165 | * fix(bindings/cpp): Add capability to fix failed tests by @asukaminato0721 in https://github.com/apache/opendal/pull/6488
166 | * feat(bindings/cpp): enable user-configurable features for storage services by @KinomotoMio in https://github.com/apache/opendal/pull/6503
167 | * feat(services/oss): add support for security token for Aliyun OSS by @cavivie in https://github.com/apache/opendal/pull/6511
168 | * feat(services/azblob): Add compatibility aliases for Apache Arrow object_store by @jackye1995 in https://github.com/apache/opendal/pull/6527
169 | * feat(services/gcs): add configuration aliases for better Arrow object_store compatibility by @jackye1995 in https://github.com/apache/opendal/pull/6526
170 | * feat(services/s3): add configuration aliases for better Arrow object_store compatibility by @jackye1995 in https://github.com/apache/opendal/pull/6524
171 | * feat: allow using object_store as opendal's backend by @flaneur2020 in https://github.com/apache/opendal/pull/6283
172 | * feat(services/opfs): Add `create_dir` support for OPFS by @crwen in https://github.com/apache/opendal/pull/6542
173 | * feat(bindings/ruby): support file open options by @erickguan in https://github.com/apache/opendal/pull/6538
174 | ### Changed
175 | * refactor(website): remove unused dependencies and update node engine requirement by @kingsword09 in https://github.com/apache/opendal/pull/6421
176 | * refacrtor: Reduce usage of scheme inside raw by @Xuanwo in https://github.com/apache/opendal/pull/6457
177 | * refactor: Migrate etcd service to implement Access directly by @kingsword09 in https://github.com/apache/opendal/pull/6420
178 | ### Fixed
179 | * fix(bin/oli): Fix tests when TMPDIR is not /tmp by @XYenon in https://github.com/apache/opendal/pull/6429
180 | * fix: patch futures buffer concurrent by @tisonkun in https://github.com/apache/opendal/pull/6442
181 | * fix(services/oss): unnecessary header 'content-type' are included in the get_object request by @honsunrise in https://github.com/apache/opendal/pull/6455
182 | * fix(services/moka): prevent the weigher from being overwritten by @koushiro in https://github.com/apache/opendal/pull/6498
183 | * fix(services/azblob): Fix azblob base64 validation by @kenwoodjw in https://github.com/apache/opendal/pull/6500
184 | * fix(bindings/nodejs): use value.prefetch instead of value.concurrent for prefetch option by @kingsword09 in https://github.com/apache/opendal/pull/6502
185 | * fix(integrations/object_store): remove redundant into_iter() call by @KinomotoMio in https://github.com/apache/opendal/pull/6509
186 | * fix(bindings/cpp): correct cxx_async namespace attribute by @kingsword09 in https://github.com/apache/opendal/pull/6514
187 | * Fix: make cpp binding build robust by @devillove084 in https://github.com/apache/opendal/pull/6460
188 | * fix: Do not trim trailing slash of name_node by @wForget in https://github.com/apache/opendal/pull/6556
189 | ### Docs
190 | * docs(release): fix CI workflow links for bindings by @kingsword09 in https://github.com/apache/opendal/pull/6437
191 | * docs: Update RFC-5444 Operator From Uri by @Xuanwo in https://github.com/apache/opendal/pull/6453
192 | * docs(core): update docs of building a storage service by @crwen in https://github.com/apache/opendal/pull/6554
193 | ### CI
194 | * ci: remove docker-compose version top-level elements by @kingsword09 in https://github.com/apache/opendal/pull/6436
195 | * ci: Update ci_bindings_zig.yml by @tisonkun in https://github.com/apache/opendal/pull/6444
196 | * ci: enable trust publishing for rust crates by @kingsword09 in https://github.com/apache/opendal/pull/6454
197 | * ci(bindings/cpp): cpp test framework by @asukaminato0721 in https://github.com/apache/opendal/pull/6296
198 | * ci: Use ubuntu-24.04-arm for java release to address glibc issues by @Xuanwo in https://github.com/apache/opendal/pull/6486
199 | * ci: refactor nodejs ci workflow by @kingsword09 in https://github.com/apache/opendal/pull/6491
200 | * ci: update workflow nodejs version and remove corepack by @kingsword09 in https://github.com/apache/opendal/pull/6495
201 | * chore(ci): upgrade 1password/load-secrets-action v3 by @kingsword09 in https://github.com/apache/opendal/pull/6517
202 | * chore: adjust CI workflow names for bindings by @erickguan in https://github.com/apache/opendal/pull/6540
203 | ### Chore
204 | * chore(deps): bump quick-xml from 0.37.5 to 0.38.0 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6416
205 | * chore(deps): bump the http-serialization-utils group in /core with 6 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6414
206 | * chore: Fix clippy for object_store by @Xuanwo in https://github.com/apache/opendal/pull/6422
207 | * chore(deps): bump the others group across 1 directory with 17 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6432
208 | * chore(website): upgrade prism-react-renderer to v2.4.1 by @kingsword09 in https://github.com/apache/opendal/pull/6433
209 | * chore(deps): bump tokio from 1.46.1 to 1.47.0 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6466
210 | * chore(deps): bump tokio from 1.46.1 to 1.47.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6464
211 | * chore(deps): bump tokio from 1.46.1 to 1.47.0 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6463
212 | * chore(deps): bump the others group in /core with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6478
213 | * chore(deps): bump indicatif from 0.17.11 to 0.18.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6474
214 | * chore(deps): bump the http-serialization-utils group in /core with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6476
215 | * chore(deps): bump tokio from 1.46.1 to 1.47.1 in /core in the async-runtime group by @dependabot[bot] in https://github.com/apache/opendal/pull/6477
216 | * chore(bindings/nodejs): upgrade deps napi-rs to 3.0 by @kingsword09 in https://github.com/apache/opendal/pull/6482
217 | * chore: make clippy happy again by @kingsword09 in https://github.com/apache/opendal/pull/6493
218 | * chore(bindings/nodejs): update generated code comments style due to napi-derive indentation fix by @kingsword09 in https://github.com/apache/opendal/pull/6501
219 | * feat: expose APIs for ErrorStatus by @tisonkun in https://github.com/apache/opendal/pull/6513
220 | * chore(layers/fastmetrics): upgrade fastmetrics dependency to v0.4 by @koushiro in https://github.com/apache/opendal/pull/6534
221 | * chore(deps-dev): bump crates-llms-txt from 0.0.8 to 0.1.1 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6548
222 | * chore(deps): bump logforth from 0.26.1 to 0.27.0 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6546
223 | * chore(deps): bump tempfile from 3.20.0 to 3.21.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6544
224 | * chore(deps): update datafusion requirement from 48.0.0 to 49.0.2 in /integrations/object_store by @dependabot[bot] in https://github.com/apache/opendal/pull/6545
225 | * chore(deps): bump logforth from 0.26.1 to 0.27.0 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6547
226 |
227 | ## [v0.54.0] - 2025-07-14
228 |
229 | ### Added
230 | * RFC-6213: Options API by @Xuanwo in https://github.com/apache/opendal/pull/6213
231 | * feat(core): Expose xxx_options API by @Xuanwo in https://github.com/apache/opendal/pull/6215
232 | * RFC-6209: Glob Support by @asukaminato0721 in https://github.com/apache/opendal/pull/6209
233 | * feat(bindings/java): Add WriteOptions support for new options API by @geruh in https://github.com/apache/opendal/pull/6219
234 | * feat(services/azdls): Support parsing Azure Storage configs from connection strings by @DerGut in https://github.com/apache/opendal/pull/6212
235 | * feat(bindings/java): Add ListOptions support for new options API by @geruh in https://github.com/apache/opendal/pull/6246
236 | * feat(bindings/python): Enhance Reader and Writer by @chitralverma in https://github.com/apache/opendal/pull/6086
237 | * feat(bindings/java): Add StatOptions support for new options API by @geruh in https://github.com/apache/opendal/pull/6255
238 | * feat(website): Auto-generate llms.txt and llms-full.txt by @kingsword09 in https://github.com/apache/opendal/pull/6247
239 | * oli: support dropbox by @Kinchkun in https://github.com/apache/opendal/pull/6265
240 | * feat(bindings/python): Enhance Stat, Lister, Metadata & Entry by @chitralverma in https://github.com/apache/opendal/pull/6232
241 | * feat(layers): add fastmetrics layer by @koushiro in https://github.com/apache/opendal/pull/6269
242 | * feat(bindings/haskell): add more api by @asukaminato0721 in https://github.com/apache/opendal/pull/6264
243 | * feat(core): Expose presign_xxx_options API by @geruh in https://github.com/apache/opendal/pull/6273
244 | * feat: Add HttpClientLayer to replace `Operator::update_http_client()` by @Xuanwo in https://github.com/apache/opendal/pull/6290
245 | * feat(bin/oli): support oli edit by @asukaminato0721 in https://github.com/apache/opendal/pull/6229
246 | * feat(bindings/cpp): cpp async op && reader, lister by @asukaminato0721 in https://github.com/apache/opendal/pull/6228
247 | * feat(services/moka): expose more moka configurations by @koushiro in https://github.com/apache/opendal/pull/6285
248 | * feat(bindings/nodejs): Add StatOptions support for new options API by @kingsword09 in https://github.com/apache/opendal/pull/6282
249 | * feat: implement --tree option for oli ls subcommand by @waynexia in https://github.com/apache/opendal/pull/6311
250 | * feat(bindings/nodejs): Add ReadOptions and ReaderOptions support for new options API by @kingsword09 in https://github.com/apache/opendal/pull/6312
251 | * feat(bindings/nodejs): Add ListOptions support for new options API by @kingsword09 in https://github.com/apache/opendal/pull/6320
252 | * feat(bindings/go): add benchmark by @yuchanns in https://github.com/apache/opendal/pull/6341
253 | * feat(services/azdls): Implement write returns metadata by @jonathanc-n in https://github.com/apache/opendal/pull/6368
254 | * feat(bindings/cpp): remove Boost dependency by @JackDrogon in https://github.com/apache/opendal/pull/6376
255 | * feat(bindings/nodejs): Add DeleteOptions support for new options API by @kingsword09 in https://github.com/apache/opendal/pull/6349
256 | * feat(bindings/nodejs): Add WriteOptions support for new options API by @kingsword09 in https://github.com/apache/opendal/pull/6322
257 | * feat(services/vercel_blob): add delete operator by @kingsword09 in https://github.com/apache/opendal/pull/6396
258 | ### Changed
259 | * refactor(core/types)!: fix `with_user_metadata` signature by @meteorgan in https://github.com/apache/opendal/pull/5960
260 | * refactor(!): Remove services lack of maintainers and users by @Xuanwo in https://github.com/apache/opendal/pull/6263
261 | * refactor(services/moka)!: replace `sync::Cache` with `future::Cache` by @koushiro in https://github.com/apache/opendal/pull/6270
262 | * refactor(bindings/go): Restructure FFI system with type-safe wrapper by @yuchanns in https://github.com/apache/opendal/pull/6268
263 | * refactor: Migrate redis from adapter::kv to Access instead by @Xuanwo in https://github.com/apache/opendal/pull/6291
264 | * refactor: Migrate moka from adapter::typed_kv to Access instead by @Xuanwo in https://github.com/apache/opendal/pull/6300
265 | * refactor: Migrate memory service to implment Access directly by @Xuanwo in https://github.com/apache/opendal/pull/6301
266 | * refactor: Migrate services cacache to implement Access by @Xuanwo in https://github.com/apache/opendal/pull/6303
267 | * refactor!: Remove stat_has_xxx and list_has_xxx by @Xuanwo in https://github.com/apache/opendal/pull/6313
268 | * refactor(services/fs): extract implementation to core by @erickguan in https://github.com/apache/opendal/pull/6317
269 | * refactor: Migrate mini_moka service to implement Access directly by @meteorgan in https://github.com/apache/opendal/pull/6316
270 | * refactor: remove uuid dependency when creating a temp path by @erickguan in https://github.com/apache/opendal/pull/6324
271 | * refactor(layers/logging): Don't trigger logigng in heavy IO path by @Xuanwo in https://github.com/apache/opendal/pull/6343
272 | * refactor: Migrate dashmap service to implement Access directly by @meteorgan in https://github.com/apache/opendal/pull/6344
273 | ### Fixed
274 | * fix: java bug in list with delete option test by @geruh in https://github.com/apache/opendal/pull/6257
275 | * fix(nodejs): esmodule and commonjs support by @kingsword09 in https://github.com/apache/opendal/pull/6266
276 | * fix(gcs): headers missing in XML multipart API and incorrect x-goog-acl header values in XML API by @wlinna in https://github.com/apache/opendal/pull/6275
277 | * fix(bindings/nodejs): update nodejs and deno bench by @kingsword09 in https://github.com/apache/opendal/pull/6286
278 | * fix(hdfs): fix infinite loop in write for HDFS failure by @oven-yang in https://github.com/apache/opendal/pull/6295
279 | * fix(nodejs): test stat with version by @kingsword09 in https://github.com/apache/opendal/pull/6307
280 | * fix(bindings/python): Fix Writer doesn't throw correct error code by @Xuanwo in https://github.com/apache/opendal/pull/6315
281 | * fix(python): correctly calculate end bound using offset + size instead of size directly by @kingsword09 in https://github.com/apache/opendal/pull/6314
282 | * fix(fs/ftp/hdfs): correct tmp_path generation for append operations by @kingsword09 in https://github.com/apache/opendal/pull/6327
283 | * fix(dav-server): Fix create_dir to create nested directories by @sqlpxc in https://github.com/apache/opendal/pull/6321
284 | * fix(service/fs): handle if_not_exists flag to raise ConditionNotMatch error by @kingsword09 in https://github.com/apache/opendal/pull/6326
285 | * fix(services/fs): Avoid creating partial files by @Xuanwo in https://github.com/apache/opendal/pull/6336
286 | * fix(bindings/nodejs): ListOptions test list with deleted by @kingsword09 in https://github.com/apache/opendal/pull/6335
287 | * fix(bindings/go): ffi calls use after free by @yuchanns in https://github.com/apache/opendal/pull/6380
288 | * fix(services/azdls): Fix append not handled correctly while offset==0 by @Xuanwo in https://github.com/apache/opendal/pull/6393
289 | ### Docs
290 | * docs: Remove deprecated APIs and polish docs for public APIs by @Xuanwo in https://github.com/apache/opendal/pull/6220
291 | * docs(services/hdfs_native): fix outdated capabilities and config option name by @kezhuw in https://github.com/apache/opendal/pull/6224
292 | * docs: Add CLAUDE docs to make AI Agents happy by @Xuanwo in https://github.com/apache/opendal/pull/6299
293 | * docs: Polish claude file after some experiments by @Xuanwo in https://github.com/apache/opendal/pull/6302
294 | * docs: Add upgrade guide for opendal's 0.54 release by @Xuanwo in https://github.com/apache/opendal/pull/6382
295 | ### CI
296 | * ci: Use expression syntax to avoid VS Code warnings. by @kingsword09 in https://github.com/apache/opendal/pull/6284
297 | * ci: Disable failed CI until #6305 been fixed by @Xuanwo in https://github.com/apache/opendal/pull/6306
298 | * chore(ci): use mlugg/setup-zig instead of archvied action by @assignUser in https://github.com/apache/opendal/pull/6310
299 | * ci(bindings/go): simplify and improve Go bindings test infrastructure by @yuchanns in https://github.com/apache/opendal/pull/6293
300 | * ci(services/compfs): add integrtation tests for compfs service by @meteorgan in https://github.com/apache/opendal/pull/6319
301 | ### Chore
302 | * chore: add deepwiki badge into readme to enable auto-refresh by @koushiro in https://github.com/apache/opendal/pull/6200
303 | * chore: upgrade opentelemetry to 0.30.0 by @tisonkun in https://github.com/apache/opendal/pull/6259
304 | * chore: Update bb8 to version 0.9.0 by @cryptomilk in https://github.com/apache/opendal/pull/6127
305 | * chore(deps): bump uuid from 1.16.0 to 1.17.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6245
306 | * chore(bindings/go): update Go dependencies by @yuchanns in https://github.com/apache/opendal/pull/6280
307 | * chore(deps): bump tokio from 1.45.0 to 1.45.1 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6240
308 | * chore(metrics): add more docs about global instance of PrometheusLayer and FastmetricsLayer by @koushiro in https://github.com/apache/opendal/pull/6308
309 | * chore: Add npm to dependabot by @shaonianche in https://github.com/apache/opendal/pull/6318
310 | * chore(deps): bump astral-sh/setup-uv from 5 to 6 by @dependabot[bot] in https://github.com/apache/opendal/pull/6241
311 | * chore(deps): update datafusion requirement from 47.0.0 to 48.0.0 in /integrations/object_store by @dependabot[bot] in https://github.com/apache/opendal/pull/6332
312 | * chore(deps): bump @docusaurus/core from 3.6.1 to 3.8.1 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6334
313 | * chore(deps): bump compio from 0.14.0 to 0.15.0 in /core by @dependabot[bot] in https://github.com/apache/opendal/pull/6331
314 | * chore(deps): bump clap from 4.5.38 to 4.5.40 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6330
315 | * chore(deps): bump dirs from 5.0.1 to 6.0.0 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6329
316 | * chore: fix clippy warnings when using rust 1.88 by @koushiro in https://github.com/apache/opendal/pull/6339
317 | * chore(dav-server): Add a test for creating nested directories by @sqlpxc in https://github.com/apache/opendal/pull/6338
318 | * chore: bump msrv to v1.82.0 by @MrCroxx in https://github.com/apache/opendal/pull/6348
319 | * chore(deps): bump crate-ci/typos from 1.31.1 to 1.34.0 by @dependabot[bot] in https://github.com/apache/opendal/pull/6351
320 | * chore(deps): bump tokio from 1.45.0 to 1.45.1 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6353
321 | * chore(deps): bump quick-xml from 0.36.2 to 0.37.5 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6350
322 | * chore(deps): bump actions/checkout from 3 to 4 by @dependabot[bot] in https://github.com/apache/opendal/pull/6356
323 | * chore(deps): bump semver from 7.6.3 to 7.7.2 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6352
324 | * chore(deps): bump toml from 0.8.22 to 0.8.23 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6361
325 | * chore(deps): bump mlugg/setup-zig from 2.0.1 to 2.0.3 by @dependabot[bot] in https://github.com/apache/opendal/pull/6359
326 | * chore(deps): bump axios from 1.8.2 to 1.10.0 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6363
327 | * chore(deps): bump tokio from 1.45.0 to 1.45.1 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6358
328 | * chore(deps): bump logforth from 0.24.0 to 0.26.1 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6355
329 | * chore(deps): bump the pyo3-dependencies group in /bindings/python with 2 updates by @dependabot[bot] in https://github.com/apache/opendal/pull/6360
330 | * chore(deps): bump hdfs-native from 0.10.4 to 0.11.2 in /core by @dependabot[bot] in https://github.com/apache/opendal/pull/6362
331 | * chore: update DEPENDENCIES and fater dependencies.py generate by @yihong0618 in https://github.com/apache/opendal/pull/6374
332 | * chore(dependabot): update OpenDAL dependencies less frequently by @erickguan in https://github.com/apache/opendal/pull/6384
333 | * chore(deps): bump tokio from 1.45.1 to 1.46.1 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6387
334 | * chore(deps): bump tokio from 1.45.1 to 1.46.1 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6386
335 | * chore(deps): bump logforth from 0.24.0 to 0.26.1 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6385
336 | * chore(deps): bump clsx from 1.2.1 to 2.1.1 in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6388
337 | * chore(deps): bump tokio from 1.45.0 to 1.46.1 in /core in the async-runtime group by @dependabot[bot] in https://github.com/apache/opendal/pull/6390
338 | * chore(dependabot): exclude rand and getrandom crates by @erickguan in https://github.com/apache/opendal/pull/6397
339 | * chore(github-actions): update 1password by @erickguan in https://github.com/apache/opendal/pull/6405
340 | * chore(github-actions): revert 1password action update by @erickguan in https://github.com/apache/opendal/pull/6406
341 | * chore(deps): bump nix from 0.29.0 to 0.30.1 in /bin/ofs by @dependabot[bot] in https://github.com/apache/opendal/pull/6399
342 | * chore(deps): bump toml from 0.8.22 to 0.9.2 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6398
343 | * chore(deps): bump toml from 0.8.23 to 0.9.2 in /bin/oli by @dependabot[bot] in https://github.com/apache/opendal/pull/6400
344 | * chore(deps): bump react and react-dom in /website by @dependabot[bot] in https://github.com/apache/opendal/pull/6401
345 | * chore(deps): bump tower from 0.4.13 to 0.5.2 in /bin/oay by @dependabot[bot] in https://github.com/apache/opendal/pull/6407
346 |
347 | ## [v0.53.3] - 2025-05-21
348 |
349 | ### Added
350 | * feat(java): add ReadOptions for read methods by @liamzwbao in https://github.com/apache/opendal/pull/6157
351 | * feat(core): support sharing one redb database between different Operators by @TD-Sky in https://github.com/apache/opendal/pull/6173
352 | * feat(bin/oli): support cp to dir by @asukaminato0721 in https://github.com/apache/opendal/pull/6140
353 | * feat(bin/oli): support tee by @asukaminato0721 in https://github.com/apache/opendal/pull/6194
354 | * feat: expose `Error::backtrace()` by @xxchan in https://github.com/apache/opendal/pull/6196
355 | * feat(bindings/c)!: Make features configurable via CMakeLists by @asukaminato0721 in https://github.com/apache/opendal/pull/6143
356 | * feat: ADLS Client Credential Authentication by @c-thiel in https://github.com/apache/opendal/pull/6205
357 | ### Changed
358 | * refactor(bindings/java): deprecate append in favor of write with append=true by @kingsword09 in https://github.com/apache/opendal/pull/6169
359 | * refactor(core): Put Backtrace in a box to reduce error size by @Xuanwo in https://github.com/apache/opendal/pull/6193
360 | ### Fixed
361 | * fix(bindings/go): update dependencies by @JupiterRider in https://github.com/apache/opendal/pull/6175
362 | * fix(integrations/object_store): fix double percent encoding by @Colerar in https://github.com/apache/opendal/pull/6166
363 | * fix(services/fs): Make fs services work on our MSRV by @Xuanwo in https://github.com/apache/opendal/pull/6183
364 | * fix(services/s3): Remove not needed check for batch delete by @Xuanwo in https://github.com/apache/opendal/pull/6206
365 | ### Docs
366 | * fix: typo error in 0429_init_from_iter.md by @warjiang in https://github.com/apache/opendal/pull/6203
367 | * doc: case-police Ocaml to OCaml by @yihong0618 in https://github.com/apache/opendal/pull/6204
368 | ### CI
369 | * ci: uses taiki-e/install-action to replace cargo insatll by @xxchan in https://github.com/apache/opendal/pull/6168
370 | * ci(bindings/node): Add contents permissions for nodejs release by @Xuanwo in https://github.com/apache/opendal/pull/6182
371 | * ci(bindings/java): Enable zig build for java by @Xuanwo in https://github.com/apache/opendal/pull/6181
372 | * ci: Fix behavior tests for go bindings by @Xuanwo in https://github.com/apache/opendal/pull/6199
373 | ### Chore
374 | * Bump opendal to v0.53.3 (Round 1) by @Xuanwo in https://github.com/apache/opendal/pull/6186
375 | * chore: remove useless labeler.yml by @koushiro in https://github.com/apache/opendal/pull/6192
376 |
377 | ## [v0.53.2] - 2025-05-09
378 |
379 | ### Added
380 | * feat(core): impl Drop for BlockingWrapper by @asukaminato0721 in https://github.com/apache/opendal/pull/6036
381 | * feat(bindings/python): add check in py by @asukaminato0721 in https://github.com/apache/opendal/pull/5973
382 | * feat(core): Use divan for benchmark framework by @Xuanwo in https://github.com/apache/opendal/pull/6051
383 | * feat(bindings/python): Add start_after support for list by @asukaminato0721 in https://github.com/apache/opendal/pull/6054
384 | * feat(services/upyun): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6062
385 | * feat(services/alluxio): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6065
386 | * feat(services/cos): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6067
387 | * feat(services/github): Add operation in http context by @tks1197 in https://github.com/apache/opendal/pull/6069
388 | * feat(services/s3): Support request payer option by @antoninferrand in https://github.com/apache/opendal/pull/6070
389 | * feat(layers/prometheus_client): Add disable_label_root to allow skip root label in metrics by @flaneur2020 in https://github.com/apache/opendal/pull/6071
390 | * feat(bindings/python): export MimeGuessLayer by @pk5ls20 in https://github.com/apache/opendal/pull/6073
391 | * feat(services/obs): Add operation in http context by @tks1197 in https://github.com/apache/opendal/pull/6079
392 | * feat(integrations/object_store): add AmazonS3Builder by @meteorgan in https://github.com/apache/opendal/pull/5456
393 | * feat(integration/object_store): bump object store version by @XiangpengHao in https://github.com/apache/opendal/pull/6091
394 | * feat(services/pcloud): Add operation http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6092
395 | * feat(services/vercel_artifacts): Add operation http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6093
396 | * feat(services/aliyun_drive): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6063
397 | * feat(services/ghac): Add operation http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6100
398 | * feat(services/b2): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6066
399 | * feat(services/webdav): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6107
400 | * feat(services/swift): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6106
401 | * feat(services/vercel_blob): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6101
402 | * feat(services/gdrive): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6068
403 | * feat(services/koofr): Add operation http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6096
404 | * feat(services/seafile): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6105
405 | * feat(services/yandex_disk): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6064
406 | * feat(services/webhdfs): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6112
407 | * feat(services/onedrive): Add operation in http context by @jorgehermo9 in https://github.com/apache/opendal/pull/6111
408 | * feat(bindings/python): build and publish musllinux wheels (#6114) by @zhu0629 in https://github.com/apache/opendal/pull/6116
409 | * feat(services/azblob): add request context by @erickguan in https://github.com/apache/opendal/pull/6121
410 | * feat(services/azdls): add request context by @erickguan in https://github.com/apache/opendal/pull/6122
411 | * feat(bindings/c): Add seek support for c-binding by @taoseng in https://github.com/apache/opendal/pull/6119
412 | * feat(bindings/cpp): eliminate indirect pointers by manually managing memory by @deadlinefen in https://github.com/apache/opendal/pull/6147
413 | * refactor(bindings/c)!: extract the writer closing logic from opendal_writer_free by @taoseng in https://github.com/apache/opendal/pull/6128
414 | * feat(bindings/go): implement io.Seeker by @yuchanns in https://github.com/apache/opendal/pull/6151
415 | ### Changed
416 | * refactor(core): Deprecate not used options in OpList by @Xuanwo in https://github.com/apache/opendal/pull/6050
417 | * refactor(services/gdrive): move raw requests to core by @jorgehermo9 in https://github.com/apache/opendal/pull/6088
418 | * refactor(services/ghac): move raw http calls to core by @jorgehermo9 in https://github.com/apache/opendal/pull/6095
419 | * refactor(services/yandex_disk): Move raw request to core by @jorgehermo9 in https://github.com/apache/opendal/pull/6090
420 | * refactor(services/azdls): Refactor raw request send in writer and bac… by @jorgehermo9 in https://github.com/apache/opendal/pull/6109
421 | * refactor(services/seafile): Refactor raw request send in writer and lister by @jorgehermo9 in https://github.com/apache/opendal/pull/6104
422 | * refactor(services/azblob): Refactor raw request send in writer by @jorgehermo9 in https://github.com/apache/opendal/pull/6102
423 | * refactor(services/aliyun_drive): Move raw request to core by @jorgehermo9 in https://github.com/apache/opendal/pull/6089
424 | * refactor(services/webhdfs): Refactor raw request send in writer and backend by @jorgehermo9 in https://github.com/apache/opendal/pull/6113
425 | * refactor(bindings/go): add ffiCall type for FFI function signature by @yuchanns in https://github.com/apache/opendal/pull/6158
426 | ### Fixed
427 | * fix(core): Only run size tests on 64bit platforms by @cryptomilk in https://github.com/apache/opendal/pull/6078
428 | * fix(bindings/go): Reader returns io.EOF at the end of file by @yuchanns in https://github.com/apache/opendal/pull/6150
429 | * fix(core/services/fs): Returning empty dir while list a file path by @Xuanwo in https://github.com/apache/opendal/pull/6154
430 | ### Docs
431 | * doc(services/onedrive): add a comment about onedrive's writer by @erickguan in https://github.com/apache/opendal/pull/6120
432 | ### CI
433 | * ci(bindings/go): include sqlite service into behavior tests by @yuchanns in https://github.com/apache/opendal/pull/6039
434 | ### Chore
435 | * chore: delete unused code in scripts by @yihong0618 in https://github.com/apache/opendal/pull/6084
436 | * chore(integrations/unftp): Make compatible with latest libunftp by @hannesdejager in https://github.com/apache/opendal/pull/6094
437 | * chore(deps): bump logforth from 0.23.1 to 0.24.0 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/6137
438 | * chore(deps): bump assert_cmd from 2.0.16 to 2.0.17 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/6138
439 | * chore(deps): bump logforth from 0.23.1 to 0.24.0 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/6139
440 | * chore(deps): update dav-server requirement from 0.7.0 to 0.8.0 in /integrations/dav-server by @dependabot in https://github.com/apache/opendal/pull/6133
441 | * chore(deps): bump golangci/golangci-lint-action from 6 to 7 by @dependabot in https://github.com/apache/opendal/pull/6134
442 |
443 | ## [v0.53.1] - 2025-04-14
444 |
445 | ### Added
446 | * feat(services/gcs): implement write returns metadata by @meteorgan in https://github.com/apache/opendal/pull/5933
447 | * feat(bindings/ruby): support layers by @erickguan in https://github.com/apache/opendal/pull/5874
448 | * feat(gridfs): implement GridfsCore for GridFS service by @uruemu in https://github.com/apache/opendal/pull/5966
449 | * feat(bindings/nodejs): add check in js by @asukaminato0721 in https://github.com/apache/opendal/pull/5996
450 | * feat(core): Use Buffer as http_body::Body directly by @Xuanwo in https://github.com/apache/opendal/pull/6026
451 | ### Changed
452 | * refactor: Remove dead code ConcurrentFutures by @Xuanwo in https://github.com/apache/opendal/pull/5939
453 | * refactor(layers/tracing): Ensure the entire async function been traced by @Xuanwo in https://github.com/apache/opendal/pull/6000
454 | ### Fixed
455 | * fix(core): Fix head-of-line blocking in concurrent tasks by @Xuanwo in https://github.com/apache/opendal/pull/5941
456 | * fix(services/ipmfs): fix Ipmfs behavior tests by @miroim in https://github.com/apache/opendal/pull/5969
457 | * chore(core): Fix clippy for services azfile by @asukaminato0721 in https://github.com/apache/opendal/pull/5994
458 | ### Docs
459 | * docs(bindings/nodejs): fix broken links by @miroim in https://github.com/apache/opendal/pull/6017
460 | * doc(chore): update copyright date in NOTICE by @caicancai in https://github.com/apache/opendal/pull/6023
461 | ### CI
462 | * ci: add test for cpp example by @silver-ymz in https://github.com/apache/opendal/pull/5952
463 | * ci(bindings/go): include go binding into behavior tests by @yuchanns in https://github.com/apache/opendal/pull/6018
464 | ### Chore
465 | * chore: rm in favor of dosubot by @asukaminato0721 in https://github.com/apache/opendal/pull/5946
466 | * chore: Fix clippy for rust 1.86 by @Xuanwo in https://github.com/apache/opendal/pull/5951
467 | * chore: sync cpp example by @silver-ymz in https://github.com/apache/opendal/pull/5944
468 | * chore: update typos version by @yihong0618 in https://github.com/apache/opendal/pull/5954
469 | * chore(core): fix typos for the QueryPairsWriter by @kemingy in https://github.com/apache/opendal/pull/5978
470 | * chore(service/azdls): use QueryPairsWriter for url write by @kemingy in https://github.com/apache/opendal/pull/5988
471 | * chore(services/obs): Use QueryPairsWriter for url write by @asukaminato0721 in https://github.com/apache/opendal/pull/5985
472 |
473 | ## [v0.53.0] - 2025-04-01
474 |
475 | ### Added
476 | * feat(bindings/python) detailed error message by @asukaminato0721 in https://github.com/apache/opendal/pull/5646
477 | * feat(bindings/python): Add user metadata support for write by @Xuanwo in https://github.com/apache/opendal/pull/5654
478 | * feat(services/s3): add append support by @Frank-III in https://github.com/apache/opendal/pull/5428
479 | * feat(core): Add presign delete support by @asukaminato0721 in https://github.com/apache/opendal/pull/5647
480 | * feat(bindings/python): add python presign_delete by @asukaminato0721 in https://github.com/apache/opendal/pull/5661
481 | * feat(core): Sharing context between layers and service by @Xuanwo in https://github.com/apache/opendal/pull/5662
482 | * feat(!): Bump arrow version of parquet_opendal to 54.x by @erickguan in https://github.com/apache/opendal/pull/5665
483 | * feat: Polish context related APIs by @Xuanwo in https://github.com/apache/opendal/pull/5673
484 | * feat(services/onedrive): List dir shows metadata by @erickguan in https://github.com/apache/opendal/pull/5632
485 | * feat(java): add WriteOptions for write methods by @geruh in https://github.com/apache/opendal/pull/5664
486 | * feat(bindings/ruby): add operator info by @erickguan in https://github.com/apache/opendal/pull/5584
487 | * feat(services/oss): Implement `Write Returns Metadata` for oss by @meteorgan in https://github.com/apache/opendal/pull/5688
488 | * feat(core): Expose Reader::into_stream and Writer::into_sink by @Xuanwo in https://github.com/apache/opendal/pull/5698
489 | * feat: adopt uv for python binding by @kemingy in https://github.com/apache/opendal/pull/5711
490 | * feat(services/gcs): Implement multipart/related and use it with Gcs by @wlinna in https://github.com/apache/opendal/pull/5691
491 | * feat(bindings/dart): Add dart binding by @asukaminato0721 in https://github.com/apache/opendal/pull/5591
492 | * fix(binding/dart): pin version to avoid generator/runtime version mismatch by @asukaminato0721 in https://github.com/apache/opendal/pull/5734
493 | * feat(binding/dart): add examples, tests by @asukaminato0721 in https://github.com/apache/opendal/pull/5740
494 | * feat(services/onedrive): add signer to utilize the refresh token by @erickguan in https://github.com/apache/opendal/pull/5733
495 | * feat(binding/dart): hide init && change to init by @asukaminato0721 in https://github.com/apache/opendal/pull/5742
496 | * feat(core): Implement write returns metadata for b2 by @hoslo in https://github.com/apache/opendal/pull/5750
497 | * feat(services/hdfs_native): implement write/read/list methods by @zhaohaidao in https://github.com/apache/opendal/pull/5617
498 | * feat(website): Adding a WIP to the list of bingdings by @shaonianche in https://github.com/apache/opendal/pull/5769
499 | * feat(services/onedrive): implement read_with_if_none_match by @erickguan in https://github.com/apache/opendal/pull/5763
500 | * feat(binding/dart): add pubspec info by @asukaminato0721 in https://github.com/apache/opendal/pull/5751
501 | * feat(services/s3): Add operation in http context by @Xuanwo in https://github.com/apache/opendal/pull/5791
502 | * feat(bindings/python): Add repr for metadata by @yihong0618 in https://github.com/apache/opendal/pull/5783
503 | * feat: Add origin private file system scaffold by @Eason0729 in https://github.com/apache/opendal/pull/5758
504 | * feat(core): Implement http related metrics support for prom client by @Xuanwo in https://github.com/apache/opendal/pull/5798
505 | * feat(core): Implement http related metrics support for otel by @leiysky in https://github.com/apache/opendal/pull/5800
506 | * feat(services/lakefs): Add operation in http context by @liugddx in https://github.com/apache/opendal/pull/5809
507 | * feat(github): Auto generate weekly summary by @Xuanwo in https://github.com/apache/opendal/pull/5818
508 | * feat(binding/java): Add list with recursive support by @cuichenli in https://github.com/apache/opendal/pull/5718
509 | * feat(services/huggingface): Add operation in http context by @liugddx in https://github.com/apache/opendal/pull/5810
510 | * feat(core/layers): implement http related metrics support for prometheus by @koushiro in https://github.com/apache/opendal/pull/5847
511 | * feat(core/layers): implement http related metrics support for metrics by @koushiro in https://github.com/apache/opendal/pull/5848
512 | * feat(services/onedrive): implement additional OneDrive features by @erickguan in https://github.com/apache/opendal/pull/5784
513 | * feat(bindings/c): add opendal_operator_check by @asukaminato0721 in https://github.com/apache/opendal/pull/5851
514 | * feat(services/aliyun_drive): Add operation in http context by @sunheyi6 in https://github.com/apache/opendal/pull/5880
515 | ### Changed
516 | * refactor(!): Supabase is now an S3-compatible servcices by @Xuanwo in https://github.com/apache/opendal/pull/5663
517 | * refactor: Migrate s3 services to context based http client by @Xuanwo in https://github.com/apache/opendal/pull/5676
518 | * refactor: Migrate oss services to context based http client by @Ziy1-Tan in https://github.com/apache/opendal/pull/5681
519 | * refactor: Migrate obs services to context based http client by @Ziy1-Tan in https://github.com/apache/opendal/pull/5682
520 | * refactor: Migrate cos services to context based http client by @Ziy1-Tan in https://github.com/apache/opendal/pull/5683
521 | * refactor(bindings/node)!: Change `is_exist` to `exists` to align with nodejs API style by @yihong0618 in https://github.com/apache/opendal/pull/5731
522 | * refactor(services/redis): Implement ConnectionLike for RedisConnection by @Xuanwo in https://github.com/apache/opendal/pull/5748
523 | * refactor!: Remove opendal-compat which is not maintained by @Xuanwo in https://github.com/apache/opendal/pull/5754
524 | * refactor: Migrate github services to context based http client by @miroim in https://github.com/apache/opendal/pull/5764
525 | * refactor(gcs): Migrate to context based http client by @leiysky in https://github.com/apache/opendal/pull/5778
526 | * refactor(core/raw)!: Merge blocking and async operations by @Xuanwo in https://github.com/apache/opendal/pull/5789
527 | * refactor(core/raw)!: Use AccessorInfo instead of seperate fields by @Xuanwo in https://github.com/apache/opendal/pull/5796
528 | * refactor: Migrate aliyun_drive services to context based http client by @miroim in https://github.com/apache/opendal/pull/5815
529 | * refactor: Migrate azfile services to context based http client by @miroim in https://github.com/apache/opendal/pull/5816
530 | * refactor: Migrate dropbox services to context based http client by @miroim in https://github.com/apache/opendal/pull/5827
531 | * refactor: Migrate upyun services to context based http client by @miroim in https://github.com/apache/opendal/pull/5829
532 | * refactor(core): Migrate BlockWriter to use executor from context by @Xuanwo in https://github.com/apache/opendal/pull/5834
533 | * refactor(core): Migrate MultipartWrite Executor to context based by @Xuanwo in https://github.com/apache/opendal/pull/5835
534 | * refactor(core): Migrate PositionWrite Executor to context based by @Xuanwo in https://github.com/apache/opendal/pull/5836
535 | * refactor(core)!: Migrate to context based executor by @Xuanwo in https://github.com/apache/opendal/pull/5838
536 | * refactor: tidy binding java code by @tisonkun in https://github.com/apache/opendal/pull/5840
537 | * refactor: Migrate yandex_disk services to context based http client by @miroim in https://github.com/apache/opendal/pull/5841
538 | * refactor: Migrate alluxio services to context based http client by @miroim in https://github.com/apache/opendal/pull/5842
539 | * refactor: Migrate b2 service to context based http client by @miroim in https://github.com/apache/opendal/pull/5843
540 | * refactor: migrate azblob services to context based http client by @Ziy1-Tan in https://github.com/apache/opendal/pull/5845
541 | * refactor: Migrate gdrive service to context based http client by @miroim in https://github.com/apache/opendal/pull/5861
542 | * refactor: Migrate pcloud service to context based http client by @miroim in https://github.com/apache/opendal/pull/5866
543 | * refactor!: Bump OpenDAL MSRV to 1.80 by @Xuanwo in https://github.com/apache/opendal/pull/5868
544 | * refactor: Introduce VercelArtifactsCore for improved service structure by @miroim in https://github.com/apache/opendal/pull/5873
545 | * refactor: Migrate vercel_artifacts service to context based http client by @miroim in https://github.com/apache/opendal/pull/5877
546 | * refactor: Migrate http service to context based http client by @miroim in https://github.com/apache/opendal/pull/5879
547 | * refactor: Migrate services to context based http client by @miroim in https://github.com/apache/opendal/pull/5882
548 | * refactor: Polishing IO metrics by adding more useful metrics by @Xuanwo in https://github.com/apache/opendal/pull/5883
549 | * refactor(core): Add good default histogram buckets for metrics by @Xuanwo in https://github.com/apache/opendal/pull/5886
550 | * refactor: Migrate icloud service to context based http client by @miroim in https://github.com/apache/opendal/pull/5891
551 | * refactor(bindings/dart)!: support macos and use exists api by @yihong0618 in https://github.com/apache/opendal/pull/5884
552 | * refactor: Migrate PrometheusClientLayer to support IO metrics by @Xuanwo in https://github.com/apache/opendal/pull/5887
553 | * refactor(core)!: Merge operations to build more clean metrics by @Xuanwo in https://github.com/apache/opendal/pull/5892
554 | * refactor: Migrate WebHDFS service to context based http client by @miroim in https://github.com/apache/opendal/pull/5893
555 | * refactor(layer/metrics): Migrate MetricsLayer to support IO metrics by @koushiro in https://github.com/apache/opendal/pull/5900
556 | * refactor(layer/prometheus): Migrate PrometheusLayer to support IO metrics by @koushiro in https://github.com/apache/opendal/pull/5899
557 | * refactor(layer/otelmetrics): Migrate OtelMetricsLayer to support IO metrics by @koushiro in https://github.com/apache/opendal/pull/5901
558 | * refactor: Introduce SftpCore for improved service structure by @miroim in https://github.com/apache/opendal/pull/5902
559 | * refactor(observe): remove duplicated observation by @koushiro in https://github.com/apache/opendal/pull/5894
560 | * refactor: refine RetryLayer type signature by @tisonkun in https://github.com/apache/opendal/pull/5905
561 | * refactor(core): Remove all `write_has_xxx` capabilities by @Ziy1-Tan in https://github.com/apache/opendal/pull/5908
562 | * refactor(services/obs): Implement Write Returns Metadata for obs by @Ziy1-Tan in https://github.com/apache/opendal/pull/5912
563 | ### Fixed
564 | * fix(integrations/dav-server): handle encoded path correctly. by @rick-200 in https://github.com/apache/opendal/pull/5650
565 | * fix(services/onedrive): fix OneDrive behavior tests by @erickguan in https://github.com/apache/opendal/pull/5652
566 | * fix(services/gcs): Advertise `write_with_cache_control` in Gcs by @wlinna in https://github.com/apache/opendal/pull/5658
567 | * fix(services/gcs): Fix cache control not present in object meta by @Xuanwo in https://github.com/apache/opendal/pull/5660
568 | * fix(services/s3): fix batch delete with version by @meteorgan in https://github.com/apache/opendal/pull/5684
569 | * fix(services/oss): fix batch delete with version for oss by @meteorgan in https://github.com/apache/opendal/pull/5687
570 | * fix(services/onedrive): remove @odata.type field by @erickguan in https://github.com/apache/opendal/pull/5696
571 | * fix: drop useless clone for py binding and make clippy happy by @yihong0618 in https://github.com/apache/opendal/pull/5708
572 | * fix: drop useless file by @yihong0618 in https://github.com/apache/opendal/pull/5714
573 | * fix: make build_abs_path to build_rooted_abs_path for chainsafe by @yihong0618 in https://github.com/apache/opendal/pull/5715
574 | * fix: mac can not build lua binding by @yihong0618 in https://github.com/apache/opendal/pull/5719
575 | * fix(website): Handling svg image correctly by @Xuanwo in https://github.com/apache/opendal/pull/5725
576 | * fix(website): Handling badges click behavior correctly by @miroim in https://github.com/apache/opendal/pull/5741
577 | * fix(core)!: chainsafe services has been sunset by @yihong0618 in https://github.com/apache/opendal/pull/5744
578 | * fix: sqlite may dead lock in ci by @yihong0618 in https://github.com/apache/opendal/pull/5738
579 | * fix: drop useless import and clippy happy for java binding by @yihong0618 in https://github.com/apache/opendal/pull/5746
580 | * fix(bindings/java): bring back false delete code by @yihong0618 in https://github.com/apache/opendal/pull/5752
581 | * fix(core): fix list with recursive when the object doesn't exist by @meteorgan in https://github.com/apache/opendal/pull/5732
582 | * fix(website): docusaurus build on windows by @shaonianche in https://github.com/apache/opendal/pull/5770
583 | * fix: make php binding happy again by @yihong0618 in https://github.com/apache/opendal/pull/5761
584 | * fix(services/onedrive): add scope for the refresh token by @erickguan in https://github.com/apache/opendal/pull/5776
585 | * fix: py binding benchmark can not run by @yihong0618 in https://github.com/apache/opendal/pull/5786
586 | * fix: add missing last_modified for python binding by @yihong0618 in https://github.com/apache/opendal/pull/5767
587 | * doc: fix README root wrong for example close issue #5871 by correct README by @yihong0618 in https://github.com/apache/opendal/pull/5782
588 | * fix(services/compfs): behavior async write by @Berrysoft in https://github.com/apache/opendal/pull/5803
589 | * fix(services/onedrive): chunk PUT upload remove auth header by @emliunix in https://github.com/apache/opendal/pull/5812
590 | * fix(services/compfs): read, delete, copy, rename by @Berrysoft in https://github.com/apache/opendal/pull/5807
591 | * fix(github): Fix discussion create by @Xuanwo in https://github.com/apache/opendal/pull/5821
592 | * fix(bindings/python): open python3.13t release for windows since upstream had fixed by @yihong0618 in https://github.com/apache/opendal/pull/5826
593 | * fix: better ocaml binding and happy clippy by @yihong0618 in https://github.com/apache/opendal/pull/5839
594 | * fix(bindings/python): sort imports, fix template, fix bench by @kemingy in https://github.com/apache/opendal/pull/5844
595 | * fix: make haskell binding happier by @yihong0618 in https://github.com/apache/opendal/pull/5849
596 | * doc: fix all fs env tmp file dir in doc by @yihong0618 in https://github.com/apache/opendal/pull/5855
597 | * fix: drop fixme in py binding since upstream fixed by @yihong0618 in https://github.com/apache/opendal/pull/5862
598 | * fix: drop fixme in etcd tls since upstream fixed by @yihong0618 in https://github.com/apache/opendal/pull/5863
599 | * fix: todo list since MSRV is 1.80 by @yihong0618 in https://github.com/apache/opendal/pull/5870
600 | * fix: close issue #5910 by @yihong0618 in https://github.com/apache/opendal/pull/5911
601 | ### Docs
602 | * doc: add the most famous Python binding by @yihong0618 in https://github.com/apache/opendal/pull/5707
603 | * doc: py binding version is wrong for now by @yihong0618 in https://github.com/apache/opendal/pull/5709
604 | * docs: Better ways to users showcase by @Xuanwo in https://github.com/apache/opendal/pull/5720
605 | * docs: Add useful links by @Xuanwo in https://github.com/apache/opendal/pull/5735
606 | * docs: QuestDB is not using opendal java by @Xuanwo in https://github.com/apache/opendal/pull/5736
607 | * doc: more users for python binding by @yihong0618 in https://github.com/apache/opendal/pull/5756
608 | * docs: Update nominate-committer.md by @tisonkun in https://github.com/apache/opendal/pull/5765
609 | * docs: Fix rustic users entry by @QazCetelic in https://github.com/apache/opendal/pull/5790
610 | * docs(services/onedrive): add how to get tokens by @emliunix in https://github.com/apache/opendal/pull/5792
611 | * doc: fix typo in RFC md by @yihong0618 in https://github.com/apache/opendal/pull/5813
612 | * doc: dotnet binding wip doc by @yihong0618 in https://github.com/apache/opendal/pull/5850
613 | * doc: add oli bench command doc by @yihong0618 in https://github.com/apache/opendal/pull/5854
614 | * doc: docker installation guide for behaviour test by @zhaohaidao in https://github.com/apache/opendal/pull/5876
615 | * docs: Add docs on how to upgrade to opendal rust core 0.53 by @Xuanwo in https://github.com/apache/opendal/pull/5918
616 | ### CI
617 | * ci(bindings/zig): update to zig version 0.14.0 by @kassane in https://github.com/apache/opendal/pull/5700
618 | * ci: add clippy to some of the binding check ci by @yihong0618 in https://github.com/apache/opendal/pull/5717
619 | * build: bump opentelemetry dependency to 0.29.0 by @tisonkun in https://github.com/apache/opendal/pull/5856
620 | * build(deps): bump actions/setup-python from 4 to 5 by @dependabot in https://github.com/apache/opendal/pull/5926
621 | * build(deps): update datafusion requirement from 45.0.0 to 46.0.1 in /integrations/object_store by @dependabot in https://github.com/apache/opendal/pull/5928
622 | * build(deps): bump governor from 0.6.3 to 0.10.0 in /core by @dependabot in https://github.com/apache/opendal/pull/5923
623 | * build(deps): bump log from 0.4.25 to 0.4.27 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/5927
624 | * build(deps): bump humantime from 2.1.0 to 2.2.0 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/5925
625 | * build(deps): bump test-context from 0.3.0 to 0.4.1 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/5924
626 | * build(deps): update pyo3 requirement from 0.23.3 to 0.24.1 in /bindings/python by @dependabot in https://github.com/apache/opendal/pull/5922
627 | ### Chore
628 | * chore: Fix clippy for rust edition 2024 by @Xuanwo in https://github.com/apache/opendal/pull/5648
629 | * chore: update mongodb version drop the fixme comments by @yihong0618 in https://github.com/apache/opendal/pull/5706
630 | * chore: revert "services/cos: Implement Write Returns Metadata for cos" by @Xuanwo in https://github.com/apache/opendal/pull/5713
631 | * chore(core): Fix BufferStream not exported by @Xuanwo in https://github.com/apache/opendal/pull/5730
632 | * chore: update flate2 version by @yihong0618 in https://github.com/apache/opendal/pull/5759
633 | * chore(services/hdfs_native): enable create_dir capability by @meteorgan in https://github.com/apache/opendal/pull/5817
634 | * chore(github): Fix uv not installed in weekly-update by @Xuanwo in https://github.com/apache/opendal/pull/5819
635 | * chore(github): Fix dateutil not installed by @Xuanwo in https://github.com/apache/opendal/pull/5820
636 | * chore(github): Avoid ping all contributors by @Xuanwo in https://github.com/apache/opendal/pull/5823
637 | * chore: make ruby clippy happy by @yihong0618 in https://github.com/apache/opendal/pull/5830
638 | * chore: update py binding api just by @yihong0618 in https://github.com/apache/opendal/pull/5898
639 | * chore: Polish IO metric buckets by @Xuanwo in https://github.com/apache/opendal/pull/5903
640 | * chore(layer/observe): cleanup useless metric metadata by @koushiro in https://github.com/apache/opendal/pull/5904
641 | * chore: update cpp example by @yihong0618 in https://github.com/apache/opendal/pull/5907
642 | * chore: chore some version like logforth by @yihong0618 in https://github.com/apache/opendal/pull/5921
643 |
644 | ## [v0.52.0] - 2025-02-19
645 |
646 | ### Added
647 | * feat(services/s3): Added crc64nvme for s3 by @geetanshjuneja in https://github.com/apache/opendal/pull/5580
648 | * feat(services-fs): Support write-if-not-exists in fs backend by @SergeiPatiakin in https://github.com/apache/opendal/pull/5605
649 | * feat(services/gcs): Impl content-encoding support for GCS stat, write and presign by @wlinna in https://github.com/apache/opendal/pull/5610
650 | * feat(bindings/ruby): add lister by @erickguan in https://github.com/apache/opendal/pull/5600
651 | * feat(services/swift): Added user metadata support for swift service by @zhaohaidao in https://github.com/apache/opendal/pull/5601
652 | * feat: Implement github actions cache service v2 support by @Xuanwo in https://github.com/apache/opendal/pull/5633
653 | * feat(core)!: implement write returns metadata by @meteorgan in https://github.com/apache/opendal/pull/5562
654 | * feat(bindings/python): let path can be PathLike by @asukaminato0721 in https://github.com/apache/opendal/pull/5636
655 | * feat(bindings/python): add exists by @asukaminato0721 in https://github.com/apache/opendal/pull/5637
656 | ### Changed
657 | * refactor: Remove dead services libsql by @Xuanwo in https://github.com/apache/opendal/pull/5616
658 | ### Fixed
659 | * fix(services/gcs): Fix content encoding can't be used alone by @Xuanwo in https://github.com/apache/opendal/pull/5614
660 | * fix: ghac doesn't support delete anymore by @Xuanwo in https://github.com/apache/opendal/pull/5628
661 | * fix(services/gdrive): skip the trailing slash when creating and querying the directory by @meteorgan in https://github.com/apache/opendal/pull/5631
662 | ### Docs
663 | * docs(bindings/ruby): add documentation for Ruby binding by @erickguan in https://github.com/apache/opendal/pull/5629
664 | * docs: Add upgrade docs for upcoming 0.52 by @Xuanwo in https://github.com/apache/opendal/pull/5634
665 | ### CI
666 | * ci: Fix bad corepack cannot find matching keyid by @Xuanwo in https://github.com/apache/opendal/pull/5603
667 | * ci(website): avoid including rc when calculate the latest version by @tisonkun in https://github.com/apache/opendal/pull/5608
668 | * build: upgrade opentelemetry dependencies to 0.28.0 by @tisonkun in https://github.com/apache/opendal/pull/5625
669 | ### Chore
670 | * chore(deps): bump uuid from 1.11.0 to 1.12.1 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/5589
671 | * chore(deps): bump uuid from 1.11.0 to 1.12.1 in /core by @dependabot in https://github.com/apache/opendal/pull/5588
672 | * chore(deps): bump log from 0.4.22 to 0.4.25 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/5590
673 | * chore(deps): bump tempfile from 3.15.0 to 3.16.0 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/5586
674 | * chore(deps): update libtest-mimic requirement from 0.7.3 to 0.8.1 in /integrations/object_store by @dependabot in https://github.com/apache/opendal/pull/5587
675 | * chore(layers/prometheus-client): upgrade prometheus-client dependency to v0.23.1 by @koushiro in https://github.com/apache/opendal/pull/5576
676 | * chore(ci): remove benchmark report by @dqhl76 in https://github.com/apache/opendal/pull/5626
677 |
678 | ## [v0.51.2] - 2025-02-02
679 | ### Added
680 | * feat(core): implement if_modified_since and if_unmodified_since for stat_with by @meteorgan in https://github.com/apache/opendal/pull/5528
681 | * feat(layer/otelmetrics): add OtelMetricsLayer by @andylokandy in https://github.com/apache/opendal/pull/5524
682 | * feat(integrations/object_store): implement put_opts and get_opts by @meteorgan in https://github.com/apache/opendal/pull/5513
683 | * feat: Conditional reader for azblob, gcs, oss by @geetanshjuneja in https://github.com/apache/opendal/pull/5531
684 | * feat(core): Add correctness check for read with if_xxx headers by @Xuanwo in https://github.com/apache/opendal/pull/5538
685 | * feat(services/cos): Added user metadata support for cos service by @geetanshjuneja in https://github.com/apache/opendal/pull/5510
686 | * feat(core): Implement list with deleted and versions for oss by @hoslo in https://github.com/apache/opendal/pull/5527
687 | * feat(layer/otelmetrics): take meter when register by @andylokandy in https://github.com/apache/opendal/pull/5547
688 | * feat(gcs): Convert TOO_MANY_REQUESTS to retryable Ratelimited by @Xuanwo in https://github.com/apache/opendal/pull/5551
689 | * feat(services/webdfs): Add user.name support for webhdfs by @Xuanwo in https://github.com/apache/opendal/pull/5567
690 | * feat: disable backtrace for NotFound error by @xxchan in https://github.com/apache/opendal/pull/5577
691 | ### Changed
692 | * refactor: refactor some unnecessary clone and use next_back to make clippy happy by @yihong0618 in https://github.com/apache/opendal/pull/5554
693 | * refactor: refactor all body.copy_to_bytes(body.remaining()) by @yihong0618 in https://github.com/apache/opendal/pull/5561
694 | ### Fixed
695 | * fix(integrations/object_store) `object_store_opendal` now compiles on wasm32-unknown-unknown by @XiangpengHao in https://github.com/apache/opendal/pull/5530
696 | * fix(serivces/gcs): Gcs doesn't support read with if_(un)modified_since by @Xuanwo in https://github.com/apache/opendal/pull/5537
697 | * fix(logging): remove additional space by @xxchan in https://github.com/apache/opendal/pull/5568
698 | ### Docs
699 | * docs: Fix opendal rust core's README not align with new vision by @Xuanwo in https://github.com/apache/opendal/pull/5541
700 | * docs(integration/object_store): add example for datafusion by @meteorgan in https://github.com/apache/opendal/pull/5543
701 | * docs: Add docs on how to pronounce opendal by @Xuanwo in https://github.com/apache/opendal/pull/5552
702 | * docs(bindings/java): better javadoc by @tisonkun in https://github.com/apache/opendal/pull/5572
703 | ### CI
704 | * ci(integration/object_store): add integration tests for object_store_opendal by @meteorgan in https://github.com/apache/opendal/pull/5536
705 | * ci: Pin the nightly version to rust 1.84 for fuzz by @Xuanwo in https://github.com/apache/opendal/pull/5546
706 | * ci: skip running behavior tests when adding or modifying documentation by @meteorgan in https://github.com/apache/opendal/pull/5558
707 | * build: fix Cargo.lock and pass --locked in CI by @xxchan in https://github.com/apache/opendal/pull/5565
708 | * build: implement release process in odev by @tisonkun in https://github.com/apache/opendal/pull/5592
709 | ### Chore
710 | * chore: Update CODEOWNERS by @Xuanwo in https://github.com/apache/opendal/pull/5542
711 | * chore(layer/otelmetrics): take meter by reference by @andylokandy in https://github.com/apache/opendal/pull/5553
712 | * chore(core): Avoid using mongodb 3.2.0 by @Xuanwo in https://github.com/apache/opendal/pull/5560
713 | * chore: add oli/oay/ofs to rust-analyzer.linkedProjects by @xxchan in https://github.com/apache/opendal/pull/5564
714 | * chore: try use logforth by @tisonkun in https://github.com/apache/opendal/pull/5573
715 | * chore: bump version 0.51.2 by @tisonkun in https://github.com/apache/opendal/pull/5595
716 |
717 | ## [v0.51.1] - 2025-01-08
718 |
719 | ### Added
720 | * feat(bin/oli): implement oli bench by @tisonkun in https://github.com/apache/opendal/pull/5443
721 | * feat(dev): Add config parse and generate support by @Xuanwo in https://github.com/apache/opendal/pull/5454
722 | * feat(bindings/python): generate python operator constructor types by @trim21 in https://github.com/apache/opendal/pull/5457
723 | * feat(dev): Parse comments from config by @Xuanwo in https://github.com/apache/opendal/pull/5467
724 | * feat(services/core): Implement stat_has_* and list_has_* correctly for services by @geetanshjuneja in https://github.com/apache/opendal/pull/5472
725 | * feat: Add if-match & if-none-match support for reader by @XmchxUp in https://github.com/apache/opendal/pull/5492
726 | * feat(core): Add is_current to metadata by @Wenbin1002 in https://github.com/apache/opendal/pull/5493
727 | * feat(core): Implement list with deleted for s3 service by @Xuanwo in https://github.com/apache/opendal/pull/5498
728 | * feat: generate java configs by @tisonkun in https://github.com/apache/opendal/pull/5503
729 | * feat: Return hinted error for S3 wildcard if-none-match by @gruuya in https://github.com/apache/opendal/pull/5506
730 | * feat(core): implement if_modified_since and if_unmodified_since for read_with and reader_with by @meteorgan in https://github.com/apache/opendal/pull/5500
731 | * feat(core): Implement list with deleted and versions for cos by @hoslo in https://github.com/apache/opendal/pull/5514
732 | ### Changed
733 | * refactor: tidy up oli build by @tisonkun in https://github.com/apache/opendal/pull/5438
734 | * refactor(core): Deprecate OpList::version and add versions instead by @geetanshjuneja in https://github.com/apache/opendal/pull/5481
735 | * refactor(dev): use minijinja by @tisonkun in https://github.com/apache/opendal/pull/5494
736 | ### Fixed
737 | * fix: exception name in python by @trim21 in https://github.com/apache/opendal/pull/5453
738 | * fix rust warning in python binding by @trim21 in https://github.com/apache/opendal/pull/5459
739 | * fix: python binding kwargs parsing by @trim21 in https://github.com/apache/opendal/pull/5458
740 | * fix(bindings/python): add py.typed marker file by @trim21 in https://github.com/apache/opendal/pull/5464
741 | * fix(services/ghac): Fix stat_with_if_none_match been set in wrong by @Xuanwo in https://github.com/apache/opendal/pull/5477
742 | * fix(ci): Correctly upgrade upload-artifact to v4 by @Xuanwo in https://github.com/apache/opendal/pull/5484
743 | * fix(integration/object_store): object_store requires metadata in list by @Xuanwo in https://github.com/apache/opendal/pull/5501
744 | * fix(services/s3): List with deleted should contain latest by @Xuanwo in https://github.com/apache/opendal/pull/5518
745 | ### Docs
746 | * docs: Fix links to vision by @Xuanwo in https://github.com/apache/opendal/pull/5466
747 | * docs(golang): remove unused pkg by @fyqtian in https://github.com/apache/opendal/pull/5473
748 | * docs(core): Polish API docs for `Metadata` by @Xuanwo in https://github.com/apache/opendal/pull/5497
749 | * docs: Polish docs for Operator, Reader and Writer by @Xuanwo in https://github.com/apache/opendal/pull/5516
750 | * docs: Reorganize docs for xxx_with for better reading by @Xuanwo in https://github.com/apache/opendal/pull/5517
751 | ### CI
752 | * ci: disable windows free-thread build by @trim21 in https://github.com/apache/opendal/pull/5449
753 | * ci: Upgrade and fix typos by @Xuanwo in https://github.com/apache/opendal/pull/5468
754 | ### Chore
755 | * chore(dev): Try just instead of xtasks methods by @Xuanwo in https://github.com/apache/opendal/pull/5461
756 | * chore: pretty gen javadoc by @tisonkun in https://github.com/apache/opendal/pull/5508
757 | * chore(ci): upgrade to manylinux_2_28 for aarch64 Python wheels by @messense in https://github.com/apache/opendal/pull/5522
758 |
759 | ## [v0.51.0] - 2024-12-14
760 |
761 | ### Added
762 | * feat(adapter/kv): support async iterating on scan results by @PragmaTwice in https://github.com/apache/opendal/pull/5208
763 | * feat(bindings/ruby): Add simple operators to Ruby binding by @erickguan in https://github.com/apache/opendal/pull/5246
764 | * feat(core/services-gcs): support user defined metadata by @jorgehermo9 in https://github.com/apache/opendal/pull/5276
765 | * feat(core): add `if_not_exist` in `OpWrite` by @kemingy in https://github.com/apache/opendal/pull/5305
766 | * feat: Add {stat,list}_has_* to carry the metadata that backend returns by @Xuanwo in https://github.com/apache/opendal/pull/5318
767 | * feat(core): Implement write if not exists for azblob,azdls,gcs,oss,cos by @Xuanwo in https://github.com/apache/opendal/pull/5321
768 | * feat(core): add new cap shared by @TennyZhuang in https://github.com/apache/opendal/pull/5328
769 | * feat(bindings/python): support pickle [de]serialization for Operator by @TennyZhuang in https://github.com/apache/opendal/pull/5324
770 | * feat(bindings/cpp): init the async support of C++ binding by @PragmaTwice in https://github.com/apache/opendal/pull/5195
771 | * feat(bindings/go): support darwin by @yuchanns in https://github.com/apache/opendal/pull/5334
772 | * feat(services/gdrive): List shows modified timestamp gdrive by @erickguan in https://github.com/apache/opendal/pull/5226
773 | * feat(service/s3): support delete with version by @Frank-III in https://github.com/apache/opendal/pull/5349
774 | * feat: upgrade pyo3 to 0.23 by @XmchxUp in https://github.com/apache/opendal/pull/5368
775 | * feat: publish python3.13t free-threaded wheel by @XmchxUp in https://github.com/apache/opendal/pull/5387
776 | * feat: add progress bar for oli cp command by @waynexia in https://github.com/apache/opendal/pull/5369
777 | * feat(types/buffer): skip copying in `to_bytes` when `NonContiguous` contains a single `Bytes` by @ever0de in https://github.com/apache/opendal/pull/5388
778 | * feat(bin/oli): support command mv by @meteorgan in https://github.com/apache/opendal/pull/5370
779 | * feat(core): add if-match to `OpWrite` by @Frank-III in https://github.com/apache/opendal/pull/5360
780 | * feat(core/layers): add correctness_check and capability_check layer to verify whether the operation and arguments is supported by @meteorgan in https://github.com/apache/opendal/pull/5352
781 | * feat(bindings/ruby): Add I/O class for Ruby by @erickguan in https://github.com/apache/opendal/pull/5354
782 | * feat(core): Add `content_encoding` to `MetaData` by @Frank-III in https://github.com/apache/opendal/pull/5400
783 | * feat:(core): add `content encoding` to `Opwrite` by @Frank-III in https://github.com/apache/opendal/pull/5390
784 | * feat(services/obs): support user defined metadata by @Frank-III in https://github.com/apache/opendal/pull/5405
785 | * feat: impl configurable OperatorOutputStream maxBytes by @tisonkun in https://github.com/apache/opendal/pull/5422
786 | ### Changed
787 | * refactor (bindings/zig): Improvements by @kassane in https://github.com/apache/opendal/pull/5247
788 | * refactor: Remove metakey concept by @Xuanwo in https://github.com/apache/opendal/pull/5319
789 | * refactor(core)!: Remove not used cap write_multi_align_size by @Xuanwo in https://github.com/apache/opendal/pull/5322
790 | * refactor(core)!: Remove the range writer that has never been used by @Xuanwo in https://github.com/apache/opendal/pull/5323
791 | * refactor(core): MaybeSend does not need to be unsafe by @drmingdrmer in https://github.com/apache/opendal/pull/5338
792 | * refactor: Implement RFC-3911 Deleter API by @Xuanwo in https://github.com/apache/opendal/pull/5392
793 | * refactor: Remove batch concept from opendal by @Xuanwo in https://github.com/apache/opendal/pull/5393
794 | ### Fixed
795 | * fix(services/webdav): Fix lister failing when root contains spaces by @skrimix in https://github.com/apache/opendal/pull/5298
796 | * fix(bindings/c): Bump min CMake version to support CMP0135 by @palash25 in https://github.com/apache/opendal/pull/5308
797 | * fix(services/webhdfs): rename auth value by @notauserx in https://github.com/apache/opendal/pull/5342
798 | * fix(bindings/cpp): remove the warning of CMP0135 by @PragmaTwice in https://github.com/apache/opendal/pull/5346
799 | * build(python): fix pyproject meta file by @trim21 in https://github.com/apache/opendal/pull/5348
800 | * fix(services/unftp): add `/` when not presented by @Frank-III in https://github.com/apache/opendal/pull/5382
801 | * fix: update document against target format check and add hints by @waynexia in https://github.com/apache/opendal/pull/5361
802 | * fix: oli clippy and CI file by @waynexia in https://github.com/apache/opendal/pull/5389
803 | * fix(services/obs): support huawei.com by @FayeSpica in https://github.com/apache/opendal/pull/5399
804 | * fix(integrations/cloud_filter): use explicit `stat` instead of `Entry::metadata` in `fetch_placeholders` by @ho-229 in https://github.com/apache/opendal/pull/5416
805 | * fix(core): S3 multipart uploads does not set file metadata by @catcatmu in https://github.com/apache/opendal/pull/5430
806 | * fix: always contains path label if configured by @waynexia in https://github.com/apache/opendal/pull/5433
807 | ### Docs
808 | * docs: Enable force_orphan to reduce clone size by @Xuanwo in https://github.com/apache/opendal/pull/5289
809 | * docs: Establish VISION for "One Layer, All Storage" by @Xuanwo in https://github.com/apache/opendal/pull/5309
810 | * docs: Polish docs for write with if not exists by @Xuanwo in https://github.com/apache/opendal/pull/5320
811 | * docs(core): add the description of version parameter for operator by @meteorgan in https://github.com/apache/opendal/pull/5144
812 | * docs(core): Add upgrade to v0.51 by @Xuanwo in https://github.com/apache/opendal/pull/5406
813 | * docs: Update release.md by @tisonkun in https://github.com/apache/opendal/pull/5431
814 | ### CI
815 | * ci: Remove the token of codspeed by @Xuanwo in https://github.com/apache/opendal/pull/5283
816 | * ci: Allow force push for `gh-pages` by @Xuanwo in https://github.com/apache/opendal/pull/5290
817 | * build(bindings/java): fix lombok process by @tisonkun in https://github.com/apache/opendal/pull/5297
818 | * build(bindings/python): add python 3.10 back and remove pypy by @trim21 in https://github.com/apache/opendal/pull/5347
819 | ### Chore
820 | * chore(core/layers): align `info` method of `trait Access` and `trait LayeredAccess` by @koushiro in https://github.com/apache/opendal/pull/5258
821 | * chore(core/raw): align `info` method of `kv::Adapter` and `typed_kv::Adapter` by @koushiro in https://github.com/apache/opendal/pull/5259
822 | * chore(layers/oteltrace): adjust tracer span name of info method by @koushiro in https://github.com/apache/opendal/pull/5285
823 | * chore(services/s3): remove versioning check for s3 by @meteorgan in https://github.com/apache/opendal/pull/5300
824 | * chore: Polish the debug output of capability by @Xuanwo in https://github.com/apache/opendal/pull/5315
825 | * chore: Update maturity.md by @tisonkun in https://github.com/apache/opendal/pull/5340
826 | * chore: remove flagset in cargo.lock by @meteorgan in https://github.com/apache/opendal/pull/5355
827 | * chore: add setup action for hadoop to avoid build failures by @meteorgan in https://github.com/apache/opendal/pull/5353
828 | * chore: fix cargo clippy by @meteorgan in https://github.com/apache/opendal/pull/5379
829 | * chore: fix cargo clippy by @meteorgan in https://github.com/apache/opendal/pull/5384
830 | * chore: fix Bindings OCaml CI by @meteorgan in https://github.com/apache/opendal/pull/5386
831 | * chore: Add default vscode config for more friendly developer experience by @Zheaoli in https://github.com/apache/opendal/pull/5331
832 | * chore(website): remove outdated description by @meteorgan in https://github.com/apache/opendal/pull/5411
833 | * chore(deps): bump clap from 4.5.20 to 4.5.21 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/5372
834 | * chore(deps): bump anyhow from 1.0.90 to 1.0.93 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/5375
835 | * chore(deps): bump serde from 1.0.210 to 1.0.215 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/5376
836 | * chore(deps): bump openssh-sftp-client from 0.15.1 to 0.15.2 in /core by @dependabot in https://github.com/apache/opendal/pull/5377
837 | * chore(ci): fix invalid Behavior Test Integration Cloud Filter trigger by @Zheaoli in https://github.com/apache/opendal/pull/5414
838 |
839 | ## [v0.50.2] - 2024-11-04
840 |
841 | ### Added
842 | * feat(services/ftp): List dir shows last modified timestamp by @erickguan in https://github.com/apache/opendal/pull/5213
843 | * feat(bindings/d): add D bindings support by @kassane in https://github.com/apache/opendal/pull/5181
844 | * feat(bindings/python): add sync `File.readline` by @TennyZhuang in https://github.com/apache/opendal/pull/5271
845 | * feat(core/services-azblob): support user defined metadata by @jorgehermo9 in https://github.com/apache/opendal/pull/5274
846 | * feat(core/services-s3): try load endpoint from config by @TennyZhuang in https://github.com/apache/opendal/pull/5279
847 | ### Changed
848 | * refactor(bin/oli): use `clap_derive` to reduce boilerplate code by @koushiro in https://github.com/apache/opendal/pull/5233
849 | ### Fixed
850 | * fix: add all-features flag for opendal_compat doc build by @XmchxUp in https://github.com/apache/opendal/pull/5234
851 | * fix(integrations/compat): Capability has different fields by @Xuanwo in https://github.com/apache/opendal/pull/5236
852 | * fix(integration/compat): Fix opendal 0.50 OpList has new field by @Xuanwo in https://github.com/apache/opendal/pull/5238
853 | * fix(integrations/compat): Fix dead loop happened during list by @Xuanwo in https://github.com/apache/opendal/pull/5240
854 | ### Docs
855 | * docs: Move our release process to github discussions by @Xuanwo in https://github.com/apache/opendal/pull/5217
856 | * docs: change "Github" to "GitHub" by @MohammadLotfiA in https://github.com/apache/opendal/pull/5250
857 | ### CI
858 | * ci(asf): Don't add `[DISCUSS]` prefix for discussion by @Xuanwo in https://github.com/apache/opendal/pull/5210
859 | * build: enable services-mysql for Java and Python bindings by @tisonkun in https://github.com/apache/opendal/pull/5222
860 | * build(binding/python): Support Python 3.13 by @Zheaoli in https://github.com/apache/opendal/pull/5248
861 | ### Chore
862 | * chore(bin/*): remove useless deps by @koushiro in https://github.com/apache/opendal/pull/5212
863 | * chore: tidy up c binding build and docs by @tisonkun in https://github.com/apache/opendal/pull/5243
864 | * chore(core/layers): adjust await point to simplify combinator code by @koushiro in https://github.com/apache/opendal/pull/5255
865 | * chore(core/blocking_operator): deduplicate deprecated `is_exist` logic by @simonsan in https://github.com/apache/opendal/pull/5261
866 | * chore(deps): bump actions/cache from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/5262
867 | * chore: run object_store tests in CI by @jorgehermo9 in https://github.com/apache/opendal/pull/5268
868 |
869 | ## [v0.50.1] - 2024-10-20
870 |
871 | ### Added
872 | * feat(core/redis): Replace client requests with connection pool by @jackyyyyyssss in https://github.com/apache/opendal/pull/5117
873 | * feat: add copy api for lakefs service. by @liugddx in https://github.com/apache/opendal/pull/5114
874 | * feat(core): add version(bool) for List operation to include version d… by @meteorgan in https://github.com/apache/opendal/pull/5106
875 | * feat(bindings/python): export ConcurrentLimitLayer by @TennyZhuang in https://github.com/apache/opendal/pull/5140
876 | * feat(bindings/c): add writer operation for Bindings C and Go by @yuchanns in https://github.com/apache/opendal/pull/5141
877 | * feat(ofs): introduce ofs macos support by @oowl in https://github.com/apache/opendal/pull/5136
878 | * feat: Reduce stat operation if we are reading all by @Xuanwo in https://github.com/apache/opendal/pull/5146
879 | * feat: add NebulaGraph config by @GG2002 in https://github.com/apache/opendal/pull/5147
880 | * feat(integrations/spring): add spring serialize method by @shoothzj in https://github.com/apache/opendal/pull/5154
881 | * feat: support write,read,delete with template by @shoothzj in https://github.com/apache/opendal/pull/5156
882 | * feat(bindings/java): support ConcurrentLimitLayer by @tisonkun in https://github.com/apache/opendal/pull/5168
883 | * feat: Add if_none_match for write by @ForestLH in https://github.com/apache/opendal/pull/5129
884 | * feat: Add OpenDAL Compat by @Xuanwo in https://github.com/apache/opendal/pull/5185
885 | * feat(core): abstract HttpFetch trait for raw http client by @everpcpc in https://github.com/apache/opendal/pull/5184
886 | * feat: Support NebulaGraph by @GG2002 in https://github.com/apache/opendal/pull/5116
887 | * feat(bindings/cpp): rename is_exist to exists as core did by @PragmaTwice in https://github.com/apache/opendal/pull/5198
888 | * feat(bindings/c): add opendal_operator_exists and mark is_exist deprecated by @PragmaTwice in https://github.com/apache/opendal/pull/5199
889 | * feat(binding/java): prefix thread name with opendal-tokio-worker by @tisonkun in https://github.com/apache/opendal/pull/5197
890 | ### Changed
891 | * refactor(services/cloudflare-kv): remove unneeded async and result on parse_error by @tsfotis in https://github.com/apache/opendal/pull/5128
892 | * refactor(*): remove unneeded async and result on parse_error by @tsfotis in https://github.com/apache/opendal/pull/5131
893 | * refactor: align C binding pattern by @tisonkun in https://github.com/apache/opendal/pull/5160
894 | * refactor: more consistent C binding pattern by @tisonkun in https://github.com/apache/opendal/pull/5162
895 | * refactor(integration/parquet): Use ParquetMetaDataReader instead by @Xuanwo in https://github.com/apache/opendal/pull/5170
896 | * refactor: resolve c pointers const by @tisonkun in https://github.com/apache/opendal/pull/5171
897 | * refactor(types/operator): rename is_exist to exists by @photino in https://github.com/apache/opendal/pull/5193
898 | ### Fixed
899 | * fix(services/huggingface): Align with latest HuggingFace API by @morristai in https://github.com/apache/opendal/pull/5123
900 | * fix(bindings/c): use `ManuallyDrop` instead of `forget` to make sure pointer is valid by @ethe in https://github.com/apache/opendal/pull/5166
901 | * fix(services/s3): Mark xml deserialize error as temporary during list by @Xuanwo in https://github.com/apache/opendal/pull/5178
902 | ### Docs
903 | * docs: add spring integration configuration doc by @shoothzj in https://github.com/apache/opendal/pull/5053
904 | * docs: improve Node.js binding's test doc by @tisonkun in https://github.com/apache/opendal/pull/5159
905 | * docs(bindings/c): update docs for CMake replacing by @PragmaTwice in https://github.com/apache/opendal/pull/5186
906 | ### CI
907 | * ci(bindings/nodejs): Fix diff introduced by napi by @Xuanwo in https://github.com/apache/opendal/pull/5121
908 | * ci: Disable aliyun drive test until #5163 addressed by @Xuanwo in https://github.com/apache/opendal/pull/5164
909 | * ci: add package cache for build-haskell-doc by @XmchxUp in https://github.com/apache/opendal/pull/5173
910 | * ci: add cache action for ci_bindings_ocaml & build-ocaml-doc by @XmchxUp in https://github.com/apache/opendal/pull/5174
911 | * ci: Fix failing CI on ocaml and python by @Xuanwo in https://github.com/apache/opendal/pull/5177
912 | * build(bindings/c): replace the build system with CMake by @PragmaTwice in https://github.com/apache/opendal/pull/5182
913 | * build(bindings/cpp): fetch and build dependencies instead of finding system libs by @PragmaTwice in https://github.com/apache/opendal/pull/5188
914 | * ci: Remove not needed --break-system-packages by @Xuanwo in https://github.com/apache/opendal/pull/5196
915 | * ci: Send discussions to [email protected] by @Xuanwo in https://github.com/apache/opendal/pull/5201
916 | ### Chore
917 | * chore(bindings/python): deprecate via_map method by @TennyZhuang in https://github.com/apache/opendal/pull/5134
918 | * chore: update binding java artifact name in README by @tisonkun in https://github.com/apache/opendal/pull/5137
919 | * chore(fixtures/s3): Upgrade MinIO version by @ForestLH in https://github.com/apache/opendal/pull/5142
920 | * chore(deps): bump clap from 4.5.17 to 4.5.18 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/5149
921 | * chore(deps): bump crate-ci/typos from 1.24.3 to 1.24.6 by @dependabot in https://github.com/apache/opendal/pull/5150
922 | * chore(deps): bump anyhow from 1.0.87 to 1.0.89 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/5151
923 | * chore(deps): bump anyhow from 1.0.87 to 1.0.89 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/5152
924 | * chore: fix typos in tokio_executor.rs by @tisonkun in https://github.com/apache/opendal/pull/5157
925 | * chore: hint when java tests are skipped by @tisonkun in https://github.com/apache/opendal/pull/5158
926 | * chore: Include license in the packaged crate by @davide125 in https://github.com/apache/opendal/pull/5176
927 |
928 | ## [v0.50.0] - 2024-09-11
929 |
930 | ### Added
931 | * feat(core)!: make list return path itself by @meteorgan in https://github.com/apache/opendal/pull/4959
932 | * feat(services/oss): support role_arn and oidc_provider_arn by @tisonkun in https://github.com/apache/opendal/pull/5063
933 | * feat(services): add lakefs support by @liugddx in https://github.com/apache/opendal/pull/5086
934 | * feat: add list api for lakefs service. by @liugddx in https://github.com/apache/opendal/pull/5092
935 | * feat: add write api for lakefs service. by @liugddx in https://github.com/apache/opendal/pull/5100
936 | * feat: add delete api for lakefs service. by @liugddx in https://github.com/apache/opendal/pull/5107
937 | ### Changed
938 | * refactor: use sqlx for sql services by @tisonkun in https://github.com/apache/opendal/pull/5040
939 | * refactor(core)!: Add observe layer as building block by @Xuanwo in https://github.com/apache/opendal/pull/5064
940 | * refactor(layers/prometheus): rewrite prometheus layer based on observe mod by @koushiro in https://github.com/apache/opendal/pull/5069
941 | * refactor(bindings/java): replace `num_cpus` with `std::thread::available_parallelism` by @miroim in https://github.com/apache/opendal/pull/5080
942 | * refactor(layers/prometheus): provide builder APIs by @koushiro in https://github.com/apache/opendal/pull/5072
943 | * refactor(layers/prometheus-client): provide builder APIs by @koushiro in https://github.com/apache/opendal/pull/5073
944 | * refactor(layers/metrics): rewrite metrics layer using observe layer by @koushiro in https://github.com/apache/opendal/pull/5098
945 | ### Fixed
946 | * fix(core): TimeoutLayer now needs enable tokio time by @Xuanwo in https://github.com/apache/opendal/pull/5057
947 | * fix(core): Fix failed list related tests by @Xuanwo in https://github.com/apache/opendal/pull/5058
948 | * fix(services/memory): blocking_scan right range by @meteorgan in https://github.com/apache/opendal/pull/5062
949 | * fix(core/services/mysql): Fix mysql Capability by @jackyyyyyssss in https://github.com/apache/opendal/pull/5067
950 | * fix: fix rust 1.76 error due to temporary value being dropped by @aawsome in https://github.com/apache/opendal/pull/5071
951 | * fix(service/fs): error due to temporary value being dropped by @miroim in https://github.com/apache/opendal/pull/5079
952 | * fix(core/services/hdfs): Fix the HDFS write failure when atomic_write_dir is set by @meteorgan in https://github.com/apache/opendal/pull/5039
953 | * fix(services/icloud): adjust error handling code to avoid having to write out result type explicitly by @koushiro in https://github.com/apache/opendal/pull/5091
954 | * fix(services/monoiofs): handle async cancel during file open by @NKID00 in https://github.com/apache/opendal/pull/5094
955 | ### Docs
956 | * docs: Update binding-java.md by @tisonkun in https://github.com/apache/opendal/pull/5087
957 | ### CI
958 | * ci(bindings/go): add golangci-lint by @yuchanns in https://github.com/apache/opendal/pull/5060
959 | * ci(bindings/zig): Fix build and test of zig on 0.13 by @Xuanwo in https://github.com/apache/opendal/pull/5102
960 | * ci: Don't publish with all features by @Xuanwo in https://github.com/apache/opendal/pull/5108
961 | * ci: Fix upload-artifacts doesn't include hidden files by @Xuanwo in https://github.com/apache/opendal/pull/5112
962 | ### Chore
963 | * chore(bindings/go): bump ffi and sys version by @shoothzj in https://github.com/apache/opendal/pull/5055
964 | * chore: Bump backon to 1.0.0 by @Xuanwo in https://github.com/apache/opendal/pull/5056
965 | * chore(services/rocksdb): fix misuse rocksdb prefix iterator by @meteorgan in https://github.com/apache/opendal/pull/5059
966 | * chore(README): add Go binding badge by @yuchanns in https://github.com/apache/opendal/pull/5074
967 | * chore(deps): bump crate-ci/typos from 1.23.6 to 1.24.3 by @dependabot in https://github.com/apache/opendal/pull/5085
968 | * chore(layers/prometheus-client): export `PrometheusClientLayerBuilder` type by @koushiro in https://github.com/apache/opendal/pull/5093
969 | * chore(layers): check the examples when running tests by @koushiro in https://github.com/apache/opendal/pull/5104
970 | * chore(integrations/parquet): Bump parquet to 53 by @Xuanwo in https://github.com/apache/opendal/pull/5109
971 | * chore: Bump OpenDAL to 0.50.0 by @Xuanwo in https://github.com/apache/opendal/pull/5110
972 |
973 | ## [v0.49.2] - 2024-08-26
974 |
975 | ### Added
976 | * feat(ovfs): support read and write by @zjregee in https://github.com/apache/opendal/pull/5016
977 | * feat(bin/ofs): introduce `integrations/cloudfilter` for ofs by @ho-229 in https://github.com/apache/opendal/pull/4935
978 | * feat(integrations/spring): add AutoConfiguration class for Spring Mvc and Webflux by @shoothzj in https://github.com/apache/opendal/pull/5019
979 | * feat(services/monoiofs): impl read and write, add behavior test by @NKID00 in https://github.com/apache/opendal/pull/4944
980 | * feat(core/services-s3): support user defined metadata by @haoqixu in https://github.com/apache/opendal/pull/5030
981 | * feat: align `fn root` semantics; fix missing root for some services; rm duplicated normalize ops by @yjhmelody in https://github.com/apache/opendal/pull/5035
982 | * feat(core): expose configs always by @tisonkun in https://github.com/apache/opendal/pull/5034
983 | * feat(services/monoiofs): append, create_dir, copy and rename by @NKID00 in https://github.com/apache/opendal/pull/5041
984 | ### Changed
985 | * refactor(core): new type to print context and reduce allocations by @evenyag in https://github.com/apache/opendal/pull/5021
986 | * refactor(layers/prometheus-client): remove useless `scheme` field from `PrometheusAccessor` and `PrometheusMetricWrapper` type by @koushiro in https://github.com/apache/opendal/pull/5026
987 | * refactor(layers/prometheus-client): avoid multiple clone of labels by @koushiro in https://github.com/apache/opendal/pull/5028
988 | * refactor(core/services-oss): remove the `starts_with` by @haoqixu in https://github.com/apache/opendal/pull/5036
989 | ### Fixed
990 | * fix(layers/prometheus-client): remove duplicated `increment_request_total` of write operation by @koushiro in https://github.com/apache/opendal/pull/5023
991 | * fix(services/monoiofs): drop JoinHandle in worker thread by @NKID00 in https://github.com/apache/opendal/pull/5031
992 | ### CI
993 | * ci: Add contents write permission for build-website by @Xuanwo in https://github.com/apache/opendal/pull/5017
994 | * ci: Fix test for service ghac by @Xuanwo in https://github.com/apache/opendal/pull/5018
995 | * ci(integrations/spring): add spring boot bean load test by @shoothzj in https://github.com/apache/opendal/pull/5032
996 | ### Chore
997 | * chore: fix path typo in release docs by @tisonkun in https://github.com/apache/opendal/pull/5038
998 | * chore: align the `token` method semantics by @yjhmelody in https://github.com/apache/opendal/pull/5045
999 |
1000 | ## [v0.49.1] - 2024-08-15
1001 |
1002 | ### Added
1003 | * feat(ovfs): add lookup and unit tests by @zjregee in https://github.com/apache/opendal/pull/4997
1004 | * feat(gcs): allow setting a token directly by @jdockerty in https://github.com/apache/opendal/pull/4978
1005 | * feat(integrations/cloudfilter): introduce behavior tests by @ho-229 in https://github.com/apache/opendal/pull/4973
1006 | * feat(integrations/spring): add spring project module by @shoothzj in https://github.com/apache/opendal/pull/4988
1007 | * feat(fs): expose the metadata for fs services by @Aitozi in https://github.com/apache/opendal/pull/5005
1008 | * feat(ovfs): add file creation and deletion by @zjregee in https://github.com/apache/opendal/pull/5009
1009 | ### Fixed
1010 | * fix(integrations/spring): correct parent artifactId by @shoothzj in https://github.com/apache/opendal/pull/5007
1011 | * fix(bindings/python): Make sure read until EOF by @Bicheka in https://github.com/apache/opendal/pull/4995
1012 | ### Docs
1013 | * docs: Fix version detect in website by @Xuanwo in https://github.com/apache/opendal/pull/5003
1014 | * docs: add branding, license and trademarks to integrations by @PsiACE in https://github.com/apache/opendal/pull/5006
1015 | * docs(integrations/cloudfilter): improve docs and examples by @ho-229 in https://github.com/apache/opendal/pull/5010
1016 | ### CI
1017 | * ci(bindings/python): Fix aws-lc-rs build on arm platforms by @Xuanwo in https://github.com/apache/opendal/pull/5004
1018 | ### Chore
1019 | * chore(deps): bump fastrace to 0.7.1 by @andylokandy in https://github.com/apache/opendal/pull/5008
1020 | * chore(bindings): Disable mysql service for java and python by @Xuanwo in https://github.com/apache/opendal/pull/5013
1021 |
1022 | ## [v0.49.0] - 2024-08-09
1023 |
1024 | ### Added
1025 | * feat(o): Add cargo-o layout by @Xuanwo in https://github.com/apache/opendal/pull/4934
1026 | * feat: impl `put_multipart` in `object_store` by @Rachelint in https://github.com/apache/opendal/pull/4793
1027 | * feat: introduce opendal `AsyncWriter` for parquet integrations by @WenyXu in https://github.com/apache/opendal/pull/4958
1028 | * feat(services/http): implement presigned request for backends without authorization by @NickCao in https://github.com/apache/opendal/pull/4970
1029 | * feat(bindings/python): strip the library for minimum file size by @NickCao in https://github.com/apache/opendal/pull/4971
1030 | * feat(gcs): allow unauthenticated requests by @jdockerty in https://github.com/apache/opendal/pull/4965
1031 | * feat: introduce opendal `AsyncReader` for parquet integrations by @WenyXu in https://github.com/apache/opendal/pull/4972
1032 | * feat(services/s3): add role_session_name in assume roles by @nerdroychan in https://github.com/apache/opendal/pull/4981
1033 | * feat: support root path for moka and mini-moka by @meteorgan in https://github.com/apache/opendal/pull/4984
1034 | * feat(ovfs): export VirtioFs struct by @zjregee in https://github.com/apache/opendal/pull/4983
1035 | * feat(core)!: implement an interceptor for the logging layer by @evenyag in https://github.com/apache/opendal/pull/4961
1036 | * feat(ovfs): support getattr and setattr by @zjregee in https://github.com/apache/opendal/pull/4987
1037 | ### Changed
1038 | * refactor(java)!: Rename artifacts id opendal-java to opendal by @Xuanwo in https://github.com/apache/opendal/pull/4957
1039 | * refactor(core)!: Return associated builder instead by @Xuanwo in https://github.com/apache/opendal/pull/4968
1040 | * refactor(raw): Merge all operations into one enum by @Xuanwo in https://github.com/apache/opendal/pull/4977
1041 | * refactor(core): Use kv based context to avoid allocations by @Xuanwo in https://github.com/apache/opendal/pull/4986
1042 | ### Fixed
1043 | * fix(services/memory): MemoryConfig implement Debug by @0x676e67 in https://github.com/apache/opendal/pull/4942
1044 | * fix(layers/promethues-client): doc link by @koushiro in https://github.com/apache/opendal/pull/4951
1045 | * fix(gcs): do not skip signing with `allow_anonymous` by @jdockerty in https://github.com/apache/opendal/pull/4979
1046 | ### Docs
1047 | * docs: nominate-committer add announcement template by @tisonkun in https://github.com/apache/opendal/pull/4954
1048 | ### CI
1049 | * ci: Bump nextest to 0.9.72 by @Xuanwo in https://github.com/apache/opendal/pull/4932
1050 | * ci: setup cloudfilter by @ho-229 in https://github.com/apache/opendal/pull/4936
1051 | * ci: Try fix opendal-lua build by @Xuanwo in https://github.com/apache/opendal/pull/4952
1052 | ### Chore
1053 | * chore(deps): bump crate-ci/typos from 1.22.9 to 1.23.6 by @dependabot in https://github.com/apache/opendal/pull/4948
1054 | * chore(deps): bump tokio from 1.39.1 to 1.39.2 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4949
1055 | * chore(deps): bump bytes from 1.6.1 to 1.7.0 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4947
1056 | * chore(deps): bump tokio from 1.39.1 to 1.39.2 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4946
1057 | * chore(core): fix nightly lints by @xxchan in https://github.com/apache/opendal/pull/4953
1058 | * chore(integrations/parquet): add README by @WenyXu in https://github.com/apache/opendal/pull/4980
1059 | * chore(core): Bump redis version by @Xuanwo in https://github.com/apache/opendal/pull/4985
1060 | * chore: Bump package versions by @Xuanwo in https://github.com/apache/opendal/pull/4989
1061 |
1062 | ## [v0.48.0] - 2024-07-26
1063 |
1064 | ### Added
1065 | * feat(services/fs): Support fs config by @meteorgan in https://github.com/apache/opendal/pull/4853
1066 | * feat(services): init monoiofs by @NKID00 in https://github.com/apache/opendal/pull/4855
1067 | * feat(core/types): avoid a copy in `Buffer::to_bytes()` by cloning contiguous bytes by @LDeakin in https://github.com/apache/opendal/pull/4858
1068 | * feat(core): Add object versioning for OSS by @Lzzzzzt in https://github.com/apache/opendal/pull/4870
1069 | * feat: fs add concurrent write by @hoslo in https://github.com/apache/opendal/pull/4817
1070 | * feat(services/s3): Add object versioning for S3 by @Lzzzzzt in https://github.com/apache/opendal/pull/4873
1071 | * feat(integrations/cloudfilter): read only cloud filter by @ho-229 in https://github.com/apache/opendal/pull/4856
1072 | * feat(bindings/go): Add full native support from C to Go. by @yuchanns in https://github.com/apache/opendal/pull/4886
1073 | * feat(bindings/go): add benchmark. by @yuchanns in https://github.com/apache/opendal/pull/4893
1074 | * feat(core): support user defined metadata for oss by @meteorgan in https://github.com/apache/opendal/pull/4881
1075 | * feat(service/fastrace): rename minitrace to fastrace by @andylokandy in https://github.com/apache/opendal/pull/4906
1076 | * feat(prometheus-client): add metric label about `root` on using PrometheusClientLayer by @flaneur2020 in https://github.com/apache/opendal/pull/4907
1077 | * feat(services/monoiofs): monoio wrapper by @NKID00 in https://github.com/apache/opendal/pull/4885
1078 | * feat(layers/mime-guess): add a layer that can automatically set `Content-Type` based on the extension in the path. by @czy-29 in https://github.com/apache/opendal/pull/4912
1079 | * feat(core)!: Make config data object by @tisonkun in https://github.com/apache/opendal/pull/4915
1080 | * feat(core)!: from_map is now fallible by @tisonkun in https://github.com/apache/opendal/pull/4917
1081 | * ci(bindings/go): always test against the latest core by @yuchanns in https://github.com/apache/opendal/pull/4913
1082 | * feat(!): Allow users to build operator from config by @Xuanwo in https://github.com/apache/opendal/pull/4919
1083 | * feat: Add from_iter and via_iter for operator by @Xuanwo in https://github.com/apache/opendal/pull/4921
1084 | ### Changed
1085 | * refactor(services/s3)!: renamed security_token to session_token by @Zyyeric in https://github.com/apache/opendal/pull/4875
1086 | * refactor(core)!: Make oio::Write always write all given buffer by @Xuanwo in https://github.com/apache/opendal/pull/4880
1087 | * refactor(core)!: Return `Arc<AccessInfo>` for metadata by @Lzzzzzt in https://github.com/apache/opendal/pull/4883
1088 | * refactor(core!): Make service builder takes ownership by @Xuanwo in https://github.com/apache/opendal/pull/4922
1089 | * refactor(integrations/cloudfilter): implement Filter instead of SyncFilter by @ho-229 in https://github.com/apache/opendal/pull/4920
1090 | ### Fixed
1091 | * fix(services/s3): NoSuchBucket is a ConfigInvalid for OpenDAL by @tisonkun in https://github.com/apache/opendal/pull/4895
1092 | * fix: oss will not use the port by @Lzzzzzt in https://github.com/apache/opendal/pull/4899
1093 | ### Docs
1094 | * docs(core): update README to add `MimeGuessLayer`. by @czy-29 in https://github.com/apache/opendal/pull/4916
1095 | * docs(core): Add upgrade docs for 0.48 by @Xuanwo in https://github.com/apache/opendal/pull/4924
1096 | * docs: fix spelling by @jbampton in https://github.com/apache/opendal/pull/4925
1097 | * docs(core): Fix comment for into_futures_async_write by @Xuanwo in https://github.com/apache/opendal/pull/4928
1098 | ### CI
1099 | * ci: Add issue template and pr template for opendal by @Xuanwo in https://github.com/apache/opendal/pull/4884
1100 | * ci: Remove CI reviewer since it doesn't work by @Xuanwo in https://github.com/apache/opendal/pull/4891
1101 | ### Chore
1102 | * chore!: fix typo customed should be customized by @tisonkun in https://github.com/apache/opendal/pull/4847
1103 | * chore: Fix spelling by @jbampton in https://github.com/apache/opendal/pull/4864
1104 | * chore: remove unneeded duplicate word by @jbampton in https://github.com/apache/opendal/pull/4865
1105 | * chore: fix spelling by @jbampton in https://github.com/apache/opendal/pull/4866
1106 | * chore: fix spelling by @NKID00 in https://github.com/apache/opendal/pull/4869
1107 | * chore: Make compfs able to test by @Xuanwo in https://github.com/apache/opendal/pull/4878
1108 | * chore(services/compfs): remove allow(dead_code) by @George-Miao in https://github.com/apache/opendal/pull/4879
1109 | * chore: Make rust 1.80 clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/4927
1110 | * chore: Bump crates versions by @Xuanwo in https://github.com/apache/opendal/pull/4929
1111 |
1112 | ## [v0.47.3] - 2024-07-03
1113 |
1114 | ### Changed
1115 | * refactor: Move ChunkedWrite logic into WriteContext by @Xuanwo in https://github.com/apache/opendal/pull/4826
1116 | * refactor(services/aliyun-drive): directly implement `oio::Write`. by @yuchanns in https://github.com/apache/opendal/pull/4821
1117 | ### Fixed
1118 | * fix(integration/object_store): Avoid calling API inside debug by @Xuanwo in https://github.com/apache/opendal/pull/4846
1119 | * fix(integration/object_store): Fix metakey requested is incomplete by @Xuanwo in https://github.com/apache/opendal/pull/4844
1120 | ### Docs
1121 | * docs(integration/unftp-sbe): Polish docs for unftp-sbe by @Xuanwo in https://github.com/apache/opendal/pull/4838
1122 | * docs(bin): Polish README for all bin by @Xuanwo in https://github.com/apache/opendal/pull/4839
1123 | ### Chore
1124 | * chore(deps): bump crate-ci/typos from 1.22.7 to 1.22.9 by @dependabot in https://github.com/apache/opendal/pull/4836
1125 | * chore(deps): bump quick-xml from 0.32.0 to 0.35.0 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4835
1126 | * chore(deps): bump nix from 0.28.0 to 0.29.0 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4833
1127 | * chore(deps): bump metrics from 0.20.1 to 0.23.0 in /core by @TennyZhuang in https://github.com/apache/opendal/pull/4843
1128 |
1129 | ## [v0.47.2] - 2024-06-30
1130 |
1131 | ### Added
1132 | * feat(services/compfs): basic `Access` impl by @George-Miao in https://github.com/apache/opendal/pull/4693
1133 | * feat(unftp-sbe): impl `OpendalStorage` by @George-Miao in https://github.com/apache/opendal/pull/4765
1134 | * feat(services/compfs): implement auxiliary functions by @George-Miao in https://github.com/apache/opendal/pull/4778
1135 | * feat: make AwaitTreeLayer covers oio::Read and oio::Write by @PsiACE in https://github.com/apache/opendal/pull/4787
1136 | * feat: Nodejs add devbox by @bxb100 in https://github.com/apache/opendal/pull/4791
1137 | * feat: make AsyncBacktraceLayer covers oio::Read and oio::Write by @PsiACE in https://github.com/apache/opendal/pull/4789
1138 | * feat(nodejs): add `WriteOptions` for write methods by @bxb100 in https://github.com/apache/opendal/pull/4785
1139 | * feat: setup cloud filter integration by @ho-229 in https://github.com/apache/opendal/pull/4779
1140 | * feat: add position write by @hoslo in https://github.com/apache/opendal/pull/4795
1141 | * fix(core): write concurrent doesn't set correctly by @hoslo in https://github.com/apache/opendal/pull/4816
1142 | * feat(ovfs): add filesystem to handle message by @zjregee in https://github.com/apache/opendal/pull/4720
1143 | * feat(unftp-sbe): add derives for `OpendalMetadata` by @George-Miao in https://github.com/apache/opendal/pull/4819
1144 | * feat(core/gcs): Add concurrent write for gcs back by @Xuanwo in https://github.com/apache/opendal/pull/4820
1145 | ### Changed
1146 | * refactor(nodejs)!: Remove append api by @bxb100 in https://github.com/apache/opendal/pull/4796
1147 | * refactor(core): Remove unused layer `MadsimLayer` by @zzzk1 in https://github.com/apache/opendal/pull/4788
1148 | ### Fixed
1149 | * fix(services/aliyun-drive): list dir without trailing slash by @yuchanns in https://github.com/apache/opendal/pull/4766
1150 | * fix(unftp-sbe): remove buffer for get by @George-Miao in https://github.com/apache/opendal/pull/4775
1151 | * fix(services/aliyun-drive): write op cannot overwrite existing files by @yuchanns in https://github.com/apache/opendal/pull/4781
1152 | * fix(core/services/onedrive): remove @odata.count for onedrive list op by @imWildCat in https://github.com/apache/opendal/pull/4803
1153 | * fix(core): Gcs's RangeWrite doesn't support concurrent write by @Xuanwo in https://github.com/apache/opendal/pull/4806
1154 | * fix(tests/behavior): skip test of write_with_overwrite for ghac by @yuchanns in https://github.com/apache/opendal/pull/4823
1155 | * fix(docs): some typos in website and nodejs binding docs by @suyanhanx in https://github.com/apache/opendal/pull/4814
1156 | * fix(core/aliyun_drive): Fix write_multi_max_size might overflow by @Xuanwo in https://github.com/apache/opendal/pull/4830
1157 |
1158 | ### Docs
1159 | * doc(unftp-sbe): adds example and readme by @George-Miao in https://github.com/apache/opendal/pull/4777
1160 | * doc(nodejs): update upgrade.md by @bxb100 in https://github.com/apache/opendal/pull/4799
1161 | * docs: Add README and rustdoc for fuse3_opendal by @Xuanwo in https://github.com/apache/opendal/pull/4813
1162 | * docs: use version variable in gradle, same to maven by @shoothzj in https://github.com/apache/opendal/pull/4824
1163 | ### CI
1164 | * ci: set behavior test ci for aliyun drive by @suyanhanx in https://github.com/apache/opendal/pull/4657
1165 | * ci: Fix lib-darwin-x64 no released by @Xuanwo in https://github.com/apache/opendal/pull/4798
1166 | * ci(unftp-sbe): init by @George-Miao in https://github.com/apache/opendal/pull/4809
1167 | * ci: Build docs for all integrations by @Xuanwo in https://github.com/apache/opendal/pull/4811
1168 | * ci(scripts): Add a script to generate version list by @Xuanwo in https://github.com/apache/opendal/pull/4827
1169 | ### Chore
1170 | * chore(ci): disable aliyun_drive for bindings test by @suyanhanx in https://github.com/apache/opendal/pull/4770
1171 | * chore(unftp-sbe): remove Cargo.lock by @George-Miao in https://github.com/apache/opendal/pull/4805
1172 |
1173 | ## [v0.47.1] - 2024-06-18
1174 |
1175 | ### Added
1176 | * feat(core): sets default chunk_size and sends buffer > chunk_size directly by @evenyag in https://github.com/apache/opendal/pull/4710
1177 | * feat(services): add optional access_token for AliyunDrive by @yuchanns in https://github.com/apache/opendal/pull/4740
1178 | * feat(unftp-sbe): Add integration for unftp-sbe by @George-Miao in https://github.com/apache/opendal/pull/4753
1179 | ### Changed
1180 | * refactor(ofs): Split fuse3 impl into fuse3_opendal by @Xuanwo in https://github.com/apache/opendal/pull/4721
1181 | * refactor(ovfs): Split ovfs impl into virtiofs_opendal by @zjregee in https://github.com/apache/opendal/pull/4723
1182 | * refactor(*): tiny refactor to the Error type by @waynexia in https://github.com/apache/opendal/pull/4737
1183 | * refactor(aliyun-drive): rewrite writer part by @yuchanns in https://github.com/apache/opendal/pull/4744
1184 | * refactor(object_store): Polish implementation details of object_store by @Xuanwo in https://github.com/apache/opendal/pull/4749
1185 | * refactor(dav-server): Polish dav-server integration details by @Xuanwo in https://github.com/apache/opendal/pull/4751
1186 | * refactor(core): Remove unused `size` for `RangeWrite`. by @reswqa in https://github.com/apache/opendal/pull/4755
1187 | ### Fixed
1188 | * fix(s3): parse MultipartUploadResponse to check error in body by @waynexia in https://github.com/apache/opendal/pull/4735
1189 | * fix(services/aliyun-drive): unable to list `/` by @yuchanns in https://github.com/apache/opendal/pull/4754
1190 | ### Docs
1191 | * docs: keep docs updated and tidy by @tisonkun in https://github.com/apache/opendal/pull/4709
1192 | * docs: fixup broken links by @tisonkun in https://github.com/apache/opendal/pull/4711
1193 | * docs(website): update release/verify docs by @suyanhanx in https://github.com/apache/opendal/pull/4714
1194 | * docs: Update release.md link correspondingly by @tisonkun in https://github.com/apache/opendal/pull/4717
1195 | * docs: update readme for fuse3_opendal & virtiofs_opendal by @zjregee in https://github.com/apache/opendal/pull/4730
1196 | * docs: Polish README and links to docs by @Xuanwo in https://github.com/apache/opendal/pull/4741
1197 | * docs: Enhance maintainability of the service section by @Xuanwo in https://github.com/apache/opendal/pull/4742
1198 | * docs: Polish opendal rust core README by @Xuanwo in https://github.com/apache/opendal/pull/4745
1199 | * docs: Refactor rust core examples by @Xuanwo in https://github.com/apache/opendal/pull/4757
1200 | ### CI
1201 | * ci: verify build website on site content changes by @tisonkun in https://github.com/apache/opendal/pull/4712
1202 | * ci: Fix cert for redis and add docs for key maintenance by @Xuanwo in https://github.com/apache/opendal/pull/4718
1203 | * ci(nodejs): Disable services-all on windows by @Xuanwo in https://github.com/apache/opendal/pull/4762
1204 |
1205 | ### Chore
1206 | * chore: use more portable binutils by @tisonkun in https://github.com/apache/opendal/pull/4713
1207 | * chore(deps): bump clap from 4.5.6 to 4.5.7 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4728
1208 | * chore(deps): bump url from 2.5.0 to 2.5.1 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4729
1209 | * chore(binding/python): Upgrade pyo3 to 0.21 by @reswqa in https://github.com/apache/opendal/pull/4734
1210 | * chore: Make 1.79 clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/4731
1211 | * chore(docs): Add new line in lone services by @Xuanwo in https://github.com/apache/opendal/pull/4743
1212 | * chore: Bump versions to prepare v0.47.1 release by @Xuanwo in https://github.com/apache/opendal/pull/4759
1213 |
1214 | ## [v0.47.0] - 2024-06-07
1215 |
1216 | ### Added
1217 | * feat(core/types): change oio::BlockingReader to `Arc<dyn oio::BlockingReader>` by @hoslo in https://github.com/apache/opendal/pull/4577
1218 | * fix: format_object_meta should not require metakeys that don't exist by @rebasedming in https://github.com/apache/opendal/pull/4582
1219 | * feat: add checksums to MultiPartComplete by @JWackerbauer in https://github.com/apache/opendal/pull/4580
1220 | * feat(doc): update object_store_opendal README by @hanxuanliang in https://github.com/apache/opendal/pull/4606
1221 | * feat(services/aliyun-drive): support AliyunDrive by @yuchanns in https://github.com/apache/opendal/pull/4585
1222 | * feat(bindings/python): Update type annotations by @3ok in https://github.com/apache/opendal/pull/4630
1223 | * feat: implement OperatorInputStream and OperatorOutputStream by @tisonkun in https://github.com/apache/opendal/pull/4626
1224 | * feat(bench): add buffer benchmark by @zjregee in https://github.com/apache/opendal/pull/4603
1225 | * feat: Add Executor struct and Execute trait by @Xuanwo in https://github.com/apache/opendal/pull/4648
1226 | * feat: Add executor in OpXxx and Operator by @Xuanwo in https://github.com/apache/opendal/pull/4649
1227 | * feat: Implement and refactor concurrent tasks for multipart write by @Xuanwo in https://github.com/apache/opendal/pull/4653
1228 | * feat(core/types): blocking remove_all for object storage based services by @TennyZhuang in https://github.com/apache/opendal/pull/4665
1229 | * feat(core): Streaming reading while chunk is not set by @Xuanwo in https://github.com/apache/opendal/pull/4658
1230 | * feat(core): Add more context in error context by @Xuanwo in https://github.com/apache/opendal/pull/4673
1231 | * feat: init ovfs by @zjregee in https://github.com/apache/opendal/pull/4652
1232 | * feat: Implement retry for streaming based read by @Xuanwo in https://github.com/apache/opendal/pull/4683
1233 | * feat(core): Implement TimeoutLayer for concurrent tasks by @Xuanwo in https://github.com/apache/opendal/pull/4688
1234 | * feat(core): Add reader size check in complete reader by @Xuanwo in https://github.com/apache/opendal/pull/4690
1235 | * feat(core): Azblob supports azure workload identity by @Xuanwo in https://github.com/apache/opendal/pull/4705
1236 | ### Changed
1237 | * refactor(core): Align naming for `AccessorDyn` by @morristai in https://github.com/apache/opendal/pull/4574
1238 | * refactor(core): core doesn't expose invalid input error anymore by @Xuanwo in https://github.com/apache/opendal/pull/4632
1239 | * refactor(core): Return unexpected error while content incomplete happen by @Xuanwo in https://github.com/apache/opendal/pull/4633
1240 | * refactor(core): Change Read's behavior to ensure it reads the exact size of data by @Xuanwo in https://github.com/apache/opendal/pull/4634
1241 | * refactor(bin/ofs): Fuse API by @ho-229 in https://github.com/apache/opendal/pull/4637
1242 | * refactor(binding/java)!: rename blocking and async operator by @tisonkun in https://github.com/apache/opendal/pull/4641
1243 | * refactor(core): Use concurrent tasks to refactor block write by @Xuanwo in https://github.com/apache/opendal/pull/4692
1244 | * refactor(core): Migrate RangeWrite to ConcurrentTasks by @Xuanwo in https://github.com/apache/opendal/pull/4696
1245 | ### Fixed
1246 | * fix(devcontainer/post_create.sh): change pnpm@stable to pnpm@latest by @GG2002 in https://github.com/apache/opendal/pull/4584
1247 | * fix(bin/ofs): privileged mount crashes when external umount by @ho-229 in https://github.com/apache/opendal/pull/4586
1248 | * fix(bin/ofs): ofs read only mount by @ho-229 in https://github.com/apache/opendal/pull/4602
1249 | * fix(raw): Allow retrying request while decoding response failed by @Xuanwo in https://github.com/apache/opendal/pull/4612
1250 | * fix(core): return None if metadata unavailable by @NKID00 in https://github.com/apache/opendal/pull/4613
1251 | * fix(bindings/python): Use abi3 and increase MSPV to 3.11 by @Xuanwo in https://github.com/apache/opendal/pull/4623
1252 | * fix: Fetch the content length while end_bound is unknown by @Xuanwo in https://github.com/apache/opendal/pull/4631
1253 | * fix: ofs write behavior by @ho-229 in https://github.com/apache/opendal/pull/4617
1254 | * fix(core/types): remove_all not work under object-store backend by @TennyZhuang in https://github.com/apache/opendal/pull/4659
1255 | * fix(ofs): Close file during flush by @Xuanwo in https://github.com/apache/opendal/pull/4680
1256 | * fix(core): RetryLayer could panic when other threads raises panic by @Xuanwo in https://github.com/apache/opendal/pull/4685
1257 | * fix(core/prometheus): Fix metrics from prometheus not correct for reader by @Xuanwo in https://github.com/apache/opendal/pull/4691
1258 | * fix(core/oio): Make ConcurrentTasks cancel safe by only pop after ready by @Xuanwo in https://github.com/apache/opendal/pull/4707
1259 | ### Docs
1260 | * docs: fix Operator::writer doc comment by @mnpw in https://github.com/apache/opendal/pull/4605
1261 | * doc: explain GCS authentication options by @jokester in https://github.com/apache/opendal/pull/4671
1262 | * docs: Fix all broken links by @Xuanwo in https://github.com/apache/opendal/pull/4694
1263 | * docs: Add upgrade note for v0.47 by @Xuanwo in https://github.com/apache/opendal/pull/4698
1264 | * docs: Add panics declare for TimeoutLayer and RetryLayer by @Xuanwo in https://github.com/apache/opendal/pull/4702
1265 | ### CI
1266 | * ci: upgrade typos to 1.21.0 and ignore changelog by @hezhizhen in https://github.com/apache/opendal/pull/4601
1267 | * ci: Disable jfrog webdav tests for it's keeping failed by @Xuanwo in https://github.com/apache/opendal/pull/4607
1268 | * ci: use official typos github action by @shoothzj in https://github.com/apache/opendal/pull/4635
1269 | * build(deps): upgrade crc32c to 0.6.6 for nightly toolchain by @tisonkun in https://github.com/apache/opendal/pull/4650
1270 | ### Chore
1271 | * chore: fixup release docs and scripts by @tisonkun in https://github.com/apache/opendal/pull/4571
1272 | * chore: Make rust 1.78 happy by @Xuanwo in https://github.com/apache/opendal/pull/4572
1273 | * chore: fixup items identified in releases by @tisonkun in https://github.com/apache/opendal/pull/4578
1274 | * chore(deps): bump peaceiris/actions-gh-pages from 3.9.2 to 4.0.0 by @dependabot in https://github.com/apache/opendal/pull/4561
1275 | * chore: Contribute ParadeDB by @philippemnoel in https://github.com/apache/opendal/pull/4587
1276 | * chore(deps): bump rusqlite from 0.29.0 to 0.31.0 in /core by @dependabot in https://github.com/apache/opendal/pull/4556
1277 | * chore(deps): Bump object_store to 0.10 by @TCeason in https://github.com/apache/opendal/pull/4590
1278 | * chore: remove outdated scan op in all docs.md by @GG2002 in https://github.com/apache/opendal/pull/4600
1279 | * chore: tidy services in project file by @suyanhanx in https://github.com/apache/opendal/pull/4621
1280 | * chore(deps): make crc32c optional under services-s3 by @xxchan in https://github.com/apache/opendal/pull/4643
1281 | * chore(core): Fix unit tests by @Xuanwo in https://github.com/apache/opendal/pull/4684
1282 | * chore(core): Add unit and bench tests for concurrent tasks by @Xuanwo in https://github.com/apache/opendal/pull/4695
1283 | * chore: bump version to 0.47.0 by @tisonkun in https://github.com/apache/opendal/pull/4701
1284 | * chore: Update changelogs for v0.47 by @Xuanwo in https://github.com/apache/opendal/pull/4706
1285 |
1286 | ## [v0.46.0] - 2024-05-02
1287 |
1288 | ### Added
1289 | * feat(services/github): add github contents support by @hoslo in https://github.com/apache/opendal/pull/4281
1290 | * feat: Allow selecting webpki for reqwest by @arlyon in https://github.com/apache/opendal/pull/4303
1291 | * feat(services/swift): add support for storage_url configuration in swift service by @zjregee in https://github.com/apache/opendal/pull/4302
1292 | * feat(services/swift): add ceph test setup for swift by @zjregee in https://github.com/apache/opendal/pull/4307
1293 | * docs(website): add local content search based on lunr plugin by @m1911star in https://github.com/apache/opendal/pull/4348
1294 | * feat(services/sled): add SledConfig by @yufan022 in https://github.com/apache/opendal/pull/4351
1295 | * feat : Implementing config for part of services by @AnuRage-git in https://github.com/apache/opendal/pull/4344
1296 | * feat(bindings/java): explicit async runtime by @tisonkun in https://github.com/apache/opendal/pull/4376
1297 | * feat(services/surrealdb): support surrealdb service by @yufan022 in https://github.com/apache/opendal/pull/4375
1298 | * feat(bindings/java): avoid double dispose NativeObject by @tisonkun in https://github.com/apache/opendal/pull/4377
1299 | * feat : Implement config for services/foundationdb by @AnuRage-git in https://github.com/apache/opendal/pull/4355
1300 | * feat: add ofs ctrl-c exit unmount hook by @oowl in https://github.com/apache/opendal/pull/4393
1301 | * feat: Implement RFC-4382 Range Based Read by @Xuanwo in https://github.com/apache/opendal/pull/4381
1302 | * feat(ofs): rename2 lseek copy_file_range getattr API support by @oowl in https://github.com/apache/opendal/pull/4395
1303 | * feat(services/github): make access_token optional by @hoslo in https://github.com/apache/opendal/pull/4404
1304 | * feat(core/oio): Add readable buf by @Xuanwo in https://github.com/apache/opendal/pull/4407
1305 | * feat(ofs): add freebsd OS support by @oowl in https://github.com/apache/opendal/pull/4403
1306 | * feat(core/raw/oio): Add Writable Buf by @Xuanwo in https://github.com/apache/opendal/pull/4410
1307 | * feat(bin/ofs): Add behavior test for ofs by @ho-229 in https://github.com/apache/opendal/pull/4373
1308 | * feat(core/raw/buf): Reduce one allocation by `Arc::from_iter` by @Xuanwo in https://github.com/apache/opendal/pull/4440
1309 | * feat: ?Send async trait for HttpBackend when the target is wasm32 by @waynexia in https://github.com/apache/opendal/pull/4444
1310 | * feat: add `HttpClient::with()` constructor by @waynexia in https://github.com/apache/opendal/pull/4447
1311 | * feat: Move Buffer as public API by @Xuanwo in https://github.com/apache/opendal/pull/4450
1312 | * feat: Optimize buffer implementation and add stream support by @Xuanwo in https://github.com/apache/opendal/pull/4458
1313 | * feat(core): Implement FromIterator for Buffer by @Xuanwo in https://github.com/apache/opendal/pull/4459
1314 | * feat(services/ftp): Support multiple write by @xxxuuu in https://github.com/apache/opendal/pull/4425
1315 | * feat(raw/oio): block write change to buffer by @hoslo in https://github.com/apache/opendal/pull/4466
1316 | * feat(core): Implement read and read_into for Reader by @Xuanwo in https://github.com/apache/opendal/pull/4467
1317 | * feat(core): Implement into_stream for Reader by @Xuanwo in https://github.com/apache/opendal/pull/4473
1318 | * feat(core): Tune buffer operations based on benchmark results by @Xuanwo in https://github.com/apache/opendal/pull/4468
1319 | * feat(raw/oio): Use `Buffer` as cache in `RangeWrite` by @reswqa in https://github.com/apache/opendal/pull/4476
1320 | * feat(raw/oio): Use `Buffer` as cache in `OneshotWrite` by @reswqa in https://github.com/apache/opendal/pull/4477
1321 | * feat: add list/copy/rename for dropbox by @zjregee in https://github.com/apache/opendal/pull/4424
1322 | * feat(core): Implement write and write_from for Writer by @zjregee in https://github.com/apache/opendal/pull/4482
1323 | * feat(core): Add auto ranged read and concurrent read support by @Xuanwo in https://github.com/apache/opendal/pull/4486
1324 | * feat(core): Implement fetch for Reader by @Xuanwo in https://github.com/apache/opendal/pull/4488
1325 | * feat(core): Allow concurrent reading on bytes stream by @Xuanwo in https://github.com/apache/opendal/pull/4499
1326 | * feat: provide send-wrapper to contidionally implement Send for operators by @waynexia in https://github.com/apache/opendal/pull/4443
1327 | * feat(bin/ofs): privileged mount by @ho-229 in https://github.com/apache/opendal/pull/4507
1328 | * feat(services/compfs): init compfs by @George-Miao in https://github.com/apache/opendal/pull/4519
1329 | * feat(raw/oio): Add PooledBuf to allow reuse buffer by @Xuanwo in https://github.com/apache/opendal/pull/4522
1330 | * feat(services/fs): Add PooledBuf in fs to allow reusing memory by @Xuanwo in https://github.com/apache/opendal/pull/4525
1331 | * feat(core): add access methods for `Buffer` by @George-Miao in https://github.com/apache/opendal/pull/4530
1332 | * feat(core): implement `IoBuf` for `Buffer` by @George-Miao in https://github.com/apache/opendal/pull/4532
1333 | * feat(services/compfs): compio runtime and compfs structure by @George-Miao in https://github.com/apache/opendal/pull/4534
1334 | * feat(core): change Result to default error by @George-Miao in https://github.com/apache/opendal/pull/4535
1335 | * feat(services/github): support list recursive by @hoslo in https://github.com/apache/opendal/pull/4423
1336 | * feat: Add crc32c checksums to S3 Service by @JWackerbauer in https://github.com/apache/opendal/pull/4533
1337 | * feat: Add into_bytes_sink for Writer by @Xuanwo in https://github.com/apache/opendal/pull/4541
1338 | ### Changed
1339 | * refactor(core/raw): Migrate `oio::Read` to async in trait by @Xuanwo in https://github.com/apache/opendal/pull/4336
1340 | * refactor(core/raw): Align oio::BlockingRead API with oio::Read by @Xuanwo in https://github.com/apache/opendal/pull/4349
1341 | * refactor(core/oio): Migrate `oio::List` to async fn in trait by @Xuanwo in https://github.com/apache/opendal/pull/4352
1342 | * refactor(core/raw): Migrate oio::Write from WriteBuf to Bytes by @Xuanwo in https://github.com/apache/opendal/pull/4356
1343 | * refactor(core/raw): Migrate `oio::Write` to async in trait by @Xuanwo in https://github.com/apache/opendal/pull/4358
1344 | * refactor(bindings/python): Change the return type of `File::read` to `PyResult<&PyBytes>` by @reswqa in https://github.com/apache/opendal/pull/4360
1345 | * refactor(core/raw): Cleanup not used `oio::WriteBuf` and `oio::ChunkedBytes` after refactor by @Xuanwo in https://github.com/apache/opendal/pull/4361
1346 | * refactor: Remove reqwest related features by @Xuanwo in https://github.com/apache/opendal/pull/4365
1347 | * refactor(bin/ofs): make `ofs` API public by @ho-229 in https://github.com/apache/opendal/pull/4387
1348 | * refactor: Impl into_futures_io_async_write for Writer by @Xuanwo in https://github.com/apache/opendal/pull/4406
1349 | * refactor(core/oio): Use ReadableBuf to remove extra clone during write by @Xuanwo in https://github.com/apache/opendal/pull/4408
1350 | * refactor(core/raw/oio): Mark oio::Write::write as an unsafe function by @Xuanwo in https://github.com/apache/opendal/pull/4413
1351 | * refactor(core/raw/oio): Use oio buffer in write by @Xuanwo in https://github.com/apache/opendal/pull/4436
1352 | * refactor(core/raw): oio::Write is safe operation now by @Xuanwo in https://github.com/apache/opendal/pull/4438
1353 | * refactor(core): Use Buffer in http request by @Xuanwo in https://github.com/apache/opendal/pull/4460
1354 | * refactor(core): Polish FuturesBytesStream by avoiding extra copy by @Xuanwo in https://github.com/apache/opendal/pull/4474
1355 | * refactor: Use Buffer as cache in MultipartWrite by @tisonkun in https://github.com/apache/opendal/pull/4493
1356 | * refactor: kv::adapter should use Buffer (read part) by @tisonkun in https://github.com/apache/opendal/pull/4494
1357 | * refactor: typed_kv::adapter should use Buffer by @tisonkun in https://github.com/apache/opendal/pull/4497
1358 | * refactor: kv::adapter should use Buffer (write part) by @tisonkun in https://github.com/apache/opendal/pull/4496
1359 | * refactor: Migrate FuturesAsyncReader to stream based by @Xuanwo in https://github.com/apache/opendal/pull/4508
1360 | * refactor(services/fs): Extract FsCore from FsBackend by @Xuanwo in https://github.com/apache/opendal/pull/4523
1361 | * refactor(core): Migrate `Accessor` to async fn in trait by @George-Miao in https://github.com/apache/opendal/pull/4562
1362 | * refactor(core): Align naming for `Accessor` by @George-Miao in https://github.com/apache/opendal/pull/4564
1363 | ### Fixed
1364 | * fix(bin/ofs): crashes when fh=None by @ho-229 in https://github.com/apache/opendal/pull/4297
1365 | * fix(services/hdfs): fix poll_close when retry by @hoslo in https://github.com/apache/opendal/pull/4309
1366 | * fix: fix main CI by @xxchan in https://github.com/apache/opendal/pull/4319
1367 | * fix: fix ghac CI by @xxchan in https://github.com/apache/opendal/pull/4320
1368 | * fix(services/dropbox): fix dropbox batch test panic in ci by @zjregee in https://github.com/apache/opendal/pull/4329
1369 | * fix(services/hdfs-native): remove unsupported capabilities by @jihuayu in https://github.com/apache/opendal/pull/4333
1370 | * fix(bin/ofs): build failed when target_os != linux by @ho-229 in https://github.com/apache/opendal/pull/4334
1371 | * fix(bin/ofs): only memory backend available by @ho-229 in https://github.com/apache/opendal/pull/4353
1372 | * fix(bindings/python): Fix the semantic of `size` argument for python `File::read` by @reswqa in https://github.com/apache/opendal/pull/4359
1373 | * fix(bindings/python): `File::write` should return the written bytes by @reswqa in https://github.com/apache/opendal/pull/4367
1374 | * fix(services/s3): omit default ports by @yufan022 in https://github.com/apache/opendal/pull/4379
1375 | * fix(core/services/gdrive): Fix gdrive test failed for refresh token by @Xuanwo in https://github.com/apache/opendal/pull/4435
1376 | * fix(core/services/cos): Don't allow empty credential by @Xuanwo in https://github.com/apache/opendal/pull/4457
1377 | * fix(oay): support `WebdavFile` continuous reading and writing by @G-XD in https://github.com/apache/opendal/pull/4374
1378 | * fix(integrations/webdav): Fix read file API changes by @Xuanwo in https://github.com/apache/opendal/pull/4462
1379 | * fix(s3): don't delete bucket by @sameer in https://github.com/apache/opendal/pull/4430
1380 | * fix(core): Buffer offset misuse by @George-Miao in https://github.com/apache/opendal/pull/4481
1381 | * fix(core): Read chunk should respect users input by @Xuanwo in https://github.com/apache/opendal/pull/4487
1382 | * fix(services/cos): fix mdx by @hoslo in https://github.com/apache/opendal/pull/4510
1383 | * fix: minor doc issue by @George-Miao in https://github.com/apache/opendal/pull/4517
1384 | * fix(website): community sync calendar iframe by @suyanhanx in https://github.com/apache/opendal/pull/4549
1385 | * fix: community sync calendar iframe load failed by @suyanhanx in https://github.com/apache/opendal/pull/4550
1386 | ### Docs
1387 | * docs: Add gsoc proposal guide by @Xuanwo in https://github.com/apache/opendal/pull/4287
1388 | * docs: Add blog for apache opendal participates in gsoc 2024 by @Xuanwo in https://github.com/apache/opendal/pull/4288
1389 | * docs: Fix and improve docs for presign operations by @Xuanwo in https://github.com/apache/opendal/pull/4294
1390 | * docs: Polish the docs for writer by @Xuanwo in https://github.com/apache/opendal/pull/4296
1391 | * docs: Add redirect for discord and maillist by @Xuanwo in https://github.com/apache/opendal/pull/4312
1392 | * docs: update swift docs by @zjregee in https://github.com/apache/opendal/pull/4327
1393 | * docs: publish docs for object-store-opendal by @zjregee in https://github.com/apache/opendal/pull/4328
1394 | * docs: fix redirect error in object-store-opendal by @zjregee in https://github.com/apache/opendal/pull/4332
1395 | * docs(website): fix grammar and spelling by @jbampton in https://github.com/apache/opendal/pull/4340
1396 | * docs: fix nodejs binding docs footer copyright by @m1911star in https://github.com/apache/opendal/pull/4346
1397 | * docs(bin/ofs): update README by @ho-229 in https://github.com/apache/opendal/pull/4354
1398 | * docs(services/gcs): update gcs credentials description by @zjregee in https://github.com/apache/opendal/pull/4362
1399 | * docs(bindings/python): ipynb examples for polars and pandas by @reswqa in https://github.com/apache/opendal/pull/4368
1400 | * docs(core): correct the doc for icloud and memcached by @Kilerd in https://github.com/apache/opendal/pull/4422
1401 | * docs: polish release doc for vote result by @suyanhanx in https://github.com/apache/opendal/pull/4429
1402 | * docs: Update links to o.a.o/discord by @Xuanwo in https://github.com/apache/opendal/pull/4442
1403 | * docs: add layers example by @zjregee in https://github.com/apache/opendal/pull/4449
1404 | * docs: publish docs for dav-server-opendalfs by @zjregee in https://github.com/apache/opendal/pull/4503
1405 | * docs: Add docs for read_with and reader_with by @Xuanwo in https://github.com/apache/opendal/pull/4516
1406 | * docs: Add upgrade doc for rust core 0.46 by @Xuanwo in https://github.com/apache/opendal/pull/4543
1407 | * docs: update the outdated download link by @suyanhanx in https://github.com/apache/opendal/pull/4546
1408 | ### CI
1409 | * ci(binding/java): Don't create too many files in CI by @Xuanwo in https://github.com/apache/opendal/pull/4289
1410 | * ci: Address Node.js 16 actions are deprecated by @Xuanwo in https://github.com/apache/opendal/pull/4293
1411 | * ci: Disable vsftpd test for it's keeping failure by @Xuanwo in https://github.com/apache/opendal/pull/4295
1412 | * build: remove `service-*` from default features by @xxchan in https://github.com/apache/opendal/pull/4311
1413 | * ci: upgrade typos in ci by @Young-Flash in https://github.com/apache/opendal/pull/4322
1414 | * ci: Disable R2 until we figure what happened by @Xuanwo in https://github.com/apache/opendal/pull/4323
1415 | * ci(s3/minio): Disable IMDSv2 for mini anonymous tests by @Xuanwo in https://github.com/apache/opendal/pull/4326
1416 | * ci: Fix unit tests missing protoc by @Xuanwo in https://github.com/apache/opendal/pull/4369
1417 | * ci: Fix foundationdb not setup for unit test by @Xuanwo in https://github.com/apache/opendal/pull/4370
1418 | * ci: bump license header formatter by @tisonkun in https://github.com/apache/opendal/pull/4390
1419 | * ci: fix dragonflydb docker-compose healthcheck broken by @oowl in https://github.com/apache/opendal/pull/4431
1420 | * ci: fix planner for bin ofs by @ho-229 in https://github.com/apache/opendal/pull/4448
1421 | * ci: Revert oay changes to fix CI by @Xuanwo in https://github.com/apache/opendal/pull/4463
1422 | * ci: Fix CI for all bindings by @Xuanwo in https://github.com/apache/opendal/pull/4469
1423 | * ci: Disable dropbox test until #4484 fixed by @Xuanwo in https://github.com/apache/opendal/pull/4485
1424 | * ci: Fix build of python binding for chunk write changes by @Xuanwo in https://github.com/apache/opendal/pull/4529
1425 | * build(core): bump compio version to v0.10.0 by @George-Miao in https://github.com/apache/opendal/pull/4531
1426 | * ci: Disable tikv for pingcap's mirror is unstable by @Xuanwo in https://github.com/apache/opendal/pull/4538
1427 | * build: staging website by @tisonkun in https://github.com/apache/opendal/pull/4565
1428 | * build: fixup follow asfyaml rules by @tisonkun in https://github.com/apache/opendal/pull/4566
1429 | ### Chore
1430 | * chore(deps): bump tempfile from 3.9.0 to 3.10.1 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4298
1431 | * chore(deps): bump wasm-bindgen-test from 0.3.40 to 0.3.41 in /core by @dependabot in https://github.com/apache/opendal/pull/4299
1432 | * chore(deps): bump log from 0.4.20 to 0.4.21 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4301
1433 | * chore(services/redis): Fix docs & comments typos by @AJIOB in https://github.com/apache/opendal/pull/4306
1434 | * chore(editorconfig): add `yaml` file type by @jbampton in https://github.com/apache/opendal/pull/4339
1435 | * chore(editorconfig): add `rdf` file type as `indent_size = 2` by @jbampton in https://github.com/apache/opendal/pull/4341
1436 | * chore(editorconfig): order entries and add `indent_style = tab` for Go by @jbampton in https://github.com/apache/opendal/pull/4342
1437 | * chore(labeler): order the GitHub labeler labels by @jbampton in https://github.com/apache/opendal/pull/4343
1438 | * chore: Cleanup of oio::Read, docs, comments, naming by @Xuanwo in https://github.com/apache/opendal/pull/4345
1439 | * chore: Remove not exist read operations by @Xuanwo in https://github.com/apache/opendal/pull/4412
1440 | * chore(deps): bump toml from 0.8.10 to 0.8.12 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4418
1441 | * chore(deps): bump toml from 0.8.10 to 0.8.12 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4420
1442 | * chore(deps): bump tokio from 1.36.0 to 1.37.0 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4419
1443 | * chore(deps): bump prometheus-client from 0.22.1 to 0.22.2 in /core by @dependabot in https://github.com/apache/opendal/pull/4417
1444 | * chore: update copyright year to 2024 in NOTICE by @shoothzj in https://github.com/apache/opendal/pull/4433
1445 | * chore: Bump bytes to 1.6 to avoid compileing error by @Xuanwo in https://github.com/apache/opendal/pull/4472
1446 | * chore: Add output types in OperatorFutures by @Xuanwo in https://github.com/apache/opendal/pull/4475
1447 | * chore(core): Use reader's chunk size instead by @Xuanwo in https://github.com/apache/opendal/pull/4489
1448 | * chore: sort tomls by taplo by @tisonkun in https://github.com/apache/opendal/pull/4491
1449 | * chore(core): Align Reader and Writer's API design by @Xuanwo in https://github.com/apache/opendal/pull/4498
1450 | * chore: Add docs and tests for reader related types by @Xuanwo in https://github.com/apache/opendal/pull/4513
1451 | * chore: Reorganize the blocking reader layout by @Xuanwo in https://github.com/apache/opendal/pull/4514
1452 | * chore: Align with chunk instead of confusing buffer by @Xuanwo in https://github.com/apache/opendal/pull/4528
1453 | * chore: Refactor Write and BlockingWrite API by @Xuanwo in https://github.com/apache/opendal/pull/4540
1454 | * chore(core): Change std result to opendal result in core by @tannal in https://github.com/apache/opendal/pull/4542
1455 | * chore: fixup download links by @tisonkun in https://github.com/apache/opendal/pull/4547
1456 | * chore(deps): bump clap from 4.5.1 to 4.5.4 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4557
1457 | * chore(deps): bump anyhow from 1.0.80 to 1.0.82 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4559
1458 | * chore(deps): bump libc from 0.2.153 to 0.2.154 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4558
1459 |
1460 | ## [v0.45.1] - 2024-02-22
1461 |
1462 | ### Added
1463 | * feat(services/vercel_blob): support vercel blob by @hoslo in https://github.com/apache/opendal/pull/4103
1464 | * feat(bindings/python): add ruff as linter by @asukaminato0721 in https://github.com/apache/opendal/pull/4135
1465 | * feat(services/hdfs-native): Add capabilities for hdfs-native service by @jihuayu in https://github.com/apache/opendal/pull/4174
1466 | * feat(services/sqlite): Add list capability supported for sqlite by @jihuayu in https://github.com/apache/opendal/pull/4180
1467 | * feat(services/azblob): support multi write for azblob by @wcy-fdu in https://github.com/apache/opendal/pull/4181
1468 | * feat(release): Implement releasing OpenDAL components separately by @Xuanwo in https://github.com/apache/opendal/pull/4196
1469 | * feat: object store adapter based on v0.9 by @waynexia in https://github.com/apache/opendal/pull/4233
1470 | * feat(bin/ofs): implement fuse for linux by @ho-229 in https://github.com/apache/opendal/pull/4179
1471 | * feat(services/memcached): change to binary protocol by @hoslo in https://github.com/apache/opendal/pull/4252
1472 | * feat(services/memcached): setup auth test for memcached by @hoslo in https://github.com/apache/opendal/pull/4259
1473 | * feat(services/yandex_disk): setup test for yandex disk by @hoslo in https://github.com/apache/opendal/pull/4264
1474 | * feat: add ci support for ceph_rados by @ZhengLin-Li in https://github.com/apache/opendal/pull/4191
1475 | * feat: Implement Config for part of services by @Xuanwo in https://github.com/apache/opendal/pull/4277
1476 | * feat: add jfrog test setup for webdav by @zjregee in https://github.com/apache/opendal/pull/4265
1477 | ### Changed
1478 | * refactor(bindings/python): simplify async writer aexit by @suyanhanx in https://github.com/apache/opendal/pull/4128
1479 | * refactor(service/d1): Add D1Config by @jihuayu in https://github.com/apache/opendal/pull/4129
1480 | * refactor: Rewrite webdav to improve code quality by @Xuanwo in https://github.com/apache/opendal/pull/4280
1481 | ### Fixed
1482 | * fix: Azdls returns 403 while continuation contains `=` by @Xuanwo in https://github.com/apache/opendal/pull/4105
1483 | * fix(bindings/python): missed to call close for the file internally by @zzl221000 in https://github.com/apache/opendal/pull/4122
1484 | * fix(bindings/python): sync writer exit close raise error by @suyanhanx in https://github.com/apache/opendal/pull/4127
1485 | * fix(services/chainsafe): fix 423 http status by @hoslo in https://github.com/apache/opendal/pull/4148
1486 | * fix(services/webdav): Add possibility to answer without response if file isn't exist by @AJIOB in https://github.com/apache/opendal/pull/4170
1487 | * fix(services/webdav): Recreate root directory if need by @AJIOB in https://github.com/apache/opendal/pull/4173
1488 | * fix(services/webdav): remove base_dir component by @hoslo in https://github.com/apache/opendal/pull/4231
1489 | * fix(core): Poll TimeoutLayer::sleep once to make sure timer registered by @Xuanwo in https://github.com/apache/opendal/pull/4230
1490 | * fix(services/webdav): Fix endpoint suffix not handled by @Xuanwo in https://github.com/apache/opendal/pull/4257
1491 | * fix(services/webdav): Fix possible error with value loosing from config by @AJIOB in https://github.com/apache/opendal/pull/4262
1492 | ### Docs
1493 | * docs: add request for add secrets of services by @suyanhanx in https://github.com/apache/opendal/pull/4104
1494 | * docs(website): announce release v0.45.0 to news by @morristai in https://github.com/apache/opendal/pull/4152
1495 | * docs(services/gdrive): Update Google Drive capabilities list docs by @jihuayu in https://github.com/apache/opendal/pull/4158
1496 | * docs: Fix docs build by @Xuanwo in https://github.com/apache/opendal/pull/4162
1497 | * docs: add docs for Ceph Rados Gateway S3 by @ZhengLin-Li in https://github.com/apache/opendal/pull/4190
1498 | * docs: Fix typo in `core/src/services/http/docs.md` by @jbampton in https://github.com/apache/opendal/pull/4226
1499 | * docs: Fix spelling in Rust files by @jbampton in https://github.com/apache/opendal/pull/4227
1500 | * docs: fix typo in `website/README.md` by @jbampton in https://github.com/apache/opendal/pull/4228
1501 | * docs: fix spelling by @jbampton in https://github.com/apache/opendal/pull/4229
1502 | * docs: fix spelling; change `github` to `GitHub` by @jbampton in https://github.com/apache/opendal/pull/4232
1503 | * docs: fix typo by @jbampton in https://github.com/apache/opendal/pull/4234
1504 | * docs: fix typo in `bindings/c/CONTRIBUTING.md` by @jbampton in https://github.com/apache/opendal/pull/4235
1505 | * docs: fix spelling in code comments by @jbampton in https://github.com/apache/opendal/pull/4236
1506 | * docs: fix spelling in `CONTRIBUTING` by @jbampton in https://github.com/apache/opendal/pull/4237
1507 | * docs: fix Markdown link in `bindings/README.md` by @jbampton in https://github.com/apache/opendal/pull/4238
1508 | * docs: fix links and spelling in Markdown by @jbampton in https://github.com/apache/opendal/pull/4239
1509 | * docs: fix grammar and spelling in Markdown in `examples/rust` by @jbampton in https://github.com/apache/opendal/pull/4241
1510 | * docs: remove unneeded duplicate words from Rust files by @jbampton in https://github.com/apache/opendal/pull/4243
1511 | * docs: fix grammar and spelling in Markdown by @jbampton in https://github.com/apache/opendal/pull/4245
1512 | * docs: Add architectural.png to website by @Xuanwo in https://github.com/apache/opendal/pull/4261
1513 | * docs: Re-org project README by @Xuanwo in https://github.com/apache/opendal/pull/4260
1514 | * docs: order the README `Who is using OpenDAL` list by @jbampton in https://github.com/apache/opendal/pull/4263
1515 | ### CI
1516 | * ci: Use old version of seafile mc instead by @Xuanwo in https://github.com/apache/opendal/pull/4107
1517 | * ci: Refactor workflows layout by @Xuanwo in https://github.com/apache/opendal/pull/4139
1518 | * ci: Migrate hdfs default setup by @Xuanwo in https://github.com/apache/opendal/pull/4140
1519 | * ci: Refactor check.sh into check.py to get ready for multi components release by @Xuanwo in https://github.com/apache/opendal/pull/4159
1520 | * ci: Add test case for hdfs over gcs bucket by @ArmandoZ in https://github.com/apache/opendal/pull/4145
1521 | * ci: Add hdfs test case for s3 by @ArmandoZ in https://github.com/apache/opendal/pull/4184
1522 | * ci: Add hdfs test case for azurite by @ArmandoZ in https://github.com/apache/opendal/pull/4185
1523 | * ci: Add support for releasing all rust packages by @Xuanwo in https://github.com/apache/opendal/pull/4200
1524 | * ci: Fix dependabot not update by @Xuanwo in https://github.com/apache/opendal/pull/4202
1525 | * ci: reduce the open pull request limits to 1 by @jbampton in https://github.com/apache/opendal/pull/4225
1526 | * ci: Remove version suffix from package versions by @Xuanwo in https://github.com/apache/opendal/pull/4254
1527 | * ci: Fix fuzz test for minio s3 name change by @Xuanwo in https://github.com/apache/opendal/pull/4266
1528 | * ci: Mark python 3.13 is not supported by @Xuanwo in https://github.com/apache/opendal/pull/4269
1529 | * ci: Disable yandex disk test for too slow by @Xuanwo in https://github.com/apache/opendal/pull/4274
1530 | * ci: Split python CI into release and checks by @Xuanwo in https://github.com/apache/opendal/pull/4275
1531 | * ci(release): Make sure LICENSE and NOTICE files are included by @Xuanwo in https://github.com/apache/opendal/pull/4283
1532 | * ci(release): Refactor and merge the check.py into verify.py by @Xuanwo in https://github.com/apache/opendal/pull/4284
1533 | ### Chore
1534 | * chore(deps): bump actions/cache from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/4118
1535 | * chore(deps): bump toml from 0.8.8 to 0.8.9 by @dependabot in https://github.com/apache/opendal/pull/4109
1536 | * chore(deps): bump dav-server from 0.5.7 to 0.5.8 by @dependabot in https://github.com/apache/opendal/pull/4111
1537 | * chore(deps): bump assert_cmd from 2.0.12 to 2.0.13 by @dependabot in https://github.com/apache/opendal/pull/4112
1538 | * chore(deps): bump actions/setup-dotnet from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/4115
1539 | * chore(deps): bump mongodb from 2.7.1 to 2.8.0 by @dependabot in https://github.com/apache/opendal/pull/4110
1540 | * chore(deps): bump quick-xml from 0.30.0 to 0.31.0 by @dependabot in https://github.com/apache/opendal/pull/4113
1541 | * chore: Make every components separate, remove workspace by @Xuanwo in https://github.com/apache/opendal/pull/4134
1542 | * chore: Fix build of core by @Xuanwo in https://github.com/apache/opendal/pull/4137
1543 | * chore: Fix workflow links for opendal by @Xuanwo in https://github.com/apache/opendal/pull/4147
1544 | * chore(website): Bump download link for 0.45.0 release by @morristai in https://github.com/apache/opendal/pull/4149
1545 | * chore: Fix name DtraceLayerWrapper by @jayvdb in https://github.com/apache/opendal/pull/4165
1546 | * chore: Align core version by @Xuanwo in https://github.com/apache/opendal/pull/4197
1547 | * chore: update benchmark doc by @wcy-fdu in https://github.com/apache/opendal/pull/4201
1548 | * chore(deps): bump clap from 4.4.18 to 4.5.1 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4221
1549 | * chore(deps): bump serde from 1.0.196 to 1.0.197 in /bin/oay by @dependabot in https://github.com/apache/opendal/pull/4214
1550 | * chore(deps): bump anyhow from 1.0.79 to 1.0.80 in /bin/ofs by @dependabot in https://github.com/apache/opendal/pull/4209
1551 | * chore(deps): bump anyhow from 1.0.79 to 1.0.80 in /bin/oli by @dependabot in https://github.com/apache/opendal/pull/4216
1552 | * chore(deps): bump cacache from 12.0.0 to 13.0.0 in /core by @dependabot in https://github.com/apache/opendal/pull/4215
1553 |
1554 | ## [v0.45.0] - 2024-01-29
1555 |
1556 | ### Added
1557 | * feat(ofs): introduce ofs execute bin by @oowl in https://github.com/apache/opendal/pull/4033
1558 | * feat: add a missing news by @WenyXu in https://github.com/apache/opendal/pull/4056
1559 | * feat(services/koofr): set test for koofr by @suyanhanx in https://github.com/apache/opendal/pull/4050
1560 | * feat(layers/dtrace): Support User Statically-Defined Tracing(aka USDT) on Linux by @Zheaoli in https://github.com/apache/opendal/pull/4053
1561 | * feat(website): add missing news and organize the onboarding guide by @morristai in https://github.com/apache/opendal/pull/4072
1562 | ### Changed
1563 | * refactor!: avoid hard dep to tokio rt by @tisonkun in https://github.com/apache/opendal/pull/4061
1564 | ### Fixed
1565 | * fix(examples/cpp): display the results to standard output. by @SYaoJun in https://github.com/apache/opendal/pull/4040
1566 | * fix(service/icloud):Missing 'X-APPLE-WEBAUTH-USER cookie' and URL initialized failed by @bokket in https://github.com/apache/opendal/pull/4029
1567 | * fix: Implement timeout layer correctly by using timeout by @Xuanwo in https://github.com/apache/opendal/pull/4059
1568 | * fix(koofr): create_dir when exist by @hoslo in https://github.com/apache/opendal/pull/4062
1569 | * fix(seafile): test_list_dir_with_metakey by @hoslo in https://github.com/apache/opendal/pull/4063
1570 | * fix: list path recursive should not return path itself by @youngsofun in https://github.com/apache/opendal/pull/4067
1571 | ### Docs
1572 | * docs: Remove not needed actions in release guide by @Xuanwo in https://github.com/apache/opendal/pull/4037
1573 | * docs: fix spelling errors in README.md by @SYaoJun in https://github.com/apache/opendal/pull/4039
1574 | * docs: New PMC member Liuqing Yue by @Xuanwo in https://github.com/apache/opendal/pull/4047
1575 | * docs: New Committer Yang Shuai by @Xuanwo in https://github.com/apache/opendal/pull/4054
1576 | * docs(services/sftp): add more explanation for endpoint config by @silver-ymz in https://github.com/apache/opendal/pull/4055
1577 | ### CI
1578 | * ci(services/s3): Use minio/minio image instead by @Xuanwo in https://github.com/apache/opendal/pull/4070
1579 | * ci: Fix CI after moving out of workspacs by @Xuanwo in https://github.com/apache/opendal/pull/4081
1580 | ### Chore
1581 | * chore: Delete bindings/ruby/cucumber.yml by @tisonkun in https://github.com/apache/opendal/pull/4030
1582 | * chore(website): Bump download link for 0.44.2 release by @Zheaoli in https://github.com/apache/opendal/pull/4034
1583 | * chore(website): Update the release tips by @Zheaoli in https://github.com/apache/opendal/pull/4036
1584 | * chore: add doap file by @tisonkun in https://github.com/apache/opendal/pull/4038
1585 | * chore(website): Add extra artifacts check process in release document by @Zheaoli in https://github.com/apache/opendal/pull/4041
1586 | * chore(bindings/dotnet): update cargo.lock and set up ci by @suyanhanx in https://github.com/apache/opendal/pull/4084
1587 | * chore(bindings/dotnet): build os detect by @suyanhanx in https://github.com/apache/opendal/pull/4085
1588 | * chore(bindings/ocaml): pinning OCaml binding opendal version for release by @Ranxy in https://github.com/apache/opendal/pull/4086
1589 |
1590 |
1591 | ## [v0.44.2] - 2023-01-19
1592 |
1593 | ### Added
1594 | * feat: add behavior tests for blocking buffer reader by @WenyXu in https://github.com/apache/opendal/pull/3872
1595 | * feat(services): add pcloud support by @hoslo in https://github.com/apache/opendal/pull/3892
1596 | * feat(services/hdfs): Atomic write for hdfs by @shbhmrzd in https://github.com/apache/opendal/pull/3875
1597 | * feat(services/hdfs): add atomic_write_dir to hdfsconfig debug by @shbhmrzd in https://github.com/apache/opendal/pull/3902
1598 | * feat: add MongodbConfig by @zjregee in https://github.com/apache/opendal/pull/3906
1599 | * RFC-3898: Concurrent Writer by @WenyXu in https://github.com/apache/opendal/pull/3898
1600 | * feat(services): add yandex disk support by @hoslo in https://github.com/apache/opendal/pull/3918
1601 | * feat: implement concurrent `MultipartUploadWriter` by @WenyXu in https://github.com/apache/opendal/pull/3915
1602 | * feat: add concurrent writer behavior tests by @WenyXu in https://github.com/apache/opendal/pull/3920
1603 | * feat: implement concurrent `RangeWriter` by @WenyXu in https://github.com/apache/opendal/pull/3923
1604 | * feat: add `concurrent` and `buffer` parameters into FuzzInput by @WenyXu in https://github.com/apache/opendal/pull/3921
1605 | * feat(fuzz): add azblob as test service by @suyanhanx in https://github.com/apache/opendal/pull/3931
1606 | * feat(services/webhdfs): Implement write with append by @hoslo in https://github.com/apache/opendal/pull/3937
1607 | * feat(core/bench): Add benchmark for concurrent write by @Xuanwo in https://github.com/apache/opendal/pull/3942
1608 | * feat(oio): add block_write support by @hoslo in https://github.com/apache/opendal/pull/3945
1609 | * feat(services/webhdfs): Implement multi write via CONCAT by @hoslo in https://github.com/apache/opendal/pull/3939
1610 | * feat(core): Allow retry in concurrent write operations by @Xuanwo in https://github.com/apache/opendal/pull/3958
1611 | * feat(services/ghac): Add workaround for AWS S3 based GHES by @Xuanwo in https://github.com/apache/opendal/pull/3985
1612 | * feat: Implement path cache and refactor gdrive by @Xuanwo in https://github.com/apache/opendal/pull/3975
1613 | * feat(services): add hdfs native layout by @shbhmrzd in https://github.com/apache/opendal/pull/3933
1614 | * feat(services/s3): Return error if credential is empty after loaded by @Xuanwo in https://github.com/apache/opendal/pull/4000
1615 | * feat(services/gdrive): Use trash instead of permanently deletes by @Xuanwo in https://github.com/apache/opendal/pull/4002
1616 | * feat(services): add koofr support by @hoslo in https://github.com/apache/opendal/pull/3981
1617 | * feat(icloud): Add basic Apple iCloud Drive support by @bokket in https://github.com/apache/opendal/pull/3980
1618 |
1619 | ### Changed
1620 | * refactor: Merge compose_{read,write} into enum_utils by @Xuanwo in https://github.com/apache/opendal/pull/3871
1621 | * refactor(services/ftp): Impl parse_error instead of `From<Error>` by @bokket in https://github.com/apache/opendal/pull/3891
1622 | * docs: very minor English wording fix in error message by @gabrielgrant in https://github.com/apache/opendal/pull/3900
1623 | * refactor(services/rocksdb): Impl parse_error instead of `From<Error>` by @suyanhanx in https://github.com/apache/opendal/pull/3903
1624 | * refactor: Re-organize the layout of tests by @Xuanwo in https://github.com/apache/opendal/pull/3904
1625 | * refactor(services/etcd): Impl parse_error instead of `From<Error>` by @suyanhanx in https://github.com/apache/opendal/pull/3910
1626 | * refactor(services/sftp): Impl parse_error instead of `From<Error>` by @G-XD in https://github.com/apache/opendal/pull/3914
1627 | * refactor!: Bump MSRV to 1.75 by @Xuanwo in https://github.com/apache/opendal/pull/3851
1628 | * refactor(services/redis): Impl parse_error instead of `From<Error>` by @suyanhanx in https://github.com/apache/opendal/pull/3938
1629 | * refactor!: Revert the bump of MSRV to 1.75 by @Xuanwo in https://github.com/apache/opendal/pull/3952
1630 | * refactor(services/onedrive): Add OnedriveConfig to implement ConfigDeserializer by @Borber in https://github.com/apache/opendal/pull/3954
1631 | * refactor(service/dropbox): Add DropboxConfig by @howiieyu in https://github.com/apache/opendal/pull/3961
1632 | * refactor: Polish internal types and remove not needed deps by @Xuanwo in https://github.com/apache/opendal/pull/3964
1633 | * refactor: Add concurrent error test for BlockWrite by @Xuanwo in https://github.com/apache/opendal/pull/3968
1634 | * refactor: Remove not needed types in icloud by @Xuanwo in https://github.com/apache/opendal/pull/4021
1635 |
1636 | ### Fixed
1637 | * fix: Bump pyo3 to fix false positive of unnecessary_fallible_conversions by @Xuanwo in https://github.com/apache/opendal/pull/3873
1638 | * fix(core): Handling content encoding correctly by @Xuanwo in https://github.com/apache/opendal/pull/3907
1639 | * fix: fix RangeWriter incorrect `next_offset` by @WenyXu in https://github.com/apache/opendal/pull/3927
1640 | * fix(oio::BlockWrite): fix write_once case by @hoslo in https://github.com/apache/opendal/pull/3953
1641 | * fix: Don't retry close if concurrent > 1 to avoid content lost by @Xuanwo in https://github.com/apache/opendal/pull/3957
1642 | * fix(doc): fix rfc typos by @howiieyu in https://github.com/apache/opendal/pull/3971
1643 | * fix: Don't call wake_by_ref in OperatorFuture by @Xuanwo in https://github.com/apache/opendal/pull/4003
1644 | * fix: async fn resumed after initiate part failed by @Xuanwo in https://github.com/apache/opendal/pull/4013
1645 | * fix(pcloud,seafile): use get_basename and get_parent by @hoslo in https://github.com/apache/opendal/pull/4020
1646 | * fix(ci): remove pr author from review candidates by @dqhl76 in https://github.com/apache/opendal/pull/4023
1647 |
1648 | ### Docs
1649 | * docs(bindings/python): drop unnecessary patchelf by @tisonkun in https://github.com/apache/opendal/pull/3889
1650 | * docs: Polish core's quick start by @Xuanwo in https://github.com/apache/opendal/pull/3896
1651 | * docs(gcs): correct the description of credential by @WenyXu in https://github.com/apache/opendal/pull/3928
1652 | * docs: Add 0.44.1 download link by @Xuanwo in https://github.com/apache/opendal/pull/3929
1653 | * docs(release): how to clean up old releases by @tisonkun in https://github.com/apache/opendal/pull/3934
1654 | * docs(website): polish download page by @suyanhanx in https://github.com/apache/opendal/pull/3932
1655 | * docs: improve user verify words by @tisonkun in https://github.com/apache/opendal/pull/3941
1656 | * docs: fix incorrect word used by @zegevlier in https://github.com/apache/opendal/pull/3944
1657 | * docs: improve wording for community pages by @tisonkun in https://github.com/apache/opendal/pull/3978
1658 | * docs(bindings/nodejs): copyright in footer by @suyanhanx in https://github.com/apache/opendal/pull/3986
1659 | * docs(bindings/nodejs): build docs locally doc by @suyanhanx in https://github.com/apache/opendal/pull/3987
1660 | * docs: Fix missing word in download by @Xuanwo in https://github.com/apache/opendal/pull/3993
1661 | * docs(bindings/java): copyright in footer by @G-XD in https://github.com/apache/opendal/pull/3996
1662 | * docs(website): update footer by @suyanhanx in https://github.com/apache/opendal/pull/4008
1663 | * docs: add trademark information to every possible published readme by @PsiACE in https://github.com/apache/opendal/pull/4014
1664 | * docs(website): replace podling to project in website by @morristai in https://github.com/apache/opendal/pull/4015
1665 | * docs: Update release guide to adapt as a new TLP by @Xuanwo in https://github.com/apache/opendal/pull/4011
1666 | * docs: Add WebHDFS version compatibility details by @shbhmrzd in https://github.com/apache/opendal/pull/4024
1667 |
1668 | ### CI
1669 | * build(deps): bump actions/download-artifact from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/3885
1670 | * build(deps): bump once_cell from 1.18.0 to 1.19.0 by @dependabot in https://github.com/apache/opendal/pull/3880
1671 | * build(deps): bump napi-derive from 2.14.2 to 2.14.6 by @dependabot in https://github.com/apache/opendal/pull/3879
1672 | * build(deps): bump url from 2.4.1 to 2.5.0 by @dependabot in https://github.com/apache/opendal/pull/3876
1673 | * build(deps): bump mlua from 0.8.10 to 0.9.2 by @oowl in https://github.com/apache/opendal/pull/3890
1674 | * ci: Disable supabase tests for our test org has been paused by @Xuanwo in https://github.com/apache/opendal/pull/3908
1675 | * ci: Downgrade artifact actions until regression addressed by @Xuanwo in https://github.com/apache/opendal/pull/3935
1676 | * ci: Refactor fuzz to integrate with test planner by @Xuanwo in https://github.com/apache/opendal/pull/3936
1677 | * ci: Pick random reviewers from committer list by @Xuanwo in https://github.com/apache/opendal/pull/4001
1678 |
1679 | ### Chore
1680 | * chore: update release related docs and script by @dqhl76 in https://github.com/apache/opendal/pull/3870
1681 | * chore(NOTICE): update copyright to year 2024 by @suyanhanx in https://github.com/apache/opendal/pull/3894
1682 | * chore: Format code to make readers happy by @Xuanwo in https://github.com/apache/opendal/pull/3912
1683 | * chore: Remove unused dep async-compat by @Xuanwo in https://github.com/apache/opendal/pull/3947
1684 | * chore: display project logo on Rust docs by @tisonkun in https://github.com/apache/opendal/pull/3983
1685 | * chore: improve trademarks in bindings docs by @tisonkun in https://github.com/apache/opendal/pull/3984
1686 | * chore: use Apache OpenDAL™ in the first and most prominent mention by @tisonkun in https://github.com/apache/opendal/pull/3988
1687 | * chore: add more information for javadocs by @tisonkun in https://github.com/apache/opendal/pull/3989
1688 | * chore: precise footer by @tisonkun in https://github.com/apache/opendal/pull/3997
1689 | * chore: use full form name when necessary by @tisonkun in https://github.com/apache/opendal/pull/3998
1690 | * chore(bindings/python): Enable sftp service by default for unix platform by @Zheaoli in https://github.com/apache/opendal/pull/4006
1691 | * chore: remove disclaimer by @suyanhanx in https://github.com/apache/opendal/pull/4009
1692 | * chore: Remove incubating from releases by @Xuanwo in https://github.com/apache/opendal/pull/4010
1693 | * chore: trim incubator prefix everywhere by @tisonkun in https://github.com/apache/opendal/pull/4016
1694 | * chore: fixup doc link in release_java.yml by @tisonkun in https://github.com/apache/opendal/pull/4019
1695 | * chore: simplify reviewer candidates logic by @tisonkun in https://github.com/apache/opendal/pull/4017
1696 |
1697 | ## [v0.44.1] - 2023-12-31
1698 |
1699 | ### Added
1700 | * feat(service/memcached): Add MemCachedConfig by @ankit-pn in https://github.com/apache/opendal/pull/3827
1701 | * feat(service/rocksdb): Add RocksdbConfig by @ankit-pn in https://github.com/apache/opendal/pull/3828
1702 | * feat(services): add chainsafe support by @hoslo in https://github.com/apache/opendal/pull/3834
1703 | * feat(bindings/python): Build all available services for python by @Xuanwo in https://github.com/apache/opendal/pull/3836
1704 | * feat: Adding Atomicserver config by @k-aishwarya in https://github.com/apache/opendal/pull/3845
1705 | * feat(oio::read): implement the async buffer reader by @WenyXu in https://github.com/apache/opendal/pull/3811
1706 | * feat(oio::read): implement the blocking buffer reader by @WenyXu in https://github.com/apache/opendal/pull/3860
1707 | * feat: adapt the `CompleteReader` by @WenyXu in https://github.com/apache/opendal/pull/3861
1708 | * feat: add basic behavior tests for buffer reader by @WenyXu in https://github.com/apache/opendal/pull/3862
1709 | * feat: add fuzz reader with buffer tests by @WenyXu in https://github.com/apache/opendal/pull/3866
1710 | * feat(ofs): implement ofs based on fuse3 by @Inokinoki in https://github.com/apache/opendal/pull/3857
1711 | ### Changed
1712 | * refactor: simplify `bindings_python.yml` by @messense in https://github.com/apache/opendal/pull/3837
1713 | * refactor: Add edge test for aws assume role with web identity by @Xuanwo in https://github.com/apache/opendal/pull/3839
1714 | * refactor(services/webdav): Add WebdavConfig to implement ConfigDeserializer by @kwaa in https://github.com/apache/opendal/pull/3846
1715 | * refactor: use TwoWays instead of TwoWaysReader and TwoWaysWriter by @WenyXu in https://github.com/apache/opendal/pull/3863
1716 | ### Fixed
1717 | * fix: Add tests for listing recursively on not supported services by @Xuanwo in https://github.com/apache/opendal/pull/3826
1718 | * fix(services/upyun): fix list api by @hoslo in https://github.com/apache/opendal/pull/3841
1719 | * fix: fix a bypass seek relative bug in `BufferReader` by @WenyXu in https://github.com/apache/opendal/pull/3864
1720 | * fix: fix the bypass read does not sync the `cur` of `BufferReader` by @WenyXu in https://github.com/apache/opendal/pull/3865
1721 | ### Docs
1722 | * docs: Add Apache prefix for all bindings by @Xuanwo in https://github.com/apache/opendal/pull/3829
1723 | * docs: Add apache prefix for python docs by @Xuanwo in https://github.com/apache/opendal/pull/3830
1724 | * docs: Add branding in README by @Xuanwo in https://github.com/apache/opendal/pull/3831
1725 | * docs: Add trademark for Apache OpenDAL™ by @Xuanwo in https://github.com/apache/opendal/pull/3832
1726 | * docs: Add trademark sign for core by @Xuanwo in https://github.com/apache/opendal/pull/3833
1727 | * docs: Enable doc_auto_cfg when docs cfg has been enabled by @Xuanwo in https://github.com/apache/opendal/pull/3835
1728 | * docs: Address branding for haskell and C bindings by @Xuanwo in https://github.com/apache/opendal/pull/3840
1729 | * doc: add 0.44.0 release link to download.md by @dqhl76 in https://github.com/apache/opendal/pull/3868
1730 | ### CI
1731 | * ci: Remove workflows that not running or ready by @Xuanwo in https://github.com/apache/opendal/pull/3842
1732 | * ci: Migrate ftp to test planner by @Xuanwo in https://github.com/apache/opendal/pull/3843
1733 | ### Chore
1734 | * chore(bindings/java): Add name and description metadata by @tisonkun in https://github.com/apache/opendal/pull/3838
1735 | * chore(website): improve a bit trademark refs by @tisonkun in https://github.com/apache/opendal/pull/3847
1736 | * chore: Fix clippy warnings found in rust 1.75 by @Xuanwo in https://github.com/apache/opendal/pull/3849
1737 | * chore(bindings/python): improve ASF branding by @tisonkun in https://github.com/apache/opendal/pull/3850
1738 | * chore(bindings/haskell): improve ASF branding by @tisonkun in https://github.com/apache/opendal/pull/3852
1739 | * chore(bindings/c): make c binding separate workspace by @suyanhanx in https://github.com/apache/opendal/pull/3856
1740 | * chore(bindings/haskell): support co-log-0.6.0 && ghc-9.4 by @silver-ymz in https://github.com/apache/opendal/pull/3858
1741 |
1742 |
1743 | ## [v0.44.0] - 2023-12-26
1744 |
1745 | ### Added
1746 | * feat(core): service add HuggingFace file system by @morristai in https://github.com/apache/opendal/pull/3670
1747 | * feat(service/moka): bump moka from 0.10.4 to 0.12.1 by @G-XD in https://github.com/apache/opendal/pull/3711
1748 | * feat: add operator.list support for OCaml binding by @Young-Flash in https://github.com/apache/opendal/pull/3706
1749 | * feat(test): add Huggingface behavior test by @morristai in https://github.com/apache/opendal/pull/3712
1750 | * feat: Add list prefix support by @Xuanwo in https://github.com/apache/opendal/pull/3728
1751 | * feat: Implement ConcurrentFutures to remove the dependences on tokio by @Xuanwo in https://github.com/apache/opendal/pull/3746
1752 | * feat(services): add seafile support by @hoslo in https://github.com/apache/opendal/pull/3771
1753 | * RFC-3734: Buffered reader by @WenyXu in https://github.com/apache/opendal/pull/3734
1754 | * feat: Add content range support for RpRead by @Xuanwo in https://github.com/apache/opendal/pull/3777
1755 | * feat: Add presign_stat_with support by @Xuanwo in https://github.com/apache/opendal/pull/3778
1756 | * feat: Add project layout for ofs by @Xuanwo in https://github.com/apache/opendal/pull/3779
1757 | * feat(binding/nodejs): align list api by @suyanhanx in https://github.com/apache/opendal/pull/3784
1758 | * feat: Make OpenDAL available under wasm32 arch by @Xuanwo in https://github.com/apache/opendal/pull/3796
1759 | * feat(services): add upyun support by @hoslo in https://github.com/apache/opendal/pull/3790
1760 | * feat: Add edge test s3_read_on_wasm by @Xuanwo in https://github.com/apache/opendal/pull/3802
1761 | * feat(services/azblob): available under wasm32 arch by @suyanhanx in https://github.com/apache/opendal/pull/3806
1762 | * feat: make services-gdrive compile for wasm target by @Young-Flash in https://github.com/apache/opendal/pull/3808
1763 | * feat(core): Make gcs available on wasm32 arch by @Xuanwo in https://github.com/apache/opendal/pull/3816
1764 | ### Changed
1765 | * refactor(service/etcd): use EtcdConfig in from_map by @G-XD in https://github.com/apache/opendal/pull/3703
1766 | * refactor(object_store): upgrade object_store to 0.7. by @youngsofun in https://github.com/apache/opendal/pull/3713
1767 | * refactor: List must support list without recursive by @Xuanwo in https://github.com/apache/opendal/pull/3721
1768 | * refactor: replace ftp tls impl as rustls by @oowl in https://github.com/apache/opendal/pull/3760
1769 | * refactor: Remove never used Stream poll_reset API by @Xuanwo in https://github.com/apache/opendal/pull/3774
1770 | * refactor: Polish operator read_with by @Xuanwo in https://github.com/apache/opendal/pull/3775
1771 | * refactor: Migrate gcs builder to config based by @Xuanwo in https://github.com/apache/opendal/pull/3786
1772 | * refactor(service/hdfs): Add HdfsConfig to implement ConfigDeserializer by @shbhmrzd in https://github.com/apache/opendal/pull/3800
1773 | * refactor(raw): add parse_header_to_str fn by @hoslo in https://github.com/apache/opendal/pull/3804
1774 | * refactor(raw): refactor APIs like parse_content_disposition by @hoslo in https://github.com/apache/opendal/pull/3815
1775 | * refactor: Polish http_util parse headers by @Xuanwo in https://github.com/apache/opendal/pull/3817
1776 | ### Fixed
1777 | * fix(oli): Fix cp -r command returns invalid path error by @kebe7jun in https://github.com/apache/opendal/pull/3687
1778 | * fix(website): folder name mismatch by @suyanhanx in https://github.com/apache/opendal/pull/3707
1779 | * fix(binding/java): fix SPECIAL_DIR_NAME by @G-XD in https://github.com/apache/opendal/pull/3715
1780 | * fix(services/dropbox): Workaround for dropbox limitations for create_folder by @Xuanwo in https://github.com/apache/opendal/pull/3719
1781 | * fix(ocaml_binding): sort `actual` & `expected` to pass ci by @Young-Flash in https://github.com/apache/opendal/pull/3733
1782 | * fix(ci): Make sure merge_local_staging handles all subdir by @Xuanwo in https://github.com/apache/opendal/pull/3788
1783 | * fix(services/gdrive): fix return value of `get_file_id_by_path` by @G-XD in https://github.com/apache/opendal/pull/3801
1784 | * fix(core): List root should not return itself by @Xuanwo in https://github.com/apache/opendal/pull/3824
1785 | ### Docs
1786 | * docs: add maturity model check by @suyanhanx in https://github.com/apache/opendal/pull/3680
1787 | * docs(website): show maturity model by @suyanhanx in https://github.com/apache/opendal/pull/3709
1788 | * docs(website): only VOTEs from PPMC members are binding by @G-XD in https://github.com/apache/opendal/pull/3710
1789 | * doc: add 0.43.0 release link to download.md by @G-XD in https://github.com/apache/opendal/pull/3729
1790 | * docs: Add process on nominating committers and ppmc members by @Xuanwo in https://github.com/apache/opendal/pull/3740
1791 | * docs: Deploy website to nightlies for every tags by @Xuanwo in https://github.com/apache/opendal/pull/3739
1792 | * docs: Remove not released bindings docs from top level header by @Xuanwo in https://github.com/apache/opendal/pull/3741
1793 | * docs: Add dependencies list for all packages by @Xuanwo in https://github.com/apache/opendal/pull/3743
1794 | * docs: Update maturity docs by @Xuanwo in https://github.com/apache/opendal/pull/3750
1795 | * docs: update the RFC doc by @suyanhanx in https://github.com/apache/opendal/pull/3748
1796 | * docs(website): polish deploy to nightlies by @suyanhanx in https://github.com/apache/opendal/pull/3753
1797 | * docs: add event calendar in community page by @dqhl76 in https://github.com/apache/opendal/pull/3767
1798 | * docs(community): polish events by @suyanhanx in https://github.com/apache/opendal/pull/3768
1799 | * docs(bindings/ruby): reflect test framework refactor by @tisonkun in https://github.com/apache/opendal/pull/3798
1800 | * docs(website): add service Huggingface to website by @morristai in https://github.com/apache/opendal/pull/3812
1801 | * docs: update release docs to add cargo-deny setup by @dqhl76 in https://github.com/apache/opendal/pull/3821
1802 | ### CI
1803 | * build(deps): bump cacache from 11.7.1 to 12.0.0 by @dependabot in https://github.com/apache/opendal/pull/3690
1804 | * build(deps): bump prometheus-client from 0.21.2 to 0.22.0 by @dependabot in https://github.com/apache/opendal/pull/3694
1805 | * build(deps): bump github/issue-labeler from 3.2 to 3.3 by @dependabot in https://github.com/apache/opendal/pull/3698
1806 | * ci: Add behavior test for b2 by @Xuanwo in https://github.com/apache/opendal/pull/3714
1807 | * ci(cargo): Add frame pointer support in build flag by @Zheaoli in https://github.com/apache/opendal/pull/3772
1808 | * ci: Workaround ring 0.17 build issue, bring aarch64 and armv7l back by @Xuanwo in https://github.com/apache/opendal/pull/3781
1809 | * ci: Support CI test for s3_read_on_wasm by @Zheaoli in https://github.com/apache/opendal/pull/3813
1810 | ### Chore
1811 | * chore: bump aws-sdk-s3 from 0.38.0 to 1.4.0 by @memoryFade in https://github.com/apache/opendal/pull/3704
1812 | * chore: Disable obs test for workaround by @Xuanwo in https://github.com/apache/opendal/pull/3717
1813 | * chore: Fix bindings CI by @Xuanwo in https://github.com/apache/opendal/pull/3722
1814 | * chore(binding/nodejs,website): Replace yarn with pnpm by @suyanhanx in https://github.com/apache/opendal/pull/3730
1815 | * chore: Bring persy CI back by @Xuanwo in https://github.com/apache/opendal/pull/3751
1816 | * chore(bindings/python): upgrade pyo3 to 0.20 by @messense in https://github.com/apache/opendal/pull/3758
1817 | * chore: remove unused binding feature file by @tisonkun in https://github.com/apache/opendal/pull/3757
1818 | * chore: Bump governor from 0.5.1 to 0.6.0 by @G-XD in https://github.com/apache/opendal/pull/3761
1819 | * chore: Split bindings/ocaml to separate workspace by @Xuanwo in https://github.com/apache/opendal/pull/3792
1820 | * chore: Split bindings/ruby to separate workspace by @ho-229 in https://github.com/apache/opendal/pull/3794
1821 | * chore(bindings/php): bump ext-php-rs to support latest php & separate workspace by @suyanhanx in https://github.com/apache/opendal/pull/3799
1822 | * chore: Address comments from hackernews by @Xuanwo in https://github.com/apache/opendal/pull/3805
1823 | * chore(bindings/ocaml): dep opendal point to core by @suyanhanx in https://github.com/apache/opendal/pull/3814
1824 |
1825 | ## [v0.43.0] - 2023-11-30
1826 |
1827 | ### Added
1828 | * feat(bindings/C): Add opendal_operator_rename and opendal_operator_copy by @jiaoew1991 in https://github.com/apache/opendal/pull/3517
1829 | * feat(binding/python): Add new API to convert between AsyncOperator and Operator by @Zheaoli in https://github.com/apache/opendal/pull/3514
1830 | * feat: Implement RFC-3526: List Recursive by @Xuanwo in https://github.com/apache/opendal/pull/3556
1831 | * feat(service): add alluxio rest api support by @hoslo in https://github.com/apache/opendal/pull/3564
1832 | * feat(bindings/python): add OPENDAL_DISABLE_RANDOM_ROOT support by @Justin-Xiang in https://github.com/apache/opendal/pull/3550
1833 | * feat(core): add Alluxio e2e test by @hoslo in https://github.com/apache/opendal/pull/3573
1834 | * feat(service): alluxio support write by @hoslo in https://github.com/apache/opendal/pull/3566
1835 | * feat(bindings/nodejs): add retry layer by @suyanhanx in https://github.com/apache/opendal/pull/3484
1836 | * RFC: Concurrent Stat in List by @morristai in https://github.com/apache/opendal/pull/3574
1837 | * feat(service/hdfs): enable rename in hdfs service by @qingwen220 in https://github.com/apache/opendal/pull/3592
1838 | * feat: Improve the read_to_end perf and add benchmark vs_fs by @Xuanwo in https://github.com/apache/opendal/pull/3617
1839 | * feat: Add benchmark vs aws sdk s3 by @Xuanwo in https://github.com/apache/opendal/pull/3620
1840 | * feat: Improve the performance of s3 services by @Xuanwo in https://github.com/apache/opendal/pull/3622
1841 | * feat(service): support b2 by @hoslo in https://github.com/apache/opendal/pull/3604
1842 | * feat(core): Implement RFC-3574 Concurrent Stat In List by @morristai in https://github.com/apache/opendal/pull/3599
1843 | * feat: Implement stat dir correctly based on RFC-3243 List Prefix by @Xuanwo in https://github.com/apache/opendal/pull/3651
1844 | * feat(bindings/nodejs): Add capability support by @suyanhanx in https://github.com/apache/opendal/pull/3654
1845 | * feat: disable `ftp` for python and java binding by @ZutJoe in https://github.com/apache/opendal/pull/3659
1846 | * feat(bindings/nodejs): read/write stream by @suyanhanx in https://github.com/apache/opendal/pull/3619
1847 | ### Changed
1848 | * refactor(services/persy): migrate tot test planner by @G-XD in https://github.com/apache/opendal/pull/3476
1849 | * refactor(service/etcd): Add EtcdConfig to implement ConfigDeserializer by @Xuxiaotuan in https://github.com/apache/opendal/pull/3543
1850 | * refactor(services/azblob): add AzblobConfig by @acehinnnqru in https://github.com/apache/opendal/pull/3553
1851 | * refactor(services/cacache): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3568
1852 | * refactor(services/sled): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3569
1853 | * refactor(services/webhdfs): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3578
1854 | * refactor(core): Rename all `Page` to `List` by @Xuanwo in https://github.com/apache/opendal/pull/3589
1855 | * refactor: Change List API into poll based and return one entry instead by @Xuanwo in https://github.com/apache/opendal/pull/3593
1856 | * refactor(services/tikv): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3587
1857 | * refactor(service/redis): Migrate task to new task planner by @sunheyi6 in https://github.com/apache/opendal/pull/3374
1858 | * refactor(oio): Polish IncomingAsyncBody::bytes by @Xuanwo in https://github.com/apache/opendal/pull/3621
1859 | * refactor(services/rocksdb): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3636
1860 | * refactor(services/azfile): Check if dir exists before create by @ZutJoe in https://github.com/apache/opendal/pull/3652
1861 | * refactor: Polish concurrent list by @Xuanwo in https://github.com/apache/opendal/pull/3658
1862 | ### Fixed
1863 | * fix(bindings/python): Fix the test command in doc by @Justin-Xiang in https://github.com/apache/opendal/pull/3541
1864 | * fix(ci): try enable corepack before setup-node action by @suyanhanx in https://github.com/apache/opendal/pull/3609
1865 | * fix(service/hdfs): enable hdfs append support by @qingwen220 in https://github.com/apache/opendal/pull/3600
1866 | * fix(ci): fix setup node by @suyanhanx in https://github.com/apache/opendal/pull/3611
1867 | * fix(core): Path in remove not normalized by @Xuanwo in https://github.com/apache/opendal/pull/3671
1868 | * fix(core): Build with redis features and Rust < 1.72 by @vincentdephily in https://github.com/apache/opendal/pull/3683
1869 | ### Docs
1870 | * docs: Add questdb in users list by @caicancai in https://github.com/apache/opendal/pull/3532
1871 | * docs: Add macos specific doc updates for hdfs by @shbhmrzd in https://github.com/apache/opendal/pull/3559
1872 | * docs(bindings/python): Fix the test command in doc by @Justin-Xiang in https://github.com/apache/opendal/pull/3561
1873 | * docs(bindings/java): add basic usage in README by @caicancai in https://github.com/apache/opendal/pull/3534
1874 | * doc: add 0.42.0 release link to download.md by @silver-ymz in https://github.com/apache/opendal/pull/3598
1875 | ### CI
1876 | * ci(services/libsql): add rust test threads limit by @G-XD in https://github.com/apache/opendal/pull/3540
1877 | * ci(services/redb): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3518
1878 | * ci: Disable libsql behavior test until we or upstream address them by @Xuanwo in https://github.com/apache/opendal/pull/3552
1879 | * ci: Add new Python binding reviewer by @Zheaoli in https://github.com/apache/opendal/pull/3560
1880 | * ci(bindings/nodejs): add aarch64 build support by @suyanhanx in https://github.com/apache/opendal/pull/3567
1881 | * ci(planner): Polish the workflow planner code by @Zheaoli in https://github.com/apache/opendal/pull/3570
1882 | * ci(core): Add dry run for rc tags by @Xuanwo in https://github.com/apache/opendal/pull/3624
1883 | * ci: Disable persy until it has been fixed by @Xuanwo in https://github.com/apache/opendal/pull/3631
1884 | * ci: Calling cargo to make sure rust has been setup by @Xuanwo in https://github.com/apache/opendal/pull/3633
1885 | * ci: Fix etcd with tls and auth failed to start by @Xuanwo in https://github.com/apache/opendal/pull/3637
1886 | * ci(services/etcd): Use ALLOW_NONE_AUTHENTICATION as workaround by @Xuanwo in https://github.com/apache/opendal/pull/3638
1887 | * ci: dry run publish on rc tags for python binding by @everpcpc in https://github.com/apache/opendal/pull/3645
1888 | * ci: Add java linux arm64 build by @Xuanwo in https://github.com/apache/opendal/pull/3660
1889 | * ci(java/binding): Use zigbuild for glibc 2.17 support by @Xuanwo in https://github.com/apache/opendal/pull/3664
1890 | * ci(bindings/python): remove aarch support by @G-XD in https://github.com/apache/opendal/pull/3674
1891 | ### Chore
1892 | * chore(servies/sftp): Upgrade openssh-sftp-client to 0.14 by @sd44 in https://github.com/apache/opendal/pull/3538
1893 | * chore(service/tikv): rename Backend to TikvBackend by @caicancai in https://github.com/apache/opendal/pull/3545
1894 | * chore(docs): add cpp binding in README by @cjj2010 in https://github.com/apache/opendal/pull/3546
1895 | * chore(service/sqlite): fix typo on sqlite by @caicancai in https://github.com/apache/opendal/pull/3549
1896 | * chore(bindings/C): resolve doxygen warnings by @sd44 in https://github.com/apache/opendal/pull/3572
1897 | * chore: removed dotenv in bindings/nodejs/index.js by @AlexVCS in https://github.com/apache/opendal/pull/3579
1898 | * chore: update opentelemetry to v0.21.x by @jtescher in https://github.com/apache/opendal/pull/3580
1899 | * chore: Add cpp binding Google style clang-format && format the code by @JackDrogon in https://github.com/apache/opendal/pull/3581
1900 | * chore: bump suppaftp version to 5.2 by @oowl in https://github.com/apache/opendal/pull/3590
1901 | * chore(ci): fix artifacts path for publish pypi by @everpcpc in https://github.com/apache/opendal/pull/3597
1902 | * chore: Code cleanup to make rust 1.74 happy by @Xuanwo in https://github.com/apache/opendal/pull/3602
1903 | * chore: Fix `raw::tests` been excluded unexpectedly by @Xuanwo in https://github.com/apache/opendal/pull/3623
1904 | * chore: Bump dpes and remove native-tls in mysql-async by @Xuanwo in https://github.com/apache/opendal/pull/3627
1905 | * chore(core): Have mysql_async use rustls instead of native-tls by @amunra in https://github.com/apache/opendal/pull/3634
1906 | * chore: Polish docs for Capability by @Xuanwo in https://github.com/apache/opendal/pull/3635
1907 | * chore: Bump reqsign to 0.14.4 for jsonwebtoken by @Xuanwo in https://github.com/apache/opendal/pull/3644
1908 | * chore(ci): nodejs binding publish dry run by @suyanhanx in https://github.com/apache/opendal/pull/3632
1909 | * chore: Polish comments for `stat` and `stat_with` by @Xuanwo in https://github.com/apache/opendal/pull/3657
1910 | * chore: clearer doc for python binding by @wcy-fdu in https://github.com/apache/opendal/pull/3667
1911 | * chore: Bump to v0.43.0 to start release process by @G-XD in https://github.com/apache/opendal/pull/3672
1912 | * chore: Bump to v0.43.0 to start release process (Round 2) by @G-XD in https://github.com/apache/opendal/pull/3676
1913 | * chore: add license.workspace to help cargo deny reports by @tisonkun in https://github.com/apache/opendal/pull/3679
1914 | * chore: clearer doc for list metakey by @wcy-fdu in https://github.com/apache/opendal/pull/3666
1915 |
1916 | ## [v0.42.0] - 2023-11-07
1917 |
1918 | ### Added
1919 | * feat(binding/java): add `rename` support by @G-XD in https://github.com/apache/opendal/pull/3238
1920 | * feat(prometheus): add bytes metrics as counter by @flaneur2020 in https://github.com/apache/opendal/pull/3246
1921 | * feat(binding/python): new behavior testing for python by @laipz8200 in https://github.com/apache/opendal/pull/3245
1922 | * feat(binding/python): Support AsyncOperator tests. by @laipz8200 in https://github.com/apache/opendal/pull/3254
1923 | * feat(service/libsql): support libsql by @G-XD in https://github.com/apache/opendal/pull/3233
1924 | * feat(binding/python): allow setting append/buffer/more in write() call by @jokester in https://github.com/apache/opendal/pull/3256
1925 | * feat(services/persy): change blocking_x in async_x call to tokio::task::blocking_spawn by @Zheaoli in https://github.com/apache/opendal/pull/3221
1926 | * feat: Add edge test cases for OpenDAL Core by @Xuanwo in https://github.com/apache/opendal/pull/3274
1927 | * feat(service/d1): Support d1 for opendal by @realtaobo in https://github.com/apache/opendal/pull/3248
1928 | * feat(services/redb): change blocking_x in async_x call to tokio::task::blocking_spawn by @shauvet in https://github.com/apache/opendal/pull/3276
1929 | * feat: Add blocking layer for C bindings by @jiaoew1991 in https://github.com/apache/opendal/pull/3278
1930 | * feat(binding/c): Add blocking_reader for C binding by @jiaoew1991 in https://github.com/apache/opendal/pull/3259
1931 | * feat(services/sled): change blocking_x in async_x call to tokio::task::blocking_spawn by @shauvet in https://github.com/apache/opendal/pull/3280
1932 | * feat(services/rocksdb): change blocking_x in async_x call to tokio::task::blocking_spawn by @shauvet in https://github.com/apache/opendal/pull/3279
1933 | * feat(binding/java): make `Metadata` a POJO by @G-XD in https://github.com/apache/opendal/pull/3277
1934 | * feat(bindings/java): convey backtrace on exception by @tisonkun in https://github.com/apache/opendal/pull/3286
1935 | * feat(layer/prometheus): Support custom metric bucket for Histogram by @Zheaoli in https://github.com/apache/opendal/pull/3275
1936 | * feat(bindings/python): read APIs return `memoryview` instead of `bytes` to avoid copy by @messense in https://github.com/apache/opendal/pull/3310
1937 | * feat(service/azfile): add azure file service support by @dqhl76 in https://github.com/apache/opendal/pull/3312
1938 | * feat(services/oss): Add allow anonymous support by @Xuanwo in https://github.com/apache/opendal/pull/3321
1939 | * feat(bindings/python): build and publish aarch64 and armv7l wheels by @messense in https://github.com/apache/opendal/pull/3325
1940 | * feat(bindings/java): support duplicate operator by @tisonkun in https://github.com/apache/opendal/pull/3330
1941 | * feat(core): Add enabled for Scheme by @Xuanwo in https://github.com/apache/opendal/pull/3331
1942 | * feat(bindings/java): support get enabled services by @tisonkun in https://github.com/apache/opendal/pull/3336
1943 | * feat(bindings/java): Migrate behavior tests to new Workflow Planner by @Xuanwo in https://github.com/apache/opendal/pull/3341
1944 | * feat(layer/prometheus): Support output path as a metric label by @Zheaoli in https://github.com/apache/opendal/pull/3335
1945 | * feat(service/mongodb): Support mongodb service by @Zheaoli in https://github.com/apache/opendal/pull/3355
1946 | * feat: Make PrometheusClientLayer Clonable by @flaneur2020 in https://github.com/apache/opendal/pull/3352
1947 | * feat(service/cloudflare_kv): support cloudflare KV by @my-vegetable-has-exploded in https://github.com/apache/opendal/pull/3348
1948 | * feat(core): exposing `Metadata::metakey()` api by @G-XD in https://github.com/apache/opendal/pull/3373
1949 | * feat(binding/java): add list & remove_all support by @G-XD in https://github.com/apache/opendal/pull/3333
1950 | * feat: Add write_total_max_size in Capability by @realtaobo in https://github.com/apache/opendal/pull/3309
1951 | * feat(core): service add DBFS API 2.0 support by @morristai in https://github.com/apache/opendal/pull/3334
1952 | * feat(bindings/java): use random root for behavior tests by @tisonkun in https://github.com/apache/opendal/pull/3408
1953 | * feat(services/oss): Add start-after support for oss list by @wcy-fdu in https://github.com/apache/opendal/pull/3410
1954 | * feat(binding/python): Export full_capability API for Python binding by @Zheaoli in https://github.com/apache/opendal/pull/3402
1955 | * feat(test): Enable new test workflow planner for python binding by @Zheaoli in https://github.com/apache/opendal/pull/3397
1956 | * feat: Implement Lazy Reader by @Xuanwo in https://github.com/apache/opendal/pull/3395
1957 | * feat(binding/nodejs): upgrade test behavior and infra by @eryue0220 in https://github.com/apache/opendal/pull/3297
1958 | * feat(binding/python): Support Copy operation for Python binding by @Zheaoli in https://github.com/apache/opendal/pull/3454
1959 | * feat(bindings/python): Add layer API for operator by @Xuanwo in https://github.com/apache/opendal/pull/3464
1960 | * feat(bindings/java): add layers onto ops by @tisonkun in https://github.com/apache/opendal/pull/3392
1961 | * feat(binding/python): Support rename API for Python binding by @Zheaoli in https://github.com/apache/opendal/pull/3467
1962 | * feat(binding/python): Support remove_all API for Python binding by @Zheaoli in https://github.com/apache/opendal/pull/3469
1963 | * feat(core): fix token leak in OneDrive by @morristai in https://github.com/apache/opendal/pull/3470
1964 | * feat(core): service add OpenStack Swift support by @morristai in https://github.com/apache/opendal/pull/3461
1965 | * feat(bindings/python)!: Implement File and AsyncFile to replace Reader by @Xuanwo in https://github.com/apache/opendal/pull/3474
1966 | * feat(services): Implement ConfigDeserializer and add S3Config as example by @Xuanwo in https://github.com/apache/opendal/pull/3490
1967 | * feat(core): add OpenStack Swift e2e test by @morristai in https://github.com/apache/opendal/pull/3493
1968 | * feat(doc): add OpenStack Swift document for the website by @morristai in https://github.com/apache/opendal/pull/3494
1969 | * feat(services/sqlite): add SqliteConfig by @hoslo in https://github.com/apache/opendal/pull/3497
1970 | * feat(bindings/C): implement capability by @Ji-Xinyou in https://github.com/apache/opendal/pull/3479
1971 | * feat: add mongodb gridfs service support by @realtaobo in https://github.com/apache/opendal/pull/3491
1972 | * feat(services): add RedisConfig by @hoslo in https://github.com/apache/opendal/pull/3498
1973 | * feat: Add opendal_metadata_last_modified and opendal_operator_create_dir by @jiaoew1991 in https://github.com/apache/opendal/pull/3515
1974 | ### Changed
1975 | * refactor(services/sqlite): Polish sqlite via adding connection pool by @Xuanwo in https://github.com/apache/opendal/pull/3249
1976 | * refactor: Remove cucumber based test in python by @laipz8200 in https://github.com/apache/opendal/pull/3253
1977 | * refactor: Introduce OpenDAL Workflow Planner by @Xuanwo in https://github.com/apache/opendal/pull/3258
1978 | * refactor(bindings/C): Implement error with error message by @Ji-Xinyou in https://github.com/apache/opendal/pull/3250
1979 | * refactor(oay): import dav-server-opendalfs by @Young-Flash in https://github.com/apache/opendal/pull/3285
1980 | * refactor(bindings/java): explicit error handling by @tisonkun in https://github.com/apache/opendal/pull/3288
1981 | * refactor(services/gdrive): Extract folder search logic by @Xuanwo in https://github.com/apache/opendal/pull/3234
1982 | * refactor(core): use `list_with` in `Operator::list` by @G-XD in https://github.com/apache/opendal/pull/3305
1983 | * refactor(!): Bump and update MSRV to 1.67 by @Xuanwo in https://github.com/apache/opendal/pull/3316
1984 | * refactor(tests): Apply OPENDAL_TEST for behavior test by @Xuanwo in https://github.com/apache/opendal/pull/3322
1985 | * refactor(bindings/java): align test idiom with OPENDAL_TEST by @tisonkun in https://github.com/apache/opendal/pull/3328
1986 | * refactor(bindings/java): split behavior tests by @tisonkun in https://github.com/apache/opendal/pull/3332
1987 | * refactor(ci/behavior_test): Migrate to 1password instead by @Xuanwo in https://github.com/apache/opendal/pull/3338
1988 | * refactor(core/{fuzz,benches}): Migrate to OPENDANL_TEST by @Xuanwo in https://github.com/apache/opendal/pull/3343
1989 | * refactor(bindings/C): Alter naming convention for consistency by @Ji-Xinyou in https://github.com/apache/opendal/pull/3282
1990 | * refactor(service/mysql): Migrate to new task planner by @Zheaoli in https://github.com/apache/opendal/pull/3357
1991 | * refactor(service/postgresql): Migrate task to new task planner by @Zheaoli in https://github.com/apache/opendal/pull/3358
1992 | * refactor(services/etcd): Migrate etcd task to new behavior test planner by @Zheaoli in https://github.com/apache/opendal/pull/3360
1993 | * refactor(services/http): Migrate http task to new behavior test planner by @Zheaoli in https://github.com/apache/opendal/pull/3362
1994 | * refactor(services/sqlite): Migrate sqlite task to new behavior test planner by @Zheaoli in https://github.com/apache/opendal/pull/3365
1995 | * refactor(services/gdrive): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3368
1996 | * refactor(services/redis): migrate to test planner for kvrocks,dragonfly by @suyanhanx in https://github.com/apache/opendal/pull/3369
1997 | * refactor(services/azblob): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3370
1998 | * refactor(services/cos,obs): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3371
1999 | * refactor(services/oss): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3375
2000 | * refactor(services/memcached): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3377
2001 | * refactor(services/gcs): migrate tot test planner by @suyanhanx in https://github.com/apache/opendal/pull/3391
2002 | * refactor(services/moka): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3394
2003 | * refactor(services/dashmap): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3396
2004 | * refactor(services/memory): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3390
2005 | * refactor(services/azdls): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3405
2006 | * refactor(services/mini_moka): migrate to test planner by @dqhl76 in https://github.com/apache/opendal/pull/3416
2007 | * refactor(core/fuzz): Fix some bugs inside fuzzer by @Xuanwo in https://github.com/apache/opendal/pull/3418
2008 | * refactor(tests): Extract tests related logic into raw::tests for reuse by @Xuanwo in https://github.com/apache/opendal/pull/3420
2009 | * refactor(service/dropbox): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3381
2010 | * refactor(services/supabase): migrate to test planner by @G-XD in https://github.com/apache/opendal/pull/3406
2011 | * refactor(services/sftp): migrate to test planner by @suyanhanx in https://github.com/apache/opendal/pull/3412
2012 | * refactor(services/wasabi)!: Remove native support for wasabi services by @Xuanwo in https://github.com/apache/opendal/pull/3455
2013 | * refactor(ci): Polish the test planner code by @Zheaoli in https://github.com/apache/opendal/pull/3457
2014 | * refactor(services/webdav): migrate to test planner for webdav by @shauvet in https://github.com/apache/opendal/pull/3379
2015 | * refactor(services/redis): Enable rustls support by default for redis by @Xuanwo in https://github.com/apache/opendal/pull/3471
2016 | * refactor(bindings/python): Refactor layout for python bindings by @Xuanwo in https://github.com/apache/opendal/pull/3473
2017 | * refactor(services/libsql): Migrate libsql task to new behavior test planner by @Zheaoli in https://github.com/apache/opendal/pull/3363
2018 | * refactor(service/postgresql): Add PostgresqlConfig to implement ConfigDeserializer by @sd44 in https://github.com/apache/opendal/pull/3495
2019 | * refactor(binding/python): Add multiple custom exception for each of error code in Rust Core by @Zheaoli in https://github.com/apache/opendal/pull/3492
2020 | * refactor(service/libsql): Add LibsqlConfig to implement ConfigDeserializer by @sd44 in https://github.com/apache/opendal/pull/3501
2021 | * refactor(service/http): Add HttpConfig to implement ConfigDeserializer by @sd44 in https://github.com/apache/opendal/pull/3507
2022 | * refactor(service/ftp): Add FtpConfig to implement ConfigDeserializer by @sd44 in https://github.com/apache/opendal/pull/3510
2023 | * refactor(service/sftp): Add SftpConfig to implement ConfigDeserializer by @sd44 in https://github.com/apache/opendal/pull/3511
2024 | * refactor(service/tikv): Add TikvConfig to implement ConfigDeserializer by @caicancai in https://github.com/apache/opendal/pull/3512
2025 | ### Fixed
2026 | * fix: Fix read result not full by @jiaoew1991 in https://github.com/apache/opendal/pull/3350
2027 | * fix(services/cos): fix prefix param by @G-XD in https://github.com/apache/opendal/pull/3384
2028 | * fix(services/ghac)!: Remove enable_create_simulation support for ghac by @Xuanwo in https://github.com/apache/opendal/pull/3423
2029 | * fix: ASF event URL by @tisonkun in https://github.com/apache/opendal/pull/3431
2030 | * fix(binding/java): fix return value of presign-related method by @G-XD in https://github.com/apache/opendal/pull/3433
2031 | * fix(mongo/backend): remove redundant code by @bestgopher in https://github.com/apache/opendal/pull/3439
2032 | * fix: nodejs test adapt `OPENDAL_DISABLE_RANDOM_ROOT` by @suyanhanx in https://github.com/apache/opendal/pull/3456
2033 | * fix(services/s3): Accept List responses without ETag by @amunra in https://github.com/apache/opendal/pull/3478
2034 | * fix(bindings/python): fix type annotations and improve docs by @messense in https://github.com/apache/opendal/pull/3483
2035 | * fix(services/dropbox): Check if folder exists before calling create dir by @leenstx in https://github.com/apache/opendal/pull/3513
2036 | ### Docs
2037 | * docs: Add docs in website for sqlite/mysql/postgresql services by @Zheaoli in https://github.com/apache/opendal/pull/3290
2038 | * docs: add docs in website for atomicserver by @Zheaoli in https://github.com/apache/opendal/pull/3293
2039 | * docs: Add docs on website for GHAC service by @Zheaoli in https://github.com/apache/opendal/pull/3296
2040 | * docs: Add docs on website for cacache services by @Zheaoli in https://github.com/apache/opendal/pull/3294
2041 | * docs: Add docs on website for libsql services by @Zheaoli in https://github.com/apache/opendal/pull/3299
2042 | * docs: download link for v0.41.0 by @suyanhanx in https://github.com/apache/opendal/pull/3298
2043 | * docs: Add docs on website for persy service by @Zheaoli in https://github.com/apache/opendal/pull/3300
2044 | * docs: Add docs on website for d1 services by @Zheaoli in https://github.com/apache/opendal/pull/3295
2045 | * docs: Add docs on website for redb service by @Zheaoli in https://github.com/apache/opendal/pull/3301
2046 | * docs: Add docs on website for tikv service by @Zheaoli in https://github.com/apache/opendal/pull/3302
2047 | * docs: Add docs on website for Vercel Artifacts service by @Zheaoli in https://github.com/apache/opendal/pull/3303
2048 | * docs: update release doc by @suyanhanx in https://github.com/apache/opendal/pull/3306
2049 | * docs(bindings): bindings README and binding release status by @suyanhanx in https://github.com/apache/opendal/pull/3340
2050 | * docs(bindings/java): update how to run behavior test by @tisonkun in https://github.com/apache/opendal/pull/3342
2051 | * docs: fix something in docs by @my-vegetable-has-exploded in https://github.com/apache/opendal/pull/3353
2052 | * docs: Update mysql `connection_string` config description in doc by @xring in https://github.com/apache/opendal/pull/3388
2053 | * doc: apply `range_reader` change in upgrade doc by @wcy-fdu in https://github.com/apache/opendal/pull/3401
2054 | * docs(readme): Fix capitalization about the ABFS service in README.md by @caicancai in https://github.com/apache/opendal/pull/3485
2055 | * docs: Add Milvus as C binding's user by @Xuanwo in https://github.com/apache/opendal/pull/3523
2056 | ### CI
2057 | * ci: Add bindings_go workflow by @jiaoew1991 in https://github.com/apache/opendal/pull/3260
2058 | * ci: Only fetch origin while in pull request by @Xuanwo in https://github.com/apache/opendal/pull/3268
2059 | * ci: add a new test case for the disk is full by @sunheyi6 in https://github.com/apache/opendal/pull/3079
2060 | * ci: Passing GITHUB_TOKEN to avoid rate limit by @Xuanwo in https://github.com/apache/opendal/pull/3272
2061 | * ci(services/hdfs): Use dlcdn.apache.org instead by @Xuanwo in https://github.com/apache/opendal/pull/3308
2062 | * ci: Fix HDFS test by @Xuanwo in https://github.com/apache/opendal/pull/3320
2063 | * ci: Fix plan not generated correctly for PR from forked repo by @Xuanwo in https://github.com/apache/opendal/pull/3327
2064 | * ci(services/azfile): add azfile integration test by @dqhl76 in https://github.com/apache/opendal/pull/3409
2065 | * ci: Fix behavior tests been ignored by @Xuanwo in https://github.com/apache/opendal/pull/3422
2066 | * ci(binding/java): remove `testWriteFileWithNonAsciiName` behavior test by @G-XD in https://github.com/apache/opendal/pull/3424
2067 | * ci(bindings/python): Remove not passing test cases until we addressed by @Xuanwo in https://github.com/apache/opendal/pull/3432
2068 | * ci(services/sftp): Move setup logic into docker-compose by @Xuanwo in https://github.com/apache/opendal/pull/3430
2069 | * ci(test): Add health check for WebDAV docker compose config by @Zheaoli in https://github.com/apache/opendal/pull/3448
2070 | * ci: Switch to 1password connect to avoid rate limit by @Xuanwo in https://github.com/apache/opendal/pull/3447
2071 | * ci: Use cargo test instead of carge nextest by @Xuanwo in https://github.com/apache/opendal/pull/3505
2072 | * build(bindings/java): Allow building on `linux-aarch_64` by @amunra in https://github.com/apache/opendal/pull/3527
2073 | * ci: support behavior test for gridfs by @realtaobo in https://github.com/apache/opendal/pull/3520
2074 | ### Chore
2075 | * chore(ci): publish to pypi with github OIDC credential by @everpcpc in https://github.com/apache/opendal/pull/3252
2076 | * chore(bindings/java): align mapping POJO pattern by @tisonkun in https://github.com/apache/opendal/pull/3289
2077 | * chore: do not export unreleased bindings by @suyanhanx in https://github.com/apache/opendal/pull/3339
2078 | * chore: update object_store unit tests and s3 endpoint docs by @thorseraq in https://github.com/apache/opendal/pull/3345
2079 | * chore: Fix typo in mysql doc by @lewiszlw in https://github.com/apache/opendal/pull/3351
2080 | * chore: try format yaml files by @suyanhanx in https://github.com/apache/opendal/pull/3364
2081 | * chore(bindings/java): move out convert fns by @tisonkun in https://github.com/apache/opendal/pull/3389
2082 | * chore(bindings/java): use JDK 8 time APIs by @tisonkun in https://github.com/apache/opendal/pull/3400
2083 | * chore: remove unused dependencies by @xxchan in https://github.com/apache/opendal/pull/3414
2084 | * chore(test): Compare with digest instead of whole content by @Xuanwo in https://github.com/apache/opendal/pull/3419
2085 | * chore: remove useless workflow file by @suyanhanx in https://github.com/apache/opendal/pull/3425
2086 | * chore(deps): bump minitrace from 0.5.1 to 0.6.1 by @andylokandy in https://github.com/apache/opendal/pull/3449
2087 | * chore(deps): bump korandoru/hawkeye from 3.4.0 to 3.6.0 by @dependabot in https://github.com/apache/opendal/pull/3446
2088 | * chore(deps): bump toml from 0.7.8 to 0.8.6 by @dependabot in https://github.com/apache/opendal/pull/3442
2089 | * chore(deps): bump actions/setup-node from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/3445
2090 | * chore(deps): bump etcd-client from 0.11.1 to 0.12.1 by @dependabot in https://github.com/apache/opendal/pull/3441
2091 | * chore(services/libsql): Fix typos in backend by @sd44 in https://github.com/apache/opendal/pull/3506
2092 | * chore: Bump to v0.42.0 to start release process by @silver-ymz in https://github.com/apache/opendal/pull/3509
2093 | * chore(service/vercel_artifacts): add doc in backend by @caicancai in https://github.com/apache/opendal/pull/3508
2094 | * chore: Remove not released packages while releasing by @Xuanwo in https://github.com/apache/opendal/pull/3519
2095 | * chore: Bump to v0.42.0 to start release process (Round 2) by @silver-ymz in https://github.com/apache/opendal/pull/3521
2096 | * chore: Fix typo in CHANGELOG by @caicancai in https://github.com/apache/opendal/pull/3524
2097 | * chore: add updated Cargo.toml to git archive by @silver-ymz in https://github.com/apache/opendal/pull/3525
2098 | * chore(bindings/java): improve build.py script by @tisonkun in https://github.com/apache/opendal/pull/3529
2099 |
2100 | ## [v0.41.0] - 2023-10-08
2101 |
2102 | ### Added
2103 | * feat: allow using `prometheus-client` crate with PrometheusClientLayer by @flaneur2020 in https://github.com/apache/opendal/pull/3134
2104 | * feat(binding/java): support info ops by @G-XD in https://github.com/apache/opendal/pull/3154
2105 | * test(binding/java): add behavior test framework by @G-XD in https://github.com/apache/opendal/pull/3129
2106 | * feat: Include starting offset for GHAC upload Content-Range by @huonw in https://github.com/apache/opendal/pull/3163
2107 | * feat(bindings/cpp): make ReaderStream manage the lifetime of Reader by @silver-ymz in https://github.com/apache/opendal/pull/3164
2108 | * feat: Enable multi write for ghac by @Xuanwo in https://github.com/apache/opendal/pull/3165
2109 | * feat: Add mysql support for OpenDAL by @Zheaoli in https://github.com/apache/opendal/pull/3170
2110 | * feat(service/postgresql): support connection pool by @Zheaoli in https://github.com/apache/opendal/pull/3176
2111 | * feat(services/ghac): Allow explicitly setting ghac endpoint/token, not just env vars by @huonw in https://github.com/apache/opendal/pull/3177
2112 | * feat(service/azdls): add append support for azdls by @dqhl76 in https://github.com/apache/opendal/pull/3186
2113 | * feat(bindings/python): Enable `BlockingLayer` for non-blocking services that don't support blocking by @messense in https://github.com/apache/opendal/pull/3198
2114 | * feat: Add write_can_empty in Capability and related tests by @Xuanwo in https://github.com/apache/opendal/pull/3200
2115 | * feat: Add basic support for bindings/go using CGO by @jiaoew1991 in https://github.com/apache/opendal/pull/3204
2116 | * feat(binding/java): add `copy` test by @G-XD in https://github.com/apache/opendal/pull/3207
2117 | * feat(service/sqlite): Support sqlite for opendal by @Zheaoli in https://github.com/apache/opendal/pull/3212
2118 | * feat(services/sqlite): Support blocking_get/set/delete in sqlite service by @Zheaoli in https://github.com/apache/opendal/pull/3218
2119 | * feat(oay): port `WebdavFs` to dav-server-fs-opendal by @Young-Flash in https://github.com/apache/opendal/pull/3119
2120 | ### Changed
2121 | * refactor(services/dropbox): Use OpWrite instead of passing all args as parameters by @ImSingee in https://github.com/apache/opendal/pull/3126
2122 | * refactor(binding/java): read should return bytes by @tisonkun in https://github.com/apache/opendal/pull/3153
2123 | * refactor(bindings/java)!: operator jni calls by @tisonkun in https://github.com/apache/opendal/pull/3166
2124 | * refactor(tests): reuse function to remove duplicate code by @zhao-gang in https://github.com/apache/opendal/pull/3219
2125 | ### Fixed
2126 | * fix(tests): Create test files one by one instead of concurrently by @Xuanwo in https://github.com/apache/opendal/pull/3132
2127 | * chore(ci): fix web identity token path for aws s3 assume role test by @everpcpc in https://github.com/apache/opendal/pull/3141
2128 | * fix(services/s3): Detect region returned too early when header is empty by @Xuanwo in https://github.com/apache/opendal/pull/3187
2129 | * fix: making OpenDAL compilable on 32hf platforms by @ClSlaid in https://github.com/apache/opendal/pull/3188
2130 | * fix(binding/java): decode Java’s modified UTF-8 format by @G-XD in https://github.com/apache/opendal/pull/3195
2131 | ### Docs
2132 | * docs(release): describe how to close the Nexus staging repo by @tisonkun in https://github.com/apache/opendal/pull/3125
2133 | * docs: update release docs for cpp and haskell bindings by @silver-ymz in https://github.com/apache/opendal/pull/3130
2134 | * docs: Polish VISION to make it more clear by @Xuanwo in https://github.com/apache/opendal/pull/3135
2135 | * docs: Add start tracking issues about the next release by @Xuanwo in https://github.com/apache/opendal/pull/3145
2136 | * docs: Add download link for 0.40.0 by @Xuanwo in https://github.com/apache/opendal/pull/3149
2137 | * docs(bindings/cpp): add more using details about cmake by @silver-ymz in https://github.com/apache/opendal/pull/3155
2138 | * docs(bindings/java): Added an example of adding dependencies using Gradle by @eastack in https://github.com/apache/opendal/pull/3158
2139 | * docs: include disclaimer in announcement template by @Venderbad in https://github.com/apache/opendal/pull/3172
2140 | * docs: Add pants as a user by @huonw in https://github.com/apache/opendal/pull/3180
2141 | * docs: Add basic readme for go binding by @Xuanwo in https://github.com/apache/opendal/pull/3206
2142 | * docs: add multilingual getting started by @tisonkun in https://github.com/apache/opendal/pull/3214
2143 | * docs: multiple improvements by @tisonkun in https://github.com/apache/opendal/pull/3215
2144 | * docs: Add verify script by @Xuanwo in https://github.com/apache/opendal/pull/3239
2145 | ### CI
2146 | * ci: Align tags with semver specs by @Xuanwo in https://github.com/apache/opendal/pull/3136
2147 | * ci: Migrate obs to databend labs sponsored bucket by @Xuanwo in https://github.com/apache/opendal/pull/3137
2148 | * build(bindings/java): support develop with JDK 21 by @tisonkun in https://github.com/apache/opendal/pull/3140
2149 | * ci: Migrate GCS to Databend Labs sponsored bucket by @Xuanwo in https://github.com/apache/opendal/pull/3142
2150 | * build(bindings/java): upgrade maven wrapper version by @tisonkun in https://github.com/apache/opendal/pull/3167
2151 | * build(bindings/java): support explicit cargo build target by @tisonkun in https://github.com/apache/opendal/pull/3168
2152 | * ci: Pin Kvrocks docker image to 2.5.1 to avoid test failure by @git-hulk in https://github.com/apache/opendal/pull/3192
2153 | * ci(bindings/ocaml): add doc by @Ranxy in https://github.com/apache/opendal/pull/3208
2154 | * build(deps): bump actions/checkout from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/3222
2155 | * build(deps): bump korandoru/hawkeye from 3.3.0 to 3.4.0 by @dependabot in https://github.com/apache/opendal/pull/3223
2156 | * build(deps): bump rusqlite from 0.25.4 to 0.29.0 by @dependabot in https://github.com/apache/opendal/pull/3226
2157 | ### Chore
2158 | * chore(bindings/haskell): add rpath to haskell linker option by @silver-ymz in https://github.com/apache/opendal/pull/3128
2159 | * chore(ci): add test for aws s3 assume role by @everpcpc in https://github.com/apache/opendal/pull/3139
2160 | * chore: Incorrect debug information by @OmAximani0 in https://github.com/apache/opendal/pull/3183
2161 | * chore: bump quick-xml version to 0.30 by @Venderbad in https://github.com/apache/opendal/pull/3190
2162 | * chore: Let's welcome the contributors from hacktoberfest! by @Xuanwo in https://github.com/apache/opendal/pull/3193
2163 | * chore(bindings/java): simplify library path resolution by @tisonkun in https://github.com/apache/opendal/pull/3196
2164 | * chore: Make clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/3229
2165 |
2166 |
2167 | ## [v0.40.0] - 2023-09-18
2168 |
2169 | ### Added
2170 | * feat(service/etcd): support list by @G-XD in https://github.com/apache/opendal/pull/2755
2171 | * feat: setup the integrate with PHP binding by @godruoyi in https://github.com/apache/opendal/pull/2726
2172 | * feat(oay): Add `read_dir` by @Young-Flash in https://github.com/apache/opendal/pull/2736
2173 | * feat(obs): support loading credential from env by @everpcpc in https://github.com/apache/opendal/pull/2767
2174 | * feat: add async backtrace layer by @dqhl76 in https://github.com/apache/opendal/pull/2765
2175 | * feat: Add OCaml Binding by @Ranxy in https://github.com/apache/opendal/pull/2757
2176 | * feat(bindings/haskell): support logging layer by @silver-ymz in https://github.com/apache/opendal/pull/2705
2177 | * feat: Add FoundationDB Support for OpenDAL by @ArmandoZ in https://github.com/apache/opendal/pull/2751
2178 | * feat(oay): add write for oay webdav by @Young-Flash in https://github.com/apache/opendal/pull/2769
2179 | * feat: Implement RFC-2774 Lister API by @Xuanwo in https://github.com/apache/opendal/pull/2787
2180 | * feat(bindings/haskell): enhance original `OpMonad` to support custom IO monad by @silver-ymz in https://github.com/apache/opendal/pull/2789
2181 | * feat: Add into_seekable_read_by_range support for blocking read by @Xuanwo in https://github.com/apache/opendal/pull/2799
2182 | * feat(layers/blocking): add blocking layer by @yah01 in https://github.com/apache/opendal/pull/2780
2183 | * feat: Add async list with metakey support by @Xuanwo in https://github.com/apache/opendal/pull/2803
2184 | * feat(binding/php): Add basic io by @godruoyi in https://github.com/apache/opendal/pull/2782
2185 | * feat: fuzz test support read from .env by different services by @dqhl76 in https://github.com/apache/opendal/pull/2824
2186 | * feat(services/rocksdb): Add scan support by @JLerxky in https://github.com/apache/opendal/pull/2827
2187 | * feat: Add postgresql support for OpenDAL by @Xuanwo in https://github.com/apache/opendal/pull/2815
2188 | * feat: ci for php binding by @godruoyi in https://github.com/apache/opendal/pull/2830
2189 | * feat: Add create_dir, remove, copy and rename API for oay-webdav by @Young-Flash in https://github.com/apache/opendal/pull/2832
2190 | * feat(oli): oli stat should show path as specified by users by @sarutak in https://github.com/apache/opendal/pull/2842
2191 | * feat(services/moka, services/mini-moka): Add scan support by @JLerxky in https://github.com/apache/opendal/pull/2850
2192 | * feat(oay): impl some method for `WebdavMetaData` by @Young-Flash in https://github.com/apache/opendal/pull/2857
2193 | * feat: Implement list with metakey for blocking by @Xuanwo in https://github.com/apache/opendal/pull/2861
2194 | * feat(services/redis): add redis cluster support by @G-XD in https://github.com/apache/opendal/pull/2858
2195 | * feat(services/dropbox): read support range by @suyanhanx in https://github.com/apache/opendal/pull/2848
2196 | * feat(layers/logging): Allow users to control print backtrace or not by @Xuanwo in https://github.com/apache/opendal/pull/2872
2197 | * feat: add native & full capability by @yah01 in https://github.com/apache/opendal/pull/2874
2198 | * feat: Implement RFC-2758 Merge Append Into Write by @Xuanwo in https://github.com/apache/opendal/pull/2880
2199 | * feat(binding/ocaml): Add support for operator reader and metadata by @Ranxy in https://github.com/apache/opendal/pull/2881
2200 | * feat(core): replace field `_pin` with `!Unpin` as argument by @morristai in https://github.com/apache/opendal/pull/2886
2201 | * feat: Add retry for Writer::sink operation by @Xuanwo in https://github.com/apache/opendal/pull/2896
2202 | * feat: remove operator range_read and range_reader API by @oowl in https://github.com/apache/opendal/pull/2898
2203 | * feat(core): Add unit test for ChunkedCursor by @Xuanwo in https://github.com/apache/opendal/pull/2907
2204 | * feat(types): remove blocking operation range_read and range_reader API by @oowl in https://github.com/apache/opendal/pull/2912
2205 | * feat(types): add stat_with API for blocking operator by @oowl in https://github.com/apache/opendal/pull/2915
2206 | * feat(services/gdrive): credential manage by @suyanhanx in https://github.com/apache/opendal/pull/2914
2207 | * feat(core): Implement Exact Buf Writer by @Xuanwo in https://github.com/apache/opendal/pull/2917
2208 | * feat: Add benchmark for buf write by @Xuanwo in https://github.com/apache/opendal/pull/2922
2209 | * feat(core/raw): Add stream support for multipart by @Xuanwo in https://github.com/apache/opendal/pull/2923
2210 | * feat(types): synchronous blocking operator and operator's API by @oowl in https://github.com/apache/opendal/pull/2924
2211 | * feat(bindings/java): bundled services by @tisonkun in https://github.com/apache/opendal/pull/2934
2212 | * feat(core/raw): support stream body for mixedpart by @silver-ymz in https://github.com/apache/opendal/pull/2936
2213 | * feat(bindings/python): expose presign api by @silver-ymz in https://github.com/apache/opendal/pull/2950
2214 | * feat(bindings/nodejs): Implement presign test by @suyanhanx in https://github.com/apache/opendal/pull/2969
2215 | * docs(services/gdrive): update service doc by @suyanhanx in https://github.com/apache/opendal/pull/2973
2216 | * feat(bindings/cpp): init cpp binding by @silver-ymz in https://github.com/apache/opendal/pull/2980
2217 | * feat: gcs insert object support cache control by @fatelei in https://github.com/apache/opendal/pull/2974
2218 | * feat(bindings/cpp): expose all api returned by value by @silver-ymz in https://github.com/apache/opendal/pull/3001
2219 | * feat(services/gdrive): implement rename by @suyanhanx in https://github.com/apache/opendal/pull/3007
2220 | * feat(bindings/cpp): expose reader by @silver-ymz in https://github.com/apache/opendal/pull/3004
2221 | * feat(bindings/cpp): expose lister by @silver-ymz in https://github.com/apache/opendal/pull/3011
2222 | * feat(core): Avoid copy if input is larger than buffer_size by @Xuanwo in https://github.com/apache/opendal/pull/3016
2223 | * feat(service/gdrive): add gdrive list support by @Young-Flash in https://github.com/apache/opendal/pull/3025
2224 | * feat(services/etcd): Enable etcd connection pool by @Xuanwo in https://github.com/apache/opendal/pull/3041
2225 | * feat: Add buffer support for all services by @Xuanwo in https://github.com/apache/opendal/pull/3045
2226 | * feat(bindings/java): auto enable blocking layer by @tisonkun in https://github.com/apache/opendal/pull/3049
2227 | * feat(bindings/java): support presign ops by @tisonkun in https://github.com/apache/opendal/pull/3069
2228 | * feat(services/azblob): Rewrite the method signatures using OpWrite by @acehinnnqru in https://github.com/apache/opendal/pull/3068
2229 | * feat(services/cos): Rewrite the method signatures using OpWrite by @acehinnnqru in https://github.com/apache/opendal/pull/3070
2230 | * feat(services/obs): Rewrite method signatures using OpWrite by @hanxuanliang in https://github.com/apache/opendal/pull/3075
2231 | * feat(services/cos): Rewrite the methods signature using OpStat/OpRead by @acehinnnqru in https://github.com/apache/opendal/pull/3073
2232 | * feat: Add AtomicServer Support for OpenDAL by @ArmandoZ in https://github.com/apache/opendal/pull/2878
2233 | * feat(services/onedrive): Rewrite the method signatures using OpWrite by @acehinnnqru in https://github.com/apache/opendal/pull/3091
2234 | * feat(services/azblob): Rewrite azblob methods signature using OpRead/OpStat by @acehinnnqru in https://github.com/apache/opendal/pull/3072
2235 | * feat(services/obs): Rewrite methods signature in obs using OpRead/OpStat by @hanxuanliang in https://github.com/apache/opendal/pull/3094
2236 | * feat(service/gdrive): add gdrive copy by @Young-Flash in https://github.com/apache/opendal/pull/3098
2237 | * feat(services/wasabi): Rewrite the method signatures using OpRead,OpW… by @acehinnnqru in https://github.com/apache/opendal/pull/3099
2238 | ### Changed
2239 | * refactor(bindings/haskell): unify ffi of creating operator by @silver-ymz in https://github.com/apache/opendal/pull/2778
2240 | * refactor: Remove optimize in into_seekable_read_by_range by @Xuanwo in https://github.com/apache/opendal/pull/2796
2241 | * refactor(bindings/ocaml): Refactor module to support documentation by @Ranxy in https://github.com/apache/opendal/pull/2794
2242 | * refactor: Implement backtrace for Error correctly by @Xuanwo in https://github.com/apache/opendal/pull/2871
2243 | * refactor: Move object_store_opendal to integrations by @Xuanwo in https://github.com/apache/opendal/pull/2888
2244 | * refactor(services/gdrive): prepare for CI by @suyanhanx in https://github.com/apache/opendal/pull/2892
2245 | * refactor(core): Split buffer logic from underlying storage operations by @Xuanwo in https://github.com/apache/opendal/pull/2903
2246 | * refactor(service/webdav): Add docker-compose file to simplify the CI by @dqhl76 in https://github.com/apache/opendal/pull/2873
2247 | * refactor(raw): Return written bytes in oio::Write by @Xuanwo in https://github.com/apache/opendal/pull/3005
2248 | * refactor: Refactor oio::Write by accepting oio::Reader instead by @Xuanwo in https://github.com/apache/opendal/pull/3008
2249 | * refactor(core): Rename confusing pipe into copy_from by @Xuanwo in https://github.com/apache/opendal/pull/3015
2250 | * refactor: Remove oio::Write::copy_from by @Xuanwo in https://github.com/apache/opendal/pull/3018
2251 | * refactor: Make oio::Write accept Buf instead by @Xuanwo in https://github.com/apache/opendal/pull/3021
2252 | * refactor: Relax bounds on Writer::{sink, copy} by @huonw in https://github.com/apache/opendal/pull/3027
2253 | * refactor: Refactor oio::Write into poll-based to create more room for optimization by @Xuanwo in https://github.com/apache/opendal/pull/3029
2254 | * refactor: Polish multipart writer to allow oneshot optimization by @Xuanwo in https://github.com/apache/opendal/pull/3031
2255 | * refactor: Polish implementation details of WriteBuf and add vector chunks support by @Xuanwo in https://github.com/apache/opendal/pull/3034
2256 | * refactor: Add ChunkedBytes to improve the exact buf write by @Xuanwo in https://github.com/apache/opendal/pull/3035
2257 | * refactor: Polish RangeWrite implementation to remove the extra buffer logic by @Xuanwo in https://github.com/apache/opendal/pull/3038
2258 | * refactor: Remove the requirement of passing `content_length` to writer by @Xuanwo in https://github.com/apache/opendal/pull/3044
2259 | * refactor(services/azblob): instead `parse_batch_delete_response` with `Multipart::parse` by @G-XD in https://github.com/apache/opendal/pull/3071
2260 | * refactor(services/webdav): Refactor `webdav_put` signatures by using `OpWrite`. by @laipz8200 in https://github.com/apache/opendal/pull/3076
2261 | * refactor(services/azdls): Use OpWrite instead of passing all args as parameters by @liul85 in https://github.com/apache/opendal/pull/3077
2262 | * refactor(services/webdav): Use OpRead in `webdav_get`. by @laipz8200 in https://github.com/apache/opendal/pull/3081
2263 | * refactor(services/oss): Refactor `oss_put_object` signatures by using OpWrite by @sysu-yunz in https://github.com/apache/opendal/pull/3080
2264 | * refactor(services/http): Rewrite `http` methods signature by using OpRead/OpStat by @miroim in https://github.com/apache/opendal/pull/3083
2265 | * refactor(services/gcs): Rewrite `gcs` methods signature by using OpXxxx by @wavty in https://github.com/apache/opendal/pull/3087
2266 | * refactor: move all `fixtures` from `core/src/services/{service}` to top-level `fixtures/{service}` by @G-XD in https://github.com/apache/opendal/pull/3088
2267 | * refactor(services/webhdfs): Rewrite `webhdfs` methods signature by using `OpXxxx` by @cxorm in https://github.com/apache/opendal/pull/3109
2268 | ### Fixed
2269 | * fix(docs): KEYS broken link by @suyanhanx in https://github.com/apache/opendal/pull/2749
2270 | * fix: scheme from_str missing redb and tikv by @Ranxy in https://github.com/apache/opendal/pull/2766
2271 | * fix(ci): pin zig version to 0.11.0 by @oowl in https://github.com/apache/opendal/pull/2772
2272 | * fix: fix compile error by low version of backon in old project by @silver-ymz in https://github.com/apache/opendal/pull/2781
2273 | * fix: Bump openssh-sftp-client from 0.13.5 to 0.13.7 by @yah01 in https://github.com/apache/opendal/pull/2797
2274 | * fix: add redis for nextcloud to solve file locking problem by @dqhl76 in https://github.com/apache/opendal/pull/2805
2275 | * fix: Fix behavior tests for blocking layer by @Xuanwo in https://github.com/apache/opendal/pull/2809
2276 | * fix(services/s3): remove default region `us-east-1` for non-aws s3 by @G-XD in https://github.com/apache/opendal/pull/2812
2277 | * fix(oli): Fix a test name in ls.rs by @sarutak in https://github.com/apache/opendal/pull/2817
2278 | * fix(oli, doc): Fix examples of config.toml for oli by @sarutak in https://github.com/apache/opendal/pull/2819
2279 | * fix: Cleanup temporary files generated in tests automatically by @sarutak in https://github.com/apache/opendal/pull/2823
2280 | * fix(services/rocksdb): Make sure return key starts with input path by @Xuanwo in https://github.com/apache/opendal/pull/2828
2281 | * fix(services/sftp): bump openssh-sftp-client to 0.13.9 by @silver-ymz in https://github.com/apache/opendal/pull/2831
2282 | * fix(oli): oli commands don't work properly for files in CWD by @sarutak in https://github.com/apache/opendal/pull/2833
2283 | * fix(oli): oli commands should not accept invalid URI format by @sarutak in https://github.com/apache/opendal/pull/2845
2284 | * fix(bindings/c): Fix an example of the C binding by @sarutak in https://github.com/apache/opendal/pull/2854
2285 | * fix(doc): Update instructions for building the C binding in README.md by @sarutak in https://github.com/apache/opendal/pull/2856
2286 | * fix(oay): add some error handle by @Young-Flash in https://github.com/apache/opendal/pull/2879
2287 | * fix: Set default timeouts for HttpClient by @sarutak in https://github.com/apache/opendal/pull/2895
2288 | * fix(website): broken edit link by @suyanhanx in https://github.com/apache/opendal/pull/2913
2289 | * fix(binding/java): Overwrite default NOTICE file with correct years by @tisonkun in https://github.com/apache/opendal/pull/2918
2290 | * fix(services/gcs): migrate to new multipart impl for gcs_insert_object_request by @silver-ymz in https://github.com/apache/opendal/pull/2838
2291 | * fix(core): Invalid lister should not panic nor endless loop by @Xuanwo in https://github.com/apache/opendal/pull/2931
2292 | * fix: Enable exact_buf_write for R2 by @Xuanwo in https://github.com/apache/opendal/pull/2935
2293 | * fix(services/s3): allow 404 resp when deleting a non-existing object by @gongyisheng in https://github.com/apache/opendal/pull/2941
2294 | * fix(doc): use crate::docs::rfc to replace relative path in doc by @gongyisheng in https://github.com/apache/opendal/pull/2942
2295 | * fix: S3 copy error on non-ascii file path by @BoWuGit in https://github.com/apache/opendal/pull/2909
2296 | * fix: copy error on non-ascii file path for cos/obs/wasabi services by @BoWuGit in https://github.com/apache/opendal/pull/2948
2297 | * fix(doc): add GCS api reference and known issues to service/s3 doc by @gongyisheng in https://github.com/apache/opendal/pull/2949
2298 | * fix(oay): pass litmus copymove test by @Young-Flash in https://github.com/apache/opendal/pull/2944
2299 | * fix(core): Make sure OpenDAL works with http2 on GCS by @Xuanwo in https://github.com/apache/opendal/pull/2956
2300 | * fix(nodejs|java): Add place holder for BDD test by @Xuanwo in https://github.com/apache/opendal/pull/2962
2301 | * fix(core): Fix capability of services is not set correctly by @Xuanwo in https://github.com/apache/opendal/pull/2968
2302 | * fix(core): Fix capability of services is not set correctly by @JLerxky in https://github.com/apache/opendal/pull/2982
2303 | * fix(services/gcs): Fix handling of media and multipart insert by @Xuanwo in https://github.com/apache/opendal/pull/2997
2304 | * fix(services/webdav): decode path before set Entry by @G-XD in https://github.com/apache/opendal/pull/3020
2305 | * fix(services/oss): set content_md5 in lister by @G-XD in https://github.com/apache/opendal/pull/3043
2306 | * fix: Correct the name of azdfs to azdls by @Xuanwo in https://github.com/apache/opendal/pull/3046
2307 | * fix: Don't apply blocking layer when service support blocking by @Xuanwo in https://github.com/apache/opendal/pull/3050
2308 | * fix: call `flush` before `sync_all` by @WenyXu in https://github.com/apache/opendal/pull/3053
2309 | * fix: Metakeys are not propagated with the blocking operators by @Xuanwo in https://github.com/apache/opendal/pull/3116
2310 | ### Docs
2311 | * doc: fix released doc minor error by @oowl in https://github.com/apache/opendal/pull/2737
2312 | * docs: create README.md for oli by @STRRL in https://github.com/apache/opendal/pull/2752
2313 | * docs: polish fuzz README by @dqhl76 in https://github.com/apache/opendal/pull/2777
2314 | * docs: Add an example for PostgreSQL service by @sarutak in https://github.com/apache/opendal/pull/2847
2315 | * docs: improve php binding documentation by @godruoyi in https://github.com/apache/opendal/pull/2843
2316 | * docs: Fix missing link for rust example by @sarutak in https://github.com/apache/opendal/pull/2866
2317 | * docs: Add blog on how opendal read data by @Xuanwo in https://github.com/apache/opendal/pull/2869
2318 | * docs: Fix missing link to the contribution guide for the Node.js binding by @sarutak in https://github.com/apache/opendal/pull/2876
2319 | * doc: add 0.39.0 release link to download.md by @oowl in https://github.com/apache/opendal/pull/2882
2320 | * doc: add missing release step by @oowl in https://github.com/apache/opendal/pull/2883
2321 | * docs: add new committer landing doc by @dqhl76 in https://github.com/apache/opendal/pull/2905
2322 | * docs: auto release maven artifacts by @tisonkun in https://github.com/apache/opendal/pull/2729
2323 | * doc(tests): fix test command by @G-XD in https://github.com/apache/opendal/pull/2920
2324 | * docs: add service doc for gcs by @silver-ymz in https://github.com/apache/opendal/pull/2930
2325 | * docs(services/gcs): fix rust core doc include by @suyanhanx in https://github.com/apache/opendal/pull/2932
2326 | * docs: migrate all existed service documents by @silver-ymz in https://github.com/apache/opendal/pull/2937
2327 | * docs: Fix incorrect links to rfcs by @Xuanwo in https://github.com/apache/opendal/pull/2943
2328 | * docs: Update Release Process by @Xuanwo in https://github.com/apache/opendal/pull/2964
2329 | * docs(services/sftp): update comments about windows support and password login support by @silver-ymz in https://github.com/apache/opendal/pull/2967
2330 | * docs: add service doc for etcd & dropbox & foundationdb & moka by @G-XD in https://github.com/apache/opendal/pull/2986
2331 | * docs(bindings/cpp): add CONTRIBUTING.md by @silver-ymz in https://github.com/apache/opendal/pull/2984
2332 | * docs(bindings/cpp): use doxygen to generate API docs by @silver-ymz in https://github.com/apache/opendal/pull/2988
2333 | * docs(bindings/c): add awesome-doxygen to beautify document by @silver-ymz in https://github.com/apache/opendal/pull/2999
2334 | * docs(contributing): add podling status report guide by @PsiACE in https://github.com/apache/opendal/pull/2996
2335 | * docs: fix spelling - change `Github` to `GitHub` by @jbampton in https://github.com/apache/opendal/pull/3012
2336 | * docs: fix spelling - change `MacOS` to `macOS` by @jbampton in https://github.com/apache/opendal/pull/3013
2337 | * docs: add service doc for gdrive & onedrive by @nasnoisaac in https://github.com/apache/opendal/pull/3028
2338 | * docs(services/sftp): update comments about password login by @silver-ymz in https://github.com/apache/opendal/pull/3065
2339 | * docs: Add OwO 1st by @Xuanwo in https://github.com/apache/opendal/pull/3086
2340 | * docs: Add upgrade note for v0.40 by @Xuanwo in https://github.com/apache/opendal/pull/3096
2341 | * docs: add basic example for cpp binding by @silver-ymz in https://github.com/apache/opendal/pull/3108
2342 | * docs: Add comments for blocking layer by @Xuanwo in https://github.com/apache/opendal/pull/3117
2343 | ### CI
2344 | * build(deps): bump serde_json from 1.0.99 to 1.0.104 by @dependabot in https://github.com/apache/opendal/pull/2746
2345 | * build(deps): bump tracing-opentelemetry from 0.17.4 to 0.19.0 by @dependabot in https://github.com/apache/opendal/pull/2744
2346 | * build(deps): bump paste from 1.0.13 to 1.0.14 by @dependabot in https://github.com/apache/opendal/pull/2742
2347 | * build(deps): bump opentelemetry from 0.19.0 to 0.20.0 by @dependabot in https://github.com/apache/opendal/pull/2743
2348 | * build(deps): bump object_store from 0.5.6 to 0.6.1 by @dependabot in https://github.com/apache/opendal/pull/2745
2349 | * ci: use cache to speed up haskell ci by @silver-ymz in https://github.com/apache/opendal/pull/2792
2350 | * ci: Add setup for php and ocaml in dev container by @Xuanwo in https://github.com/apache/opendal/pull/2825
2351 | * ci: Trying to fix rocksdb build by @Xuanwo in https://github.com/apache/opendal/pull/2867
2352 | * ci: add reproducibility check by @tisonkun in https://github.com/apache/opendal/pull/2863
2353 | * ci(services/postgresql): add docker-compose to simplify the CI by @G-XD in https://github.com/apache/opendal/pull/2877
2354 | * ci(service/s3): Add docker-compose-minio file to simplify the CI by @gongyisheng in https://github.com/apache/opendal/pull/2887
2355 | * ci(services/hdfs): Load native lib instead by @Xuanwo in https://github.com/apache/opendal/pull/2900
2356 | * ci(services/rocksdb): Make sure rocksdb lib is loaded by @Xuanwo in https://github.com/apache/opendal/pull/2902
2357 | * build(bindings/java): bundle bare binaries in JARs with classifier by @tisonkun in https://github.com/apache/opendal/pull/2910
2358 | * ci(bindings/java): enable auto staging JARs on Apache Nexus repository by @tisonkun in https://github.com/apache/opendal/pull/2939
2359 | * ci(fix): Add PORTABLE to make sure rocksdb compiled with the same CPU feature set by @gongyisheng in https://github.com/apache/opendal/pull/2976
2360 | * ci(oay): Polish oay webdav test by @Young-Flash in https://github.com/apache/opendal/pull/2971
2361 | * build(deps): bump cbindgen from 0.24.5 to 0.25.0 by @dependabot in https://github.com/apache/opendal/pull/2992
2362 | * build(deps): bump actions/checkout from 2 to 3 by @dependabot in https://github.com/apache/opendal/pull/2995
2363 | * build(deps): bump pin-project from 1.1.2 to 1.1.3 by @dependabot in https://github.com/apache/opendal/pull/2993
2364 | * build(deps): bump chrono from 0.4.26 to 0.4.28 by @dependabot in https://github.com/apache/opendal/pull/2989
2365 | * build(deps): bump redb from 1.0.4 to 1.1.0 by @dependabot in https://github.com/apache/opendal/pull/2991
2366 | * build(deps): bump lazy-regex from 2.5.0 to 3.0.1 by @dependabot in https://github.com/apache/opendal/pull/2990
2367 | * build(deps): bump korandoru/hawkeye from 3.1.0 to 3.3.0 by @dependabot in https://github.com/apache/opendal/pull/2994
2368 | * ci(bindings/cpp): add ci for test and doc by @silver-ymz in https://github.com/apache/opendal/pull/2998
2369 | * ci(services/tikv): add tikv integration test with tls by @G-XD in https://github.com/apache/opendal/pull/3026
2370 | * ci: restrict workflow that need password by @dqhl76 in https://github.com/apache/opendal/pull/3039
2371 | * ci: Don't release while tag contains rc by @Xuanwo in https://github.com/apache/opendal/pull/3048
2372 | * ci(bindings/java): skip RedisServiceTest on macos and windows by @tisonkun in https://github.com/apache/opendal/pull/3054
2373 | * ci: Disable PHP build temporarily by @Xuanwo in https://github.com/apache/opendal/pull/3058
2374 | * ci(bindings/java): release workflow always uses bash by @tisonkun in https://github.com/apache/opendal/pull/3056
2375 | * ci(binding/java): Enable release build only when releasing by @Xuanwo in https://github.com/apache/opendal/pull/3057
2376 | * ci(binding/java): Use cargo profile instead of --release by @Xuanwo in https://github.com/apache/opendal/pull/3059
2377 | * ci: Move platform build checks from java binding to rust core by @Xuanwo in https://github.com/apache/opendal/pull/3060
2378 | * ci(bindings/haskell): add release workflow by @silver-ymz in https://github.com/apache/opendal/pull/3082
2379 | * ci: Build rc but don't publish by @Xuanwo in https://github.com/apache/opendal/pull/3089
2380 | * ci: Don't verify content for dry run by @Xuanwo in https://github.com/apache/opendal/pull/3115
2381 | ### Chore
2382 | * chore(core): bump cargo.toml http version to 0.2.9 by @oowl in https://github.com/apache/opendal/pull/2740
2383 | * chore: do not export example directory by @oowl in https://github.com/apache/opendal/pull/2750
2384 | * chore: Fix build after merging of ocaml by @Xuanwo in https://github.com/apache/opendal/pull/2776
2385 | * chore: Bump bytes to 1.4 to allow the usage of spare_capacity_mut by @Xuanwo in https://github.com/apache/opendal/pull/2784
2386 | * chore: disable oldtime feature of chrono by @paolobarbolini in https://github.com/apache/opendal/pull/2793
2387 | * chore: Disable blocking layer until we make all services passed by @Xuanwo in https://github.com/apache/opendal/pull/2806
2388 | * chore(bindings/haskell): post release 0.1.0 by @silver-ymz in https://github.com/apache/opendal/pull/2814
2389 | * chore(bindings/ocaml): Add contributing document to readme by @Ranxy in https://github.com/apache/opendal/pull/2829
2390 | * chore: Make clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/2851
2391 | * chore: add health check for docker-compose minio by @oowl in https://github.com/apache/opendal/pull/2899
2392 | * chore(ci): offload healthcheck logic to docker-compose config by @oowl in https://github.com/apache/opendal/pull/2901
2393 | * chore: Make clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/2927
2394 | * chore: Make C Binding clippy happy by @Xuanwo in https://github.com/apache/opendal/pull/2928
2395 | * chore: Fix failed ci by @silver-ymz in https://github.com/apache/opendal/pull/2938
2396 | * chore(ci): remove unreviewable test file and add generate test file step before testing by @gongyisheng in https://github.com/apache/opendal/pull/3003
2397 | * chore(bindings/cpp): update CMakeLists.txt to prepare release by @silver-ymz in https://github.com/apache/opendal/pull/3030
2398 | * chore: fix typo of SftpWriter error message by @silver-ymz in https://github.com/apache/opendal/pull/3032
2399 | * chore: Polish some details of layers implementation by @Xuanwo in https://github.com/apache/opendal/pull/3061
2400 | * chore(bindings/haskell): make cargo build type same with cabal by @silver-ymz in https://github.com/apache/opendal/pull/3067
2401 | * chore(bindings/haskell): add PVP-compliant version bounds by @silver-ymz in https://github.com/apache/opendal/pull/3093
2402 | * chore(bindings/java): align ErrorKind with exception code by @tisonkun in https://github.com/apache/opendal/pull/3095
2403 | * chore: Bump version to v0.40 to start release process by @Xuanwo in https://github.com/apache/opendal/pull/3101
2404 | * chore(bindings/haskell): rename library name from opendal-hs to opendal by @silver-ymz in https://github.com/apache/opendal/pull/3112
2405 |
2406 | ## [v0.39.0] - 2023-07-31
2407 |
2408 | ### Added
2409 | * feat: add a behaviour test for InvalidInput by @dqhl76 in https://github.com/apache/opendal/pull/2644
2410 | * feat(services/persy): add a basic persy service impl by @PsiACE in https://github.com/apache/opendal/pull/2648
2411 | * feat(services/vercel_artifacts): Impl `stat` by @suyanhanx in https://github.com/apache/opendal/pull/2649
2412 | * feat(test): add fuzz test for range_reader by @dqhl76 in https://github.com/apache/opendal/pull/2609
2413 | * feat(core/http_util): Remove sensitive header like Set-Cookie by @Xuanwo in https://github.com/apache/opendal/pull/2664
2414 | * feat: Add RetryInterceptor support for RetryLayer by @Xuanwo in https://github.com/apache/opendal/pull/2666
2415 | * feat: support kerberos for hdfs service by @zuston in https://github.com/apache/opendal/pull/2668
2416 | * feat: support append for hdfs by @zuston in https://github.com/apache/opendal/pull/2671
2417 | * feat(s3): Use us-east-1 while head bucket returns 403 without X-Amz-Bucket-Region by @john8628 in https://github.com/apache/opendal/pull/2677
2418 | * feat(oay): Add webdav basic read impl by @Young-Flash in https://github.com/apache/opendal/pull/2658
2419 | * feat(services/redis): enable TLS by @Stormshield-robinc in https://github.com/apache/opendal/pull/2670
2420 | * feat(services/etcd): introduce new service backend etcd by @G-XD in https://github.com/apache/opendal/pull/2672
2421 | * feat(service/obs):add multipart upload function support by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2685
2422 | * feat(services/s3): Add assume role support by @Xuanwo in https://github.com/apache/opendal/pull/2687
2423 | * feat(services/tikv): introduce new service backend tikv by @oowl in https://github.com/apache/opendal/pull/2565
2424 | * feat(service/cos): add multipart upload function support by @ArmandoZ in https://github.com/apache/opendal/pull/2697
2425 | * feat(oio): Add MultipartUploadWrite to easier the work for Writer by @Xuanwo in https://github.com/apache/opendal/pull/2699
2426 | * feat(test): add fuzz target for writer by @dqhl76 in https://github.com/apache/opendal/pull/2706
2427 | * feat: cos multipart uploads write by @parkma99 in https://github.com/apache/opendal/pull/2712
2428 | * feat(layers): support await_tree instrument by @oowl in https://github.com/apache/opendal/pull/2623
2429 | * feat(tests): Extract fuzz test of #2717 by @Xuanwo in https://github.com/apache/opendal/pull/2720
2430 | * feat: oss multipart uploads write by @parkma99 in https://github.com/apache/opendal/pull/2723
2431 | * feat: add override_content_type by @G-XD in https://github.com/apache/opendal/pull/2734
2432 | ### Changed
2433 | * refactor(services/redis): Polish features of redis by @Xuanwo in https://github.com/apache/opendal/pull/2681
2434 | * refactor(services/s3): Check header first for region detect by @Xuanwo in https://github.com/apache/opendal/pull/2691
2435 | * refactor(raw/oio): Reorganize to allow adding more features by @Xuanwo in https://github.com/apache/opendal/pull/2698
2436 | * refactor: Polish fuzz build time by @Xuanwo in https://github.com/apache/opendal/pull/2721
2437 | ### Fixed
2438 | * fix(services/cos): fix cos service comments by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2656
2439 | * fix(test): profile setting warning by @dqhl76 in https://github.com/apache/opendal/pull/2657
2440 | * fix(bindings/C): fix the memory found in valgrind. by @Ji-Xinyou in https://github.com/apache/opendal/pull/2673
2441 | * fix: owncloud test sometimes fail by @dqhl76 in https://github.com/apache/opendal/pull/2684
2442 | * fix(services/obs): remove content-length check in backend by @suyanhanx in https://github.com/apache/opendal/pull/2686
2443 | * fix: fix `HADOOP_CONF_DIR` setting in guidance document by @wcy-fdu in https://github.com/apache/opendal/pull/2713
2444 | * fix: Seek before the start of file should be invalid by @Xuanwo in https://github.com/apache/opendal/pull/2718
2445 | * fix(layer/minitrace): fix doctest by @andylokandy in https://github.com/apache/opendal/pull/2728
2446 | ### Docs
2447 | * docs: add instructions to fix wrong vote mail and uploads by @ClSlaid in https://github.com/apache/opendal/pull/2682
2448 | * doc(services/tikv): add tikv service backend to readme by @oowl in https://github.com/apache/opendal/pull/2711
2449 | * docs(bindings/java): improve safety doc for get_current_env by @tisonkun in https://github.com/apache/opendal/pull/2733
2450 | ### CI
2451 | * ci(services/webdav): Setup integration test for owncloud by @dqhl76 in https://github.com/apache/opendal/pull/2659
2452 | * ci: Fix unexpected error in owncloud by @Xuanwo in https://github.com/apache/opendal/pull/2663
2453 | * ci: upgrade hawkeye action by @tisonkun in https://github.com/apache/opendal/pull/2665
2454 | * ci: Make owncloud happy by reduce the concurrency by @Xuanwo in https://github.com/apache/opendal/pull/2667
2455 | * ci: Setup protoc in rust builder by @Xuanwo in https://github.com/apache/opendal/pull/2674
2456 | * ci: Fix Cargo.lock not updated by @Xuanwo in https://github.com/apache/opendal/pull/2680
2457 | * ci: Add services fuzz test for read/write/range_read by @dqhl76 in https://github.com/apache/opendal/pull/2710
2458 | ### Chore
2459 | * chore: Update CODEOWNERS by @Xuanwo in https://github.com/apache/opendal/pull/2676
2460 | * chore(bindings/python): upgrade pyo3 to 0.19 by @messense in https://github.com/apache/opendal/pull/2694
2461 | * chore: upgrade quick-xml to 0.29 by @messense in https://github.com/apache/opendal/pull/2696
2462 | * chore(download): update version 0.38.1 by @suyanhanx in https://github.com/apache/opendal/pull/2714
2463 | * chore(service/minitrace): update to v0.5.0 by @andylokandy in https://github.com/apache/opendal/pull/2725
2464 |
2465 |
2466 | ## [v0.38.1] - 2023-07-14
2467 |
2468 | ### Added
2469 |
2470 | - feat(binding/lua): add rename and create_dir operator function by @oowl in https://github.com/apache/opendal/pull/2564
2471 | - feat(services/azblob): support sink by @suyanhanx in https://github.com/apache/opendal/pull/2574
2472 | - feat(services/gcs): support sink by @suyanhanx in https://github.com/apache/opendal/pull/2576
2473 | - feat(services/oss): support sink by @suyanhanx in https://github.com/apache/opendal/pull/2577
2474 | - feat(services/obs): support sink by @suyanhanx in https://github.com/apache/opendal/pull/2578
2475 | - feat(services/cos): impl sink by @suyanhanx in https://github.com/apache/opendal/pull/2587
2476 | - feat(service): Support stat for Dropbox by @Zheaoli in https://github.com/apache/opendal/pull/2588
2477 | - feat(services/dropbox): impl create_dir and polish error handling by @suyanhanx in https://github.com/apache/opendal/pull/2600
2478 | - feat(services/dropbox): Implement refresh token support by @Xuanwo in https://github.com/apache/opendal/pull/2604
2479 | - feat(service/dropbox): impl batch delete by @suyanhanx in https://github.com/apache/opendal/pull/2606
2480 | - feat(CI): set Kvrocks test for service redis by @suyanhanx in https://github.com/apache/opendal/pull/2613
2481 | - feat(core): object versioning APIs by @suyanhanx in https://github.com/apache/opendal/pull/2614
2482 | - feat(oay): actually read configuration from `oay.toml` by @messense in https://github.com/apache/opendal/pull/2615
2483 | - feat(services/webdav): impl sink by @suyanhanx in https://github.com/apache/opendal/pull/2622
2484 | - feat(services/fs): impl Sink for Fs by @Ji-Xinyou in https://github.com/apache/opendal/pull/2626
2485 | - feat(core): impl `delete_with` on blocking operator by @suyanhanx in https://github.com/apache/opendal/pull/2633
2486 | - feat(bindings/C): add support for list in C binding by @Ji-Xinyou in https://github.com/apache/opendal/pull/2448
2487 | - feat(services/s3): Add detect_region support for S3Builder by @parkma99 in https://github.com/apache/opendal/pull/2634
2488 |
2489 | ### Changed
2490 |
2491 | - refactor(core): Add ErrorKind InvalidInput to indicate users input error by @dqhl76 in https://github.com/apache/opendal/pull/2637
2492 | - refactor(services/s3): Add more detect logic for detect_region by @Xuanwo in https://github.com/apache/opendal/pull/2645
2493 |
2494 | ### Fixed
2495 |
2496 | - fix(doc): fix codeblock rendering by @xxchan in https://github.com/apache/opendal/pull/2592
2497 | - fix(service/minitrace): should set local parent by @andylokandy in https://github.com/apache/opendal/pull/2620
2498 | - fix(service/minitrace): update doc by @andylokandy in https://github.com/apache/opendal/pull/2621
2499 |
2500 | ### Docs
2501 |
2502 | - doc(bindings/haskell): add module document by @silver-ymz in https://github.com/apache/opendal/pull/2566
2503 | - docs: Update license related comments by @Prashanth-Chandra in https://github.com/apache/opendal/pull/2573
2504 | - docs: add hdfs namenode High Availability related troubleshoot by @wcy-fdu in https://github.com/apache/opendal/pull/2601
2505 | - docs: polish release doc by @PsiACE in https://github.com/apache/opendal/pull/2608
2506 | - docs(blog): add Apache OpenDAL(Incubating): Access Data Freely by @PsiACE in https://github.com/apache/opendal/pull/2607
2507 | - docs(RFC): Object Versioning by @suyanhanx in https://github.com/apache/opendal/pull/2602
2508 |
2509 | ### CI
2510 |
2511 | - ci: Disable bindings/java deploy for now by @tisonkun in https://github.com/apache/opendal/pull/2560
2512 | - ci: Disable the failed stage-release job instead by @tisonkun in https://github.com/apache/opendal/pull/2561
2513 | - ci: add haddock generator for haskell binding by @silver-ymz in https://github.com/apache/opendal/pull/2569
2514 | - ci(binding/lua): add luarocks package manager support by @oowl in https://github.com/apache/opendal/pull/2558
2515 | - build(deps): bump predicates from 2.1.5 to 3.0.1 by @dependabot in https://github.com/apache/opendal/pull/2583
2516 | - build(deps): bump tower-http from 0.4.0 to 0.4.1 by @dependabot in https://github.com/apache/opendal/pull/2582
2517 | - build(deps): bump chrono from 0.4.24 to 0.4.26 by @dependabot in https://github.com/apache/opendal/pull/2581
2518 | - build(deps): bump redis from 0.22.3 to 0.23.0 by @dependabot in https://github.com/apache/opendal/pull/2580
2519 | - build(deps): bump cbindgen from 0.24.3 to 0.24.5 by @dependabot in https://github.com/apache/opendal/pull/2579
2520 | - ci: upgrade hawkeye to v3 by @tisonkun in https://github.com/apache/opendal/pull/2585
2521 | - ci(services/webdav): Setup integration test for nextcloud by @Xuanwo in https://github.com/apache/opendal/pull/2631
2522 |
2523 | ### Chore
2524 |
2525 | - chore: add haskell binding link to website by @silver-ymz in https://github.com/apache/opendal/pull/2571
2526 | - chore: fix cargo warning for resolver by @xxchan in https://github.com/apache/opendal/pull/2590
2527 | - chore: bump log to 0.4.19 by @xxchan in https://github.com/apache/opendal/pull/2591
2528 | - chore(deps): update deps to latest version by @suyanhanx in https://github.com/apache/opendal/pull/2596
2529 | - chore: Add release 0.38.0 to download by @PsiACE in https://github.com/apache/opendal/pull/2597
2530 | - chore(service/minitrace): automatically generate span name by @andylokandy in https://github.com/apache/opendal/pull/2618
2531 |
2532 | ## New Contributors
2533 |
2534 | - @Prashanth-Chandra made their first contribution in https://github.com/apache/opendal/pull/2573
2535 | - @andylokandy made their first contribution in https://github.com/apache/opendal/pull/2618
2536 | - @parkma99 made their first contribution in https://github.com/apache/opendal/pull/2634
2537 |
2538 | ## [v0.38.0] - 2023-06-27
2539 |
2540 | ### Added
2541 |
2542 | - feat(raw/http_util): Implement mixed multipart parser by @Xuanwo in https://github.com/apache/opendal/pull/2430
2543 | - feat(services/gcs): Add batch delete support by @wcy-fdu in https://github.com/apache/opendal/pull/2142
2544 | - feat(core): Add Write::sink API by @Xuanwo in https://github.com/apache/opendal/pull/2440
2545 | - feat(services/s3): Allow retry for unexpected 499 error by @Xuanwo in https://github.com/apache/opendal/pull/2453
2546 | - feat(layer): add throttle layer by @morristai in https://github.com/apache/opendal/pull/2444
2547 | - feat(bindings/haskell): init haskell binding by @silver-ymz in https://github.com/apache/opendal/pull/2463
2548 | - feat(core): add capability check by @unixzii in https://github.com/apache/opendal/pull/2461
2549 | - feat(bindings/haskell): add CONTRIBUTING.md by @silver-ymz in https://github.com/apache/opendal/pull/2466
2550 | - feat(bindings/haskell): add CI test for haskell binding by @silver-ymz in https://github.com/apache/opendal/pull/2468
2551 | - feat(binding/lua): introduce opendal lua binding by @oowl in https://github.com/apache/opendal/pull/2469
2552 | - feat(bindings/swift): add Swift binding by @unixzii in https://github.com/apache/opendal/pull/2470
2553 | - feat(bindings/haskell): support `is_exist` `create_dir` `copy` `rename` `delete` by @silver-ymz in https://github.com/apache/opendal/pull/2475
2554 | - feat(bindings/haskell): add `Monad` wrapper by @silver-ymz in https://github.com/apache/opendal/pull/2482
2555 | - feat(bindings/dotnet): basic structure by @tisonkun in https://github.com/apache/opendal/pull/2485
2556 | - feat(services/dropbox): Support create/read/delete for Dropbox by @Zheaoli in https://github.com/apache/opendal/pull/2264
2557 | - feat(bindings/java): support load system lib by @tisonkun in https://github.com/apache/opendal/pull/2502
2558 | - feat(blocking operator): add remove_all api by @infdahai in https://github.com/apache/opendal/pull/2449
2559 | - feat(core): adopt WebHDFS LISTSTATUS_BATCH for better performance by @morristai in https://github.com/apache/opendal/pull/2499
2560 | - feat(bindings/haskell): support stat by @silver-ymz in https://github.com/apache/opendal/pull/2504
2561 | - feat(adapters-kv): add rename and copy support to kv adapters by @oowl in https://github.com/apache/opendal/pull/2513
2562 | - feat: Implement sink for services s3 by @Xuanwo in https://github.com/apache/opendal/pull/2508
2563 | - feat(adapters-kv): add rename and copy support to non typed kv adapters by @oowl in https://github.com/apache/opendal/pull/2515
2564 | - feat: Implement test harness via libtest-mimic instead by @Xuanwo in https://github.com/apache/opendal/pull/2517
2565 | - feat(service/sled): introduce tree support by @oowl in https://github.com/apache/opendal/pull/2516
2566 | - feat(bindings/haskell): support list and scan by @silver-ymz in https://github.com/apache/opendal/pull/2527
2567 | - feat(services/redb): support redb service by @oowl in https://github.com/apache/opendal/pull/2526
2568 | - feat(core): implement service for Mini Moka by @morristai in https://github.com/apache/opendal/pull/2537
2569 | - feat(core): add Mini Moka GitHub Action workflow job by @morristai in https://github.com/apache/opendal/pull/2539
2570 | - feat(services): add cacache backend by @PsiACE in https://github.com/apache/opendal/pull/2548
2571 | - feat: Implement Writer::copy so user can copy from AsyncRead by @Xuanwo in https://github.com/apache/opendal/pull/2552
2572 |
2573 | ### Changed
2574 |
2575 | - refactor(bindings/C): refactor c bindings to call all APIs using pointer by @Ji-Xinyou in https://github.com/apache/opendal/pull/2489
2576 |
2577 | ### Fixed
2578 |
2579 | - fix(services/azblob): Fix azblob batch max operations by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2434
2580 | - fix(services/sftp): change default root config to remote server setting by @silver-ymz in https://github.com/apache/opendal/pull/2431
2581 | - fix: Enable `std` feature for futures to allow `futures::AsyncRead` by @Xuanwo in https://github.com/apache/opendal/pull/2450
2582 | - fix(services/gcs): GCS should support create dir by @Xuanwo in https://github.com/apache/opendal/pull/2467
2583 | - fix(bindings/C): use copy_from_slice instead of from_static in opendal_bytes by @Ji-Xinyou in https://github.com/apache/opendal/pull/2473
2584 | - fix(bindings/swift): reorg the package to correct its name by @unixzii in https://github.com/apache/opendal/pull/2479
2585 | - fix: Fix the build for zig binding by @Xuanwo in https://github.com/apache/opendal/pull/2493
2586 | - fix(service/webhdfs): fix webhdfs config builder for disable_list_batch by @morristai in https://github.com/apache/opendal/pull/2509
2587 | - fix(core/types): add missing `vercel artifacts` for `FromStr` by @cijiugechu in https://github.com/apache/opendal/pull/2519
2588 | - fix(types/operator): fix operation limit error default size by @oowl in https://github.com/apache/opendal/pull/2536
2589 |
2590 | ### Docs
2591 |
2592 | - docs: Replace `create` with `new` by @NiwakaDev in https://github.com/apache/opendal/pull/2427
2593 | - docs(services/redis): fix redis via config example by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2443
2594 | - docs: add rust usage example by @Young-Flash in https://github.com/apache/opendal/pull/2447
2595 | - docs: Polish rust examples by @Xuanwo in https://github.com/apache/opendal/pull/2456
2596 | - docs: polish docs and fix typos by @suyanhanx in https://github.com/apache/opendal/pull/2458
2597 | - docs: fix a typo on the landing page by @unixzii in https://github.com/apache/opendal/pull/2460
2598 | - docs(examples/rust): Add 01-init-operator by @Xuanwo in https://github.com/apache/opendal/pull/2464
2599 | - docs: update readme.md to match the output by @rrain7 in https://github.com/apache/opendal/pull/2486
2600 | - docs: Update components for Libraries and Services by @Xuanwo in https://github.com/apache/opendal/pull/2487
2601 | - docs: Add OctoBase into our users list by @Xuanwo in https://github.com/apache/opendal/pull/2506
2602 | - docs: Fix scan not checked for sled services by @Xuanwo in https://github.com/apache/opendal/pull/2507
2603 | - doc(binding/lua): Improve readme doc for contribute and usage by @oowl in https://github.com/apache/opendal/pull/2511
2604 | - doc(services/redb): add doc for redb service backend by @oowl in https://github.com/apache/opendal/pull/2538
2605 | - doc(bindings/swift): add CONTRIBUTING.md by @unixzii in https://github.com/apache/opendal/pull/2540
2606 | - docs: Add new rust example 02-async-io by @Xuanwo in https://github.com/apache/opendal/pull/2541
2607 | - docs: Fix link for CONTRIBUTING.md by @HuSharp in https://github.com/apache/opendal/pull/2544
2608 | - doc: polish release doc by @suyanhanx in https://github.com/apache/opendal/pull/2531
2609 | - docs: Move verify to upper folder by @Xuanwo in https://github.com/apache/opendal/pull/2546
2610 | - doc(binding/lua): add ldoc generactor for lua binding by @oowl in https://github.com/apache/opendal/pull/2549
2611 | - docs: Add new architectural image for OpenDAL by @Xuanwo in https://github.com/apache/opendal/pull/2553
2612 | - docs: Polish README for core and bindings by @Xuanwo in https://github.com/apache/opendal/pull/2554
2613 |
2614 | ### CI
2615 |
2616 | - ci: Fix append test should use copy_buf to avoid call times by @Xuanwo in https://github.com/apache/opendal/pull/2436
2617 | - build(bindings/ruby): fix compile rb-sys on Apple M1 by @tisonkun in https://github.com/apache/opendal/pull/2451
2618 | - ci: Use summary for zig test to fix build by @Xuanwo in https://github.com/apache/opendal/pull/2480
2619 | - ci(workflow): add lua binding test workflow by @oowl in https://github.com/apache/opendal/pull/2478
2620 | - build(deps): bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/apache/opendal/pull/2481
2621 | - ci(bindings/swift): add CI for Swift binding by @unixzii in https://github.com/apache/opendal/pull/2492
2622 | - ci: Try to make webhdfs tests more stable by @Xuanwo in https://github.com/apache/opendal/pull/2503
2623 | - ci(bindings/java): auto release snapshot by @tisonkun in https://github.com/apache/opendal/pull/2521
2624 | - ci: Disable the stage snapshot CI by @Xuanwo in https://github.com/apache/opendal/pull/2528
2625 | - ci: fix opendal-java snapshot releases by @tisonkun in https://github.com/apache/opendal/pull/2532
2626 | - ci: Fix typo in binding java CI by @Xuanwo in https://github.com/apache/opendal/pull/2534
2627 | - ci(bindings/swift): optimize time consumption of CI pipeline by @unixzii in https://github.com/apache/opendal/pull/2545
2628 | - ci: Fix PR label not updated while edited by @Xuanwo in https://github.com/apache/opendal/pull/2547
2629 |
2630 | ### Chore
2631 |
2632 | - chore: Add redis bench support by @Xuanwo in https://github.com/apache/opendal/pull/2438
2633 | - chore(bindings/nodejs): update index.d.ts by @suyanhanx in https://github.com/apache/opendal/pull/2459
2634 | - chore: Add release 0.37.0 to download by @suyanhanx in https://github.com/apache/opendal/pull/2472
2635 | - chore: Fix Cargo.lock not updated by @Xuanwo in https://github.com/apache/opendal/pull/2490
2636 | - chore: Polish some code details by @Xuanwo in https://github.com/apache/opendal/pull/2505
2637 | - chore(bindings/nodejs): provide more precise type for scheme by @cijiugechu in https://github.com/apache/opendal/pull/2520
2638 |
2639 | ## [v0.37.0] - 2023-06-06
2640 |
2641 | ### Added
2642 |
2643 | - feat(services/webdav): support redirection when get 302/307 response during read operation by @Yansongsongsong in https://github.com/apache/opendal/pull/2256
2644 | - feat: Add Zig Bindings Module by @kassane in https://github.com/apache/opendal/pull/2374
2645 | - feat: Implement Timeout Layer by @Xuanwo in https://github.com/apache/opendal/pull/2395
2646 | - feat(bindings/c): add opendal_operator_blocking_delete method by @jiaoew1991 in https://github.com/apache/opendal/pull/2416
2647 | - feat(services/obs): add append support by @infdahai in https://github.com/apache/opendal/pull/2422
2648 |
2649 | ### Changed
2650 |
2651 | - refactor(bindings/zig): enable tests and more by @tisonkun in https://github.com/apache/opendal/pull/2375
2652 | - refactor(bindings/zig): add errors handler and module test by @kassane in https://github.com/apache/opendal/pull/2381
2653 | - refactor(http_util): Adopt reqwest's redirect support by @Xuanwo in https://github.com/apache/opendal/pull/2390
2654 |
2655 | ### Fixed
2656 |
2657 | - fix(bindings/zig): reflect C interface changes by @tisonkun in https://github.com/apache/opendal/pull/2378
2658 | - fix(services/azblob): Fix batch delete doesn't work on azure by @Xuanwo in https://github.com/apache/opendal/pull/2382
2659 | - fix(services/oss): Fix oss batch max operations by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2414
2660 | - fix(core): Don't wake up operator futures while not ready by @Xuanwo in https://github.com/apache/opendal/pull/2415
2661 | - fix(services/s3): Fix s3 batch max operations by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2418
2662 |
2663 | ### Docs
2664 |
2665 | - docs: service doc for s3 by @suyanhanx in https://github.com/apache/opendal/pull/2376
2666 | - docs(bindings/C): The documentation for OpenDAL C binding by @Ji-Xinyou in https://github.com/apache/opendal/pull/2373
2667 | - docs: add link for c binding by @suyanhanx in https://github.com/apache/opendal/pull/2380
2668 | - docs: docs for kv services by @suyanhanx in https://github.com/apache/opendal/pull/2396
2669 | - docs: docs for fs related services by @suyanhanx in https://github.com/apache/opendal/pull/2397
2670 | - docs(bindings/java): do not release snapshot versions anymore by @tisonkun in https://github.com/apache/opendal/pull/2398
2671 | - docs: doc for ipmfs by @suyanhanx in https://github.com/apache/opendal/pull/2408
2672 | - docs: add service doc for oss by @A-Stupid-Sun in https://github.com/apache/opendal/pull/2409
2673 | - docs: improvement of Python binding by @ideal in https://github.com/apache/opendal/pull/2411
2674 | - docs: doc for download by @suyanhanx in https://github.com/apache/opendal/pull/2424
2675 | - docs: Add release guide by @Xuanwo in https://github.com/apache/opendal/pull/2425
2676 |
2677 | ### CI
2678 |
2679 | - ci: Enable semantic PRs by @Xuanwo in https://github.com/apache/opendal/pull/2370
2680 | - ci: improve licenserc settings by @tisonkun in https://github.com/apache/opendal/pull/2377
2681 | - build(deps): bump reqwest from 0.11.15 to 0.11.18 by @dependabot in https://github.com/apache/opendal/pull/2389
2682 | - build(deps): bump pyo3 from 0.18.2 to 0.18.3 by @dependabot in https://github.com/apache/opendal/pull/2388
2683 | - ci: Enable nextest for all behavior tests by @Xuanwo in https://github.com/apache/opendal/pull/2400
2684 | - ci: reflect ascii file rewrite by @tisonkun in https://github.com/apache/opendal/pull/2419
2685 | - ci: Remove website from git archive by @Xuanwo in https://github.com/apache/opendal/pull/2420
2686 | - ci: Add integration tests for Cloudflare R2 by @Xuanwo in https://github.com/apache/opendal/pull/2423
2687 |
2688 | ### Chore
2689 |
2690 | - chore(bindings/python): upgrade maturin to 1.0 by @messense in https://github.com/apache/opendal/pull/2369
2691 | - chore: Fix license headers for release/labler by @Xuanwo in https://github.com/apache/opendal/pull/2371
2692 | - chore(bindings/C): add one simple read/write example into readme and code by @Ji-Xinyou in https://github.com/apache/opendal/pull/2421
2693 |
2694 | ## [v0.36.0] - 2023-05-30
2695 |
2696 | ### Added
2697 |
2698 | - feat(service/fs): add append support for fs (#2296)
2699 | - feat(services/sftp): add append support for sftp (#2297)
2700 | - RFC-2299: Chain based Operator API (#2299)
2701 | - feat(services/azblob): add append support (#2302)
2702 | - feat(bindings/nodejs): add append support (#2322)
2703 | - feat(bindings/C): opendal_operator_ptr construction using kvs (#2329)
2704 | - feat(services/cos): append support (#2332)
2705 | - feat(bindings/java): implement Operator#delete (#2345)
2706 | - feat(bindings/java): support append (#2350)
2707 | - feat(bindings/java): save one jni call in the hot path (#2353)
2708 | - feat: server side encryption support for azblob (#2347)
2709 |
2710 | ### Changed
2711 |
2712 | - refactor(core): Implement RFC-2299 for stat_with (#2303)
2713 | - refactor(core): Implement RFC-2299 for BlockingOperator::write_with (#2305)
2714 | - refactor(core): Implement RFC-2299 for appender_with (#2307)
2715 | - refactor(core): Implement RFC-2299 for read_with (#2308)
2716 | - refactor(core): Implement RFC-2299 for read_with (#2308)
2717 | - refactor(core): Implement RFC-2299 for append_with (#2312)
2718 | - refactor(core): Implement RFC-2299 for write_with (#2315)
2719 | - refactor(core): Implement RFC-2299 for reader_with (#2316)
2720 | - refactor(core): Implement RFC-2299 for writer_with (#2317)
2721 | - refactor(core): Implement RFC-2299 for presign_read_with (#2314)
2722 | - refactor(core): Implement RFC-2299 for presign_write_with (#2320)
2723 | - refactor(core): Implement RFC-2299 for list_with (#2323)
2724 | - refactor: Move `ops` to `raw::ops` (#2325)
2725 | - refactor(bindings/C): align bdd test with the feature tests (#2340)
2726 | - refactor(bindings/java): narrow unsafe boundary (#2351)
2727 |
2728 | ### Fixed
2729 |
2730 | - fix(services/supabase): correctly set retryable (#2295)
2731 | - fix(core): appender complete check (#2298)
2732 |
2733 | ### Docs
2734 |
2735 | - docs: add service doc for azdfs (#2310)
2736 | - docs(bidnings/java): how to deploy snapshots (#2311)
2737 | - docs(bidnings/java): how to deploy snapshots (#2311)
2738 | - docs: Fixed links of languages to open in same tab (#2327)
2739 | - docs: Adopt docusaurus pathname protocol (#2330)
2740 | - docs(bindings/nodejs): update lib desc (#2331)
2741 | - docs(bindings/java): update the README file (#2338)
2742 | - docs: add service doc for fs (#2337)
2743 | - docs: add service doc for cos (#2341)
2744 | - docs: add service doc for dashmap (#2342)
2745 | - docs(bindings/java): for BlockingOperator (#2344)
2746 |
2747 | ### CI
2748 |
2749 | - build(bindings/java): prepare for snapshot release (#2301)
2750 | - build(bindings/java): support multiple platform java bindings (#2324)
2751 | - ci(binding/nodejs): Use docker to build nodejs binding (#2328)
2752 | - build(bindings/java): prepare for automatically multiple platform deploy (#2335)
2753 | - ci: add bindings java docs and integrate with website (#2346)
2754 | - ci: avoid copy gitignore to site folder (#2348)
2755 | - ci(bindings/c): Add diff check (#2359)
2756 | - ci: Cache librocksdb to speed up CI (#2360)
2757 | - ci: Don't load rocksdb for all workflows (#2362)
2758 | - ci: Fix Node.js 12 actions deprecated warning (#2363)
2759 | - ci: Speed up python docs build (#2364)
2760 | - ci: Adopt setup-node's cache logic instead (#2365)
2761 |
2762 | ### Chore
2763 |
2764 | - chore(test): Avoid test names becoming prefixes of other tests (#2333)
2765 | - chore(bindings/java): improve OpenDALException tests and docs (#2343)
2766 | - chore(bindings/java): post release 0.1.0 (#2352)
2767 | - chore(docs): split docs build into small jobs (#2356)'
2768 | - chore: protect branch gh-pages (#2358)
2769 |
2770 | ## [v0.35.0] - 2023-05-23
2771 |
2772 | ### Added
2773 |
2774 | - feat(services/onedrive): Implement `list`, `create_dir`, `stat` and upload
2775 | ing large files (#2231)
2776 | - feat(bindings/C): Initially support stat in C binding (#2249)
2777 | - feat(bindings/python): Enable `abi3` to avoid building on different python
2778 | version (#2255)
2779 | - feat(bindings/C): support BDD tests using GTest (#2254)
2780 | - feat(services/sftp): setup integration tests (#2192)
2781 | - feat(core): Add trait and public API for `append` (#2260)
2782 | - feat(services/sftp): support copy and rename for sftp (#2263)
2783 | - feat(services/sftp): support copy and read_seek (#2267)
2784 | - feat: Add COS service support (#2269)
2785 | - feat(services/cos): Add support for loading from env (#2271)
2786 | - feat(core): add presign support for obs (#2253)
2787 | - feat(services/sftp): setup integration tests (#2192)
2788 | - feat(core): add presign support for obs (#2253)
2789 | - feat(core): public API of append (#2284)
2790 | - test(core): test for append (#2286)
2791 | - feat(services/oss): add append support (#2279)
2792 | - feat(bindings/java): implement async ops to pass AsyncStepsTest (#2291)
2793 |
2794 | ### Changed
2795 |
2796 | - services/gdrive: port code to GdriveCore & add path_2_id cache (#2203)
2797 | - refactor: Minimize futures dependencies (#2248)
2798 | - refactor: Add Operator::via_map to support init without generic type parameters (#2280)
2799 | - refactor(binding/java): build, async and docs (#2276)
2800 |
2801 | ### Fixed
2802 |
2803 | - fix: Fix bugs that failed wasabi's integration tests (#2273)
2804 |
2805 | ### Removed
2806 |
2807 | - feat(core): remove `scan` from raw API (#2262)
2808 |
2809 | ### Docs
2810 |
2811 | - chore(s3): update builder region doc (#2247)
2812 | - docs: Add services in readme (#2251)
2813 | - docs: Unify capabilities list for kv services (#2257)
2814 | - docs(nodejs): fix some example code errors (#2277)
2815 | - docs(bindings/C): C binding contributing documentation (#2266)
2816 | - docs: Add new docs that available for all languages (#2285)
2817 | - docs: Remove unlicensed svg (#2289)
2818 | - fix(website): double active route (#2290)
2819 |
2820 | ### CI
2821 |
2822 | - ci: Enable test for cos (#2270)
2823 | - ci: Add integration tests for supabase (#2272)
2824 | - ci: replace set-output for docs (#2275)
2825 | - ci: Fix unit tests (#2282)
2826 | - ci: Cleanup NOTICE file (#2281)
2827 | - ci: Fix release not contains incubating (#2292)
2828 |
2829 | ### Chore
2830 |
2831 | - chore(core): remove unnecessary path prefix (#2265)
2832 |
2833 | ## [v0.34.0] - 2023-05-09
2834 |
2835 | ### Added
2836 |
2837 | - feat(writer): configurable buffer size of unsized write (#2143)
2838 | - feat(oay): Add basic s3 list_objects_v2 with start_after support (#2219)
2839 | - feat: Add typed kv adapter and migrate moka to it (#2222)
2840 | - feat: migrate service dashmap (#2225)
2841 | - feat(services/memory): migrate service memory (#2229)
2842 | - feat: Add assert for public types to ensure Send + Sync (#2237)
2843 | - feat(services/gcs): Add abort support for writer (#2242)
2844 |
2845 | ### Changed
2846 |
2847 | - refactor: Replace futures::ready with std::task::ready (#2221)
2848 | - refactor: Use list without delimiter to replace scan (#2243)
2849 |
2850 | ### Fixed
2851 |
2852 | - fix(services/gcs): checked_rem_euclid could return Some(0) (#2220)
2853 | - fix(tests): Etag must be wrapped by `"` (#2226)
2854 | - fix(services/s3): Return error if credential load fail instead skip (#2233)
2855 | - fix(services/s3): Return error if region not set for AWS S3 (#2234)
2856 | - fix(services/gcs): rsa 0.9 breaks gcs presign (#2236)
2857 |
2858 | ### Chore
2859 |
2860 | - chore: change log subscriber from env_logger to tracing-subscriber (#2238)
2861 | - chore: Fix build of wasabi (#2241)
2862 |
2863 | ## [v0.33.3] - 2023-05-06
2864 |
2865 | ### Added
2866 |
2867 | - feat(services/onedrive): Add read and write support for OneDrive (#2129)
2868 | - test(core): test for `read_with_override_cache_control` (#2155)
2869 | - feat(http_util): Implement multipart/form-data support (#2157)
2870 | - feat(http_util): Implement multipart/mixed support (#2161)
2871 | - RFC-2133: Introduce Append API (#2133)
2872 | - feat(services/sftp): Add read/write/stat support for sftp (#2186)
2873 | - feat(services/gdrive): Add read & write & delete support for GoogleDrive (#2184)
2874 | - feat(services/vercel): Add vercel remote cache support (#2193)
2875 | - feat(tests): Enable supabase integration tests (#2190)
2876 | - feat(core): merge scan and list (#2214)
2877 |
2878 | ### Changed
2879 |
2880 | - refactor(java): refactor java code for java binding (#2145)
2881 | - refactor(layers/logging): parsing level str (#2160)
2882 | - refactor: Move not initiated logic to utils instead (#2196)
2883 | - refactor(services/memcached): Rewrite memecached connection entirely (#2204)
2884 |
2885 | ### Fixed
2886 |
2887 | - fix(service/s3): set retryable on batch (#2171)
2888 | - fix(services/supabase): Supabase ci fix (#2200)
2889 |
2890 | ### Docs
2891 |
2892 | - docs(website): try to add opendal logo (#2159)
2893 | - doc: update vision to be more clear (#2164)
2894 | - docs: Refactor `Contributing` and add `Developing` (#2169)
2895 | - docs: Merge DEVELOPING into CONTRIBUTING (#2172)
2896 | - docs: fix some grammar errors in the doc of Operator (#2173)
2897 | - docs(nodejs): Add CONTRIBUTING docs (#2174)
2898 | - docs: Add CONTRIBUTING for python (#2188)
2899 |
2900 | ### CI
2901 |
2902 | - ci: Use microsoft rust devcontainer instead (#2165)
2903 | - ci(devcontainer): Install development deps (#2167)
2904 | - chore: set workspace default members (#2168)
2905 | - ci: Setup vercel artifacts integration tests (#2197)
2906 | - ci: Remove not used odev tools (#2202)
2907 | - ci: Add tools to generate NOTICE and all deps licenses (#2205)
2908 | - ci: use Temurin JDK 11 to build the bindings-java (#2213)
2909 |
2910 | ### Chore
2911 |
2912 | - chore(deps): bump clap from 4.1.11 to 4.2.5 (#2183)
2913 | - chore(deps): bump futures from 0.3.27 to 0.3.28 (#2181)
2914 | - chore(deps): bump assert_cmd from 2.0.10 to 2.0.11 (#2180)
2915 | - chore: Refactor behavior test (#2189)
2916 | - chore: update readme for more information that is more friendly to newcomers (#2217)
2917 |
2918 | ## [v0.33.2] - 2023-04-27
2919 |
2920 | ### Added
2921 |
2922 | - feat(core): add test for `stat_with_if_none_match` (#2122)
2923 | - feat(services/gcs): Add start-after support for list (#2107)
2924 | - feat(services/azblob): Add supporting presign (#2120)
2925 | - feat(services/gcs): Add supporting presign support (#2126)
2926 | - feat(java): connect rust async/await with java future (#2112)
2927 | - docs: add hdfs classpath related troubleshoot (#2130)
2928 | - fix(clippy): suppress dead_code check (#2135)
2929 | - feat(core): Add `cache-control` to Metadata (#2136)
2930 | - fix(services/gcs): Remove HOST header to avoid gcs RESET connection (#2139)
2931 | - test(core): test for `write_with_cache_control` (#2131)
2932 | - test(core): test for `write_with_content_type` (#2140)
2933 | - test(core): test for `read_with_if_none_match` (#2141)
2934 | - feat(services/supabase): Add read/write/stat support for supabase (#2119)
2935 |
2936 | ### Docs
2937 |
2938 | - docs: add hdfs classpath related troubleshoot (#2130)
2939 |
2940 | ### CI
2941 |
2942 | - ci: Mark job as skipped if owner is not apache (#2128)
2943 | - ci: Enable native-tls to test gcs presign for workaround (#2138)
2944 |
2945 | ## [v0.33.1] - 2023-04-25
2946 |
2947 | ### Added
2948 |
2949 | - feat: Add behavior test for read_with_if_match & stat_with_if_match (#2088)
2950 | - feat(tests): Add fuzz test for writer without content length (#2100)
2951 | - feat: add if_none_match support for obs (#2103)
2952 | - feat(services/oss): Add server side encryption support for oss (#2092)
2953 | - feat(core): update errorKind `PreconditionFailed` to `ConditionNotMatch` (#2104)
2954 | - feat(services/s3): Add `start-after` support for list (#2096)
2955 | - feat: gcs support cache control (#2116)
2956 |
2957 | ### Fixed
2958 |
2959 | - fix(services/gcs): set `content length=0` for gcs initiate_resumable_upload (#2110)
2960 | - fix(bindings/nodejs): Fix index.d.ts not updated (#2117)
2961 |
2962 | ### Docs
2963 |
2964 | - chore: improve LoggingLayer docs and pub use log::Level (#2089)
2965 | - docs(refactor): Add more detailed description of operator, accessor, and builder (#2094)
2966 |
2967 | ### CI
2968 |
2969 | - chore(bindings/nodejs): update `package.json` repository info (#2078)
2970 | - ci: Bring hdfs test back (#2114)
2971 |
2972 | ## [v0.33.0] - 2023-04-23
2973 |
2974 | ### Added
2975 |
2976 | - feat: Add OpenTelemetry Trace Layer (#2001)
2977 | - feat: add if_none_match support for azblob (#2035)
2978 | - feat: add if_none_match/if_match for gcs (#2039)
2979 | - feat: Add size check for sized writer (#2038)
2980 | - feat(services/azblob): Add if-match support (#2037)
2981 | - feat(core): add copy&rename to error_context layer (#2040)
2982 | - feat: add if-match support for OSS (#2034)
2983 | - feat: Bootstrap new (old) project oay (#2041)
2984 | - feat(services/OSS): Add override_content_disposition support (#2043)
2985 | - feat: add IF_MATCH for http (#2044)
2986 | - feat: add IF_MATCH for http HEAD request (#2047)
2987 | - feat: add cache control header for azblob and obs (#2049)
2988 | - feat: Add capability for operation's variant and args (#2057)
2989 | - feat(azblob): Add override_content_disposition support (#2065)
2990 | - feat(core): test for read_with_override_content_composition (#2067)
2991 | - feat(core): Add `start-after` support for list (#2071)
2992 |
2993 | ### Changed
2994 |
2995 | - refactor: Polish Writer API by merging append and write together (#2036)
2996 | - refactor(raw/http_util): Add url in error context (#2066)
2997 | - refactor: Allow reusing the same operator to speed up tests (#2068)
2998 |
2999 | ### Fixed
3000 |
3001 | - fix(bindings/ruby): use rb_sys_env to help find ruby for building (#2051)
3002 | - fix: MadsimLayer should be able to built without cfg (#2059)
3003 | - fix(services/s3): Ignore prefix if it's empty (#2064)
3004 |
3005 | ### Docs
3006 |
3007 | - docs(bindings/python): ipynb examples for users (#2061)
3008 |
3009 | ### CI
3010 |
3011 | - ci(bindings/nodejs): publish support `--provenance` (#2046)
3012 | - ci: upgrade typos to 1.14.8 (#2055)
3013 | - chore(bindings/C): ignore the formatting of auto-generated opendal.h (#2056)
3014 |
3015 | ## [v0.32.0] - 2023-04-18
3016 |
3017 | ### Added
3018 |
3019 | - feat: Add wasabi service implementation (#2004)
3020 | - feat: improve the readability of oli command line error output (#2016)
3021 | - feat: add If-Match Support for OpRead, OpWrite, OpStat (#2017)
3022 | - feat: add behavioral test for Write::abort (#2018)
3023 | - feat: add if-match support for obs (#2023)
3024 | - feat: Add missing functions for trace layers (#2025)
3025 | - feat(layer): add madsim layer (#2006)
3026 | - feat(gcs): add support for gcs append (#1801)
3027 |
3028 | ### Changed
3029 |
3030 | - refactor: Rename `Create` to `CreateDir` for its behavior changed (#2019)
3031 |
3032 | ### Fixed
3033 |
3034 | - fix: Cargo lock not updated (#2027)
3035 | - fix(services/s3): Ignore empty query to make it more compatible (#2028)
3036 | - fix(services/oss): Fix env not loaded for oss signer (#2029)
3037 |
3038 | ### Docs
3039 |
3040 | - docs: fix some typos (#2022)
3041 | - docs: add dev dependency section (#2021)
3042 |
3043 | ## [v0.31.1] - 2023-04-17
3044 |
3045 | ### Added
3046 |
3047 | - feat(services/azdfs): support rename (#1929)
3048 | - test: Increate copy/move nested path test depth (#1932)
3049 | - feat(layers): add a basic minitrace layer (#1931)
3050 | - feat: add Writer::abort method (#1937)
3051 | - feat(services/gcs): Allow setting PredefinedAcl (#1989)
3052 | - feat(services/oss): add oss cache-control header support (#1986)
3053 | - feat: Add PreconditionFailed Error so users can handle them (#1993)
3054 | - feat: add http if_none_match support (#1995)
3055 | - feat: add oss if-none-match support (#1997)
3056 | - feat(services/gcs): Allow setting default storage_class (#1996)
3057 | - feat(binding/C): add clang-format for c binding (#2003)
3058 |
3059 | ### Changed
3060 |
3061 | - refactor: Polish the behavior of scan (#1926)
3062 | - refactor: Polish the implementation of webhdfs (#1935)
3063 |
3064 | ### Fixed
3065 |
3066 | - fix: sled should not be enabled by default (#1923)
3067 | - fix: kv adapter's writer implementation fixed to honour empty writes (#193
3068 |
3069 | 4.
3070 |
3071 | - fix(services/azblob): fix copy missing content-length (#2000)
3072 |
3073 | ### Docs
3074 |
3075 | - docs: Adding docs link to python binding (#1921)
3076 | - docs(bindings/python): fix wrong doc link (#1928)
3077 | - docs: Add contributing for OpenDAL (#1984)
3078 | - docs: Add explanation in contributing (#1985)
3079 | - docs: Feel relax in community and don't hurry (#1987)
3080 | - docs: update contributing (#1998)
3081 | - docs(services/memory): Fix wrong explanation (#2002)
3082 | - docs: Add OpenDAL VISION (#2007)
3083 | - docs: update VISION and behavior tests doc (#2009)
3084 |
3085 | ### CI
3086 |
3087 | - ci(bindings/nodejs): Access should be set to public before publish (#1919)
3088 | - ci: Re-enable webhdfs test (#1925)
3089 | - chore: add .editorconfig (#1988)
3090 | - ci: Fix format after adding editorconfig (#1990)
3091 |
3092 | ## [v0.31.0] - 2023-04-12
3093 |
3094 | ### Added
3095 |
3096 | - feat(bindings/java): add cucumber test (#1809)
3097 | - feat(bindings/java): setup Java CI (#1823)
3098 | - feat: add if_none_match support (#1832)
3099 | - feat: Retry when some of batch operations are failing (#1840)
3100 | - feat: add writer support for aliyun oss (#1842)
3101 | - feat(core): Add Copy Support (#1841)
3102 | - feat(bindings/c): fix c bindings makefile (#1849)
3103 | - feat(core): add behavior tests for copy & blocking_copy (#1852)
3104 | - feat(s3): allow users to specify storage_class (#1854)
3105 | - feat(s3): Support copy (#1856)
3106 | - Add check for s3 bucket name (#1857)
3107 | - feat(core): Support rename (#1862)
3108 | - feat(bindings/nodejs): add `copy` and `rename` (#1866)
3109 | - feat(azblob): Support copy (#1868)
3110 | - feat(gcs): copy support for GCS (#1869)
3111 | - feat(bindings/c): framework of add basic io and init logics (#1861)
3112 | - feat(webdav): support copy (#1870)
3113 | - feat(services/oss): Add Copy Support (#1874)
3114 | - feat(services/obs): Add Copy Support (#1876)
3115 | - feat(services/webdav): Support Rename (#1878)
3116 | - binding/c: parse opendal to use typed BlockingOperator (#1881)
3117 | - binding/c: clean up comments and type assertion for BlockingOperator (#1883)
3118 | - binding(python): Support python binding benchmark for opendal (#1882)
3119 | - feat(bindings/c): add support for free heap-allocated operator (#1890)
3120 | - feat(binding/c): add is_exist to operator (#1892)
3121 | - feat(bindings/java): add Stat support (#1894)
3122 | - feat(services/gcs): Add customed token loader support (#1908)
3123 | - feat(services/oss): remove unused builder prop allow_anonymous (#1913)
3124 | - feat: Add feature flag for all services (#1915)
3125 |
3126 | ### Changed
3127 |
3128 | - refactor(core): Simplify the usage of BatchOperation and BatchResults (#1843)
3129 | - refactor: Use reqwest blocking client instead of ureq (#1853)
3130 | - refactor: Bump MSRV to 1.64 (#1864)
3131 | - refactor: Remove not used blocking http client (#1895)
3132 | - refactor: Change presign to async for future refactor (#1900)
3133 | - refactor(services/gcs): Migrate to async reqsign (#1906)
3134 | - refactor(services/azdfs): Migrate to async reqsign (#1903)
3135 | - refactor(services/azblob): Adopt new reqsign (#1902)
3136 | - refactor(services/s3): Migrate to async reqsign (#1909)
3137 | - refactor(services/oss): Migrate to async reqsign (#1911)
3138 | - refactor: Use chrono instead of time to work well with ecosystem (#1912)
3139 | - refactor(service/obs): Migrate obs to async reqsign (#1914)
3140 |
3141 | ### Fixed
3142 |
3143 | - fix: podling website check (#1838)
3144 | - fix(website): copyright update (#1839)
3145 | - fix(core): Add checks before doing copy (#1845)
3146 | - fix(core): S3 Copy should set SSE headers (#1860)
3147 | - fix: Fix presign related unit tests (#1910)
3148 |
3149 | ### Docs
3150 |
3151 | - docs(bindings/nodejs): fix build failed (#1819)
3152 | - docs: fix several typos in the documentation (#1846)
3153 | - doc(bindings/nodejs): update presign example in doc (#1901)
3154 |
3155 | ### CI
3156 |
3157 | - ci: Fix build for nodejs binding on macos (#1813)
3158 | - binding/c: build: add phony to makefile, and some improve (#1850)
3159 | - ci: upgrade hawkeye action (#1834)
3160 |
3161 | ### Chore
3162 |
3163 | - chore(bindings/nodejs): add deno benchmark (#1814)
3164 | - chore: Add CODEOWNERS (#1817)
3165 | - chore(deps): bump opentelemetry-jaeger from 0.16.0 to 0.18.0 (#1829)
3166 | - chore(deps): bump opentelemetry from 0.17.0 to 0.19.0 (#1830)
3167 | - chore(deps): bump tokio from 1.26.0 to 1.27.0 (#1828)
3168 | - chore(deps): bump napi-derive from 2.12.1 to 2.12.2 (#1827)
3169 | - chore(deps): bump async-trait from 0.1.67 to 0.1.68 (#1826)
3170 | - chore: Cleanup code for oss writer (#1847)
3171 | - chore: Make clippy happy (#1865)
3172 | - binding(python): Format python code in binding (#1885)
3173 |
3174 | ## [v0.30.5] - 2023-03-31
3175 |
3176 | ### Added
3177 |
3178 | - feat(oli): implement `oli rm` (#1774)
3179 | - feat(bindings/nodejs): Support presign (#1772)
3180 | - feat(oli): implement `oli stat` (#1778)
3181 | - feat(bindings/object_store): Add support for list and list_with_delimiter (#1784)
3182 | - feat(oli): implement `oli cp -r` (#1787)
3183 | - feat(bindings/nodejs): Make PresignedRequest serializable (#1797)
3184 | - feat(binding/c): add build.rs and cbindgen as dep to gen header (#1793)
3185 | - feat(bindings/nodejs): Add more APIs and examples (#1799)
3186 | - feat: reader_with and writer_with (#1803)
3187 | - feat: add override_cache_control (#1804)
3188 | - feat: add cache_control to OpWrite (#1806)
3189 |
3190 | ### Changed
3191 |
3192 | - refactor(oli): switch to `Operator::scan` and `Operator::remove_all` (#1779)
3193 | - refactor(bindings/nodejs): Polish benchmark to make it more readable (#1810)
3194 |
3195 | ### Fixed
3196 |
3197 | - fix(oli): set the root of fs service to '/' (#1773)
3198 | - fix: align WebDAV stat with RFC specification (#1783)
3199 | - fix(bindings/nodejs): fix read benchmark (#1805)
3200 |
3201 | ### CI
3202 |
3203 | - ci: Split clippy and docs check (#1785)
3204 | - ci(bindings/nodejs): Support aarch64-apple-darwin (#1780)
3205 | - ci(bindings/nodejs): publish with LICENSE & NOTICE (#1790)
3206 | - ci(services/redis): Add dragonfly test (#1808)
3207 |
3208 | ### Chore
3209 |
3210 | - chore(bindings/python): update maturin to 0.14.16 (#1777)
3211 | - chore(bin/oli): Set oli version from package version (#1786)
3212 | - chore(oli): set cli version in a central place (#1789)
3213 | - chore: don't pin time version (#1788)
3214 | - chore(bindings/nodejs): init benchmark (#1798)
3215 | - chore(bindings/nodejs): Fix generated headers (#1802)
3216 |
3217 | ## [v0.30.4] - 2023-03-26
3218 |
3219 | ### Added
3220 |
3221 | - feat(oli): add config file to oli (#1706)
3222 | - feat: make oli support more services (#1717)
3223 | - feat(bindings/ruby): Setup the integrate with magnus (#1712)
3224 | - feat(bindings/ruby): setup cucumber tests (#1725)
3225 | - feat(bindings/python): convert to mixed Python/Rust project layout (#1729)
3226 | - RFC-1735: Operation Extension (#1735)
3227 | - feat(oli): load config from both env and file (#1737)
3228 | - feat(bindings/ruby): support read and write (#1734)
3229 | - feat(bindings/ruby): support stat, and pass all blocking bdd test (#1743)
3230 | - feat(bindings/ruby): add namespace (#1745)
3231 | - feat: Add override_content_disposition for OpRead (#1742)
3232 | - feat(bindings/java): add java binding (#1736)
3233 | - feat(oli): implement oli ls (#1755)
3234 | - feat(oli): implement oli cat (#1759)
3235 |
3236 | ### Fixed
3237 |
3238 | - fix(bindings/nodejs): Publish sub-package name (#1704)
3239 |
3240 | ### Docs
3241 |
3242 | - docs: Update comparison vs object_store (#1698)
3243 | - docs(bindings/python): add pdoc to docs env (#1718)
3244 | - docs: List working on bindings in README (#1753)
3245 |
3246 | ### CI
3247 |
3248 | - ci: Fix workflow not triggered when itself changed (#1716)
3249 | - ci: Remove ROCKSDB_LIB_DIR after we didn't install librocksdb (#1719)
3250 | - ci: Fix nodejs built failed for "Unexpected token o in JSON at position 0" (#1722)
3251 | - ci: Split cache into more parts (#1730)
3252 | - ci: add a basic ci for ruby (#1744)
3253 | - ci: Remove target from cache (#1764)
3254 |
3255 | ### Chore
3256 |
3257 | - chore: Fix CHANGELOG not found (#1694)
3258 | - chore: Remove publish=false of oli (#1697)
3259 | - chore: Fix a few typos in code comment (#1701)
3260 | - chore(bindins/nodejs): Update README (#1709)
3261 | - chore: rename binaries to bin (#1714)
3262 | - chore: bump rocksdb to resolve dependency conflicts with magnus (#1713)
3263 | - chore(bindings/nodejs): Remove outdated napi patches (#1727)
3264 | - chore: Add CITATION file for OpenDAL (#1746)
3265 | - chore: improve NotADirectory error message with ending slash (#1756)
3266 | - chore(bindings/python): update pyo3 to 0.18.2 (#1758)
3267 |
3268 | ## [v0.30.3] - 2023-03-16
3269 |
3270 | ### Added
3271 |
3272 | - feat: Infer storage name based on endpoint (#1551)
3273 | - feat(bindings/python): implement async file-like reader API (#1570)
3274 | - feat: website init (#1580)
3275 | - feat(bindings/python): implement list and scan for AsyncOperator (#1586)
3276 | - feat: Implement logging/metrics/tracing support for Writer/BlockingWriter (#1588)
3277 | - feat(bindings/python): expose layers to Python (#1591)
3278 | - feat(bindings/c): Setup the integrate with cbindgen (#1603)
3279 | - feat(bindings/nodejs): Auto-generate docs (#1625)
3280 | - feat: add max_batch_operations for AccessorInfo (#1615)
3281 | - feat(azblob): Add support for batch operations (#1610)
3282 | - services/redis: Implement Write::append with native support (#1651)
3283 | - feat(tests): Introducing BDD tests for all bindings (#1654)
3284 | - feat(bindings/nodejs): Migrate to BDD test (#1661)
3285 | - feat(bindings/nodejs): Add generated `index.d.ts` (#1664)
3286 | - feat(bindings/python): add auto-generated api docs (#1613)
3287 | - feat(bindings/python): add `__repr__` to `Operator` and `AsyncOperator` (#1683)
3288 |
3289 | ### Changed
3290 |
3291 | - \*: Change all files licenses to ASF (#1592)
3292 | - refactor(bindings/python): only enable `pyo3/entension-module` feature when building with maturin (#1680)
3293 |
3294 | ### Fixed
3295 |
3296 | - fix(bindings/python): Fix the metadata for Python binding (#1568)
3297 | - fix: Operator::remove_all behaviour on non-existing object fixed (#1587)
3298 | - fix: reset Reader::SeekState when poll completed (#1609)
3299 | - fix: Bucket config related error is misleadling (#1684)
3300 | - fix(services/s3): UploadId should be percent encoded (#1690)
3301 |
3302 | ### CI
3303 |
3304 | - ci: Fix typo in workflows (#1582)
3305 | - ci: Don't check dep updates so frequently (#1599)
3306 | - ci: Setup asf config (#1622)
3307 | - ci: Use gh-pages instead (#1623)
3308 | - ci: Update Github homepage (#1627)
3309 | - ci: Update description for OpenDAL (#1628)
3310 | - ci: Send notifications to [email protected] (#1629)
3311 | - ci: set main branch to be protected (#1631)
3312 | - ci: Add release scripts for OpenDAL (#1637)
3313 | - ci: Add check scripts (#1638)
3314 | - ci: Remove rust-cache to allow we can test rust code now (#1643)
3315 | - ci: Enable license check back (#1663)
3316 | - ci(bindings/nodejs): Enable formatter (#1665)
3317 | - ci: Bring our actions back (#1668)
3318 | - ci: Use korandoru/[email protected] instead (#1672)
3319 | - ci: Fix license header check and doc check (#1674)
3320 | - infra: Add odev to simplify contributor's setup (#1687)
3321 |
3322 | ### Docs
3323 |
3324 | - docs: Migrate links to o.a.o (#1630)
3325 | - docs: update the old address and the LICENSE size. (#1633)
3326 | - doc: update doc-link (#1642)
3327 | - docs(blog): Way to Go: OpenDAL successfully entered Apache Incubator (#1652)
3328 | - docs: Reorganize README of core and whole project (#1676)
3329 | - doc: Update README.md for quickstart (#1650)
3330 | - doc: uncomment the use expr for operator example (#1685)
3331 |
3332 | ### Website
3333 |
3334 | - website: Let's deploy our new website (#1581)
3335 | - website: Fix CNAME not set (#1590)
3336 | - website: Fix website publish (#1626)
3337 | - website: Add GitHub entry (#1636)
3338 | - website: move some content of footer to navbar. (#1660)
3339 |
3340 | ### Chore
3341 |
3342 | - chore(bindings/nodejs): fix missing files to publish (#1569)
3343 | - chore(deps): bump lazy-regex from 2.4.1 to 2.5.0 (#1573)
3344 | - chore(deps): bump tokio from 1.25.0 to 1.26.0 (#1577)
3345 | - chore(deps): bump hyper from 0.14.24 to 0.14.25 (#1575)
3346 | - chore(deps): bump serde from 1.0.152 to 1.0.155 (#1576)
3347 | - chore(deps): bump peaceiris/actions-gh-pages from 3.9.0 to 3.9.2 (#1593)
3348 | - chore(deps): bump async-trait from 0.1.64 to 0.1.66 (#1594)
3349 | - chore(deps): bump serde_json from 1.0.93 to 1.0.94 (#1596)
3350 | - chore(deps): bump paste from 1.0.11 to 1.0.12 (#1598)
3351 | - chore(deps): bump napi from 2.11.2 to 2.11.3 (#1595)
3352 | - chore(deps): bump serde from 1.0.155 to 1.0.156 (#1600)
3353 | - chore: fix the remaining license (#1605)
3354 | - chore: add a basic workflow for c bindings (#1608)
3355 | - chore: manage deps with maturin (#1611)
3356 | - chore: Rename files to yaml (#1624)
3357 | - chore: remove PULL_REQUEST_TEMPLATE (#1634)
3358 | - chore: add NOTICE and DISCLAIMER (#1635)
3359 | - chore(operator): apply max_batch_limit for async operator (#1641)
3360 | - chore: replace datafuselabs/opendal with apache/opendal (#1647)
3361 | - chore: make check.sh be executable and update gitignore (#1648)
3362 | - chore(automation): fix release.sh packaging sha512sum (#1649)
3363 | - chore: Update metadata (#1666)
3364 | - chore(website): Remove authors.yml (#1669)
3365 | - chore: Move opendal related staffs to core (#1673)
3366 | - chore: Remove not needed ignore from licenserc (#1677)
3367 | - chore: Ignore generated docs from git (#1686)
3368 |
3369 | ## [v0.30.2] - 2023-03-10
3370 |
3371 | ### CI
3372 |
3373 | - ci(bindings/nodejs): Fix nodejs package can't uploaded (#1564)
3374 |
3375 | ## [v0.30.1] - 2023-03-10
3376 |
3377 | ### Docs
3378 |
3379 | - docs: Fix Operator::create() has been removed (#1560)
3380 |
3381 | ### CI
3382 |
3383 | - ci: Fix python & nodejs not released correctly (#1559)
3384 |
3385 | ### Chore
3386 |
3387 | - chore(bindings/nodejs): update license in package.json (#1556)
3388 |
3389 | ## [v0.30.0] - 2023-03-10
3390 |
3391 | ### Added
3392 |
3393 | - RFC-1477: Remove Object Concept (#1477)
3394 | - feat(bindings/nodejs): fs Operator (#1485)
3395 | - feat(service/dashmap): Add scan support (#1492)
3396 | - feat(bindings/nodejs): Add Writer Support (#1490)
3397 | - feat: Add dummy implementation for accessor and builder (#1503)
3398 | - feat(bindings/nodejs): Support List & append all default services (#1505)
3399 | - feat(bindings/python): Setup operator init logic (#1513)
3400 | - feat(bindings/nodejs): write support string (#1520)
3401 | - feat(bindings/python): add support for services that opendal enables by default (#1522)
3402 | - feat(bindings/nodejs): Remove Operator.writer until we are ready (#1528)
3403 | - feat(bindings/nodejs): Support Operator.create_dir (#1529)
3404 | - feat(bindings/python): implement create_dir (#1534)
3405 | - feat(bindings/python): implement delete and export more metadata fields (#1539)
3406 | - feat(bindings/python): implement blocking list and scan (#1541)
3407 | - feat: Append EntryMode to Entry (#1543)
3408 | - feat: Entry refactoring to allow external creation (#1547)
3409 | - feat(bindings/nodejs): Support Operator.scanSync & Operator.listSync (#1546)
3410 | - feat: remove_via can delete files concurrently (#1495)
3411 |
3412 | ### Changed
3413 |
3414 | - refactor: Split operator APIs into different part (#1483)
3415 | - refactor: Remove Object prefix for public API (#1488)
3416 | - refactor: Remove the concept of Object (#1496)
3417 | - refactor: remove ReadDir in FTP service (#1504)
3418 | - refactor: rename public api create to create_dir (#1512)
3419 | - refactor(bindings/python): return bytes directly and add type stub file (#1514)
3420 | - tests: Remove not needed create file test (#1516)
3421 | - refactor: improve the python binding implementation (#1517)
3422 | - refactor(bindings/nodejs): Remove scheme from bindings (#1552)
3423 |
3424 | ### Fixed
3425 |
3426 | - fix(services/s3): Make sure the ureq's body has been consumed (#1497)
3427 | - fix(services/s3): Allow retry error RequestTimeout (#1532)
3428 |
3429 | ### Docs
3430 |
3431 | - docs: Remove all references to object (#1500)
3432 | - docs(bindings/python): Add building docs (#1526)
3433 | - docs(bindings/nodejs): update readme (#1527)
3434 | - docs: Add detailed docs for create_dir (#1537)
3435 |
3436 | ### CI
3437 |
3438 | - ci: Don't run binding tests if only services changes (#1498)
3439 | - ci: Improve rocksdb build speed by link dynamic libs (#1502)
3440 | - ci: Fix bindings CI not running on PR (#1530)
3441 | - ci: Polish scripts and prepare for releasing (#1553)
3442 |
3443 | ### Chore
3444 |
3445 | - chore: Re-organize the project layout (#1489)
3446 | - chore: typo & clippy (#1499)
3447 | - chore: typo (#1501)
3448 | - chore: Move memcache-async into opendal (#1544)
3449 |
3450 | ## [v0.29.1] - 2023-03-05
3451 |
3452 | ### Added
3453 |
3454 | - feat(bindings/python): Add basic IO support (#1464)
3455 | - feat(binding/node.js): basic IO (#1416)
3456 | - feat(bindings/nodejs): Align to OpenDAL exports (#1466)
3457 | - chore(bindings/nodejs): remove duplicate attribute & unused comment (#1478)
3458 |
3459 | ### Changed
3460 |
3461 | - refactor: Promote operator as a mod for further refactor (#1479)
3462 |
3463 | ### Docs
3464 |
3465 | - docs: Add convert from m\*n to m+n (#1454)
3466 | - docs: Polish comments for public types (#1455)
3467 | - docs: Add discord chat link (#1474)
3468 |
3469 | ### Chore
3470 |
3471 | - chore: fix typo (#1456)
3472 | - chore: fix typo (#1459)
3473 | - benches: Generate into Bytes instead (#1463)
3474 | - chore(bindings/nodjes): Don't check-in binaries (#1469)
3475 | - chore(binding/nodejs): specific package manager version with hash (#1470)
3476 |
3477 | ## [v0.29.0] - 2023-03-01
3478 |
3479 | ### Added
3480 |
3481 | - RFC-1420: Object Writer (#1420)
3482 | - feat: oss backend support http protocol (#1432)
3483 | - feat: Implement ObjectWriter Support (#1431)
3484 | - feat/layers/retry: Add Write Retry support (#1447)
3485 | - feat: Add Write append tests (#1448)
3486 |
3487 | ### Changed
3488 |
3489 | - refactor: Decouple decompress read feature from opendal (#1406)
3490 | - refactor: Cleanup pager related implementation (#1439)
3491 | - refactor: Polish the implement details for Writer (#1445)
3492 | - refactor: Remove `io::input` and Rename `io::output` to `oio` (#1446)
3493 |
3494 | ### Fixed
3495 |
3496 | - fix(services/s3): Fix part number for AWS S3 (#1450)
3497 |
3498 | ### CI
3499 |
3500 | - ci: Consistently apply license header (#1411)
3501 | - ci: add typos check (#1425)
3502 |
3503 | ### Docs
3504 |
3505 | - docs: Add services-dashmap feature (#1404)
3506 | - docs: Fix incorrect indent for title (#1405)
3507 | - docs: Add internal sections of Accessor and Layer (#1408)
3508 | - docs: Add more guide for Accessor (#1409)
3509 | - docs: Add tutorial of building a duck storage service (#1410)
3510 | - docs: Add a basic object example (#1422)
3511 |
3512 | ### Chore
3513 |
3514 | - chore: typo fix (#1418)
3515 | - chore: Make license check happy (#1423)
3516 | - chore: typo-fix (#1434)
3517 |
3518 | ## [v0.28.0] - 2023-02-22
3519 |
3520 | ### Added
3521 |
3522 | - feat: add dashmap support (#1390)
3523 |
3524 | ### Changed
3525 |
3526 | - refactor: Implement query based object metadata cache (#1395)
3527 | - refactor: Store complete inside bits and add more examples (#1397)
3528 | - refactor: Trigger panic if users try to visit not fetched metadata (#1399)
3529 | - refactor: Polish the implement of Query Based Metadata Cache (#1400)
3530 |
3531 | ### Docs
3532 |
3533 | - RFC-1391: Object Metadataer (#1391)
3534 | - RFC-1398: Query Based Metadata (#1398)
3535 |
3536 | ## [v0.27.2] - 2023-02-20
3537 |
3538 | ### Added
3539 |
3540 | - feat: Add batch API for Accessor (#1339)
3541 | - feat: add Content-Disposition for inner API (#1347)
3542 | - feat: add content-disposition support for services (#1350)
3543 | - feat: webdav service support bearer token (#1349)
3544 | - feat: support auth for HttpBackend (#1359)
3545 | - feat: Add batch delete support (#1357)
3546 | - feat(webdav): add list and improve create (#1330)
3547 | - feat: Integrate batch with existing ecosystem better (#1378)
3548 | - feat: Add batch delete support for oss (#1385)
3549 |
3550 | ### Changed
3551 |
3552 | - refactor: Authorization logic for WebdavBackend (#1348)
3553 | - refactor(webhdfs): handle 307 redirection instead of noredirect (#1358)
3554 | - refactor: Polish http authorization related logic (#1367)
3555 | - refactor: Cleanup duplicated code (#1373)
3556 | - refactor: Cleanup some not needed error context (#1374)
3557 |
3558 | ### Docs
3559 |
3560 | - docs: Fix broken links (#1344)
3561 | - docs: clarify about opendal user defined client (#1356)
3562 |
3563 | ### Fixed
3564 |
3565 | - fix(webhdfs): should prepend http:// scheme (#1354)
3566 |
3567 | ### Infra
3568 |
3569 | - ci: Pin time <= 0.3.17 until we decide to bump MSRV (#1361)
3570 | - ci: Only run service test on changing (#1363)
3571 | - ci: run tests with nextest (#1370)
3572 |
3573 | ## [v0.27.1] - 2023-02-13
3574 |
3575 | ### Added
3576 |
3577 | - feat: Add username and password support for WebDAV (#1323)
3578 | - ci: Add test case for webdav with basic auth (#1327)
3579 | - feat(oli): support s3 uri without profile (#1328)
3580 | - feat: Add scan support for kv adapter (#1333)
3581 | - feat: Add scan support for sled (#1334)
3582 |
3583 | ### Changed
3584 |
3585 | - chore(deps): update moka requirement from 0.9 to 0.10 (#1331)
3586 | - chore(deps): update rocksdb requirement from 0.19 to 0.20 (#1332)
3587 |
3588 | ### Fixed
3589 |
3590 | - fix(services/oss,s3): Metadata should be marked as complete (#1335)
3591 |
3592 | ## [v0.27.0] - 2023-02-11
3593 |
3594 | ### Added
3595 |
3596 | - feat: Add Retryable Pager Support (#1304)
3597 | - feat: Add Sled support (#1305)
3598 | - feat: Add Object::scan() support (#1314)
3599 | - feat: Add object page size support (#1318)
3600 |
3601 | ### Changed
3602 |
3603 | - refactor: Hide backon from our public API (#1302)
3604 | - refactor: Don't expose ops structs to users directly (#1303)
3605 | - refactor: Move and rename ObjectPager and ObjectEntry for more clear semantics (#1308)
3606 | - refactor: Implement strong typed pager (#1311)
3607 | - deps: remove unused deps (#1321)
3608 | - refactor: Extract scan as a new API and remove ListStyle (#1324)
3609 |
3610 | ### Docs
3611 |
3612 | - docs: Add risingwave in projects (#1322)
3613 |
3614 | ### Fixed
3615 |
3616 | - ci: Fix dev container Dockerfile (#1298)
3617 | - fix: Rocksdb's scheme not output correctly (#1300)
3618 | - chore: fix name typo in oss backend (#1316)
3619 | - chore: Add typos-cli and fix typos (#1320)
3620 |
3621 | ## [v0.26.2] - 2023-02-07
3622 |
3623 | ### Added
3624 |
3625 | - feat: Add ChaosLayer to inject errors into underlying services (#1287)
3626 | - feat: Implement retry reader (#1291)
3627 | - feat: use std::path::Path for fs backend (#1100)
3628 | - feat: Implement services webhdfs (#1263)
3629 |
3630 | ### Changed
3631 |
3632 | - refactor: Split CompleteReaderLayer from TypeEraserLayer (#1290)
3633 | - refactor(services/fs): Remove not needed generic (#1292)
3634 |
3635 | ### Docs
3636 |
3637 | - docs: fix typo (#1285)
3638 | - docs: Polish docs for better reading (#1288)
3639 |
3640 | ### Fixed
3641 |
3642 | - fix: FsBuilder can't be used with empty root anymore (#1293)
3643 | - fix: Fix retry happened in seek's read ahead logic (#1294)
3644 |
3645 | ## [v0.26.1] - 2023-02-05
3646 |
3647 | ### Changed
3648 |
3649 | - refactor: Remove not used layer subdir (#1280)
3650 |
3651 | ### Docs
3652 |
3653 | - docs: Add v0.26 upgrade guide (#1276)
3654 | - docs: Add feature sets in services (#1277)
3655 | - docs: Migrate all docs in rustdoc instead (#1281)
3656 | - docs: Fix index page not redirected (#1282)
3657 |
3658 | ## [v0.26.0] - 2023-02-04
3659 |
3660 | ### Added
3661 |
3662 | - feat: Add benchmarks for blocking_seek operations (#1258)
3663 | - feat: add dev container (#1261)
3664 | - feat: Zero Cost OpenDAL (#1260)
3665 | - feat: Allow dynamic dispatch layer (#1273)
3666 |
3667 | ### Changed
3668 |
3669 | - refactor: remove the duplicated dependency in dev-dependencies (#1257)
3670 | - refactor: some code in GitHub Actions (#1269)
3671 | - refactor: Don't expose services mod directly (#1271)
3672 | - refactor: Polish Builder API (#1272)
3673 |
3674 | ## [v0.25.2] - 2023-01-30
3675 |
3676 | ### Added
3677 |
3678 | - feat: Add basic object_store support (#1243)
3679 | - feat: Implement webdav support (#1246)
3680 | - feat: Allow passing content_type to OSS presign (#1252)
3681 | - feat: Make sure short functions have been inlined (#1253)
3682 |
3683 | ### Changed
3684 |
3685 | - refacor(services/fs): Make normalized path check optional (#1242)
3686 |
3687 | ### Docs
3688 |
3689 | - docs(http): remove out-dated comments (#1240)
3690 | - docs: Add bindings in README (#1244)
3691 | - docs: Add docs for webdav and http services (#1248)
3692 | - docs: Add webdav in lib docs (#1249)
3693 |
3694 | ### Fixed
3695 |
3696 | - fix(services/ghac): Fix log message for ghac_upload in write (#1239)
3697 |
3698 | ## [v0.25.1] - 2023-01-27
3699 |
3700 | ### Added
3701 |
3702 | - ci: Setup benchmark workflow (#1200)
3703 | - feat: Let's try play with python (#1205)
3704 | - feat: Let's try play with Node.js (#1206)
3705 | - feat: Allow retry sending read request (#1212)
3706 | - ci: Make sure opendal is buildable on windows (#1221)
3707 | - ci: Remove not needed audit checks (#1226)
3708 |
3709 | ### Changed
3710 |
3711 | - refactor: Remove observe read/write (#1202)
3712 | - refactor: Remove not used unwind safe feature (#1218)
3713 | - cleanup: Move oli and oay into binaries (#1227)
3714 | - cleanup: Move testdata into tests/data (#1228)
3715 | - refactor(layers/metrics): Defer initiation of error counters (#1232)
3716 |
3717 | ### Fixed
3718 |
3719 | - fix: Retry for read and write should at ObjectReader level (#1211)
3720 |
3721 | ## [v0.25.0] - 2023-01-18
3722 |
3723 | ### Added
3724 |
3725 | - feat: Add dns cache for std dns resolver (#1191)
3726 | - feat: Allow setting http client that built from external (#1192)
3727 | - feat: Implement BlockingObjectReader (#1194)
3728 |
3729 | ### Changed
3730 |
3731 | - chore(deps): replace dotenv with dotenvy (#1187)
3732 | - refactor: Avoid calling detect region if we know the region (#1188)
3733 | - chore: ensure minimal version buildable (#1193)
3734 |
3735 | ## [v0.24.6] - 2023-01-12
3736 |
3737 | ### Added
3738 |
3739 | - feat: implement tokio::io::{AsyncRead, AsyncSeek} for ObjectReader (#1175)
3740 | - feat(services/hdfs): Evaluating the new async implementation (#1176)
3741 | - feat(services/ghac): Handling too many requests error (#1181)
3742 |
3743 | ### Fixed
3744 |
3745 | - doc: fix name change in README (#1179)
3746 |
3747 | ## [v0.24.5] - 2023-01-09
3748 |
3749 | ### Fixed
3750 |
3751 | - fix(services/memcached): TcpStream should only accept host:port (#1170)
3752 |
3753 | ## [v0.24.4] - 2023-01-09
3754 |
3755 | ### Added
3756 |
3757 | - feat: Add presign endpoint option for OSS (#1135)
3758 | - feat: Reset state while returning error so that we can retry IO (#1166)
3759 |
3760 | ### Changed
3761 |
3762 | - chore(deps): update base64 requirement from 0.20 to 0.21 (#1164)
3763 |
3764 | ### Fixed
3765 |
3766 | - fix: Memcached can't work on windows (#1165)
3767 |
3768 | ## [v0.24.3] - 2023-01-09
3769 |
3770 | ### Added
3771 |
3772 | - feat: Implement memcached service support (#1161)
3773 |
3774 | ## [v0.24.2] - 2023-01-08
3775 |
3776 | ### Changed
3777 |
3778 | - refactor: Use dep: to make our features more clean (#1153)
3779 |
3780 | ### Fixed
3781 |
3782 | - fix: ghac shall return ObjectAlreadyExists for writing the same path (#1156)
3783 | - fix: futures read_to_end will lead to performance regression (#1158)
3784 |
3785 | ## [v0.24.1] - 2023-01-08
3786 |
3787 | ### Fixed
3788 |
3789 | - fix: Allow range_read to be retired (#1149)
3790 |
3791 | ## [v0.24.0] - 2023-01-07
3792 |
3793 | ### Added
3794 |
3795 | - Add support for SAS tokens in Azure blob storage (#1124)
3796 | - feat: Add github action cache service support (#1111)
3797 | - docs: Add docs for ghac service (#1126)
3798 | - feat: Implement offset seekable reader for zero cost read (#1133)
3799 | - feat: Implement fuzz test on ObjectReader (#1140)
3800 |
3801 | ### Changed
3802 |
3803 | - chore(deps): update quick-xml requirement from 0.26 to 0.27 (#1101)
3804 | - ci: Enable rust cache for CI (#1107)
3805 | - deps(oay,oli): Update dependences of oay and oli (#1122)
3806 | - refactor: Only add content length hint if we already know length (#1123)
3807 | - refactor: Redesign outpu bytes reader trait (#1127)
3808 | - refactor: Remove open related APIs (#1129)
3809 | - refactor: Merge and cleanup io & io_util modules (#1136)
3810 |
3811 | ### Fixed
3812 |
3813 | - ci: Fix build for oay and oli (#1097)
3814 | - fix: Fix rustls support for suppaftp (#1102)
3815 | - fix(services/ghac): Fix pkg version not used correctly (#1125)
3816 |
3817 | ## [v0.23.0] - 2022-12-22
3818 |
3819 | ### Added
3820 |
3821 | - feat: Implement object handler so that we can do seek on file (#1091)
3822 | - feat: Implement blocking for hdfs (#1092)
3823 | - feat(services/hdfs): Implement open and blocking open (#1093)
3824 | - docs: Add mozilla/sccache into projects (#1094)
3825 |
3826 | ## [v0.22.6] - 2022-12-20
3827 |
3828 | ### Added
3829 |
3830 | - feat(io): make BlockingBytesRead Send + Sync (#1083)
3831 | - feat(fs): skip seek if offset is 0 (#1082)
3832 | - RFC-1085: Object Handler (#1085)
3833 | - feat(services/s3,gcs): Allow accepting signer directly (#1087)
3834 |
3835 | ## [v0.22.5] - 2022-12-13
3836 |
3837 | ### Added
3838 |
3839 | - feat: Add service account support for gcs (#1076)
3840 |
3841 | ## [v0.22.4] - 2022-12-13
3842 |
3843 | ### Added
3844 |
3845 | - improve blocking read use read_to_end (#1072)
3846 | - feat(services/gcs): Fully implement default credential support (#1073)
3847 |
3848 | ### Fixed
3849 |
3850 | - fix: read a large range without error and add test (#1068)
3851 | - fix(services/oss): Enable standard behavior for oss range (#1070)
3852 |
3853 | ## [v0.22.3] - 2022-12-11
3854 |
3855 | ### Added
3856 |
3857 | - feat(layers/metrics): Merge error and failure counters together (#1058)
3858 | - feat: Set MSRV to 1.60 (#1060)
3859 | - feat: Add unwind safe flag for operator (#1061)
3860 | - feat(azblob): Add build from connection string support (#1064)
3861 |
3862 | ### Fixed
3863 |
3864 | - fix(services/moka): Don't print all content in cache (#1057)
3865 |
3866 | ## [v0.22.2] - 2022-12-07
3867 |
3868 | ### Added
3869 |
3870 | - feat(presign): support presign head method for s3 and oss (#1049)
3871 |
3872 | ## [v0.22.1] - 2022-12-05
3873 |
3874 | ### Fixed
3875 |
3876 | - fix(services/s3): Allow disable loading from imds_v2 and assume_role (#1044)
3877 |
3878 | ## [v0.22.0] - 2022-12-05
3879 |
3880 | ### Added
3881 |
3882 | - feat: improve temp file organization when enable atomic write in fs (#1017)
3883 | - feat: Allow configure LoggingLayer's level (#1021)
3884 | - feat: Enable users to specify the cache policy (#1024)
3885 | - feat: Implement presign for oss (#1035)
3886 |
3887 | ### Changed
3888 |
3889 | - refactor: Polish error handling of different services (#1018)
3890 | - refactor: Merge metadata and content cache together (#1020)
3891 | - refactor(layer/cache): Allow users implement cache by themselves (#1040)
3892 |
3893 | ### Fixed
3894 |
3895 | - fix(services/fs): Make sure writing file is truncated (#1036)
3896 |
3897 | ## [v0.21.2] - 2022-11-27
3898 |
3899 | ### Added
3900 |
3901 | - feat: Add azdfs support (#1009)
3902 | - feat: Set MSRV of opendal to 1.60 (#1012)
3903 |
3904 | ### Docs
3905 |
3906 | - docs: Fix docs for azdfs service (#1010)
3907 |
3908 | ## [v0.21.1] - 2022-11-26
3909 |
3910 | ### Added
3911 |
3912 | - feat: Export ObjectLister as public type (#1006)
3913 |
3914 | ### Changed
3915 |
3916 | - deps: Remove not used thiserror and num-trait (#1005)
3917 |
3918 | ## [v0.21.0] - 2022-11-25
3919 |
3920 | ### Added
3921 |
3922 | - docs: Add greptimedb and mars into projects (#975)
3923 | - RFC-0977: Refactor Error (#977)
3924 | - feat: impl atomic write for fs service (#991)
3925 | - feat: Add OperatorMetadata to avoid expose AccessorMetadata (#997)
3926 | - feat: Improve display for error (#1002)
3927 |
3928 | ### Changed
3929 |
3930 | - refactor: Use separate Error instead of std::io::Error to avoid confusing (#976)
3931 | - refactor: Return ReplyCreate for create operation (#981)
3932 | - refactor: Add ReplyRead for read operation (#982)
3933 | - refactor: Add RpWrite for write operation (#983)
3934 | - refactor: Add RpStat for stat operation (#984)
3935 | - refactor: Add RpDelete for delete operations (#985)
3936 | - refactor: Add RpPresign for presign operation (#986)
3937 | - refactor: Add reply for all multipart operations (#988)
3938 | - refactor: Add Reply for all blocking operations (#989)
3939 | - refactor: Avoid accessor in object entry (#992)
3940 | - refactor: Move accessor into raw apis (#994)
3941 | - refactor: Move io to raw (#996)
3942 | - refactor: Move {path,wrapper,http_util,io_util} into raw modules (#998)
3943 | - refactor: Move ObjectEntry and ObjectPage into raw (#999)
3944 | - refactor: Accept Operator instead of `Arc<dyn Accessor>` (#1001)
3945 |
3946 | ### Fixed
3947 |
3948 | - fix: RetryAccessor is too verbose (#980)
3949 |
3950 | ## [v0.20.1] - 2022-11-18
3951 |
3952 | ### Added
3953 |
3954 | - feat: Implement blocking operations for cache services (#970)
3955 |
3956 | ### Fixed
3957 |
3958 | - fix: Use std Duration as args instead (#966)
3959 | - build: Make opendal buildable on 1.60 (#968)
3960 | - fix: Avoid cache missing after write (#971)
3961 |
3962 | ## [v0.20.0] - 2022-11-17
3963 |
3964 | ### Added
3965 |
3966 | - RFC-0926: Object Reader (#926)
3967 | - feat: Implement Object Reader (#928)
3968 | - feat(services/s3): Return Object Meta for Read operation (#932)
3969 | - feat: Implement Bytes Content Range (#933)
3970 | - feat: Add Content Range support in ObjectMetadata (#935)
3971 | - feat(layers/content_cache): Implement WholeCacheReader (#936)
3972 | - feat: CompressAlgorithm derive serde. (#939)
3973 | - feat: Allow using opendal without tls support (#945)
3974 | - refactor: Refactor OpRead with BytesRange (#946)
3975 | - feat: Allow using opendal with native tls support (#949)
3976 | - docs: add docs for tls dependencies features (#951)
3977 | - feat: Make ObjectReader content_length returned for all services (#954)
3978 | - feat(layers): Implement fixed content cache (#953)
3979 | - feat: Enable default_ttl support for redis (#960)
3980 |
3981 | ### Changed
3982 |
3983 | - refactor: Return ObjectReader in Accessor::read (#929)
3984 | - refactor(oay,oli): drop unnecessary patch.crates-io from `Cargo.toml`
3985 | - refactor: Polish bytes range (#950)
3986 | - refactor: Use simplified kv adapter instead (#959)
3987 |
3988 | ### Fixed
3989 |
3990 | - fix(ops): Fix suffix range behavior of bytes range (#942)
3991 | - fix: Fix cache path not used correctly (#958)
3992 |
3993 | ## [v0.19.8] - 2022-11-13
3994 |
3995 | ### Added
3996 |
3997 | - feat(services/moka): Use entry's bytes as capacity weigher (#914)
3998 | - feat: Implement rocksdb service (#913)
3999 |
4000 | ### Changed
4001 |
4002 | - refactor: Reduce backend builder log level to debug (#907)
4003 | - refactor: Remove deprecated features (#920)
4004 | - refactor: use moka::sync::SegmentedCache (#921)
4005 |
4006 | ### Fixed
4007 |
4008 | - fix(http): Check already read size before returning (#919)
4009 |
4010 | ## [v0.19.7] - 2022-10-31
4011 |
4012 | ### Added
4013 |
4014 | - feat: Implement content type support for stat (#891)
4015 |
4016 | ### Changed
4017 |
4018 | - refactor(layers/metrics): Holding all metrics handlers to avoid lock (#894)
4019 | - refactor(layers/metrics): Only update metrics while dropping readers (#896)
4020 |
4021 | ## [v0.19.6] - 2022-10-25
4022 |
4023 | ### Fixed
4024 |
4025 | - fix: Metrics blocking reader doesn't handle operation correctly (#887)
4026 |
4027 | ## [v0.19.5] - 2022-10-24
4028 |
4029 | ### Added
4030 |
4031 | - feat: add a feature named trust-dns (#879)
4032 | - feat: implement write_with (#880)
4033 | - feat: `content-type` configuration (#878)
4034 |
4035 | ### Fixed
4036 |
4037 | - fix: Allow forward layers' acesser operations to inner (#884)
4038 |
4039 | ## [v0.19.4] - 2022-10-15
4040 |
4041 | ### Added
4042 |
4043 | - feat: Improve into_stream by reduce zero byte fill (#864)
4044 | - debug: Add log for sync http client (#865)
4045 | - feat: Add debug log for finishing read (#867)
4046 | - feat: Try to use trust-dns-resolver (#869)
4047 | - feat: Add log for dropping reader and streamer (#870)
4048 |
4049 | ### Changed
4050 |
4051 | - refactor: replace md5 with md-5 (#862)
4052 | - refactor: replace the hard code to X_AMZ_BUCKET_REGION constant (#866)
4053 |
4054 | ## [v0.19.3] - 2022-10-13
4055 |
4056 | ### Fixed
4057 |
4058 | - fix: Retry for write is not implemented correctly (#860)
4059 |
4060 | ## [v0.19.2] - 2022-10-13
4061 |
4062 | ### Added
4063 |
4064 | - feat(experiment): Allow user to config http connection pool (#843)
4065 | - feat: Add concurrent limit layer (#848)
4066 | - feat: Allow kv services implemented without list support (#850)
4067 | - feat: Implement service for moka (#852)
4068 | - docs: Add docs for moka service and concurrent limit layer (#857)
4069 |
4070 | ## [v0.19.1] - 2022-10-11
4071 |
4072 | ### Added
4073 |
4074 | - feat: Allow retry read and write (#826)
4075 | - feat: Convert interrupted error to permanent after retry (#827)
4076 | - feat(services/ftp): Add connection pool for FTP (#832)
4077 | - feat: Implement retry for write operation (#831)
4078 | - feat: Bump reqsign to latest version (#837)
4079 | - feat(services/s3): Add role_arn and external_id for assume_role (#838)
4080 |
4081 | ### Changed
4082 |
4083 | - test: accelerate behaviour test `test_list_rich_dir` (#828)
4084 |
4085 | ### Fixed
4086 |
4087 | - fix: ObjectEntry returned in batch operator doesn't have correct accessor (#839)
4088 | - fix: Accessor in layers not set correctly (#840)
4089 |
4090 | ## [v0.19.0] - 2022-10-08
4091 |
4092 | ### Added
4093 |
4094 | - feat: Implement object page stream for services like s3 (#787)
4095 | - RFC-0793: Generic KV Services (#793)
4096 | - feat(services/kv): Implement Scoped Key (#796)
4097 | - feat: Add scan in KeyValueAccessor (#797)
4098 | - feat: Implement basic kv services support (#799)
4099 | - feat: Introduce kv adapter for opendal (#802)
4100 | - feat: Add integration test for redis (#804)
4101 | - feat: Add OSS Service Support (#801)
4102 | - feat: Add integration tests for OSS (#814)
4103 |
4104 | ### Changed
4105 |
4106 | - refactor: Move object to mod (#786)
4107 | - refactor: Implement azblob dir stream based on ObjectPageStream (#790)
4108 | - refactor: Implement memory services by generic kv (#800)
4109 | - refactor: Don't expose backend to users (#816)
4110 | - tests: allow running tests when env is `true` (#818)
4111 | - refactor: Remove deprecated type aliases (#819)
4112 | - test: list rich dir (#820)
4113 |
4114 | ### Fixed
4115 |
4116 | - fix(services/redis): MATCH can't handle correctly (#803)
4117 | - fix: Disable ipfs redirection (#809)
4118 | - fix(services/ipfs): Use ipfs files API to copy data (#811)
4119 | - fix(services/hdfs): Allow retrying would block (#815)
4120 |
4121 | ## [v0.18.2] - 2022-10-01
4122 |
4123 | ### Added
4124 |
4125 | - feat: Enable retry layer by default (#781)
4126 |
4127 | ### Changed
4128 |
4129 | - ci: Enable IPFS NoFecth to avoid networking timeout (#780)
4130 | - ci: Build all feature in release to prevent build failure under release profile (#783)
4131 |
4132 | ### Fixed
4133 |
4134 | - fix: Fix build error under release profile (#782)
4135 |
4136 | ## [v0.18.1] - 2022-10-01
4137 |
4138 | ### Fixed
4139 |
4140 | - fix(services/s3): Content MD5 not set during list (#775)
4141 | - test: Add a test for ObjectEntry metadata cache (#776)
4142 |
4143 | ## [v0.18.0] - 2022-10-01
4144 |
4145 | ### Added
4146 |
4147 | - feat: Add Metadata Cache Layer (#739)
4148 | - feat: Bump reqsign version to 0.5 (#741)
4149 | - feat: Derive Hash, Eq, PartialEq for Operation (#749)
4150 | - feat: Make AccessorMetadata public so outer users can use (#750)
4151 | - feat: Expose AccessorCapability to users (#751)
4152 | - feat: Expose opendal's http util to users (#753)
4153 | - feat: Implement convert from PresignedRequest (#756)
4154 | - feat: Make ObjectMetadata setter public (#758)
4155 | - feat: Implement cached metadata for ObjectEntry (#761)
4156 | - feat: Assign unique name for memory backend (#769)
4157 |
4158 | ### Changed
4159 |
4160 | - refactor: replace error::other with new_other_object_error (#738)
4161 | - chore(compress): log with trace level instead of debug. (#752)
4162 | - refactor: Rename DirXxxx to ObjectXxxx instead (#759)
4163 |
4164 | ### Fixed
4165 |
4166 | - fix(http_util): Disable auto compress and enable http proxy (#731)
4167 | - deps: Fix build after bump deps of oli and oay (#766)
4168 |
4169 | ## [v0.17.4] - 2022-09-27
4170 |
4171 | ### Fixed
4172 |
4173 | - fix(http_util): Allow retry more errors (#724)
4174 | - fix(services/ftp): Suffix endpoints with default port (#726)
4175 |
4176 | ## [v0.17.3] - 2022-09-26
4177 |
4178 | ### Added
4179 |
4180 | - feat: Add SubdirLayer to allowing switch directory (#718)
4181 | - feat(layers/retry): Add warning log while retry happened (#721)
4182 |
4183 | ### Fixed
4184 |
4185 | - fix: update metrics on result (#716)
4186 | - fix: SubdirLayer should handle dir correctly (#720)
4187 |
4188 | ## [v0.17.2] - 2022-09-26
4189 |
4190 | ### Add
4191 |
4192 | - feat: implement basic cp command (#688)
4193 | - chore: also parse 'FTPS' to Scheme::Ftp (#704)
4194 |
4195 | ### Changed
4196 |
4197 | - refactor: remove `enable_secure` in FTP service (#709)
4198 | - oli: refactor copy implementation (#710)
4199 |
4200 | ### Fixed
4201 |
4202 | - fix: Handle slash normalized false positives properly (#702)
4203 | - fix: Tracing is too verbose (#707)
4204 | - chore: fix error message in ftp service (#705)
4205 |
4206 | ## [v0.17.1] - 2022-09-19
4207 |
4208 | ### Added
4209 |
4210 | - feat: redis service implement (#679)
4211 | - feat: Implement AsyncBufRead for IntoReader (#690)
4212 | - feat: expose security token of s3 (#693)
4213 |
4214 | ### Changed
4215 |
4216 | - refactor: avoid unnecessary parent creating in Redis service (#692)
4217 | - refactor: Refactor HTTP Client to split sending and incoming logic (#695)
4218 |
4219 | ### Fixed
4220 |
4221 | - fix: Handle write data in async way for IPMFS (#694)
4222 |
4223 | ## [v0.17.0] - 2022-09-15
4224 |
4225 | ### Added
4226 |
4227 | - RFC: Path In Accessor (#661)
4228 | - feat: Implement RFC-0661: Path In Accessor (#664)
4229 | - feat: Hide http client internal details from users (#672)
4230 | - feat: make rustls the default tls implementation (#674)
4231 | - feat: Implement benches for layers (#681)
4232 |
4233 | ### Docs
4234 |
4235 | - docs: Add how to implement service docs (#665)
4236 | - refactor: update redis support rfc (#676)
4237 | - docs: update metrics documentation (#684)
4238 |
4239 | ### Fixed
4240 |
4241 | - fix: Immutable Index Layer could return duplicated paths (#671)
4242 | - fix: Remove not needed type parameter for immutable_layer (#677)
4243 | - fix: Don't trace buf field in poll_read (#682)
4244 | - fix: List non-exist dir should return empty (#683)
4245 | - fix: Add path validation for fs backend (#685)
4246 |
4247 | ## [v0.16.0] - 2022-09-12
4248 |
4249 | ### Added
4250 |
4251 | - feat: Implement tests for read-only services (#634)
4252 | - feat(services/ftp): Implemented multi connection (#637)
4253 | - feat: Finalize FTP read operation (#644)
4254 | - feat: Implement service for IPFS HTTP Gateway (#645)
4255 | - feat: Add ImmutableIndexLayer (#651)
4256 | - feat: derive Hash for Scheme (#653)
4257 | - feat(services/ftp): Setup integration tests (#648)
4258 |
4259 | ### Changed
4260 |
4261 | - refactor: Migrate all behavior tests to capability based (#635)
4262 | - refactor: Remove list support from http service (#639)
4263 | - refactor: Replace isahc with reqwest and ureq (#642)
4264 |
4265 | ### Deps
4266 |
4267 | - deps: Bump reqsign to v0.4 (#643)
4268 | - deps: Remove not used features (#658)
4269 | - chore(deps): Update criterion requirement from 0.3 to 0.4 (#656)
4270 | - chore(deps): Update quick-xml requirement from 0.24 to 0.25 (#657)
4271 |
4272 | ### Docs
4273 |
4274 | - docs: Add docs for ipfs (#649)
4275 | - docs: Fix typo (#650)
4276 | - docs: Add docs for ftp services (#655)
4277 |
4278 | ### RFCs
4279 |
4280 | - RFC-0623: Redis Service (#623)
4281 |
4282 | ## [v0.15.0] - 2022-09-05
4283 |
4284 | ### Added
4285 |
4286 | - RFC-0599: Blocking API (#599)
4287 | - feat: Add blocking API in Accessor (#604)
4288 | - feat: Implement blocking API for fs (#606)
4289 | - feat: improve observability of `BytesReader` and `DirStreamer` (#603)
4290 | - feat: Add behavior tests for blocking operations (#607)
4291 | - feat: Add integration tests for ipfs (#610)
4292 | - feat: implemented ftp backend (#581)
4293 | - RFC-0627: Split Capabilities (#627)
4294 |
4295 | ### Changed
4296 |
4297 | - refactor: Extrace normalize_root functions (#619)
4298 | - refactor: Extrace build_abs_path and build_rooted_abs_path (#620)
4299 | - refactor: Extract build_rel_path (#621)
4300 | - feat: Rename ipfs to ipmfs to better reflect its naming (#629)
4301 |
4302 | ## [v0.14.1] - 2022-08-30
4303 |
4304 | ### Added
4305 |
4306 | - feat: Add IPFS backend (#481)
4307 | - refactor: IPFS service cleanup (#590)
4308 |
4309 | ### Docs
4310 |
4311 | - docs: Add obs in OpenDAL lib docs (#585)
4312 |
4313 | ### Fixed
4314 |
4315 | - fix(services/s3): If input range is `0..`, don't insert range header (#592)
4316 |
4317 | ## [v0.14.0] - 2022-08-28
4318 |
4319 | ### Added
4320 |
4321 | - RFC-0554: Write Refactor (#554)
4322 | - feat: Implement huaweicloud obs service other op support (#557)
4323 | - feat: Add new operations in Accessor (#564)
4324 | - feat: Implement obs create and write (#565)
4325 | - feat(services/s3): Implement Multipart support (#571)
4326 | - feat: Implement MultipartObject public API (#574)
4327 | - feat: Implement integration tests for multipart (#575)
4328 | - feat: Implement presign for write multipart (#576)
4329 | - test: Add assert of public struct size (#578)
4330 | - feat: List metadata reuse (#577)
4331 | - feat: Implement integration test for obs (#572)
4332 |
4333 | ### Changed
4334 |
4335 | - refactor(ops): Promote ops as a parent mod (#553)
4336 | - refactor: Implement RFC-0554 Write Refactor (#556)
4337 | - refactor: Remove all unused qualifications (#560)
4338 | - refactor: Fix typo in azblob backend (#569)
4339 | - refactor: change ObjectError's op from &'static str to Operation (#580)
4340 |
4341 | ### Deleted
4342 |
4343 | - refactor: Remove deprecated APIs (#582)
4344 |
4345 | ### Docs
4346 |
4347 | - docs: Add docs for obs service (#579)
4348 |
4349 | ## [v0.13.1] - 2022-08-22
4350 |
4351 | ### Added
4352 |
4353 | - feat: Add walk for BatchOperator (#543)
4354 | - feat: Mark Scheme non_exhaustive and extendable (#544)
4355 | - feat: Try to limit the max_connections for http client (#545)
4356 | - feat: Implement huaweicloud obs service read support (#540)
4357 |
4358 | ### Docs
4359 |
4360 | - docs: Fix gcs is missing from index (#546)
4361 |
4362 | ## [v0.13.0] - 2022-08-17
4363 |
4364 | ### Added
4365 |
4366 | - feat: Refactor metrics and hide under feature layers-metrics (#521)
4367 | - feat(layer): Add TracingLayer support (#523)
4368 | - feature: Google Cloud Storage support skeleton (#513)
4369 | - feat: Add LoggingLayer to replace service internal logs (#526)
4370 | - feat: Implement integration tests for gcs (#532)
4371 | - docs: Add docs for new layers (#534)
4372 | - docs: Add docs for gcs backend (#535)
4373 |
4374 | ### Changed
4375 |
4376 | - refactor: Rewrite retry layer support (#522)
4377 |
4378 | ### Fixed
4379 |
4380 | - fix: Make ProtocolViolation a retryable error (#528)
4381 |
4382 | ## [v0.12.0] - 2022-08-12
4383 |
4384 | ### Added
4385 |
4386 | - RFC-0501: New Builder (#501)
4387 | - feat: Implement RFC-0501 New Builder (#510)
4388 |
4389 | ### Changed
4390 |
4391 | - feat: Use isahc to replace hyper (#471)
4392 | - refactor: make parse http error code public (#511)
4393 | - refactor: Extrace new http error APIs (#515)
4394 | - refactor: Simplify the error response parse logic (#516)
4395 |
4396 | ### Removed
4397 |
4398 | - refactor: Remove deprecated struct Metadata (#503)
4399 |
4400 | ## [v0.11.4] - 2022-08-02
4401 |
4402 | ### Added
4403 |
4404 | - feat: Support using rustls for TLS (#491)
4405 |
4406 | ### Changed
4407 |
4408 | - feat: try to support epoll (#478)
4409 | - deps: Lower the requirement of deps (#495)
4410 | - Revert "feat: try to support epoll" (#496)
4411 |
4412 | ### Fixed
4413 |
4414 | - fix: Uri encode continuation-token before signing (#494)
4415 |
4416 | ### Docs
4417 |
4418 | - docs: Add downloads in README (#485)
4419 | - docs: Update slogan for OpenDAL (#486)
4420 |
4421 | ## [v0.11.3] - 2022-07-26
4422 |
4423 | ### Changed
4424 |
4425 | - build: Remove not used features (#472)
4426 |
4427 | ### Fixed
4428 |
4429 | - fix: Disable connection pool as workaround for async runtime hang (#474)
4430 |
4431 | ### Dependencies
4432 |
4433 | - chore(deps): Bump clap from 3.2.12 to 3.2.15 in /oay (#461)
4434 | - chore(deps): Bump clap from 3.2.12 to 3.2.15 in /oli (#460)
4435 | - chore(deps): Update metrics requirement from 0.19.0 to 0.20.0 (#462)
4436 | - chore(deps): Bump tokio from 1.20.0 to 1.20.1 in /oay (#468)
4437 |
4438 | ## [v0.11.2] - 2022-07-19
4439 |
4440 | ### Fixed
4441 |
4442 | - fix: Service HTTP deosn't handle dir correctly (#455)
4443 | - fix: Service HTTP inserted with wrong key (#457)
4444 |
4445 | ## [v0.11.1] - 2022-07-19
4446 |
4447 | ### Added
4448 |
4449 | - RFC-0438: Multipart (#438)
4450 | - RFC-0443: Gateway (#443)
4451 | - feat: Add basic oay support for http (#445)
4452 | - feat: BytesRange supports parsing from range and content-range (#449)
4453 | - feat(oay): Implement range support (#450)
4454 | - feat(services-http): Implement write and delete for testing (#451)
4455 |
4456 | ## [v0.11.0] - 2022-07-11
4457 |
4458 | ### Added
4459 |
4460 | - feat: derive Deserialize/Serialize for ObjectMetaData (#420)
4461 | - RFC-0423: Command Line Interface (#423)
4462 | - feat: optimize range read (#425)
4463 | - feat(oli): Add basic layout for oli (#426)
4464 | - RFC-0429: Init From Iter (#429)
4465 | - feat: Implement RFC-0429 Init From Iter (#432)
4466 | - feat(oli): Add cp command layout (#428)
4467 |
4468 | ### Docs
4469 |
4470 | - docs: Update description of OpenDAL (#434)
4471 |
4472 | ## [v0.10.0] - 2022-07-04
4473 |
4474 | ### Added
4475 |
4476 | - RFC-0409: Accessor Capabilities (#409)
4477 | - feat: Implement RFC-0409 Accessor Capabilities (#411)
4478 | - RFC-0413: Presign (#413)
4479 | - feat: Implement presign support for s3 (#414)
4480 |
4481 | ### Docs
4482 |
4483 | - docs: Add new RFCs in list (#415)
4484 |
4485 | ### Dependencies
4486 |
4487 | - chore(deps): Update reqsign requirement from 0.1.1 to 0.2.0 (#412)
4488 |
4489 | ## [v0.9.1] - 2022-06-27
4490 |
4491 | ### Added
4492 |
4493 | - feat(object): Add ETag support (#381)
4494 | - feat: Convert retryable hyper errors into Interrupted (#396)
4495 |
4496 | ### Changed
4497 |
4498 | - build: Exclude docs from publish (#383)
4499 | - ci: Don't run CI on not needed push (#395)
4500 | - refactor: Use list for check instead of stat (#399)
4501 |
4502 | ### Dependencies
4503 |
4504 | - chore(deps): Update size requirement from 0.1.2 to 0.2.0 (#385)
4505 | - Upgrade dev-dependency `size` to 0.4 (#392)
4506 |
4507 | ### Fixed
4508 |
4509 | - fix: Special chars not handled correctly (#398)
4510 |
4511 | ## [v0.9.0] - 2022-06-14
4512 |
4513 | ### Added
4514 |
4515 | - feat: Implement http service support (#368)
4516 | - feat: Add http_header to handle HTTP header parse (#369)
4517 | - feat(services/s3): Add virtual host API style support (#374)
4518 |
4519 | ### Changed
4520 |
4521 | - refactor: Use the same http client across project (#364)
4522 | - refactor(services/{s3,azblob}): Make sure error response parsed correctly and safely (#375)
4523 |
4524 | ### Docs
4525 |
4526 | - docs: Add concepts for Accessor, Operator and Object (#354)
4527 | - docs: Aad docs for batch operations (#363)
4528 |
4529 | ## [v0.8.0] - 2022-06-09
4530 |
4531 | ### Added
4532 |
4533 | - RFC-0337: Dir Entry (#337)
4534 | - feat: Implement RFC-0337: Dir Entry (#342)
4535 | - feat: Add batch operation support (#346)
4536 |
4537 | ### Changed
4538 |
4539 | - refactor: Rename Metadata to ObjectMetadata for clarify (#339)
4540 |
4541 | ### Others
4542 |
4543 | - chore(deps): Bump actions/setup-python from 3 to 4 (#343)
4544 | - chore(deps): Bump amondnet/vercel-action from 20 to 25 (#344)
4545 |
4546 | ## [v0.7.3] - 2022-06-03
4547 |
4548 | ### Fixed
4549 |
4550 | - fix(services/s3,hdfs): List empty dir should not return itself (#327)
4551 | - fix(services/hdfs): Root path not cleaned correctly (#330)
4552 |
4553 | ## [v0.7.2] - 2022-06-01
4554 |
4555 | ### Added
4556 |
4557 | - feat(io_util): Improve debug logging for compress (#310)
4558 | - feat(services/s3): Add disable_credential_loader support (#317)
4559 | - feat: Allow check user input (#318)
4560 | - docs: Add services and features docs (#319)
4561 | - feat: Add name to object metadata (#304)
4562 | - fix(io_util/compress): Fix decoder's buf not all consumed (#323)
4563 |
4564 | ### Changed
4565 |
4566 | - chore(deps): Update metrics requirement from 0.18.1 to 0.19.0 (#314)
4567 | - docs: Update README to reflect current status (#321)
4568 | - refactor(object): Make Metadata::name() return &str (#322)
4569 |
4570 | ### Fixed
4571 |
4572 | - docs: Fix typo in examples (#320)
4573 | - fix(services): Don't throw error message for stat operation (#324)
4574 |
4575 | ## [v0.7.1] - 2022-05-29
4576 |
4577 | ### Fixed
4578 |
4579 | - publish: Fix git version not allowed (#306)
4580 | - fix(io_util/compress): Decompress read exit too early (#308)
4581 |
4582 | ## [v0.7.0] - 2022-05-29
4583 |
4584 | ### Added
4585 |
4586 | - feat: Add support for blocking decompress_read (#289)
4587 | - feat: Add check for operator (#290)
4588 | - docs: Use mdbook to generate documentation (#291)
4589 | - proposal: Object ID (#293)
4590 | - feat: Implement operator metadata support (#296)
4591 | - feat: Implement RFC-0293 Object ID (#298)
4592 |
4593 | ### Changed
4594 |
4595 | - chore(deps): Update quick-xml requirement from 0.22.0 to 0.23.0 (#286)
4596 | - feat(io_util): Refactor decompress decoder (#302)
4597 | - ci: Adopt amondnet/vercel-action (#303)
4598 |
4599 | ### Fixed
4600 |
4601 | - fix(services/aws): Increase retry times for AWS STS (#299)
4602 |
4603 | ## [v0.6.3] - 2022-05-25
4604 |
4605 | ### Added
4606 |
4607 | - ci: Add all issues into databend-storage project (#277)
4608 | - feat(services/s3): Add retry in load_credential (#281)
4609 | - feat(services): Allow endpoint has trailing slash (#282)
4610 | - feat(services): Attach more context in error messages (#283)
4611 |
4612 | ## [v0.6.2] - 2022-05-12
4613 |
4614 | ### Fixed
4615 |
4616 | - fix(azblob): Request URL not construct correctly (#270)
4617 |
4618 | ## [v0.6.1] - 2022-05-09
4619 |
4620 | ### Added
4621 |
4622 | - feat: Add hdfs scheme (#266)
4623 |
4624 | ## [v0.6.0] - 2022-05-07
4625 |
4626 | ### Added
4627 |
4628 | - docs: Improve docs to 100% coverage (#246)
4629 | - RFC-0247: Retryable Error (#247)
4630 | - feat: Implement retry layers (#249)
4631 | - feat: Implement retryable errors for azblob and s3 (#254)
4632 | - feat: Implement hdfs service support (#255)
4633 | - docs: Add docs for hdfs services (#262)
4634 |
4635 | ### Changed
4636 |
4637 | - docs: Make sure code examples are formatted (#251)
4638 | - chore(deps): Update uuid requirement from 0.8.2 to 1.0.0 (#252)
4639 | - refactor: Remove deprecated modules (#259)
4640 |
4641 | ### Fixed
4642 |
4643 | - ci: Fix docs build (#260)
4644 | - fix: HDFS jar not load (#261)
4645 |
4646 | ## [v0.5.2] - 2022-04-08
4647 |
4648 | ### Changed
4649 |
4650 | - chore: Build all features for docs.rs (#238)
4651 | - ci: Enable auto dependence upgrade (#239)
4652 | - chore(deps): Bump actions/checkout from 2 to 3 (#240)
4653 | - docs: Refactor examples (#241)
4654 |
4655 | ### Fixed
4656 |
4657 | - fix(services/s3): Endpoint without scheme should also supported (#242)
4658 |
4659 | ## [v0.5.1] - 2022-04-08
4660 |
4661 | ### Added
4662 |
4663 | - docs: Add behavior docs for create operation (#235)
4664 |
4665 | ### Fixed
4666 |
4667 | - fix(services/fs): Create on existing dir should succeed (#234)
4668 |
4669 | ## [v0.5.0] - 2022-04-07
4670 |
4671 | ### Added
4672 |
4673 | - feat: Improve error message (#220)
4674 | - RFC-0221: Create Dir (#221)
4675 | - feat: Simplify create API (#225)
4676 | - feat: Implement decompress read support (#227)
4677 | - ci: Enable behavior test for azblob (#229)
4678 | - docs: Add docs for azblob's public structs (#230)
4679 |
4680 | ### Changed
4681 |
4682 | - refactor: Move op.objects() to o.list() (#224)
4683 | - refactor: Improve behavior_tests so that cargo test works without --all-features (#231)
4684 |
4685 | ### Fixed
4686 |
4687 | - fix: Azblob should pass all behavior tests now (#228)
4688 |
4689 | ## [v0.4.2] - 2022-04-03
4690 |
4691 | ### Added
4692 |
4693 | - feat: Add seekable_reader on Object (#215)
4694 |
4695 | ### Fixed
4696 |
4697 | - fix: Object last_modified should carry timezone (#217)
4698 |
4699 | ## [v0.4.1] - 2022-04-02
4700 |
4701 | ### Added
4702 |
4703 | - feat: Export SeekableReader (#212)
4704 |
4705 | ## [v0.4.0] - 2022-04-02
4706 |
4707 | **Refer to [Upgrade](./docs/upgrade.md) `From v0.3 to v0.4` section for more upgrade details.**
4708 |
4709 | ### Added
4710 |
4711 | - feat(services/azblob): Implement list support (#193)
4712 | - feat: Implement io_util like into_sink and into_stream (#197)
4713 | - docs: Add docs for all newly added public functions (#199)
4714 | - feat(io_util): Implement observer for sink and stream (#198)
4715 | - docs: Add docs for public types (#206)
4716 |
4717 | ### Changed
4718 |
4719 | - refactor: Make read return BytesStream instead (#192)
4720 | - RFC-0191: Async Streaming IO (#191)
4721 | - refactor: New public API design (#201)
4722 | - refactor: Adopt io::Result instead (#204)
4723 | - refactor: Rollback changes around async streaming io (#205)
4724 | - refactor: Refactor behavior tests with macro_rules (#207)
4725 |
4726 | ### Fixed
4727 |
4728 | - deps: Bump to reqsign to fix s3 url encode issue (#202)
4729 |
4730 | ### Removed
4731 |
4732 | - RFC-0203: Remove Credential (#203)
4733 |
4734 | ## [v0.3.0] - 2022-03-25
4735 |
4736 | ### Added
4737 |
4738 | - feat: Add azure blob support (#165)
4739 | - feat: Add tracing support via minitrace (#175)
4740 | - feat(service/s3): Implement server side encryption support (#182)
4741 |
4742 | ### Changed
4743 |
4744 | - chore: Level down some log entry to debug (#181)
4745 |
4746 | ### Fixed
4747 |
4748 | - fix(service/s3): Endpoint template should be applied if region exists (#180)
4749 |
4750 | ## [v0.2.5] - 2022-03-22
4751 |
4752 | ### Added
4753 |
4754 | - feat: Adopt quick_xml to parse xml (#164)
4755 | - test: Add behavior test for not exist object (#166)
4756 | - feat: Allow user input region (#168)
4757 |
4758 | ### Changed
4759 |
4760 | - feat: Improve error handle for s3 service (#169)
4761 | - feat: Read error response for better debugging (#170)
4762 | - examples: Improve examples for s3 (#171)
4763 |
4764 | ## [v0.2.4] - 2022-03-18
4765 |
4766 | ### Added
4767 |
4768 | - feat: Add content_md5 and last_modified in metadata (#158)
4769 |
4770 | ### Changed
4771 |
4772 | - refactor: Say goodbye to aws-s3-sdk (#152)
4773 |
4774 | ## [v0.2.3] - 2022-03-14
4775 |
4776 | ### Added
4777 |
4778 | - feat: Export BoxedObjectStream so that users can implement Layer (#147)
4779 |
4780 | ## [v0.2.2] - 2022-03-14
4781 |
4782 | ### Fixed
4783 |
4784 | - services/fs: Refactor via tokio::fs (#142)
4785 | - fix: Stat root should return a dir object (#143)
4786 |
4787 | ## [v0.2.1] - 2022-03-10
4788 |
4789 | ### Added
4790 |
4791 | - \*: Implement logging support (#122)
4792 | - feat(service): Add service memory read support (#121)
4793 | - services: Add basic metrics (#127)
4794 | - services: Add full memory support (#134)
4795 |
4796 | ### Changed
4797 |
4798 | - benches: Refactor to support more read pattern (#126)
4799 | - services: Refactor into directories (#131)
4800 |
4801 | ### Docs
4802 |
4803 | - docs: Cover all public types and functions (#128)
4804 | - docs: Update README (#129)
4805 | - ci: Generate main docs to <opendal.apache.org> (#132)
4806 | - docs: Enrich README (#133)
4807 | - Add examples for object (#135)
4808 |
4809 | ## [v0.2.0] - 2022-03-08
4810 |
4811 | ### Added
4812 |
4813 | - RFC-112: Path Normalization (#112)
4814 | - examples: Add more examples for services and operations (#113)
4815 |
4816 | ### Changed
4817 |
4818 | - benches: Refactor to make code more readable (#104)
4819 | - object: Refactor ObjectMode into enum (#114)
4820 |
4821 | ## [v0.1.4] - 2022-03-04
4822 |
4823 | ### Added
4824 |
4825 | - services/s3: Implement anonymous read support (#97)
4826 | - bench: Add parallel_read bench (#100)
4827 | - services/s3: Add test for anonymous support (#99)
4828 |
4829 | ## [v0.1.3] - 2022-03-02
4830 |
4831 | ### Added
4832 |
4833 | - RFC and implementations for limited reader (#90)
4834 | - readers: Implement observe reader support (#92)
4835 |
4836 | ### Changed
4837 |
4838 | - deps: Bump s3 sdk to 0.8 (#87)
4839 | - bench: Improve logic (#89)
4840 |
4841 | ### New RFCs
4842 |
4843 | - [limited_reader](https://github.com/apache/opendal/blob/main/docs/rfcs/0090-limited-reader.md)
4844 |
4845 | ## [v0.1.2] - 2022-03-01
4846 |
4847 | ### Changed
4848 |
4849 | - object: Polish API for Metadata (#80)
4850 |
4851 | ## [v0.1.1] - 2022-03-01
4852 |
4853 | ### Added
4854 |
4855 | - RFC and implementation of feature Object Stream (#69)
4856 | - services/s3: Implement List support (#76)
4857 | - credential: Add Plain variant to allow more input (#78)
4858 |
4859 | ### Changed
4860 |
4861 | - backend/s3: Change from lazy_static to once_cell (#62)
4862 | - backend/s3: Enable test on AWS S3 (#64)
4863 |
4864 | ## [v0.1.0] - 2022-02-24
4865 |
4866 | ### Added
4867 |
4868 | - docs: Add README for behavior test and ops benchmarks (#53)
4869 | - RFC-0057: Auto Region (#57)
4870 | - backend/s3: Implement RFC-57 Auto Region (#59)
4871 |
4872 | ### Changed
4873 |
4874 | - io: Rename BoxedAsyncRead to BoxedAsyncReader (#55)
4875 | - \*: Refactor tests (#60)
4876 |
4877 | ## [v0.0.5] - 2022-02-23
4878 |
4879 | ### Fixed
4880 |
4881 | - io: Remove not used debug print (#48)
4882 |
4883 | ## [v0.0.4] - 2022-02-23
4884 |
4885 | ### Added
4886 |
4887 | - readers: Allow config prefetch size (#31)
4888 | - RFC-0041: Object Native API (#41)
4889 | - \*: Implement RFC-0041 Object Native API (#35)
4890 | - RFC-0044: Error Handle (#44)
4891 | - error: Implement RFC-0044 Error Handle (#43)
4892 |
4893 | ### Changed
4894 |
4895 | - services/fs: Use separate dedicated thread pool instead (#42)
4896 |
4897 | ## [v0.0.3] - 2022-02-16
4898 |
4899 | ### Added
4900 |
4901 | - benches: Implement benches for ops (#26)
4902 |
4903 | ### Changed
4904 |
4905 | - services/s3: Don't load_from_env if users already inputs (#23)
4906 | - readers: Improve seekable performance (#25)
4907 |
4908 | ## [v0.0.2] - 2022-02-15
4909 |
4910 | ### Added
4911 |
4912 | - tests: Implement behavior tests (#13)
4913 | - services/s3: Add support for endpoints without scheme (#15)
4914 | - tests: Implement integration tests for s3 (#18)
4915 |
4916 | ### Fixed
4917 |
4918 | - services/s3: Allow set endpoint and region while input value is valid (#17)
4919 |
4920 | ## v0.0.1 - 2022-02-14
4921 |
4922 | ### Added
4923 |
4924 | Hello, OpenDAL!
4925 |
4926 | [v0.55.0]: https://github.com/apache/opendal/compare/v0.54.1...v0.55.0
4927 | [v0.54.1]: https://github.com/apache/opendal/compare/v0.54.0...v0.54.1
4928 | [v0.54.0]: https://github.com/apache/opendal/compare/v0.53.3...v0.54.0
4929 | [v0.53.3]: https://github.com/apache/opendal/compare/v0.53.2...v0.53.3
4930 | [v0.53.2]: https://github.com/apache/opendal/compare/v0.53.1...v0.53.2
4931 | [v0.53.1]: https://github.com/apache/opendal/compare/v0.53.0...v0.53.1
4932 | [v0.53.0]: https://github.com/apache/opendal/compare/v0.52.0...v0.53.0
4933 | [v0.52.0]: https://github.com/apache/opendal/compare/v0.51.2...v0.52.0
4934 | [v0.51.2]: https://github.com/apache/opendal/compare/v0.51.1...v0.51.2
4935 | [v0.51.1]: https://github.com/apache/opendal/compare/v0.51.0...v0.51.1
4936 | [v0.51.0]: https://github.com/apache/opendal/compare/v0.50.2...v0.51.0
4937 | [v0.50.2]: https://github.com/apache/opendal/compare/v0.50.1...v0.50.2
4938 | [v0.50.1]: https://github.com/apache/opendal/compare/v0.50.0...v0.50.1
4939 | [v0.50.0]: https://github.com/apache/opendal/compare/v0.49.2...v0.50.0
4940 | [v0.49.2]: https://github.com/apache/opendal/compare/v0.49.1...v0.49.2
4941 | [v0.49.1]: https://github.com/apache/opendal/compare/v0.49.0...v0.49.1
4942 | [v0.49.0]: https://github.com/apache/opendal/compare/v0.48.0...v0.49.0
4943 | [v0.48.0]: https://github.com/apache/opendal/compare/v0.47.3...v0.48.0
4944 | [v0.47.3]: https://github.com/apache/opendal/compare/v0.47.2...v0.47.3
4945 | [v0.47.2]: https://github.com/apache/opendal/compare/v0.47.1...v0.47.2
4946 | [v0.47.1]: https://github.com/apache/opendal/compare/v0.47.0...v0.47.1
4947 | [v0.47.0]: https://github.com/apache/opendal/compare/v0.46.0...v0.47.0
4948 | [v0.46.0]: https://github.com/apache/opendal/compare/v0.45.1...v0.46.0
4949 | [v0.45.1]: https://github.com/apache/opendal/compare/v0.45.0...v0.45.1
4950 | [v0.45.0]: https://github.com/apache/opendal/compare/v0.44.2...v0.45.0
4951 | [v0.44.2]: https://github.com/apache/opendal/compare/v0.44.1...v0.44.2
4952 | [v0.44.1]: https://github.com/apache/opendal/compare/v0.44.0...v0.44.1
4953 | [v0.44.0]: https://github.com/apache/opendal/compare/v0.43.0...v0.44.0
4954 | [v0.43.0]: https://github.com/apache/opendal/compare/v0.42.0...v0.43.0
4955 | [v0.42.0]: https://github.com/apache/opendal/compare/v0.41.0...v0.42.0
4956 | [v0.41.0]: https://github.com/apache/opendal/compare/v0.40.0...v0.41.0
4957 | [v0.40.0]: https://github.com/apache/opendal/compare/v0.39.1...v0.40.0
4958 | [v0.39.0]: https://github.com/apache/opendal/compare/v0.38.1...v0.39.0
4959 | [v0.38.1]: https://github.com/apache/opendal/compare/v0.38.0...v0.38.1
4960 | [v0.38.0]: https://github.com/apache/opendal/compare/v0.37.0...v0.38.0
4961 | [v0.37.0]: https://github.com/apache/opendal/compare/v0.36.0...v0.37.0
4962 | [v0.36.0]: https://github.com/apache/opendal/compare/v0.35.0...v0.36.0
4963 | [v0.35.0]: https://github.com/apache/opendal/compare/v0.34.0...v0.35.0
4964 | [v0.34.0]: https://github.com/apache/opendal/compare/v0.33.3...v0.34.0
4965 | [v0.33.3]: https://github.com/apache/opendal/compare/v0.33.2...v0.33.3
4966 | [v0.33.2]: https://github.com/apache/opendal/compare/v0.33.1...v0.33.2
4967 | [v0.33.1]: https://github.com/apache/opendal/compare/v0.33.0...v0.33.1
4968 | [v0.33.0]: https://github.com/apache/opendal/compare/v0.32.0...v0.33.0
4969 | [v0.32.0]: https://github.com/apache/opendal/compare/v0.31.1...v0.32.0
4970 | [v0.31.1]: https://github.com/apache/opendal/compare/v0.31.0...v0.31.1
4971 | [v0.31.0]: https://github.com/apache/opendal/compare/v0.30.5...v0.31.0
4972 | [v0.30.5]: https://github.com/apache/opendal/compare/v0.30.4...v0.30.5
4973 | [v0.30.4]: https://github.com/apache/opendal/compare/v0.30.3...v0.30.4
4974 | [v0.30.3]: https://github.com/apache/opendal/compare/v0.30.2...v0.30.3
4975 | [v0.30.2]: https://github.com/apache/opendal/compare/v0.30.1...v0.30.2
4976 | [v0.30.1]: https://github.com/apache/opendal/compare/v0.30.0...v0.30.1
4977 | [v0.30.0]: https://github.com/apache/opendal/compare/v0.29.1...v0.30.0
4978 | [v0.29.1]: https://github.com/apache/opendal/compare/v0.29.0...v0.29.1
4979 | [v0.29.0]: https://github.com/apache/opendal/compare/v0.28.0...v0.29.0
4980 | [v0.28.0]: https://github.com/apache/opendal/compare/v0.27.2...v0.28.0
4981 | [v0.27.2]: https://github.com/apache/opendal/compare/v0.27.1...v0.27.2
4982 | [v0.27.1]: https://github.com/apache/opendal/compare/v0.27.0...v0.27.1
4983 | [v0.27.0]: https://github.com/apache/opendal/compare/v0.26.2...v0.27.0
4984 | [v0.26.2]: https://github.com/apache/opendal/compare/v0.26.1...v0.26.2
4985 | [v0.26.1]: https://github.com/apache/opendal/compare/v0.26.0...v0.26.1
4986 | [v0.26.0]: https://github.com/apache/opendal/compare/v0.25.2...v0.26.0
4987 | [v0.25.2]: https://github.com/apache/opendal/compare/v0.25.1...v0.25.2
4988 | [v0.25.1]: https://github.com/apache/opendal/compare/v0.25.0...v0.25.1
4989 | [v0.25.0]: https://github.com/apache/opendal/compare/v0.24.6...v0.25.0
4990 | [v0.24.6]: https://github.com/apache/opendal/compare/v0.24.5...v0.24.6
4991 | [v0.24.5]: https://github.com/apache/opendal/compare/v0.24.4...v0.24.5
4992 | [v0.24.4]: https://github.com/apache/opendal/compare/v0.24.3...v0.24.4
4993 | [v0.24.3]: https://github.com/apache/opendal/compare/v0.24.2...v0.24.3
4994 | [v0.24.2]: https://github.com/apache/opendal/compare/v0.24.1...v0.24.2
4995 | [v0.24.1]: https://github.com/apache/opendal/compare/v0.24.0...v0.24.1
4996 | [v0.24.0]: https://github.com/apache/opendal/compare/v0.23.0...v0.24.0
4997 | [v0.23.0]: https://github.com/apache/opendal/compare/v0.22.6...v0.23.0
4998 | [v0.22.6]: https://github.com/apache/opendal/compare/v0.22.5...v0.22.6
4999 | [v0.22.5]: https://github.com/apache/opendal/compare/v0.22.4...v0.22.5
5000 | [v0.22.4]: https://github.com/apache/opendal/compare/v0.22.3...v0.22.4
5001 | [v0.22.3]: https://github.com/apache/opendal/compare/v0.22.2...v0.22.3
5002 | [v0.22.2]: https://github.com/apache/opendal/compare/v0.22.1...v0.22.2
5003 | [v0.22.1]: https://github.com/apache/opendal/compare/v0.22.0...v0.22.1
5004 | [v0.22.0]: https://github.com/apache/opendal/compare/v0.21.2...v0.22.0
5005 | [v0.21.2]: https://github.com/apache/opendal/compare/v0.21.1...v0.21.2
5006 | [v0.21.1]: https://github.com/apache/opendal/compare/v0.21.0...v0.21.1
5007 | [v0.21.0]: https://github.com/apache/opendal/compare/v0.20.1...v0.21.0
5008 | [v0.20.1]: https://github.com/apache/opendal/compare/v0.20.0...v0.20.1
5009 | [v0.20.0]: https://github.com/apache/opendal/compare/v0.19.8...v0.20.0
5010 | [v0.19.8]: https://github.com/apache/opendal/compare/v0.19.7...v0.19.8
5011 | [v0.19.7]: https://github.com/apache/opendal/compare/v0.19.6...v0.19.7
5012 | [v0.19.6]: https://github.com/apache/opendal/compare/v0.19.5...v0.19.6
5013 | [v0.19.5]: https://github.com/apache/opendal/compare/v0.19.4...v0.19.5
5014 | [v0.19.4]: https://github.com/apache/opendal/compare/v0.19.3...v0.19.4
5015 | [v0.19.3]: https://github.com/apache/opendal/compare/v0.19.2...v0.19.3
5016 | [v0.19.2]: https://github.com/apache/opendal/compare/v0.19.1...v0.19.2
5017 | [v0.19.1]: https://github.com/apache/opendal/compare/v0.19.0...v0.19.1
5018 | [v0.19.0]: https://github.com/apache/opendal/compare/v0.18.2...v0.19.0
5019 | [v0.18.2]: https://github.com/apache/opendal/compare/v0.18.1...v0.18.2
5020 | [v0.18.1]: https://github.com/apache/opendal/compare/v0.18.0...v0.18.1
5021 | [v0.18.0]: https://github.com/apache/opendal/compare/v0.17.4...v0.18.0
5022 | [v0.17.4]: https://github.com/apache/opendal/compare/v0.17.3...v0.17.4
5023 | [v0.17.3]: https://github.com/apache/opendal/compare/v0.17.2...v0.17.3
5024 | [v0.17.2]: https://github.com/apache/opendal/compare/v0.17.1...v0.17.2
5025 | [v0.17.1]: https://github.com/apache/opendal/compare/v0.17.0...v0.17.1
5026 | [v0.17.0]: https://github.com/apache/opendal/compare/v0.16.0...v0.17.0
5027 | [v0.16.0]: https://github.com/apache/opendal/compare/v0.15.0...v0.16.0
5028 | [v0.15.0]: https://github.com/apache/opendal/compare/v0.14.1...v0.15.0
5029 | [v0.14.1]: https://github.com/apache/opendal/compare/v0.14.0...v0.14.1
5030 | [v0.14.0]: https://github.com/apache/opendal/compare/v0.13.1...v0.14.0
5031 | [v0.13.1]: https://github.com/apache/opendal/compare/v0.13.0...v0.13.1
5032 | [v0.13.0]: https://github.com/apache/opendal/compare/v0.12.0...v0.13.0
5033 | [v0.12.0]: https://github.com/apache/opendal/compare/v0.11.4...v0.12.0
5034 | [v0.11.4]: https://github.com/apache/opendal/compare/v0.11.3...v0.11.4
5035 | [v0.11.3]: https://github.com/apache/opendal/compare/v0.11.2...v0.11.3
5036 | [v0.11.2]: https://github.com/apache/opendal/compare/v0.11.1...v0.11.2
5037 | [v0.11.1]: https://github.com/apache/opendal/compare/v0.11.0...v0.11.1
5038 | [v0.11.0]: https://github.com/apache/opendal/compare/v0.10.0...v0.11.0
5039 | [v0.10.0]: https://github.com/apache/opendal/compare/v0.9.1...v0.10.0
5040 | [v0.9.1]: https://github.com/apache/opendal/compare/v0.9.0...v0.9.1
5041 | [v0.9.0]: https://github.com/apache/opendal/compare/v0.8.0...v0.9.0
5042 | [v0.8.0]: https://github.com/apache/opendal/compare/v0.7.3...v0.8.0
5043 | [v0.7.3]: https://github.com/apache/opendal/compare/v0.7.2...v0.7.3
5044 | [v0.7.2]: https://github.com/apache/opendal/compare/v0.7.1...v0.7.2
5045 | [v0.7.1]: https://github.com/apache/opendal/compare/v0.7.0...v0.7.1
5046 | [v0.7.0]: https://github.com/apache/opendal/compare/v0.6.3...v0.7.0
5047 | [v0.6.3]: https://github.com/apache/opendal/compare/v0.6.2...v0.6.3
5048 | [v0.6.2]: https://github.com/apache/opendal/compare/v0.6.1...v0.6.2
5049 | [v0.6.1]: https://github.com/apache/opendal/compare/v0.6.0...v0.6.1
5050 | [v0.6.0]: https://github.com/apache/opendal/compare/v0.5.2...v0.6.0
5051 | [v0.5.2]: https://github.com/apache/opendal/compare/v0.5.1...v0.5.2
5052 | [v0.5.1]: https://github.com/apache/opendal/compare/v0.5.0...v0.5.1
5053 | [v0.5.0]: https://github.com/apache/opendal/compare/v0.4.2...v0.5.0
5054 | [v0.4.2]: https://github.com/apache/opendal/compare/v0.4.1...v0.4.2
5055 | [v0.4.1]: https://github.com/apache/opendal/compare/v0.4.0...v0.4.1
5056 | [v0.4.0]: https://github.com/apache/opendal/compare/v0.3.0...v0.4.0
5057 | [v0.3.0]: https://github.com/apache/opendal/compare/v0.2.5...v0.3.0
5058 | [v0.2.5]: https://github.com/apache/opendal/compare/v0.2.4...v0.2.5
5059 | [v0.2.4]: https://github.com/apache/opendal/compare/v0.2.3...v0.2.4
5060 | [v0.2.3]: https://github.com/apache/opendal/compare/v0.2.2...v0.2.3
5061 | [v0.2.2]: https://github.com/apache/opendal/compare/v0.2.1...v0.2.2
5062 | [v0.2.1]: https://github.com/apache/opendal/compare/v0.2.0...v0.2.1
5063 | [v0.2.0]: https://github.com/apache/opendal/compare/v0.1.4...v0.2.0
5064 | [v0.1.4]: https://github.com/apache/opendal/compare/v0.1.3...v0.1.4
5065 | [v0.1.3]: https://github.com/apache/opendal/compare/v0.1.2...v0.1.3
5066 | [v0.1.2]: https://github.com/apache/opendal/compare/v0.1.1...v0.1.2
5067 | [v0.1.1]: https://github.com/apache/opendal/compare/v0.1.0...v0.1.1
5068 | [v0.1.0]: https://github.com/apache/opendal/compare/v0.0.5...v0.1.0
5069 | [v0.0.5]: https://github.com/apache/opendal/compare/v0.0.4...v0.0.5
5070 | [v0.0.4]: https://github.com/apache/opendal/compare/v0.0.3...v0.0.4
5071 | [v0.0.3]: https://github.com/apache/opendal/compare/v0.0.2...v0.0.3
5072 | [v0.0.2]: https://github.com/apache/opendal/compare/v0.0.1...v0.0.2
5073 |
```