Skip to content

Conversation

@vcjana
Copy link
Contributor

@vcjana vcjana commented Dec 1, 2025

Summary

Adds multi-architecture testing to smithy-rs CI to catch architecture-specific issues like crc-fast 1.4 SIGILL on ARM before merge.

Changes

  • Added test-runtime-architectures job to CI workflow
  • Tests runtime crates on 4 architectures:
    • x86_64-unknown-linux-gnu
    • x86_64-unknown-linux-musl
    • aarch64-unknown-linux-gnu (ARM)
    • aarch64-unknown-linux-musl (ARM)
  • Uses cross for cross-compilation and testing
  • Runs on every PR

Why its needed?

The crc-fast 1.4 SIGILL bug was only caught after release because smithy-rs only tested on x86_64. This change would have caught it before merge by testing on ARM.

Testing

  • Code compiles
  • YAML syntax is valid
  • CI passes on all architectures

@vcjana vcjana force-pushed the crc-fast branch 2 times, most recently from bcc2ced to 24b01eb Compare December 1, 2025 23:06
@github-actions
Copy link

github-actions bot commented Dec 1, 2025

A new generated diff is ready to view.

A new doc preview is ready to view.

@github-actions
Copy link

github-actions bot commented Dec 2, 2025

A new generated diff is ready to view.

A new doc preview is ready to view.

@github-actions
Copy link

github-actions bot commented Dec 3, 2025

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@vcjana vcjana marked this pull request as ready for review December 3, 2025 22:24
@vcjana vcjana requested review from a team as code owners December 3, 2025 22:24
@github-actions
Copy link

github-actions bot commented Dec 4, 2025

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

Copy link
Contributor

@landonxjames landonxjames left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This generally looks good. Couple of questions in the comments.

The last thing that I would like to see is a test run with the new workflow with crc-fast pinned to the problematic version (1.4 I think?) that fails. It would be nice to have some proof that these new tests would have caught the issue we saw that caused us to pin the dependency in the first place.

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@vcjana vcjana mentioned this pull request Dec 9, 2025
@vcjana
Copy link
Contributor Author

vcjana commented Dec 9, 2025

Created test PR #4446 with crc-fast pinned to 1.4. Once CI runs, it should demonstrate the ARM tests failing with SIGILL, proving these architecture tests would have caught the issue before merge.

As suggested in review, aws-smithy-http-client should be tested across
architectures since its dependencies (rustls, aws-lc) have arch-specific
implementations.
@github-actions
Copy link

github-actions bot commented Dec 9, 2025

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@github-actions
Copy link

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@github-actions
Copy link

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@github-actions
Copy link

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

Copy link
Contributor

@landonxjames landonxjames left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still looks fine, but looking at #4446 it does not appear to have failed due to the expected SIGILL, but on an unrelated runtime version check.

I believe this is because you set crc-fast = "1.4". In the Rust ecosystem the default dependency behavior allows semver compatible updates, so crc-fast = "1.4" really means:

1.4.0 <= crc-fast version <2.0.0

You can read more about how to specify dependencies in Cargo here.

For the test of this we would want to set crc-fast = "=1.4"

Note I'm trying to work around the Docker image layer issue we are hitting again in #4456 so hopefully you can be unblocked on testing tomorrow

@github-actions
Copy link

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

- Use cross build instead of test for reliability and speed
- Add --locked flag for reproducible cross installation
- Add Rust caching to speed up subsequent CI runs
@github-actions
Copy link

A new generated diff is ready to view.

  • AWS SDK (ignoring whitespace)
  • No codegen difference in the Client Test
  • No codegen difference in the Server Test
  • No codegen difference in the Server Test Python
  • No codegen difference in the Server Test Typescript

A new doc preview is ready to view.

@github-actions
Copy link

github-actions bot commented Jan 8, 2026

A new generated diff is ready to view.

A new doc preview is ready to view.

@github-actions
Copy link

github-actions bot commented Jan 8, 2026

A new generated diff is ready to view.

A new doc preview is ready to view.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants