{"id":13472481,"url":"https://github.com/smithy-lang/smithy-rs","last_synced_at":"2026-02-16T22:23:18.302Z","repository":{"id":37077322,"uuid":"308027791","full_name":"smithy-lang/smithy-rs","owner":"smithy-lang","description":"Code generation for the AWS SDK for Rust, as well as server and generic smithy client generation.","archived":false,"fork":false,"pushed_at":"2025-03-22T00:30:47.000Z","size":87906,"stargazers_count":534,"open_issues_count":314,"forks_count":205,"subscribers_count":26,"default_branch":"main","last_synced_at":"2025-03-22T01:26:14.593Z","etag":null,"topics":["aws","aws-sdk-rust","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smithy-lang.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-28T13:37:42.000Z","updated_at":"2025-03-17T20:57:09.000Z","dependencies_parsed_at":"2023-11-10T13:19:32.589Z","dependency_job_id":"debde28d-5c26-4785-ae06-7d6d814ac7d5","html_url":"https://github.com/smithy-lang/smithy-rs","commit_stats":{"total_commits":2595,"total_committers":119,"mean_commits":21.80672268907563,"dds":0.7610789980732178,"last_synced_commit":"89881abd3df80e9b6fd59790d7c02e2b9a6dd45c"},"previous_names":["smithy-lang/smithy-rs","awslabs/smithy-rs"],"tags_count":146,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fsmithy-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fsmithy-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fsmithy-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fsmithy-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smithy-lang","download_url":"https://codeload.github.com/smithy-lang/smithy-rs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245563039,"owners_count":20635907,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","aws-sdk-rust","rust"],"created_at":"2024-07-31T16:00:55.015Z","updated_at":"2026-02-11T00:05:02.269Z","avatar_url":"https://github.com/smithy-lang.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"Smithy Rust [![CI on Branch `main`](https://github.com/smithy-lang/smithy-rs/actions/workflows/ci-main.yml/badge.svg)](https://github.com/smithy-lang/smithy-rs/actions/workflows/ci-main.yml)\n==================================================================================\n\nSmithy code generators for Rust that generate clients, servers, and the entire AWS SDK.\nThe latest unreleased SDK build can be found in [aws-sdk-rust/next](https://github.com/awslabs/aws-sdk-rust/tree/next).\n\n[Design documentation](https://smithy-lang.github.io/smithy-rs/design/)\n\n**All internal and external interfaces are considered unstable and subject to change without notice.**\n\nSetup\n-----\n\n1. `./gradlew` will setup gradle for you. JDK 17 is required.\n2. Running tests requires a working Rust installation. See [Rust docs](https://www.rust-lang.org/learn/get-started) for\ninstallation instructions on your platform. The MSRV (**M**inimum **S**upported **R**ust **V**ersion) for the crates in this project is `stable-2`, i.e. the current `stable` Rust version and the prior two versions. Older versions may work.\n\nDevelopment\n-----------\n\nFor development, pre-commit hooks make it easier to pass automated linting when opening a pull request. Setup:\n```bash\nbrew install pre-commit # (or appropriate for your platform: https://pre-commit.com/)\npre-commit install\n```\n\nProject Layout\n--------------\n\n* `aws`: AWS specific codegen \u0026 Rust code (signing, endpoints, customizations, etc.)\n  Common commands:\n  * `./gradlew :aws:sdk:assemble`: Generate (but do not test / compile etc.) a fresh SDK into `sdk/build/aws-sdk`\n  * `./gradlew :aws:sdk:sdkTest`: Generate \u0026 run all tests for a fresh SDK. (Note that these tests require Go to be\n  installed for FIP support to compile properly)\n  * `./gradlew :aws:sdk:{cargoCheck, cargoTest, cargoDocs, cargoClippy}`: Generate \u0026 run specified cargo command.\n* `codegen-core`: Common code generation logic useful for clients and servers\n* `codegen-client`: Smithy client code generation\n* `codegen-client-test`: Smithy protocol test generation \u0026 integration tests for Smithy client whitelabel code\n* [`design`](design): Design documentation. See the [design/README.md](design/README.md) for details about building / viewing.\n* `codegen-server`: Smithy server code generation\n* `codegen-server-test`: Smithy protocol test generation \u0026 integration tests for Smithy server whitelabel code\n* `examples`: A collection of server implementation examples\n\nTesting\n-------\n\nRunning all of smithy-rs's tests can take a very long time, so it's better to know which parts\nto test based on the changes being made, and allow continuous integration to find other issues\nwhen posting a pull request.\n\nIn general, the components of smithy-rs affect each other in the following order (with earlier affecting later):\n\n1. `rust-runtime`\n2. `codegen` and `codegen-server`\n3. `aws/rust-runtime`\n4. `aws/codegen-aws-sdk`\n\nSome components, such as `codegen-client-test` and `codegen-server-test`, are purely for testing other components.\n\n### Testing `rust-runtime` and `aws/rust-runtime`\n\nTo test the `rust-runtime` crates:\n\n```bash\n# Run all Rust tests for `rust-runtime/` (from repo root):\ncargo test --manifest-path=rust-runtime/Cargo.toml\n# Run clippy for `rust-runtime/` (from repo root):\ncargo clippy --manifest-path=rust-runtime/Cargo.toml\n\n# Or\ncd rust-runtime\ncargo test\ncargo clippy\n```\n\nTo test the `aws/rust-runtime` crates:\n\n```bash\n# Run all Rust tests for `aws/rust-runtime/` (from repo root):\ncargo test --manifest-path=aws/rust-runtime/Cargo.toml\n# Run clippy for `aws/rust-runtime/` (from repo root):\ncargo clippy --manifest-path=aws/rust-runtime/Cargo.toml\n\n# Or\ncd aws/rust-runtime\ncargo test\ncargo clippy\n```\n\nSome runtime crates have a `additional-ci` script that can also be run. These scripts often require\n[`cargo-hack`](https://github.com/taiki-e/cargo-hack) and [`cargo-udeps`](https://github.com/est31/cargo-udeps)\nto be installed.\n\n### Testing Client/Server Codegen\n\nTo test the code generation, the following can be used:\n\n```bash\n# Run Kotlin codegen unit tests\n./gradlew codegen-core:check\n./gradlew codegen-client:check\n./gradlew codegen-server:check\n# Run client codegen tests\n./gradlew codegen-client-test:check\n# Run server codegen tests\n./gradlew codegen-server-test:check\n```\n\nSeveral Kotlin unit tests generate Rust projects and compile them. When these fail, they typically\noutput links to the location of the generated code so that it can be inspected.\n\nTo look at generated code when the codegen tests fail, check these paths depending on the test suite that's failing:\n- For codegen-client-test: `codegen-client-test/build/smithyprojections/codegen-client-test`\n- For codegen-server-test: `codegen-server-test/build/smithyprojections/codegen-server-test`\n\n### Testing SDK Codegen\n\nSee the readme in `aws/sdk/` for more information about these targets as they can be configured\nto generate more or less AWS service clients.\n\n```bash\n# Run Kotlin codegen unit tests\n./gradlew aws:codegen-aws-sdk:check\n# Generate an SDK, but do not attempt to compile / run tests. Useful for inspecting generated code\n./gradlew :aws:sdk:assemble\n# Run all the tests\n./gradlew :aws:sdk:sdkTest\n# Validate that the generated code compiles\n./gradlew :aws:sdk:cargoCheck\n# Validate that the generated code passes Clippy\n./gradlew :aws:sdk:cargoClippy\n# Validate the generated docs\n./gradlew :aws:sdk:cargoDoc\n```\n\nThe generated SDK will be placed in `aws/sdk/build/aws-sdk`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithy-lang%2Fsmithy-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmithy-lang%2Fsmithy-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithy-lang%2Fsmithy-rs/lists"}