Release v0.4.0 - #210
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
0.3.0to0.4.0inCargo.tomlahead of the 0.4.0 tag and crates.io publish.No code changes beyond the version bump. Release notes below for review — I'll use these as the GitHub release body once the tag is cut.
Proposed release notes (v0.4.0)
Breaking changes
TryInto<BucketName>/TryInto<ObjectKey>/ etc., so&str/String/ pre-validated typed values all work at call sites. Validation happens once at the boundary. (Refactor string parameters to typed wrapper structs #200)TypedBuilderderive macro — builder surface is regenerated; some method shapes may differ. (use crate TypedBuilder for builders #184)Arc<Box<dyn CredentialProvider>>toArc<dyn CredentialProvider>. (fix: replace Arc<Box<...>> credential-provider with Arc<...> #164)DeleteObjectsbatching lowered from 10,000 to 1,000 keys per request to match the documented S3 limit. (fix: batch DeleteObjects at 1000 keys, not 10_000 #208)New features
examples/load_balancing_with_hooks.rs)Performance
stat_objectnow issues HEAD instead of GET. (performance optimizations: Signing key caching, stat_object to use HEAD #197)Vec<Bytes>allocation during HTTP request body preparation. ( Removed unnecessary intermediate Vec<Bytes> allocation in HTTP request body #192)Fixes
/as the URL path. (fix: set URL path to "/" for virtual-hosted-style S3 bucket requests #205)AppendObjectContentmultipart append. (fix: correct two bugs in AppendObjectContent multipart append #206)rustlscan now be used alongsidesha2andhmac. (fix: allow to use rustls while also using sha2 and hmac #175)delete_and_purge_bucketdeletes objects recursively. (bugfix: delete_and_purge_bucket add recursive delete #166)Housekeeping / internal
tokio/tokio-stream/tokio-utildependencies; library internals now use runtime-agnosticfutures-util/async-streamcombinators. Tokio is still pulled in transitively viareqwest/hyper, so a tokio-compatible runtime is still required at the call site. (moved Tokio runtime from general dependency to dev dependency #167)copy_objectdocumentation. (Add documentation about source/destination of copy_object #172).github/copilot-instructions.md. (Add .github/copilot-instructions.md for repository onboarding #191)Full commit range:
v0.3.0..release-v0.4.0(26 commits).Test plan
cargo fmt --all --checkcleancargo clippy --all-targets— zero warningscargo test --docpassescargo test --lib --binspassescargo build --all-targetssucceedscargo publish --dry-run(to run before tagging)v0.4.0after merge and publish to crates.io./deploy-docs.shto refresh rustdoc ongh-pages