pypi / opendal
opendal
What changed in opendal 0.59, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
4 breaking1 deprecations8 new APIs and options7 performance1 behavior and defaults12 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initopendal 0.5933 changes
Breaking changes 4
Redundant async overloads are removed from the .NET binding, and Operator is simplified.
GooseFS rejects unknown write_type values instead of defaulting to MUST_CACHE.
confined_join and prepare_path now reject absolute paths.
Unknown write_type values are rejected instead of defaulting to MUST_CACHE.
Deprecations 1
The WebDAV service option enable_conditional_read is deprecated.
New APIs and options 8
Adds an implementation of Read and Seek for Buffer.
Adds Check to the .NET binding.
Adds Exists to the .NET binding.
The HDFS service adds copy support.
The Azure Blob service adds support for custom credential providers.
GooseFS exposes cache features.
A native MoonBit binding is initialized, enabling developers to use OpenDAL from MoonBit.
The .NET binding exposes user metadata and returns metadata from Write and Copy.
Performance 7
Resolved downloads are reused across readers.
AsyncFile writes avoid staging copies.
Synchronous File writes avoid staging copies.
AsyncFile writes avoid staging copies.
Synchronous File writes avoid staging copies.
Directory creation is coalesced by parent and name.
The Python binding releases the GIL during blocking File I/O.
Behavior and default changes 1
The Hugging Face resolve cache is opt-in.
Fixes and other changes 12
Retries now occur on HTTP status code 429.
Paths passed to Deleter::delete are normalized.
Pass the cancellation token by name: replace op.ListAsync(path, token) with op.ListAsync(path, cancellationToken: token).
OSS now prefers OIDC credentials over ECS metadata.
Prefetch is disabled for concurrent writes and copies.
Pass the cancellation token by name: replace op.ReadAsync(path, token) with op.ReadAsync(path, cancellationToken: token).
Pass the cancellation token by name: replace op.StatAsync(path, token) with op.StatAsync(path, cancellationToken: token).
Pass the cancellation token by name: replace op.WriteAsync(path, bytes, token) with op.WriteAsync(path, bytes, cancellationToken: token).
GooseFS read streams now return metadata.
Hugging Face follows case redirects instead of resolving the canonical repository ID.
The Java binding installs a default HTTP transport on load.
Seafile retries incomplete authentication initialization.