Skip to content

Commit de86d87

Browse files
committed
Merge remote-tracking branch 'origin/landonxjames/schema-json-fuzz' into landonxjames/schema-streaming
2 parents 7ef728f + 8144ff5 commit de86d87

150 files changed

Lines changed: 5977 additions & 1860 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changelog/1772279983.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

.changelog/1773800575.md

Lines changed: 0 additions & 14 deletions
This file was deleted.

.changelog/1773867889.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.changelog/1774378481.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.changelog/301541451224909.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

.changelog/bdd-endpoint-perf.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
applies_to:
3+
- aws-sdk-rust
4+
- client
5+
authors:
6+
- lnj
7+
references: []
8+
breaking: false
9+
new_feature: false
10+
bug_fix: false
11+
---
12+
13+
Optimized BDD endpoint resolution performance by replacing HashMap-based auth schemes with a typed `EndpointAuthScheme` struct, inlining the BDD evaluation loop, and adding a single-entry endpoint cache. The BDD resolver is now up to 49% faster than the original implementation and outperforms the tree-based resolver on most benchmarks.

.changelog/file-visibility.md

Lines changed: 0 additions & 14 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,55 @@ jobs:
371371
uses: ./smithy-rs/.github/actions/docker-build
372372
with:
373373
action: run-canary
374-
action-arguments: ${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} ${{ steps.creds.outputs.aws-access-key-id }} ${{ steps.creds.outputs.aws-secret-access-key }} ${{ steps.creds.outputs.aws-session-token }}
374+
action-arguments: ${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} ${{ steps.creds.outputs.aws-access-key-id }} ${{ steps.creds.outputs.aws-secret-access-key }} ${{ steps.creds.outputs.aws-session-token }} x86_64
375+
376+
canary-arm:
377+
name: Canary (aarch64)
378+
if: ${{ inputs.run_canary }}
379+
needs: generate
380+
runs-on: ubuntu-24.04-arm
381+
timeout-minutes: 30
382+
permissions:
383+
id-token: write
384+
contents: read
385+
steps:
386+
- uses: actions/checkout@v4
387+
with:
388+
path: smithy-rs
389+
ref: ${{ inputs.git_ref }}
390+
- name: Download artifacts
391+
uses: actions/download-artifact@v4
392+
with:
393+
name: artifacts-generate-aws-sdk
394+
path: artifacts-generate-aws-sdk
395+
- name: Extract artifacts
396+
run: tar xfz artifacts-generate-aws-sdk/artifacts-generate-aws-sdk.tar.gz
397+
- name: Install Rust
398+
uses: dtolnay/rust-toolchain@stable
399+
with:
400+
targets: aarch64-unknown-linux-musl
401+
- name: Install build dependencies
402+
run: sudo apt-get update && sudo apt-get install -y musl-tools cmake perl clang pkg-config
403+
- name: Configure credentials
404+
id: creds
405+
uses: aws-actions/configure-aws-credentials@v4
406+
with:
407+
role-to-assume: ${{ secrets.CANARY_GITHUB_ACTIONS_ROLE_ARN }}
408+
role-session-name: GitHubActions
409+
aws-region: us-west-2
410+
output-credentials: true
411+
- name: Run canary
412+
run: |
413+
export RUST_STABLE_VERSION="$(rustc --version | cut -d' ' -f2)"
414+
# Install the pinned toolchain from rust-toolchain.toml and add musl target
415+
rustup toolchain install 1.91.1
416+
rustup target add aarch64-unknown-linux-musl wasm32-wasip2 --toolchain 1.91.1
417+
./smithy-rs/tools/ci-scripts/run-canary \
418+
${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} \
419+
${{ steps.creds.outputs.aws-access-key-id }} \
420+
${{ steps.creds.outputs.aws-secret-access-key }} \
421+
${{ steps.creds.outputs.aws-session-token }} \
422+
aarch64
375423
376424
# This is always a failing job since forked repositories do not have necessary repository secrets
377425
# to run the PR bot workflow or the canary workflow

