Skip to content

v0.37.0

Choose a tag to compare

@durch durch released this 16 Sep 21:56
· 6 commits to master since this release
771be16

Release 0.37.0 - Performance, Reliability, and API Improvements

This release brings significant improvements in performance, memory management, and reliability, along with several bug fixes and new features.

🚀 Performance Improvements

Multipart Upload Optimizations

Memory-bounded parallelism: Implemented smart memory management that prevents OOM errors during large file uploads by dynamically adjusting concurrency based on available memory
Streaming improvements: Added AsyncRead implementation for ResponseDataStream enabling efficient streaming of large objects
🐛 Bug Fixes

Endpoint and URL Handling

Fixed trailing slash issues (#429): Custom endpoints with trailing slashes no longer cause 403 signature mismatch errors
Fixed standard port preservation (#419): Presigned URLs now correctly preserve explicit standard ports (80/443) for proper signature validation
Fixed LocalStack compatibility (#411): Added RUST_S3_SKIP_LOCATION_CONSTRAINT environment variable for LocalStack support
API Correctness

Fixed delete_bucket_lifecycle (#414): Corrected critical bug that was sending DeleteBucket instead of DeleteBucketLifecycle command, preventing potential data loss
Fixed content-length header (#428): Excluded content-length header for ListBuckets command
Fixed SSL config propagation (#415): Bucket::exists() now properly honors dangerous SSL configurations
Fixed sync implementation: Corrected Bucket::get_object_range_to_writer() sync implementation (#413)
✨ New Features

Builder Pattern for PUT Operations

Added a fluent builder API for PUT operations with custom headers:
bucket.put_object_builder("/my-file.txt", b"Hello, World!")
.with_content_type("text/plain")
.with_cache_control("public, max-age=3600")?
.with_metadata("author", "john-doe")?
.execute()
.await?

Region Support

Added support for R2 EU jurisdiction endpoints (#409)
Improved custom region handling with better error messages
📚 Documentation

Added comprehensive CLAUDE.md file for AI-assisted development guidelines
Clarified ETag handling behavior in response_data for PUT operations (#430)
Improved inline documentation for multipart operations