Skip to content

Latest commit

 

History

History
268 lines (192 loc) · 15.5 KB

File metadata and controls

268 lines (192 loc) · 15.5 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

v0.13.0 - 2026-03-01

Tracking in #442.

MSRV of this minor version: 1.92.0

s3s

POST Object support:

  • Split out POST Object handling (#466)
  • Add POST Object success action (#467)
  • Add POST policy validation (#470)
  • Add support for Content-Type field in POST multipart requests (#500)
  • Fix file_size calculation for post policy validation (#497)
  • Fix content-length-range error code in post policy (#502)
  • Fix bucket validation from URL in post policy (#507)
  • Fix multipart parsing and anonymous post object (#508)

New S3 operations:

  • Add ListDirectoryBuckets operation (#520)
  • Add CreateSession operation (#511)

Region support:

  • Add strong type Region (#504)
  • Add region in VirtualHost (#481)
  • Pass region & service to request extensions (#503)

Axum / tower integration:

  • Implement generic tower::Service for S3Service to enable Axum integration (#451)
  • Add hyper feature http2 (#459)

Configuration:

  • Add S3ConfigProvider module with configurable parameters (#452)

Compatibility fixes:

  • Accept unquoted ETag values for S3 compatibility (#449)
  • Output ETag with literal quotes in XML (#499)
  • Improve S3 error response and parsing compatibility (#462)
  • Ensure Name precedes Contents in ListObjectsOutput XML (#480)
  • Fix SigV2: add 14 missing sub-resources to INCLUDED_QUERY (#517)

s3s-model

  • Add S3 error codes support (#515)

s3s-test

  • Add ignored tests and concurrent case execution (#516)

Testing

  • Add Ceph s3-tests E2E runner for s3s-proxy + MinIO with baseline-aware reporting (#464)
  • Classify s3tests results by S3 capability (#505)
  • Adopt date_time_format_test_suite from smithy-rs (#485)
  • Auto-discover boto3 regression tests (#510)
  • Add regression tests for previously fixed issues (#488)
  • Add access control tests for authenticated/anonymous access (#483)
  • Add unit tests for core s3s modules (#514, #519)

Documentation

  • Add comprehensive API documentation to s3s crate (#492)
  • Add and improve module-level docs across all modules (#513)

Docker

  • Migrate Docker releases from Docker Hub to GitHub Container Registry (ghcr.io) (#490)

v0.12.0 - 2025-12-22

Tracking in #270.

MSRV of this minor version: 1.86.0

s3s

BREAKING: Architecture refactoring:

BREAKING: Security improvements:

  • Add memory allocation limits to stream parsers (#413)
  • Fix unbounded memory allocation in http::body (#407)
  • Fix unbounded memory allocation in POST object (#370, #390)
  • Remove non-constant time PartialEq from SecretKey, use ConstantTimeEq (#319)

BREAKING: Content-Type validation changes (#389)

  • Allow custom content-type values
  • Allow empty content-type headers (#365)

BREAKING: Typed ETag support (#349, #403, #410)

  • Introduced strongly-typed ETag type replacing String for conditional request headers
  • Added ETagCondition type to support wildcard * in If-Match/If-None-Match headers
  • Implemented RFC 9110-compliant ETag comparison methods (strong and weak validation)
  • Fixed If-None-Match wildcard support (#433)

Configuration types now implement Default, Serialize, and Deserialize (#429, #435)

  • All Configuration types now derive or implement Default trait
  • Added serde support for all Configuration types and their dependencies

Signature verification enhancements:

  • AWS Signature V2 POST signature support (#358)
  • STS signature validation support (#418)
  • Normalize header values per AWS SigV4 specification (#393)
  • Fix status code for invalid x-amz-content-sha256 header (#430)
  • Handle multi-value headers in canonical requests (#408)
  • Fix single chunk upload signature validation (#369)
  • Add tests for PUT presigned URL signature verification (#402)

Protocol improvements:

  • Enhanced checksum support and content validation (#371)
  • Support streaming trailers (#59d6fd9)
  • Improve error logs for HTTP parsing failures (#366)
  • Fix multipart optional content_type (#355)
  • Fix complete_multipart_upload keep_alive (#348)
  • Ignore empty headers (#384)
  • Improve TrailingHeaders (#d4a9db2)
  • Host header fallback on HTTP/2 (#44c1002, #1746e26)
  • Display invalid content-type content (#386)
  • Add xml_attr field and related functionality for XML serialization (#299)
  • Optimize StrEnum XML deserialization to reduce allocations (#313)
  • Differentiate Get and List operations by id parameter (#392, #398)
  • Return MalformedXML for empty XML body in operations requiring it (#377)
  • Enhance extract_host to return host from URI if available (#431)
  • Custom validation option via S3ServiceBuilder (#342)

Cryptography:

  • Use latest RustCrypto releases (#354db52)
  • Extract checksum algorithms (#09c9374)
  • Use crc-fast instead of crc32fast & crc64fast-nvme (#380)

RFC 2047 support:

  • Add RFC 2047 non-ASCII header encoding/decoding support (#405)
  • Allow RFC2047-encoded metadata values (#434)

Examples:

  • Add HTTPS example with TLS support (#409)

s3s-fs

  • Fix ListObjectsV2 response fields causing OpenDAL hang (#351)
  • Preserve standard object attributes (#420)
  • Make metadata file writes atomic (#360)
  • Fix checksum for range requests (#285)
  • Enforce multipart upload limits (#281)
  • Fix trailer checksum (#ef0bd70)

s3s-e2e

  • Add comprehensive test coverage with enabled advanced features (#321)
  • Add multipart upload checksum support to e2e tests (#374)
  • Add test_put_object_with_checksum_algorithm (#6bf36f9)

codegen

  • Add MinIO feature support (#5c460a8)
  • Fix optional object attributes (#346)
  • Parse checksum_algorithm_header (#c8d42ed)
  • Derive serde for Tagging (#6faf16e)
  • Patch PartNumberMarker (#f8f28ea)
  • Ignore EntityTooLarge 405 (#0ed460e)
  • Timestamp derive more (#cdf9b15)
  • Fix CI failure by updating missing generated code from AWS data (#323)

Testing

  • Add comprehensive error case tests for aws_chunked_stream (#354, #423)
  • Add OpenDAL compatibility test for S3 API integration (#317)
  • Add crate s3s-wasm for WebAssembly support (#3c3d3cc, #452f2e3)

Documentation

  • Deploy cargo docs to GitHub Pages for main branch (#359)

Docker

  • Standalone, static-compiled Docker image for s3s-fs/e2e/proxy (AMD64 and ARM64) (#334)
  • Adjust Docker workflow for tag-based releases and weekly edge builds (#422)

Dependencies

  • Upgrade crypto dependencies (#379, #335)
  • Remove unnecessary yanked dependencies (#344)

v0.11.0 - 2025-03-28

Tracking in #267.

MSRV of this minor version: 1.85.0

s3s

BREAKING: Following the latest model definitions in aws-sdk-rust, s3s::dto is updated.

  • You may come across some type changes reported by rustc.
  • The migration is not hard but requires some time.

BREAKING: More request parameters are accepted via upgrading model definitions.

  • S3 preconditions (#241)
  • PutObject write_offset_bytes (#249)

BREAKING: Policy-based access control is supported in s3s::access (#161)

  • Add S3Access trait for access control.
  • Add S3ServiceBuilder::set_access.
  • Move S3Auth::check_access to S3Access::check.

BREAKING: Multi-domain is supported in s3s::host. (#175)

  • Add S3Host trait for parsing host header.
  • Change S3ServiceBuilder::set_base_domain to S3ServiceBuilder::set_host.
  • Add SingleDomain parser.
  • Add MultiDomain parser.

Custom route is supported in s3s::route (#195)

  • Add S3Route trait for custom route protected by signature verification.
  • Add S3ServiceBuilder::set_route.
  • Signature v4 supports AWS STS requests (#208)
  • Add example using axum web framework (#263)

Unstable minio branch:

  • Add minio branch for MinIO compatibility.
  • This branch is automatically force-rebased to the latest main branch.

Other notable changes

  • feat(s3s): export xml module (#189)
  • fix(s3s/ops): allow presigned url requests with up to 15 minutes clock skew (#216)
  • handle fmt message with implicit arguments in s3_error macro (#228)
  • feat(s3s/dto): ignore empty strings (#244)
  • feat(model): extra error codes (#255)
  • feat(s3s/checksum): add crc64nvme (#256)
  • feat(s3s/xml): support xmlns (#265)

s3s-model

  • Add crate s3s-model for S3 model definitions.

s3s-policy

  • Add crate s3s-policy for S3 policy language.
  • Add grammar model types for serialization and deserialization in s3s_policy::model.
  • Add PatternSet for matching multiple patterns in s3s_policy::pattern.

s3s-test

  • Add crate s3s-test for custom test framework.

s3s-e2e

  • Add crate s3s-e2e for S3 compatibility tests.