Releases: smithy-lang/smithy-rs
February 16th, 2026
New this release:
- 🎉 (server, smithy-rs#4494) Automatically add
smithy.framework#ValidationExceptionto operations with constrained inputs. Previously, users had to either setaddValidationExceptionToConstrainedOperations: truein codegen settings or manually addValidationExceptionto each operation. Now this happens automatically unless a custom validation exception (a structure with the@validationExceptiontrait) is defined in the model. When using a custom validation exception, users must explicitly add it to each applicable operation. TheaddValidationExceptionToConstrainedOperationsflag is deprecated.
February 10th, 2026
Breaking Changes:
⚠️ (all) Upgrade MSRV to Rust 1.91.0.
February 1st, 2026
Breaking Changes:
-
⚠️ 🎉 (client, smithy-rs#4454, smithy-rs#4467, aws-sdk-rust#1389) Enable retries by default for AWS SDK clients usingBehaviorVersion::v2026_01_12()or later.Previously, retries were only enabled when constructing clients via
aws_config::load_from_env(). Clients constructed directly usingClient::from_conf()did not have retries enabled, which was inconsistent with AWS SDK behavior in other languages.This change affects AWS SDK clients constructed with
Client::from_conf()when usingBehaviorVersion::v2026_01_12()orBehaviorVersion::latest(). Generic Smithy clients (non-AWS) are not affected.To disable retries:
let config = aws_sdk_s3::Config::builder() .retry_config(RetryConfig::disabled()) // ... .build();
For more context, see the discussion on retry behavior.
New this release:
- 🎉 (client, smithy-rs#312, @AmitKulkarni23) Add support for Smithy bigInteger and bigDecimal types as string wrappers in aws-smithy-types, allowing users to parse with their preferred big number library.
- 🎉 (all, smithy-rs#4484) All Smithy-rs crates, for both servers and clients, now use the 1.x version of
thehttpcrate for all internal processing. Utility methods are still provided
for users to convert between SDK types and both of thehttp0.x and 1.x types. - 🐛 (client, smithy-rs#4500) Fix JMESPath integer literal handling in waiters to support Smithy 1.66.0, which parses integer literals as
Longinstead ofDouble.
Contributors
Thank you for your contributions! ❤
January 14th, 2026
New this release:
- (client) Add support for tracking observability business metrics (OBSERVABILITY_TRACING, OBSERVABILITY_OTEL_TRACING, OBSERVABILITY_OTEL_METRICS) in User-Agent headers when telemetry providers are configured.
- 🐛 (client, smithy-rs#4459, @lnj) Updated the
TokenBucketcreation to initialize the bucket with the user-providedTimeSourcefrom theConfig.
This fixes the bug in issue 4459 that caused failures
in WASM since the TokenBucket was being created with a defaultSystemTimebasedTimeSource - 🐛 (client, @svix-jbrown) Update the
lrudependency foraws-sdk-s3andrust-runtime - (client, smithy-rs#4469, @greenwoodcm) Add support for
aws-smithy-mocksinterceptor to handle concurrent requests. - 🐛 (client, smithy-rs#4413) Deprecate NoAuthRuntimePlugin, which does not properly configure the auth scheme option resolver for noAuth, and introduce
NoAuthRuntimePluginV2that does. - (client) Update crc-fast to 1.9
Contributors
Thank you for your contributions! ❤
December 16th, 2025
New this release:
- 🎉 (all, smithy-rs#4418, @AmitKulkarni23) Add
expect_number_as_string_or_nullfunction toaws-smithy-jsonthat extracts JSON numbers as strings without converting to u64/i64/f64. This preserves arbitrary precision for BigInteger and BigDecimal support, preventing precision loss for numbers larger than standard numeric types can represent. - 🎉 (client, @annahay) Add token bucket success rewards, time based refill, fractional tokens
Contributors
Thank you for your contributions! ❤
December 8th, 2025
Breaking Changes:
- 🐛
⚠️ (server, smithy-rs#4400, smithy-rs#4397) Fix issue where SigV4 envelopes for EventStreams did not support the initial message. This is technically a breaking change but should not break consumers in practice since the
resulting type has the same methods.
New this release:
- 🎉 (client, @annahay) Added methods in token bucket to indicate if bucket is full or empty
- 🐛 (client, smithy-rs#4427) Fix Content-Type and Accept headers for event streams in RPC v2 CBOR to set
application/vnd.amazon.eventstream - 🐛 (client, aws-sdk-rust#1390, @arielb1) In
legacy-rustls-ring, polyfillwith_native_rootsto userustls_native_certs 0.8to avoid
RUSTSEC-2025-0134. - 🐛 (all, @arielby) Publish an MSRV for all packages
Contributors
Thank you for your contributions! ❤
November 20th, 2025
New this release:
- (client, smithy-rs#4388, @greenwoodcm) Add
then_compute_responseto Smithy mock
Contributors
Thank you for your contributions! ❤
November 6th, 2025
New this release:
- (client) Bump crc-fast version to 1.6.0
- (client) Validate
Regionis a valid host label when constructing endpoints.
October 30th, 2025
Breaking Changes:
-
⚠️ 🎉 (server, smithy-rs#4356) Parse EventStream signed-frames for servers marked with@sigv4.This is a breaking change, because events from SigV4 services are wrapped in a SignedEvent frame.
-
⚠️ (all, smithy-rs#4367) Upgrade MSRV to Rust 1.88.0.
New this release:
-
🐛🎉 (server, smithy-rs#4352, smithy-rs#4345) Update smithy-rs servers to support sending
initial-responseevents over event streams.Prior to this change, event streams that had initial responses were unsupported. This change also adds a new codegen setting,
alwaysSendEventStreamInitialResponse.When this setting is set to
true, the generated server will unconditionally sendinitial-responseobjects, even when empty. This is required for compatibility with smithy-java as well as a few other clients.This setting defaults to false currently because smithy-rs based clients do not currently support this behavior.
"codegen": { "alwaysSendEventStreamInitialResponse": true // default false }
-
🎉 (all, @arielby) Include the protocol name in
package.metadata.smithy.protocolinCargo.toml
to allow easily figuring out which protocol was used to generate a crate. -
🐛🎉 (client, smithy-rs#4349, @arielby) Make Hyper idle pool timeout configurable, and fix the bug where pool timeouts
would not work if the client was built directly. -
🎉 (server, smithy-rs#4317, @jasgin) Adds validators and codegen support for the custom traits custom traits
@validationException,@validationMessage,
@validationFieldList,@validationFieldName, and@validationFieldMessagefor defining a custom validation exception
to use instead ofsmithy.framework#ValidationException. -
🐛 (client, smithy-rs#4346) Fix bug where httpQueryParams were silently dropped when no other query parameters were modeled.
-
🐛 (server, smithy-rs#4344, smithy-rs#4325) Fix bug where servers did not attempt to parse an
initial-request.initial-requestsmay be sent by clients both when they would contain valid data
and when they are empty. -
🐛 (client, smithy-rs#4352, smithy-rs#4353) Update clients to allow
initial-responseevents to be accepted on event streams, even when know modeled initial response exists.This is required for spec compliance, backwards compatibility, and compatibility with non-smithy-rs based servers that
MAY unconditionally sendinitial-responsemessages. -
🐛 (client, smithy-rs#4265, smithy-rs#4189) Adds new
with_test_defaults_v2()for all clients supporting region configuration which appliesus-east-1as default region if not set by user. This allowsaws-smithy-mocksto work for non AWS SDK generated clients. Also clarifytest-utilfeature requirement when usingaws-smithy-mocks.
Contributors
Thank you for your contributions! ❤
October 6th, 2025
New this release:
- 🎉 (server, smithy-rs#4321, @jasgin) Adds the custom traits
@validationException,@validationMessage,@validationFieldList,@validationFieldName, and@validationFieldMessage
for defining custom validation exceptions.
Contributors
Thank you for your contributions! ❤