Releases: smithy-lang/smithy-rs
December 8th, 2023
New this release:
- 🎉 (all, smithy-rs#3121, smithy-rs#3295) All generated docs now include docsrs labels when features are required
- 🐛 (client, smithy-rs#3262) Loading native TLS trusted certs for the default HTTP client now only occurs if the default HTTP client is not overridden in config.
- (client, smithy-rs#3277) Improve the error messages for when auth fails to select an auth scheme for a request.
- (client, smithy-rs#3282) Fix documentation and examples on HyperConnector and HyperClientBuilder.
- (client, aws-sdk-rust#990, @declanvk) Expose local socket address from ConnectionMetadata.
- (all, smithy-rs#3294)
Number
TryInto
implementations now succesfully convert fromf64
to numeric types when no precision is lost. This fixes some deserialization issues where numbers like25.0
were sent whenByte
fields were expected.
Contributors
Thank you for your contributions! ❤
December 1st, 2023
New this release:
- (client, smithy-rs#3278)
RuntimeComponentsBuilder::push_identity_resolver
is now deprecated since it does not replace the existing identity resolver of a given auth scheme ID. UseRuntimeComponentsBuilder::set_identity_resolver
instead.
November 27th, 2023
New this release:
- (client, aws-sdk-rust#738, aws-sdk-rust#858) Retry additional classes of H2 errors (H2 GoAway & H2 ResetStream)
November 26th, 2023
AWS SDK changes only with this release
November 25th, 2023
AWS SDK changes only with this release
November 21st, 2023
Internal changes only with this release
November 17th, 2023
Breaking Changes:
-
⚠️ 🎉 (client, smithy-rs#3202) Add configurable stalled-stream protection for downloads.When making HTTP calls,
it's possible for a connection to 'stall out' and emit no more data due to server-side issues.
In the event this happens, it's desirable for the stream to error out as quickly as possible.
While timeouts can protect you from this issue, they aren't adaptive to the amount of data
being sent and so must be configured specifically for each use case. When enabled, stalled-stream
protection will ensure that bad streams error out quickly, regardless of the amount of data being
downloaded.Protection is enabled by default for all clients but can be configured or disabled.
See this discussion for more details. -
⚠️ (client, smithy-rs#3222) Types/functions that were deprecated in previous releases were removed. Unfortunately, some of these deprecations
were ignored by the Rust compiler (we found out later that#[deprecated]
onpub use
doesn't work). See
the deprecations removal list for more details. -
⚠️ (all, smithy-rs#3236) Conversions for HTTP request in aws-smithy-runtime-api are now feature gated behind thehttp-02x
feature
New this release:
- 🎉 (all, smithy-rs#3183, @HakanVardarr) Add
Display
impl forDateTime
. - 🐛 (client, smithy-rs#3229, aws-sdk-rust#960) Prevent multiplication overflow in backoff computation
- (client, smithy-rs#3226) Types/functions that were previously
#[doc(hidden)]
inaws-smithy-async
,aws-smithy-runtime-api
,aws-smithy-runtime
,aws-smithy-types
, and the SDK crates are now visible. For those that are not intended to be used directly, they are called out in their docs as such.
Contributors
Thank you for your contributions! ❤
November 16th, 2023
Breaking Changes:
⚠️ (client, smithy-rs#3205) SignableRequest::apply_to_request in aws_sigv4 has been renamedapply_to_request_http0x
November 15th, 2023
Breaking Changes:
-
⚠️ (all, smithy-rs#3138, smithy-rs#3148) Upgrade guidance for HTTP Request/Response changes. HTTP request types moved, and a new HTTP response type was added. -
⚠️ (all, smithy-rs#3139)Message
,Header
,HeaderValue
, andStrBytes
have been moved toaws-smithy-types
fromaws-smithy-eventstream
.Message::read_from
andMessage::write_to
remain inaws-smithy-eventstream
but they are converted to free functions with the namesread_message_from
andwrite_message_to
respectively. -
⚠️ (client, smithy-rs#3100, smithy-rs#3114) An operation output that supports receiving events from stream now provides a new-type wrappingaws_smithy_http::event_stream::receiver::Receiver
. The new-type supports the.recv()
method whose signature is the same asaws_smithy_http::event_stream::receiver::Receiver::recv
. -
⚠️ (all, smithy-rs#3151) Clients now require aBehaviorVersion
to be provided. For must customers,latest
is the best choice. This will be enabled automatically if you enable thebehavior-version-latest
cargo feature onaws-config
or on an SDK crate. For customers that wish to pin to a specific behavior major version, it can be set inaws-config
or when constructing the service client.async fn example() { // when creating a client let client = my_service::Client::from_conf(my_service::Config::builder().behavior_version(..).<other params>.build()); }
-
⚠️ (client, smithy-rs#3189) Remove deprecated error kind type aliases. -
⚠️ (client, smithy-rs#3191) Unhandled errors have been made opaque to ensure code is written in a future-proof manner. Where previously, you
might have:match service_error.err() { GetStorageError::StorageAccessNotAuthorized(_) => { /* ... */ } GetStorageError::Unhandled(unhandled) if unhandled.code() == Some("SomeUnmodeledErrorCode") { // unhandled error handling } _ => { /* ... */ } }
It should now look as follows:
match service_error.err() { GetStorageError::StorageAccessNotAuthorized(_) => { /* ... */ } err if err.code() == Some("SomeUnmodeledErrorCode") { // unhandled error handling } _ => { /* ... */ } }
The
Unhandled
variant should never be referenced directly.
New this release:
- 🎉 (client, aws-sdk-rust#780, smithy-rs#3189) Add
ProvideErrorMetadata
impl for serviceError
type. - 🐛 (client, smithy-rs#3182, @codypenta) Fix rendering of @error structs when fields have default values
Contributors
Thank you for your contributions! ❤
November 14th, 2023
New this release:
-
🎉 (all, smithy-rs#3173, smithy-rs#3171) Enable conversion from
BuildError
intoSdkError
&<service>::Error
. This allows customers to write the following code:async fn do_a_thing(client: &Client) -> Result<SdkError<SomeOperationError>> { client.run_operation().complex_field(ComplexField::builder() .a("a") .b("b") .build()? ).send().await?; }
Previously,
?
could not be used in this position.