Skip to content

Releases: smithy-lang/smithy-rs

May 18th 2021

18 May 13:09
1b5d320
Compare
Choose a tag to compare
May 18th 2021 Pre-release
Pre-release

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 generates ByteStream instead. (#359)
  • Types represented by the Smithy Set type now generate Vec<T> in all cases (#270)
  • Bugfix: The .message()field of errors will now look for both message and Message 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 now Debug (#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:

Thanks!

May 6th Alpha Release

06 May 21:48
4b16e27
Compare
Choose a tag to compare
May 6th Alpha Release Pre-release
Pre-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

27 Apr 21:31
1d00f38
Compare
Choose a tag to compare
April 27th Alpha RC2 Pre-release
Pre-release

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 have is_xyz and as_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

07 Apr 14:54
cd21b6d
Compare
Choose a tag to compare
Pre-release

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 and HashMap aware: Builder objects now generate special case builders when the argument is a Set or HashMap (#267). These builders accept an element of the Vec or HashMap and append to the builder, creating a collection if it did not previously exist. If you need to pass a Vec or HashMap directly to the builder, use builder.set_xyz(Some(v)) instead of builder.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 for tokio::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

17 Mar 13:23
3f4f44c
Compare
Choose a tag to compare

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 the fluent feature which is enabled by default & brings in aws-hyper as a default transport. Breaking: To preserve the old behavior, add default-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 concrete ResponseBody 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

Retries, new client connection managment

09 Mar 20:11
5bb8b35
Compare
Choose a tag to compare

New this week:

  • Retry support. Note: If you are using client from the main branch be sure to upgrade. A major bug in the retry code landed although it was never in a release (#238). These support:
    • Modeled retries
    • The Retry-After header
    • Error Code based retries
    • Http Status based retries
  • Improved client connection management (#237). Previously, if you had an aws_hyper::Client it was generic in C, the underlying Http connection. This made storing a client in a struct a little cumbersome. We have introduced a Standard connection that can still be swapped internally for use in tests but avoids the need for client code to manage a generic parameter.
  • New usage examples. The "Movies" DynamoDB example has been ported to Rust and is now included in the examples folder. This also includes an example of a hand-written waiter. (#205)
  • Docs are now generated for union variants (previously missing)

Compatibility:

  • A number of pseudo internal APIs have been renamed. Consult the diff if you encounter issues.

Diff to last week: v0.0.3-cargo...v0.4-alpha.cargo

For Git based cargo users, use tag: v0.4-alpha.cargo

Tracing, User agent & Bugfixes

23 Feb 14:06
bbe1f0a
Compare
Choose a tag to compare
Pre-release

Hello! Welcome to our first regular installment of Tuesday releases.

New in this release:

  • Tracing integration: Thanks to @alistaim for his feedback during development. Tracing events are now emitted when operations are dispatched at the info level. At the DEBUG level, a separate span is created to track time spent parsing.
Feb 22 17:21:33.390  INFO send_operation
  { operation="GenerateRandom" 
    service="kms" 
    status="construction_failure" 
    Failed to load credentials from the credentials provider}: 
  smithy_http_tower::parse_response: close time.busy=36.0µs time.idle=158µs
  • User Agent Support: Two headers are now set on every request User-Agent and x-amz-user-agent. These identify the requester as the AWS Rust SDK & enable metrics on how many people are using the new SDK.

  • Bug fixes: Two issue were fixed:

    • Missing HOST setter caused signing to fail.
    • Endpoints were being resolved incorrectly

SDK for DynamoDB, KMS, Secrets Manager & Kinesis

19 Feb 15:44
cf55bca
Compare
Choose a tag to compare

Very excited for our first real release!

  • Environment variable & static credentials and region support
  • Support for DynamoDB, KMS, Secrets Manager & Kinesis
  • Request dispatch with Tokio/Hyper/Tower