Skip to content

Releases: smithy-lang/smithy-rs

June 30th, 2025

30 Jun 19:53
Compare
Choose a tag to compare

Internal changes only with this release

June 27th, 2025

27 Jun 18:12
Compare
Choose a tag to compare

New this release:

  • 🐛 (client) Fix hyper 1.x connection refused errors not marked as retryable
  • (client, smithy-rs#4186) Make Rpc V2 CBOR a compatible protocol for awsQuery using awsQueryCompatible trait

June 11th, 2025

11 Jun 20:12
Compare
Choose a tag to compare

Breaking Changes:

  • ⚠️ (all, smithy-rs#4154) Update MSRV to 1.85.0
  • 🐛⚠️ (server) Fixed SmithyRpcV2CBOR Router to properly respect case in service names, preventing routing failures for services with mixed-case service shape ID.

New this release:

  • 🐛 (client, smithy-rs#4165) Fix default supported protocols incorrectly ordered in ClientProtocolLoader.

June 3rd, 2025

03 Jun 17:42
Compare
Choose a tag to compare

New this release:

  • 🐛 (client, aws-sdk-rust#1272) Fix h2 GoAway errors not being retried by hyper legacy client

May 19th, 2025

19 May 21:56
Compare
Choose a tag to compare

New this release:

  • 🎉 (client, smithy-rs#4135) Introduce a new repeatedly() function to aws-smithy-mocks sequence builder to build mock rules that behave as an
    infinite sequence.

    let rule = mock!(aws_sdk_s3::Client::get_object)
        .sequence()
        .http_status(503, None)
        .times(2)        // repeat the last output twice before moving onto the next response in the sequence
        .output(|| GetObjectOutput::builder()
            .body(ByteStream::from_static(b"success"))
            .build()
        )
        .repeatedly()    // repeat the last output forever
        .build();
  • 🐛 (client, aws-sdk-rust#1291) Removing the optimize_crc32_auto feature flag from the crc-fast dependency of the aws-smithy-checksums crate since it was causing build issues for some customers.

  • 🐛 (client, smithy-rs#4137) Fix bug with enum codegen

    When the first enum generated has the @sensitive trait the opaque type
    underlying the UnknownVariant inherits that sensitivity. This means that
    it does not derive Debug. Since the module is only generated once this
    causes a problem for non-sensitive enums that rely on the type deriving
    Debug so that they can also derive Debug. We manually add Debug to
    the module so it will always be there since the UnknownVariant is not
    modeled and cannot be @sensitive.

  • 🐛 (client, smithy-rs#4135) fix simple rules behavior with RuleMode::MatchAny

May 15th, 2025

15 May 20:14
Compare
Choose a tag to compare

New this release:

Contributors
Thank you for your contributions! ❤

May 9th, 2025

09 May 01:53
Compare
Choose a tag to compare

Breaking Changes:

New this release:

  • 🐛🎉 (client, smithy-rs#4074, smithy-rs#3926) Promote aws-smithy-mocks-experimental to aws-smithy-mocks. This crate is now a recommended tool for testing
    generated SDK clients. This release includes several fixes as well as a new sequence builder API that can be
    used to test more complex scenarios such as retries.

    use aws_sdk_s3::operation::get_object::GetObjectOutput;
    use aws_sdk_s3::config::retry::RetryConfig;
    use aws_smithy_types::byte_stream::ByteStream;
    use aws_smithy_mocks::{mock, mock_client, RuleMode};
    
    #[tokio::test]
    async fn test_retry_behavior() {
        // Create a rule that returns 503 twice, then succeeds
        let retry_rule = mock!(aws_sdk_s3::Client::get_object)
            .sequence()
            .http_status(503, None)
            .times(2)                                            // Return 503 HTTP status twice
            .output(|| GetObjectOutput::builder()                // Finally return a successful output
                .body(ByteStream::from_static(b"success"))
                .build())
            .build();
    
        // Create a mocked client with the rule
        let s3 = mock_client!(
            aws_sdk_s3,
            RuleMode::Sequential,
            [&retry_rule],
            |client_builder| {
                client_builder.retry_config(RetryConfig::standard().with_max_attempts(3))
            }
        );
    
        // This should succeed after two retries
        let result = s3
            .get_object()
            .bucket("test-bucket")
            .key("test-key")
            .send()
            .await
            .expect("success after retries");
    
        // Verify the response
        let data = result.body.collect().await.expect("successful read").to_vec();
        assert_eq!(data, b"success");
    
        // Verify all responses were used
        assert_eq!(retry_rule.num_calls(), 3);
    }
  • 🐛 (all, smithy-rs#4117) Fix a bug where fields that were initially annotated with the required trait and later updated to use the addedDefault trait were not serialized when their values matched the default, even when the values were explicitly set. With this fix, fields with addedDefault are now always serialized.

May 2nd, 2025

02 May 17:13
Compare
Choose a tag to compare

Internal changes only with this release

April 23rd, 2025

23 Apr 22:19
Compare
Choose a tag to compare

Breaking Changes:

  • ⚠️ (client, smithy-rs#3776) AuthSchemeId no longer implements the Copy trait. This type has primarily been used by the Smithy code generator, so this change is not expected to affect users of SDKs.

New this release:

  • (all, smithy-rs#4050, @FalkWoldmann) Replace the once_cell crate with the std counterpart in Smithy runtime crates.
  • (client) remove redundant span attributes and improve log output format

Contributors
Thank you for your contributions! ❤

March 27th, 2025

27 Mar 17:59
Compare
Choose a tag to compare

Internal changes only with this release