Skip to content

September 20th, 2022

Pre-release
Pre-release

Choose a tag to compare

@aws-sdk-rust-ci aws-sdk-rust-ci released this 20 Sep 12:44
· 2329 commits to main since this release

Breaking Changes:

  • ⚠ (client, smithy-rs#1603, aws-sdk-rust#586) aws_smithy_types::RetryConfig no longer implements Default, and its new function has been replaced with standard.
  • ⚠ (client, smithy-rs#1603, aws-sdk-rust#586) Client creation now panics if retries or timeouts are enabled without an async sleep implementation.
    If you're using the Tokio runtime and have the rt-tokio feature enabled (which is enabled by default),
    then you shouldn't notice this change at all.
    Otherwise, if using something other than Tokio as the async runtime, the AsyncSleep trait must be implemented,
    and that implementation given to the config builder via the sleep_impl method. Alternatively, retry can be
    explicitly turned off by setting max_attempts to 1, which will result in successful client creation without an
    async sleep implementation.
  • ⚠ (client, smithy-rs#1603, aws-sdk-rust#586) The default_async_sleep method on the Client builder has been removed. The default async sleep is
    wired up by default if none is provided.
  • ⚠ (client, smithy-rs#976, smithy-rs#1710) Removed the need to generate operation output and retry aliases in codegen.
  • ⚠ (client, smithy-rs#1715, smithy-rs#1717) ClassifyResponse was renamed to ClassifyRetry and is no longer implemented for the unit type.
  • ⚠ (client, smithy-rs#1715, smithy-rs#1717) The with_retry_policy and retry_policy functions on aws_smithy_http::operation::Operation have been
    renamed to with_retry_classifier and retry_classifier respectively. Public member retry_policy on
    aws_smithy_http::operation::Parts has been renamed to retry_classifier.

New this release:

  • 🎉 (client, smithy-rs#1647, smithy-rs#1112) Implemented customizable operations per RFC-0017.

    Before this change, modifying operations before sending them required using lower-level APIs:

    let input = SomeOperationInput::builder().some_value(5).build()?;
    
    let operation = {
        let op = input.make_operation(&service_config).await?;
        let (request, response) = op.into_request_response();
    
        let request = request.augment(|req, _props| {
            req.headers_mut().insert(
                HeaderName::from_static("x-some-header"),
                HeaderValue::from_static("some-value")
            );
            Result::<_, Infallible>::Ok(req)
        })?;
    
        Operation::from_parts(request, response)
    };
    
    let response = smithy_client.call(operation).await?;

    Now, users may easily modify operations before sending with the customize method:

    let response = client.some_operation()
        .some_value(5)
        .customize()
        .await?
        .mutate_request(|mut req| {
            req.headers_mut().insert(
                HeaderName::from_static("x-some-header"),
                HeaderValue::from_static("some-value")
            );
        })
        .send()
        .await?;
  • (client, smithy-rs#1735, @vojtechkral) Lower log level of two info-level log messages.

  • (all, smithy-rs#1710) Added writable property to RustType and RuntimeType that returns them in Writable form

  • (all, smithy-rs#1680, @ogudavid) Smithy IDL v2 mixins are now supported

  • 🐛 (client, smithy-rs#1715, smithy-rs#1717) Generated clients now retry transient errors without replacing the retry policy.

  • 🐛 (all, smithy-rs#1725, @sugmanue) Correctly determine nullability of members in IDLv2 models

Contributors
Thank you for your contributions! ❤