Releases: durch/rust-s3
v0.37.1
What's Changed
- Priorize ECS/EKS credentials over EC2's when available by @regar42 in #441
- fix: Add me-central-1 support to the client by @stevendotdelahunty in #436
- 0.37.1 by @durch in #443
New Contributors
- @regar42 made their first contribution in #441
- @stevendotdelahunty made their first contribution in #436
Full Changelog: v0.37.0...v0.37.1
v0.37.0
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
v0.36.0
Full Changelog: v0.35.1...v.0.36.0
v0.36.0-beta.2
Full Changelog: v.0.36.0-beta.1...v0.36.0-beta.2
v.0.36.0-beta.1
- CORS rule support
Full Changelog: v0.36.0-alpha.5...v.0.36.0-beta.1
v0.36.0-alpha.5
- Introduces automatic retries for all requests
Full Changelog: v0.36.0-alpha.3...v0.36.0-alpha.5
v0.36.0-alpha.3
Full Changelog: v0.36.0-alpha.2...v0.36.0-alpha.3
v0.36.0-alpha.2
- Major change - dropping
hyperin favour ofreqwestas a tokio backend http client lib
Full Changelog: v0.36.0-alpha.1...v0.36.0-alpha.2
v0.36.0-alpha.1
Full Changelog: v0.35.1...v0.36.0-alpha.1
v0.35.1
What's Changed
- 0.35.0-alpha.1 by @durch in #392
- Feat: bucket lifecycle configuration impl by @durch in #394
- Add bytes_mut and into_bytes for ResponseData by @kristianhasselknippe in #397
New Contributors
- @kristianhasselknippe made their first contribution in #397
Full Changelog: v0.34.0...v0.35.0