Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC30 #2615

Open
wants to merge 439 commits into
base: main
Choose a base branch
from

Conversation

thomas-k-cameron
Copy link
Contributor

@thomas-k-cameron thomas-k-cameron commented Apr 21, 2023

Motivation and Context

This PR implements features described on RFC30 except for compile time benchmark.
Benchmark is submitted as a separate PR #2617.

Once this PR and #2617 is merged, RFC30 is complete.

Initially, we tried to make commit to unstable-serde-support branch and merge changes one by one in small PRs. However, in order to make it up to date with the main branch, we would need to go through a large PR of over 700 files.
By merging it directly to the main branch, we can reduce this to under 30 files.

Prerequisite PRs

This is a list of prerequisite PRs; You can reduce the diff if you merge them earlier.
None of them introduces breaking changes.

EDIT:
More sub-PR.

EDIT2:
More sub-PR.

Description

List of changes:

  • rust runtime

    • Implements serde support to Number, Blob, Document, DateTime
  • buildSrc

    • add rustflag to enable feature gated features
  • Core codegen code

    • Add sensitive warning
    • Add serde attributes
    • Import serde crate to enable serde(skip) on some namespaces
    • Add serde crate behind unstable feature gate on Cargo.toml
  • Client codegen code

    • add serde as dependency behind feature gate

Testing

  • rust runtime
    • tests whether de/ser produces value as expected

Checklist

  • I have updated CHANGELOG.next.toml if I made changes to the smithy-rs codegen or runtime crates
  • I have updated CHANGELOG.next.toml if I made changes to the AWS SDK, generated SDK code, or SDK runtime crates

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@thomas-k-cameron thomas-k-cameron force-pushed the RFC30/kotlin-codegen-core branch 5 times, most recently from 82df0f7 to f6548ec Compare April 21, 2023 02:15
@thomas-k-cameron thomas-k-cameron changed the title RFC30 update for codegen code RFC30 Apr 21, 2023
@thomas-k-cameron thomas-k-cameron force-pushed the RFC30/kotlin-codegen-core branch 3 times, most recently from 6b54255 to fd74029 Compare April 21, 2023 03:26
@thomas-k-cameron
Copy link
Contributor Author

thomas-k-cameron commented Apr 21, 2023

NOTE: this one's fixed.

Only error that I'm facing is this, which comes from tracing crate.
It appears that it's failing to compile regex but I'm not sure where it's coming from.

failures:

---- cache::lazy_caching::tests::load_contention stdout ----
thread 'cache::lazy_caching::tests::load_contention' panicked at 'called `Result::unwrap()` on an `Err` value: Syntax(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
regex parse error:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1: (?x)
 2:             ^(?P<global_level>(?i:trace|debug|info|warn|error|off|[0-5]))$ |
                                      ^
 3:                 #                 ^^^.
 4:                 #                     `note: we match log level names case-insensitively
 5:             ^
 6:             (?: # target name or span name
 7:                 (?P<target>[\w:-]+)|(?P<span>\[[^\]]*\])
 8:             ){1,2}
error: test failed, to rerun pass `--lib`
 9:             (?: # level or nothing
10:                 =(?P<level>(?i:trace|debug|info|warn|error|off|[0-5]))?
11:                     #          ^^^.
12:                     #              `note: we match log level names case-insensitively
13:             )?
14:             $
15:             
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: Unicode-aware case insensitivity matching is not available (make sure the unicode-case feature is enabled)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)', /opt/cargo/registry/src/git.luolix.top-1ecc6299db9ec823/tracing-subscriber-0.3.16/src/filter/env/directive.rs:140:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

UPDATE: fixed tokio-rs/tracing#2565

@thomas-k-cameron thomas-k-cameron force-pushed the RFC30/kotlin-codegen-core branch 2 times, most recently from 5096e7f to 31780e7 Compare April 21, 2023 09:09
@thomas-k-cameron
Copy link
Contributor Author

@Velfi

So I reorganized the PR/code.

I really wanted to make use of unstable-serde branch but it turned out to be difficult without producing large number of file changes.
I'm very sorry for wasting you and your team's time that was spent on reviewing the PRs for said branch.

I really hopes this approach works.

Thank you very much for you and your team's continuous support!

@thomas-k-cameron thomas-k-cameron marked this pull request as ready for review April 21, 2023 11:40
@thomas-k-cameron thomas-k-cameron requested review from a team as code owners April 21, 2023 11:40
Velfi pushed a commit that referenced this pull request Apr 26, 2023
…ng Cargo from kotlin (#2614)

## Motivation and Context
This PR set `aws_sdk_unstable` to RUSTFALGS when running cargo from
kotlin.

It is required to enable test gated features introduced on RFC30.

No breaking changers are introduced.

## Description
add `RUSTFLAGS = aws_sdk_unstable` when running cargo from kotlin.


## Parent PR
This PR is listed as one of prerequisite PRs on this PR.

- #2615

## Testing
NA.

----
*By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice.*
@thomas-k-cameron
Copy link
Contributor Author

Never seen this error before.

error: all variants have the same postfix: `Operation`
    --> misc/rust-server-codegen-python/src/service.rs:1326:1
     |
1326 | / pub enum Operation {
1327 | |     RequiredHeaderCollectionOperation,
1328 | |     RequiredInnerShapeOperation,
1329 | |     ResponseCodeDefaultOperation,
...    |
1332 | |     TypeComplexityOperation,
1333 | | }
     | |_^
     |
     = help: remove the postfixes and use full paths to the variants instead of glob imports
     = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names

…codegen/client/smithy/customize/SerdeDecorator.kt

modified:   codegen-client/src/main/kotlin/software/amazon/smithy/rust/codegen/client/smithy/generators/ServiceGenerator.kt
modified:   codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGenerator.kt
modified:   codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/testutil/Rust.kt
deleted:    rust-runtime/aws-smithy-compiler-warning/Cargo.toml
deleted:    rust-runtime/aws-smithy-compiler-warning/src/lib.rs
github-merge-queue bot pushed a commit that referenced this pull request Dec 20, 2023
## Motivation and Context
This is a sub-PR of #2615.
Refactors `blob.rs` file.

## Description
Some test was failing due to unnecessary import; This PR fixes it.

## Testing
NA

## Checklist
NA

----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._

---------

Co-authored-by: Zelda Hessler <zhessler@amazon.com>
thomas-k-cameron and others added 4 commits January 23, 2024 06:31
…codegen/client/smithy/customize/SerdeDecorator.kt

modified:   codegen-core/src/main/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/LibRsGenerator.kt
modified:   codegen-core/src/test/kotlin/software/amazon/smithy/rust/codegen/core/smithy/generators/BuilderGeneratorTest.kt
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.

4 participants