.github/workflows/manual-canary.yml

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,53 @@ jobs:
117117
uses: ./smithy-rs/.github/actions/docker-build
118118
with:
119119
action: run-canary
120-
action-arguments: ${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} ${{ steps.creds.outputs.aws-access-key-id }} ${{ steps.creds.outputs.aws-secret-access-key }} ${{ steps.creds.outputs.aws-session-token }}
120+
action-arguments: ${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} ${{ steps.creds.outputs.aws-access-key-id }} ${{ steps.creds.outputs.aws-secret-access-key }} ${{ steps.creds.outputs.aws-session-token }} x86_64
121+
122+
canary-arm:
123+
name: Canary (aarch64)
124+
needs:
125+
- generate
126+
- get-pr-info
127+
runs-on: ubuntu-24.04-arm
128+
timeout-minutes: 30
129+
permissions:
130+
id-token: write
131+
contents: read
132+
steps:
133+
- uses: actions/checkout@v4
134+
with:
135+
path: smithy-rs
136+
ref: ${{ inputs.commit_sha }}
137+
- name: Download artifacts
138+
uses: actions/download-artifact@v4
139+
with:
140+
name: artifacts-generate-aws-sdk-for-canary
141+
path: artifacts-generate-aws-sdk-for-canary
142+
- name: Extract artifacts
143+
run: tar xfz artifacts-generate-aws-sdk-for-canary/artifacts-generate-aws-sdk-for-canary.tar.gz
144+
- name: Install Rust
145+
uses: dtolnay/rust-toolchain@stable
146+
with:
147+
targets: aarch64-unknown-linux-musl
148+
- name: Install build dependencies
149+
run: sudo apt-get update && sudo apt-get install -y musl-tools cmake perl clang pkg-config
150+
- name: Configure credentials
151+
id: creds
152+
uses: aws-actions/configure-aws-credentials@v4
153+
with:
154+
role-to-assume: ${{ secrets.CANARY_GITHUB_ACTIONS_ROLE_ARN }}
155+
role-session-name: GitHubActions
156+
aws-region: us-west-2
157+
output-credentials: true
158+
- name: Run canary
159+
run: |
160+
export RUST_STABLE_VERSION="$(rustc --version | cut -d' ' -f2)"
161+
# Install the pinned toolchain from rust-toolchain.toml and add musl target
162+
rustup toolchain install 1.91.1
163+
rustup target add aarch64-unknown-linux-musl wasm32-wasip2 --toolchain 1.91.1
164+
./smithy-rs/tools/ci-scripts/run-canary \
165+
${{ secrets.CANARY_STACK_CDK_OUTPUTS_BUCKET_NAME }} \
166+
${{ steps.creds.outputs.aws-access-key-id }} \
167+
${{ steps.creds.outputs.aws-secret-access-key }} \
168+
${{ steps.creds.outputs.aws-session-token }} \
169+
aarch64

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,28 @@
11
<!-- Do not manually edit this file. Use the `changelogger` tool. -->
2+
April 16th, 2026
3+
================
4+
**Breaking Changes:**
5+
- :bug::warning: (client) Now files written by the SDK (like credential caches) are created with file
6+
permissions `0o600` on unix systems. This could break customers who were relying
7+
on the visibility of those files to other users on the system.
8+
9+
**New this release:**
10+
- :tada: (client, [smithy-rs#4521](https://github.com/smithy-lang/smithy-rs/issues/4521)) Add `sigv4a_signing_region_set` client configuration. Supports programmatic, environment variable (`AWS_SIGV4A_SIGNING_REGION_SET`), and shared config file (`sigv4a_signing_region_set`) configuration. User-provided values now take priority over endpoint-resolved values.
11+
- :bug: (client, [smithy-rs#4340](https://github.com/smithy-lang/smithy-rs/issues/4340), @ysaito) Prevent memory leak in identity cache when overriding credentials via `config_override`. Each `config_override` that sets a credentials provider now uses an operation-scoped identity cache instead of the shared client-level cache, preventing unbounded partition growth. Additionally, the client-level identity cache now enforces a configurable `max_partitions` cap (default: 64) as a safety net.
12+
- :bug: (client, [smithy-rs#4596](https://github.com/smithy-lang/smithy-rs/issues/4596), [aws-sdk-rust#1423](https://github.com/awslabs/aws-sdk-rust/issues/1423), @annahay4) Fix `TokenBucket::is_full()` and `TokenBucket::is_empty()` to convert fractional tokens into whole permits before checking availability. Previously, accumulated fractional tokens from success rewards were not accounted for, causing these methods to return incorrect results.
13+
- :bug: (client, [smithy-rs#4587](https://github.com/smithy-lang/smithy-rs/issues/4587)) Upgrade `sha2` from 0.10.x to 0.11.x. The previous version defaulted to software-based compression instead of hardware-accelerated compression, resulting in lower throughput. The new version automatically detects and uses hardware-accelerated instructions when available.
14+
- (client, [smithy-rs#4591](https://github.com/smithy-lang/smithy-rs/issues/4591)) Optimize `Encoder::str()` and `Encoder::blob()` by collapsing multiple `write_all` calls into a single buffer operation. This bypasses minicbor's generic writer to write the CBOR type+length header and payload directly into the underlying `Vec<u8>`, improving performance on serialization-heavy hot paths.
15+
- :bug: (all, [smithy-rs#4572](https://github.com/smithy-lang/smithy-rs/issues/4572), @jlizen) Re-export `EventStreamSender` from generated SDK crates when the service uses event streams, so users do not need a direct dependency on `aws-smithy-http` to construct event stream responses.
16+
- :bug: (client, [smithy-rs#4599](https://github.com/smithy-lang/smithy-rs/issues/4599)) Fix waiter codegen failure when JMESPath `&&` or `||` expressions have non-boolean operands (e.g., a list field used as a truthiness check). Non-boolean types are now coerced to booleans using JMESPath truthiness rules: arrays and strings check `!is_empty()`, all other non-null types are truthy.
17+
- :bug: (client, [smithy-rs#4431](https://github.com/smithy-lang/smithy-rs/issues/4431), @jlizen) Add missing `EventOrInitial`, `EventOrInitialMarshaller`, and `EventStreamSender::into_inner` to `aws-smithy-legacy-http` event_stream module, fixing compilation failures in generated SDKs that reference these types.
18+
19+
**Contributors**
20+
Thank you for your contributions! ❤
21+
- @annahay4 ([aws-sdk-rust#1423](https://github.com/awslabs/aws-sdk-rust/issues/1423), [smithy-rs#4596](https://github.com/smithy-lang/smithy-rs/issues/4596))
22+
- @jlizen ([smithy-rs#4431](https://github.com/smithy-lang/smithy-rs/issues/4431), [smithy-rs#4572](https://github.com/smithy-lang/smithy-rs/issues/4572))
23+
- @ysaito ([smithy-rs#4340](https://github.com/smithy-lang/smithy-rs/issues/4340))
24+
25+
226
March 16th, 2026
327
================
428
**New this release:**

0 commit comments

Comments
 (0)