- Upgrade to Kotlin 2.2.0
- #1413
⚠️ IMPORTANT: Refactor endpoint discoverer classes into interfaces so custom implementations may be provided
- #1311 Reimplement idle connection monitoring using
okhttp3.EventListenerinstead of now-internalokhttp3.ConnectionListener - #1608 Switch to always serialize defaults in requests. Previously fields were not serialized in requests if they weren't
@requiredand hadn't been changed from the default value. - #1413 Favor
endpointUrlinstead of endpoint discovery if both are provided
- Add telemetry provider configuration to
DefaultAwsSigner
- Explicitly qualify shape member names in smoke tests and protocol tests
- #1295 Enable building this project on JDK21 by setting -Xjdk-release flag
- Upgrade to Dokka 2.0.0
- Adds import to the symbols references when needed. This issue surfaced when building the protocol tests with the latest Smithy release
- Add
authSchemePreferenceconfiguration
- #1214 Improve handling of excepted socket exceptions when using connection polling
- Correctly handle sequential calls to
SingleFlightGroup
- Correctly generate paginators for item type names which collide with other used types (e.g., an item type
com.foo.Flowwhich conflicts withkotlinx.coroutines.flow.Flow)
- Idempotency tokens are no longer code-generated for nested structures. See: https://smithy.io/2.0/spec/behavior-traits.html#smithy-api-idempotencytoken-trait
- #1211 Fix OpenTelemetry span concurrency by using Span.asContextElement() instead of Span.makeCurrent()
- Add SigV4a support to the default AWS signer
- Increase maximum event stream message length to 24MB
- Fix errors in equality checks for
CaseInsensitiveMapwhich affectHeadersandValuesMapimplementations - fix: correct hash code calculation for case-insensitive map entries
- #1413 Favor
endpointUrlover endpoint discovery when provided
- Add telemetry provider configuration to
DefaultAwsSigner
- Ignore hop-by-hop headers when signing requests
- #1431
⚠️ IMPORTANT: AddretryStrategyconfiguration option for waiters
- #1321 Include more information when retry strategy halts early due to token bucket capacity errors
⚠️ IMPORTANT: Upgrade to Kotlin 2.1.0
- Fix serialization of CBOR blobs
- #1473 Enhance support for replayable instances of
InputStream
- Infer the replayability of
InputStreamusingmarkSupported()when settingisOneShot
- Fix application of
:content-typefor event stream inputs in thesmithy.protocols#rpcv2Cborprotocol
- #1214 Add support for connection idle monitoring for OkHttp via the engine config parameter
connectionIdlePollingInterval. Monitoring is disabled by default to match previous behavior. This monitoring will switch to enabled by default in an upcoming minor version release.
- Add
Acceptheader to all RpcV2Cbor requests - Correct documentation for
ByteStream.writeToOutputStream, addByteStream.appendToOutputStream
- Upgrade to Kotlin 2.0.21
- Upgrade to Smithy 1.51.0
- Fix paginator generator
List<*>&Map.Entry<String, *>nullability
- Add support for smoke tests
- Upgrade to kotlinx.coroutines 1.9.0
- Add OkHttp4Engine, an HTTP engine which uses okhttp3:4.x
- #1126 Correct deserialization of nested map/list types in unions
- Correctly mark more CRT exceptions as retriable
- #1326 Add missing support for pagination which terminates by repeating the token (instead of returning no token)
- #1087 Introduce new Micrometer telemetry provider. Note: This new provider (like the rest of the telemetry system) is marked
@ExperimentalApiand could see backwards-incompatible API changes in future releases. - Add new
ISO_8601_FULLtimestamp format for untruncated precision
- #1125 Correctly deserialize string-based enums in XML protocols
- Upgrade to Kotlin 2.0.10
- Close HttpStreams in CrtHttpEngine after call completion
⚠️ IMPORTANT: Upgrade to Kotlin 2.0.0
- Add support for string arrays in rules engine parameters
- Add support for operationContextParams trait
- Correctly redact sensitive data in lists and maps
- #1352 Add new Kotlin/JVM methods for converting
InputStreamtoByteStreamand for writingByteStreamtoOutputStream
- #843 Add support for prioritized protocol resolution
- #1302 Add support for
smithy.protocols#rpcv2Cborprotocol
- Upgrade Smithy to version 1.50.0
- Upgrade to aws-crt-kotlin v0.8.6
- Upgrade to ktlint v1.3.0
- #1330 Fix paginators not respecting start key
- Upgrade to Smithy 1.49.0
- #1098 Silently ignore empty/blank proxy host values from environment variables or system properties instead of throwing exceptions
- #1314 Fix serialization of URI-bound request parameters which are enums
- #1092 Respect
*wildcard inhttp.nonProxyHostswhen used as prefix or suffix
- Provide new abstract versions of telemetry classes to simplify the creation of custom telemetry providers
- #1293 Gracefully degrade in clock skew interceptor when receiving a
Dateheader value with a malformed date - #1081 Support
http.nonProxyHostsJVM system property
- #1211
⚠️ IMPORTANT: Add config finalization to service clients via new abstract factory class; apply clock skew interceptor to clients created viainvoke
⚠️ IMPORTANT: Upgrade to latest versions of OkHttp, Okio, Kotlin
- Correctly handle error correction of int enums
- Correctly codegen paginators for items in sparse lists
- #428
⚠️ IMPORTANT: Add new @SdkDsl DSL marker to all generated structure builders, clarifying DSL scopes when building complex types. See the Scope control applied to DSL builders breaking change announcement for more details.
- #900 Correctly generate waiters and paginators for resource operations
- #1281 Lazily resolve proxy environment variables
- #1061 Correctly handle async cancellation of call context in OkHttp engine
- Fix not generating waiters and paginators for operations that come from resources
- Decrease generated client artifact sizes by reducing the number of suspension points for operations and inlining commonly used HTTP builders
- #1045
⚠️ IMPORTANT: Fix codegen for map shapes which use string enums as map keys. See the Map key changes breaking change announcement for more details - #1041
⚠️ IMPORTANT: Disable OkHttp's transparent response decompression by manually specifyingAccept-Encoding: identityin requests. See the Disabling automatic response decompression breaking change announcement for more details.
- Remove "Content-Length" header for requests made with
aws-chunkedencoding
- Relocate AWS protocol codegen support from
aws-sdk-kotlin
- Bump smithy version to 1.45.0
- #1212 Add error metadata to ServiceException messages when a service-provided message isn't available
- #1212 Add request IDs to exception messages where available
- Add support for S3 Express One Zone
- #1220 Refactor XML deserialization to handle flat collections
- Refactor exception codegen to delegate message field to exception base class
- Add
EnableAwsChunkedsigning attribute
- Fix LogMode unintentionally enabling *WithBody modes
- Fix
LogRequestWithBodyandLogResponseWithBodyimplyLogRequestandLogResponserespectively - #1198 Fix
PutObjectrequest whenLogModeis set toLogRequestWithBody
- #1031 Correctly parse URLs which contain the
@symbol in the path and/or fragment (but not in the userinfo)
- Correctly serialize maps which use the
Documenttype as a value
- Ensure attributes are passed to credentials providers during resolution
- #1177 Correctly include custom ports in signing/presigning
- #1173 Correctly apply resolved endpoint to presigned requests
- Support non-ASCII header values in the default HTTP engine
- Bump smithy version to 1.42.0
- Generate KDoc samples from modeled examples
- #955 Added support for request compression
- Disable search and address accessibility violations in documentation
- Refactor codegen to move non AWS specific support into core
- #1008 Correctly sign special characters (e.g., "@") in URL paths
- Add a convenience function for creating
CachedCredentialsProvider
- Mark runtime as stable
- BREAKING: Overhaul URL APIs to clarify content encoding, when data is in which state, and to reduce the number of times data is encoded/decoded
- Add support for modeling defaults on BlobShapes, DocumentShapes, and TimestampShapes
- BREAKING: make
Credentialsan interface - Upgrade dependencies to their latest versions, notably Kotlin 1.9.20
- Enable resolving auth schemes via endpoint resolution
- Separate codegen project versioning
- Retry a better set of CRT HTTP exceptions
- Refactor codegen to support treating
@requiredmembers as non-nullable. - Detect and automatically correct clock skew to prevent signing errors
- Publish a BOM and a Version Catalog
- #1077 Prevent NoSuchMethodError when a slf4j1 logger is used with a slf4j2 classpath
- Treat all IO errors in OkHttp & CRT engines as retryable (e.g., socket errors, DNS lookup failures, etc.)
- Do not log intermediate signature calculations without explicit opt-in via
LogMode.LogSigning.
- BREAKING: refactor CaseUtils to better deal with plurals and other edge cases.
- Upgrade aws-crt-kotlin to latest version
- BREAKING: Remove
smithy.client.request.size,smithy.client.response.size,smithy.client.retriesmetrics. Rename allsmithy.client.*metrics tosmithy.client.call.*. - Upgrade Dokka to 1.9.0
- Expose immutable
SpanContextonTraceSpan - Upgrade Kotlin to 1.9.10
- Add skeleton implementation of a second KMP target
- Fix codegen of services with no operations
- Relocate
TlsVersionto thenetpackage. - Refactor codegen to place serialization and deserialization code into the
serdepackage rather than thetransformpackage. - Make
ByteArrayContentand friendsinternaland force consumers to go through companion object convenience functions.
- Generate paginators and waiters with a default parameter when input shape has all optional members
- Generate client side error correction for @required members
- #993 Provide SLF4J 1.x compatible fallback implementation
- Generate internal-only clients with
internalvisibility - Upgrade aws-crt-kotlin to 0.7.2
- bump aws-crt-kotlin to 0.7.1
- #612 Add conversions to and from
Flow<ByteArray>andByteStream - #617 Add conversion to InputStream from ByteStream
- Expose SDK ID in service companion object section writer.
- Correctly codegen defaults for enum shapes
- BREAKING: Refactor HttpCall and HttpResponse to not be data classes and make the call context more explicit
- #1029 Set X-Amz-Content-Sha256 header for unsigned payload and event stream operations by default
- BREAKING: prefix generated endpoint and auth scheme providers and cleanup auth scheme APIs
- Remove ClientOption and associated Builder
- #1016 Stop serializing default values for
@clientOptionalmembers - #1014 Correctly validate response length for empty bodies and byte array bodies
- #1001 Make CredentialsProviderChain accept list of CredentialProviders
- Upgrade kotlinx.coroutines to 1.7.3
- #968 Tweak metrics to better support service-level benchmarks
- Upgrade Kotlin to 1.8.22
- #745 Add a response length validation interceptor
- #880 Enforce
maxConnectionsfor CRT HTTP engine
- BREAKING: Remove
maxConnectionsfrom generic HTTP engine config since it can't be enforced for OkHttp.
- Add experimental support for OpenTelemetry based telemetry provider
- #146 Enable endpoint discovery
- #898 BREAKING: introduce
maxConcurrencyHTTP engine setting and rename OkHttp specificmaxConnectionsPerHosttomaxConcurrencyPerHost.
- #905 Retry connection reset errors in OkHttp engine
- #888 Correct URL encoding in endpoint resolution
- BREAKING: Refactor observability API and configuration. See the discussion post from the AWS SDK for Kotlin for more information.
- #947 Remove or lower visibility on several internal-only APIs
- #962 Properly deserialize XML flat maps
- #213 Add support for
BigIntegerandBigDecimalin Smithy models - #701 Breaking: Simplify mechanisms for setting/updating retry strategies in client config. See this discussion post for more details.
- #701 Add adaptive retry mode
- Fix modeled/implied default values for byte and short types
- #718 Support Smithy default trait
- #867 Add fully qualified name hint for collection types
- #828 Use correct precedence order for determining restJson error codes
- #938 Allow non-HTTPS URLs in presigning
- Allow empty I/O content
- Support non-standard pagination termination
- #755 Breaking: Refresh presigning APIs to simplify usage and add new capabilities. See this discussion post for more information.
- Breaking: Make HTTP engines configurable in client config during initialization and during
withCopy. See this discussion post for more information.
- Add support for bearer token auth schemes
- Add support for writing a file via PlatformProvider
- Fix usage of precalculated checksum values
- Refactor CredentialsProviderChain into generic/re-usable IdentityProviderChain
- #661 Breaking: Add HTTP engine configuration for minimum TLS version. See the BREAKING: Streamlined TLS configuration discussion post for more details.
- BREAKING: rename SdkLogMode to LogMode
- #432 Enable resolving LogMode from environment
- Fix incorrect waiter codegen due to dropped projection scope
- Fix broken shape cursor when generating acceptor subfield projections.
- #892 Fix broken enum-based waiters.
- Fix okhttp streaming body failing to retry
- Refactor environment settings and retry modes out of aws-sdk-kotlin
This release is identical to 0.17.2.
- Add support for retrying transient HTTP errors.
RetryErrorType.Timeoutwas renamed toRetryErrorType.Transient. - Enhance exceptions thrown during proxy config parsing
- Add support for H2_PRIOR_KNOWLEDGE (HTTP2 without TLS)
- Refactor endpoint resolution to be explicit in SdkOperationExecution and change order to match SRA.
- Only take contentLength if it's >= 0 in CRT HTTP engine
- #818 Allow requests with zero content length in the CRT HTTP engine
- BREAKING: Refactor identity and authentication APIs
- #752 Add intEnum support.
- Add code support for awsQuery-compatible error responses.
- Add clarifying documentation for
endpointProviderin client config.
- #868 Fix a bug in presigned URL generation when using a ServicePresignConfig object
- Add configurable reader-friendly name to generated SDK clients.
- #862 Skip signing the
Expectheader in SigV4
- #805 Fix a bug where system time jumps could cause unexpected retry behavior
- Refactor: move
EndpointProviderout of http package intoaws.smithy.kotlin.runtime.client.endpoints - Refactor: relocate
CachedCredentialsProviderandCredentialsProviderChainfromaws-sdk-kotlin - Refactor: move
Documenttype toaws.smithy.kotlin.runtime.contentpackage
- #839 Add an interceptor for adding
Expect: 100-continueheaders to HTTP requests
- Upgrade to Kotlin 1.8.10
- Add readFully extension method to SdkSource
- Add additional tracing events for connections in CRT engines
- Add new
maxConnectionsPerHostconfiguration setting for OkHttp engines - Add configuration for retry policy on clients
- Stop logging "null" when exceptions are not present in trace events
- Correctly apply
maxConnectionsconfiguration setting to OkHttp engines
- Refactor: break out service client runtime components into own module
- Refactor: split client side HTTP abstractions into new module. Move Url into core
- #446 Implement flexible checksums customization
- Add support for unsigned
aws-chunkedrequests
- Refactor: collapse io, hashing, and util modules into runtime-core module
- Allow config override for one or more operations with an existing service client.
- #781 Lazily open random access files to prevent exhausting file handles in highly concurrent scenarios
- #784 Include exceptions in logging from trace probes
- Upgrade dependencies
- Breaking Remove
Closeablesupertype fromHttpClientEngineinterface. See this discussion post for more information. - Upgrade Kotlin version to 1.8.0
- Refactor the way service client configuration is generated
- Add design document for per-op config.
- (runtime) Fix incorrect CRC32c output when trying to hash more than 7 bytes
- Move test utilities out of smithy-kotlin-codegen package into new smithy-kotlin-codegen-testutils package. This eliminates the need for the codegen package to declare runtime dependencies on JUnit and other test packages.
- Add HashingSource and HashingSink
- Use
aws-chunkedcontent encoding for streaming requests
- #759 Allow root trace spans to inherit their parent from current context
- #763 Respect @sensitive trait when applied to container shape
- #759 Fix
aws-chunkedrequests in the CRT HTTP engine
- BREAKING Refactor SDK I/O types. See this discussion post for more information
- Fix deserialization error for shapes with lists of document types
- BREAKING Implement codegen and update runtime for smithy-modeled endpoint resolution.
- #677 Add a new tracing framework for centralized handling of log messages and metric events and providing easy integration points for connecting to downstream tracing systems (e.g., kotlin-logging)
- #747 Add aws-chunked content encoding
- Implement common-Kotlin URL parsing and IPv4/v6 address validation.
- Remove erroneous
@InternalApimarker on CRT HTTP engine configuration class
- Allow using maven local for to test Smithy changes
- #753 Fix Android crash when OkHttp response body coroutine throws an exception
- Require values for HTTP query- and queryParams-bound parameters
- Add CRC32C hashing algorithm
- #733 Fix OkHttp engine crashing on Android when coroutine is cancelled while uploading request body
- Correct formurl serialization of empty lists
- add
MINandMAXaccessors for the Instant type - Add order parameter to ClientConfigProperty to be used for ordering configuration dependencies
- #733 Fix OkHttp engine crashing on Android when coroutine is cancelled while uploading request body
- #715 Enable intra-repo links in API ref docs
- #714 Properly parse timestamps when format override is applied to target shapes
- Fix inconsistent nullability semantics when generating struct members.
- #486 Enable configurability of the retry strategy through environment variables, system properties, and AWS profiles.
- Switch to a safer check to determine if all bytes have been read from an HTTP body
- #704 Disable throwing CancellationException in OkHttp engine's transferBody method
- Update/clarify changelog and commit instructions in the Contributing Guidelines
- Add support for full duplex HTTP exchanges
- Fix occasional stream leak due to race condition in CRT engine
- #678 Fix the calculation of file lengths on
ByteStreams fromPaths - Properly check if a member can be nullable
- Provide an explicit scope for request bound work
- #55 Upgrade aws-crt-kotlin dependency to fix Mac dlopen issue
- #601 Remove incorrect
.at end of license identifier header in source files.
- #683 Enhance CONTRIBUTING.md with additional details about required PR checks and how to run them locally
- Upgrade Smithy to 1.23.0, upgrade Smithy Gradle to 0.6.0
- Upgrade ktlint to 0.46.1.
- Fix ktlint issues and enable ktlint to run on all pull requests (even from forked repos)
- Upgrade Kotlin version to 1.7.10
- Bump CRT version.
- #665 Parse timestamps correctly when they are written in exponential notation (e.g.,
1.924390954E9)
- Enable Explicit API mode
- Breaking: Generate
List<T>members for all collection types. (Previously,Set<T>would be generated for lists decorated with@uniqueItems.) - Breaking: Move DSL overloads on generated clients to extension methods
- Add support for NOT, OR, and AND JMESPath expressions in waiters
- #123 Add support for smithy Document type.
- #599 Upgrade Smithy version to 1.22
- Add support for HTTP_REQUEST_EVENT chunked signing
- Upgrade Kotlin to 1.7
- (breaking) Use kotlin nullability to represent null Documents instead of an explicit subclass.
- #494 Add support for HTTP proxies
- #638 Fix ktor engine representation of empty payload
- #139 Validate that members bound to URI paths are non-null at object construction
- #629 Refactor to bind directly to okhttp and remove ktor as a middleman
- #619 Fix bugs with signing for query parameters containing '+' and '%'
- #657 Fix bug in URI encoding during signing when dealing with special characters like '<', '>', and '/'
- #617 Add a new non-CRT SigV4 signer and use it as the default. This removes the CRT as a hard dependency for using the SDK (although the CRT signer can still be used via explicit configuration on client creation).
- #473 Upgrade aws-crt-kotlin to latest
- add additional trace logging to default HTTP client engine
- #460 Enhance generic codegen to be more KMP-friendly
- #480 Upgrade to ktor-2.x
- upgrade kotlin to 1.6.21 and other deps to latest
- #129 Allow omission of input in service method calls where no parameters are required.
- Handle invalid (empty) description term headers when generating documentation.
- Don't escape markdown within preformat blocks in documentation.
- #136 Convert HTML to Markdown for improved Dokka compatibility.
- #575 Add support for getting all env vars and system properties (i.e., not just by a single key)
- Expose Byte.percentEncodeTo for downstream recursion detection.
- Refactor hashing functions into new subproject
- set Content-Type header on empty bodies with Ktor if canonical request includes it #630
- coroutine leak in ktor engine #628
NOTE: Do not use. No difference from 0.8.3
- only set Content-Type when body is non-empty #619
- implement KMP XML serde and remove XmlPull dependency #615
- respect hostname immutability in endpoints to disable host prefixing #612
- introduce opaque KMP default HTTP client engine #606
- bootstrap event streams #597
- temporarily handle httpchecksum trait the same as httpchecksumrequired #608
- add DSL overloads to paginator methods #591
- ignore redirect statuses in Ktor engine #590
- handle stream response exceptions properly in Ktor engine #589
- coroutine version bump to 1.6.0 and Duration stabilization #580
- dokka upgrade #588
- upgrade smithy to 1.17.0 #587
- implement waiters codegen #584
- Kotlin MP gradle file generation #577
- allow custom rendering of config properties #568
- event stream design #576
- Paginator codegen using Kotlin Flow #557
- allow nullable LazyAsyncValue; add test utils for constructing http traffic from JSON #561
- paginator generation for models that specify non-string cursor #566
- Fix smithy sdk no default client #564
- upgrade to Kotlin 1.6.10 #551
- allow query params to be set from resolved endpoints #554
- sha1 hash; expose json utils #548
- only retry client errors if metadata allows #560
WARNING: Beta releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- add call logging at DEBUG level #547
WARNING: Beta releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
WARNING: Alpha releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- Fix nested struct dsl builder function codegen #538
- remove leaky trace logging from XML serde #537
- fix rendering of middleware without configure #535
WARNING: Alpha releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- add convenience extension method for detecting if a Shape has the Streaming trait #512
- delegate when to set content-type to binding resolver; fix content-length for empty bodies #525
- Update regex to handle version segments greater than 9 #521
WARNING: Alpha releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- add endpoint configuration and middleware by default #507
WARNING: Alpha releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- emulate a real response body more closely to help catch subtle codegen bugs #505
- BREAKING: overhaul client config property generation #504
- Bump Kotlin and Dokka versions to latest release #506
WARNING: Alpha releases may contain bugs and no guarantee is made about API stability. They are not recommended for production use!
- remove gson from dependencies #496