Releases: smithy-lang/smithy-rs
June 22th, 2021: CloudWatch Logs and Bug Fixes
This week, we've added CloudWatch Logs support and fixed several bugs in the generated S3 clients.
There are a few breaking changes this week.
New this Week
- 🎉 Add support for CloudWatch Logs (#526)
⚠️ Breaking Change: Theset_*
functions on generated Builders now always take anOption
(#506)⚠️ Breaking Change: Unions with Documents will see the inner document type change fromOption<Document>
toDocument
(#520)⚠️ Breaking Change: Theas_*
functions on unions now returnResult
rather thanOption
to clearly indicate what the actual value is (#527)- Add more S3 examples, and improve SNS, SQS, and SageMaker examples. Improve example doc comments (#490, #508, #509, #510, #511, #512, #513, #524)
- 🐛 Bugfix: Show response body in trace logs for calls that don't return a stream (#514)
- 🐛 Bugfix: Correctly parse S3's GetBucketLocation response (#516)
- 🐛 Bugfix: Correctly URL-encode tilde characters before SigV4 signing (#519)
- 🐛 Bugfix: Fix S3 PutBucketLifecycle operation by adding support for the
@httpChecksumRequired
Smithy trait (#523) - 🐛 Bugfix: Correctly parse non-list headers with commas in them (#525, @eagletmt)
Internal Changes
- Reduce name collisions in generated code (#502)
- Combine individual example packages into per-service example packages with multiple binaries (#481, #490)
- Re-export HyperAdapter in smithy-client (#515, @zekisherif)
- Add serialization/deserialization benchmark for DynamoDB to exercise restJson1 generated code (#507)
Contributions
Thank you for your contributions! ❤️
June 15th, 2021: CloudFormation, SageMaker, EC2, and SES
Smithy-rs now has codegen support for all AWS services! This week, we've added CloudFormation, SageMaker, EC2, and SES. More details below.
New this Week
- 🎉 Add support for CloudFormation (#500, @alistaim)
- 🎉 Add support for SageMaker (#473, @alistaim)
- 🎉 Add support for EC2 (#495)
- 🎉 Add support for SES (#499)
- Add support for the EC2 Query protocol (#475)
- Generate fluent builders for all smithy-rs clients (#496, @jonhoo)
- 🐛 Bugfix: RFC-3339 timestamps (
date-time
format in Smithy) are now formatted correctly (#479, #489) - 🐛 Bugfix: Union and enum variants named Self no longer cause compile errors in generated code (#492)
Internal Changes
- Combine individual example packages into per-service example packages with multiple binaries (#477, #480, #482, #484, #485, #486, #487, #491)
- Work towards JSON deserialization overhaul (#474)
- Make deserializer function naming consistent between XML and JSON deserializers (#497)
Contributors:
Thanks!!
June 8th, 2021: 9 new services added
Starting this week, smithy-rs now has codegen support for all AWS services except EC2. This week we’ve added MediaLive, MediaPackage, SNS, Batch, STS, RDS, RDSData, Route53, and IAM. More details below.
New this Week
- 🎉 Add support for MediaLive and MediaPackage (#449, @Alastaim)
- 🎉 Add support for SNS (#450)
- 🎉 Add support for Batch (#452, @alistaim)
- 🎉 Add support for STS. Note: This does not include support for an STS-based credential provider although an example is provided. (#453)
- 🎉 Add support for RDS (#455) and RDS-Data (#470). (@LMJW)
- 🎉 Add support for Route53 (#457, @alistaim)
- Support AWS Endpoints & Regions. With this update, regions like
iam-fips
andcn-north-1
will now resolve to the correct endpoint. Please report any issues with endpoint resolution. (#468) - 🐛 Bugfix: Primitive numerics and booleans are now filtered from serialization when they are 0 and not marked as required. This resolves issues where maxResults needed to be set even though it is optional. (#451)
- 🐛 Bugfix: S3 Head Object returned the wrong error when the object did not exist (#460, fixes #456)
Internal Changes
- Remove unused key “build” from smithy-build.json and Rust settings (#447)
- Split SDK CI jobs for faster builds & reporting (#446)
- Fix broken doc link in JSON serializer (@LMJW)
- Work towards JSON deserialization overhaul (#454, #462)
Contributors:
Thanks!!
June 1st, 2021: SQS & ECS support
New this week:
- 🎉 Add support for SQS. SQS is our first service to use the awsQuery protocol. Please report any issues you may encounter.
- 🎉 Add support for ECS.
- Breaking Change: Refactored
smithy_types::Error
to be more flexible. Internal fields ofError
are now private and can now be accessed accessor functions. (#426) ByteStream::from_path
now acceptsimplications AsRef<Path>
(@LMJW)- Add support for S3 extended request id (#429)
- Add support for the awsQuery protocol. smithy-rs can now add support for all services except EC2.
- Bugfix: Timestamps that fell precisely on minute boundaries were not properly formatted (#435)
- Improve documentation for
ByteStream
& addpub use
(#443) - Add support for
EndpointPrefix
used bys3::WriteGetObjectResponse
(#420)
Smithy Internals
- Rewrite JSON serializer (#411, #423, #416, #427)
- Remove dead “rootProject” setting in
smithy-build.json
- Bugfix: Idempotency tokens were not properly generated when operations were used by resources
Contributors:
Thanks!
May 25th 2021: S3 & SSM support
New This Week
- 🎉 Add S3 support. S3 is the first protocol to use our new XML serializers which increases the likelihood of undiscovered issues. In addition, virtual addressing, dualstack and transfer acceleration are not currently supported. Please try it out and let us know if you run into any problems! (#398) 🎉
- 🎉 Add support for SSM. SSM was prioritized based on your votes—Please keep voting for the services and feature most important to you! (#393) 🎉
- Add request/response tracing. These can be enabled via tracing subscriber by setting:
RUST_LOG='smithy_http_tower::dispatch=trace,smithy_http::middleware=trace'
(#397) - Bugfix: Generated service docs were missing at the module level (#404)
ByteStream
can now be created fromPath
andFile
viaByteStream::from_path
(#412)- Example code now uses
write_all_buf
(#408, @LMJW) - The
Authorization
andx-amz-security-token
headers are now marked as sensitive and will be omitted from logs even when full request/response tracing is enabled
Updates to internals:
- Full restXML protocol support
- Enum variants are now properly escaped (#388)
x-amz-useragent
andx-amz-date
headers are now signed (required for S3)
Contributors:
This release will be built into aws-sdk-rust:v0.0.5-alpha
Thanks!
May 18th 2021
New this week:
- 🎉 Add support for AWS Lambda (#361, @richardhboyd) 🎉
- Breaking change (technically, no services impacted): Add support for streaming request bodies. When
Blob
is marked as a streaming request type, the SDK now generatesByteStream
instead. (#359) - Types represented by the Smithy
Set
type now generateVec<T>
in all cases (#270) - Bugfix: The
.message()
field of errors will now look for bothmessage
andMessage
in the model (#374) - Add support for the
AWS_REGION
environment variable. (#362) - The request type generated by the fluent builders, eg.
dynamodb.list_tables()
is nowDebug
(#377, @declanvk)
Updates to Internals:
- Recursive Inline dependencies are supported via a fixed-point algorithm
- restXML deserialization support
- Overhaul of URL encoding during request serialization, fixing several bugs (#368)
- Update signer to avoid cloning credentials (#341)
Contributors:
- @richardhboyd
- @declanvk
- @jdisanti2019
- @rcoh
Thanks!
May 6th Alpha Release
New this week:
- Fix stack overflow in
SdkBody
Debug implementation (#343) - Upgrade to Smithy 1.7. This adds support for several new API Gateway endpoints (#340)
- Add support for streaming response bodies. This is currently only used in Polly (#338)
- Added code examples for Kinesis (#306)
Contributors:
Thanks!
April 27th Alpha RC2
New this week
- Added QLDB & QLDB Session support (@marcbowes)
- New examples for secrets manager. (@nataibi, @Doug-AWS )
- Examples for Kinesis, DynamoDb & Amazon Polly (@Doug-AWS )
- Added support for RusTLS. This is now the default. You can switch back to native-tls with
default-features = false, features = ["native-tls", "client"]
- Unions like
AttributeValue
now haveis_xyz
andas_xyz
methods. (@barbu110) - Bugfix: An empty body could cause an empty H2 frame to be sent.
- Clients are now
Clone + Debug
(@shinglyu) - Generated crates have been renamed to
aws-sdk-*
- Credentials are now zero'd when they are dropped
- Event stream operations which wouldn't work are not generated
Contributors
This release includes work from the folks below. Thanks for your contributions!
Public Alpha RC1 4-7-2021
New this week:
- Support for 2 new services (& the restJson protocol!): This release adds support for ApiGateway and Amazon Polly. As these are the first two services with the new protocol, bugs are more likely than usual. Please let us know if you hit any issues. New examples have been added.
- New error shapes: Each generated service now generates a
<service_name>::Error
struct. This is a superset of all errors that the service emits & can be used to write unified error handling that works across all operations on the same service:#[tokio::main] async fn main() -> Result<(), dynamodb::Error> { let client = dynamodb::Client::from_env(); client.list_tables().send().await?; // All operation errors impl `Into<dynamodb::Error>` }
- Breaking Change: Generated builders are
Vec
andHashMap
aware: Builder objects now generate special case builders when the argument is aSet
orHashMap
(#267). These builders accept an element of theVec
orHashMap
and append to the builder, creating a collection if it did not previously exist. If you need to pass aVec
orHashMap
directly to the builder, usebuilder.set_xyz(Some(v))
instead ofbuilder.xyz(v)
. - Breaking Change: High level clients are now exported in
<servicename>::Client
instead of<servicename>::fluent::Client
- Bugfix: The futures produced by clients were not
Send
which made them unusable fortokio::spawn
. This has been resolved.
The generated code has been pushed to https://github.com/awslabs/smithy-rs/releases/tag/v0.6-rc1.cargo
Fluent client, error refactoring, concrete response bodies
New this week:
- A "fluent" ergonomic client is available in
dynamodb::fluent
(and for all other services). At the cost of some flexibility, this offers an API with fewer moving parts that is generally a little more ergonomic to use. The old API is still available. This is enabled via thefluent
feature which is enabled by default & brings inaws-hyper
as a default transport. Breaking: To preserve the old behavior, adddefault-features = false
- Breaking change: Errors have been refactored to expose their "kind" separate from metadata. In general, you can simply add
.kind
to existing code. - SdkResult/SdkError are no longer generic in
B
, the response body. Instead, a concreteResponseBody
is provided by the SDK that is optimized for the specific use case.
Diff to last week: v0.4-alpha.cargo...v0.5-alpha.cargo