- #1473 Enhance support for replayable instances of
InputStream
- Infer the replayability of
InputStream
usingmarkSupported()
when settingisOneShot
- Fix application of
:content-type
for event stream inputs in thesmithy.protocols#rpcv2Cbor
protocol
- #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
Accept
header 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
@ExperimentalApi
and could see backwards-incompatible API changes in future releases. - Add new
ISO_8601_FULL
timestamp 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
InputStream
toByteStream
and for writingByteStream
toOutputStream
- #843 Add support for prioritized protocol resolution
- #1302 Add support for
smithy.protocols#rpcv2Cbor
protocol
- 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.nonProxyHosts
when 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
Date
header value with a malformed date - #1081 Support
http.nonProxyHosts
JVM 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: identity
in requests. See the Disabling automatic response decompression breaking change announcement for more details.
- Remove "Content-Length" header for requests made with
aws-chunked
encoding
- 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
EnableAwsChunked
signing attribute
- Fix LogMode unintentionally enabling *WithBody modes
- Fix
LogRequestWithBody
andLogResponseWithBody
implyLogRequest
andLogResponse
respectively - #1198 Fix
PutObject
request whenLogMode
is 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
Document
type 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
Credentials
an 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
@required
members 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.retries
metrics. Rename allsmithy.client.*
metrics tosmithy.client.call.*
. - Upgrade Dokka to 1.9.0
- Expose immutable
SpanContext
onTraceSpan
- Upgrade Kotlin to 1.9.10
- Add skeleton implementation of a second KMP target
- Fix codegen of services with no operations
- Relocate
TlsVersion
to thenet
package. - Refactor codegen to place serialization and deserialization code into the
serde
package rather than thetransform
package. - Make
ByteArrayContent
and friendsinternal
and 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
internal
visibility - 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
@clientOptional
members - #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
maxConnections
for CRT HTTP engine
- BREAKING: Remove
maxConnections
from 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
maxConcurrency
HTTP engine setting and rename OkHttp specificmaxConnectionsPerHost
tomaxConcurrencyPerHost
.
- #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
BigInteger
andBigDecimal
in 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.Timeout
was 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
endpointProvider
in 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
Expect
header in SigV4
- #805 Fix a bug where system time jumps could cause unexpected retry behavior
- Refactor: move
EndpointProvider
out of http package intoaws.smithy.kotlin.runtime.client.endpoints
- Refactor: relocate
CachedCredentialsProvider
andCredentialsProviderChain
fromaws-sdk-kotlin
- Refactor: move
Document
type toaws.smithy.kotlin.runtime.content
package
- #839 Add an interceptor for adding
Expect: 100-continue
headers 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
maxConnectionsPerHost
configuration setting for OkHttp engines - Add configuration for retry policy on clients
- Stop logging "null" when exceptions are not present in trace events
- Correctly apply
maxConnections
configuration 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-chunked
requests
- 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
Closeable
supertype fromHttpClientEngine
interface. 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-chunked
content 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-chunked
requests 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
@InternalApi
marker 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
MIN
andMAX
accessors 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
ByteStream
s fromPath
s - 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