-
Notifications
You must be signed in to change notification settings - Fork 23
Add anthropics/buffa and anthropics/connect-rust plugins #2334
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
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| source: | ||
| crates: | ||
| crate_name: protoc-gen-buffa |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| * | ||
| !Dockerfile |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # syntax=docker/dockerfile:1.23 | ||
| FROM rust:1.95.0-alpine3.23@sha256:606fd313a0f49743ee2a7bd49a0914bab7deedb12791f3a846a34a4711db7ed2 AS builder | ||
| RUN apk add --no-cache musl-dev | ||
| WORKDIR /app | ||
| ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse | ||
| RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,target=/root/target \ | ||
| cargo install protoc-gen-buffa --version 0.5.2 --locked --root /app | ||
|
|
||
| FROM gcr.io/distroless/static-debian13:latest@sha256:47b2d72ff90843eb8a768b5c2f89b40741843b639d065b9b937b07cd59b479c6 AS base | ||
|
|
||
| FROM scratch | ||
| COPY --link --from=base / / | ||
| COPY --link --from=builder /app/bin/protoc-gen-buffa /protoc-gen-buffa | ||
| USER nobody | ||
| ENTRYPOINT ["/protoc-gen-buffa"] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| version: v1 | ||
| name: buf.build/anthropics/buffa | ||
| plugin_version: v0.5.2 | ||
| source_url: https://github.com/anthropics/buffa | ||
| description: Generates Rust message types with buffa, a zero-copy Protobuf implementation with editions support and no_std compatibility. | ||
| output_languages: | ||
| - rust | ||
| spdx_license_id: Apache-2.0 | ||
| license_url: https://github.com/anthropics/buffa/blob/v0.5.2/LICENSE | ||
| registry: | ||
| cargo: | ||
| rust_version: "1.85" | ||
| deps: | ||
| # Runtime: wire format, Message trait, view types, JSON helpers. | ||
| # https://github.com/anthropics/buffa/blob/v0.5.2/buffa/Cargo.toml | ||
| - name: "buffa" | ||
| req: "0.5.2" | ||
| default_features: true | ||
| features: | ||
| - json | ||
| # Well-known types (Timestamp, Duration, Any, Struct, etc.). | ||
| # Generated code references these via the auto-injected | ||
| # extern_path mapping `.google.protobuf` -> `::buffa_types::google::protobuf`. | ||
| - name: "buffa-types" | ||
| req: "0.5.2" | ||
| default_features: true | ||
| features: | ||
| - json | ||
| # Generated code derives `::serde::Serialize` / `::serde::Deserialize` | ||
| # directly when json=true, so serde must be a direct dep. | ||
| - name: "serde" | ||
| req: "1" | ||
| default_features: true | ||
| features: | ||
| - derive | ||
| opts: | ||
| # Enable serde derives + proto3 JSON mapping helpers. Required for | ||
| # downstream plugins that need the Connect protocol's JSON codec. | ||
| - json=true | ||
| # Zero-copy view types. Default, but explicit for clarity. | ||
| - views=true | ||
| # Emit one `<dotted.package>.rs` per proto package instead of one | ||
| # file per proto file. Matches the prost/tonic filename convention | ||
| # the BSR Rust SDK lib.rs synthesis expects. | ||
| - file_per_package=true |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| source: | ||
| crates: | ||
| crate_name: connectrpc-codegen |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| * | ||
| !Dockerfile |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| # syntax=docker/dockerfile:1.23 | ||
| FROM rust:1.95.0-alpine3.23@sha256:606fd313a0f49743ee2a7bd49a0914bab7deedb12791f3a846a34a4711db7ed2 AS builder | ||
| RUN apk add --no-cache musl-dev | ||
| WORKDIR /app | ||
| ENV CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse | ||
| # The protoc-gen-connect-rust binary is a [[bin]] target in the | ||
| # connectrpc-codegen crate. cargo install compiles it by crate name. | ||
| RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked --mount=type=cache,target=/root/target \ | ||
| cargo install connectrpc-codegen --version 0.4.2 --locked --root /app | ||
|
|
||
| FROM gcr.io/distroless/static-debian13:latest@sha256:47b2d72ff90843eb8a768b5c2f89b40741843b639d065b9b937b07cd59b479c6 AS base | ||
|
|
||
| FROM scratch | ||
| COPY --link --from=base / / | ||
| COPY --link --from=builder /app/bin/protoc-gen-connect-rust /protoc-gen-connect-rust | ||
| USER nobody | ||
| ENTRYPOINT ["/protoc-gen-connect-rust"] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| version: v1 | ||
| name: buf.build/anthropics/connect-rust | ||
| plugin_version: v0.4.2 | ||
| source_url: https://github.com/anthropics/connect-rust | ||
| description: Generates ConnectRPC service traits, typed clients, and monomorphic dispatchers for Rust. Compatible with the Connect, gRPC, and gRPC-Web protocols. Passes the full ConnectRPC conformance suite. | ||
| deps: | ||
| - plugin: buf.build/anthropics/buffa:v0.5.2 | ||
| output_languages: | ||
| - rust | ||
| spdx_license_id: Apache-2.0 | ||
| license_url: https://github.com/anthropics/connect-rust/blob/v0.4.2/LICENSE | ||
| registry: | ||
| cargo: | ||
| rust_version: "1.88" | ||
| deps: | ||
| # ConnectRPC runtime: Router, Context, ConnectError, client transports. | ||
| # https://github.com/anthropics/connect-rust/blob/v0.4.2/connectrpc/Cargo.toml | ||
| - name: "connectrpc" | ||
| req: "0.4.2" | ||
| default_features: true | ||
| # Generated service stubs use buffa::Message, buffa::view::OwnedView, | ||
| # buffa::bytes::Bytes directly. Message types live in the buffa SDK | ||
| # crate (via the plugin dep above); this dep is for the runtime API. | ||
| - name: "buffa" | ||
| req: "0.5.2" | ||
| default_features: true | ||
| # Well-known types. Service stubs whose request/response types are | ||
| # WKTs (e.g. google.longrunning.Operations) reference them as | ||
| # `::buffa_types::google::protobuf::...`, mirroring buffa-codegen's | ||
| # extern_path mapping for `.google.protobuf`. Must be a direct dep | ||
| # so the `::buffa_types` path resolves in the generated crate. | ||
| - name: "buffa-types" | ||
| req: "0.5.2" | ||
| default_features: true | ||
| features: | ||
| - json | ||
| # Streaming method signatures use futures::Stream. | ||
| - name: "futures" | ||
| req: "0.3" | ||
| default_features: true | ||
| # Client transport bounds reference http_body::Body. | ||
| - name: "http-body" | ||
| req: "1" | ||
| default_features: true | ||
| # The plugin accepts `extern_path=.=<rust_path>` (or the shorthand | ||
| # `buffa_module=<rust_path>`) to tell it where the buffa-generated message | ||
| # types live. BSR should inject this based on the buffa dep's SDK crate | ||
| # name, same as tonic receives extern_path for its prost dep. Leaving | ||
| # it out here; please advise if an explicit entry is needed. | ||
| opts: | ||
| # Emit one `<dotted.package>.rs` per proto package, mirroring the | ||
| # buffa plugin's `file_per_package=true` opt. Matches the | ||
| # prost/tonic filename convention the BSR Rust SDK lib.rs | ||
| # synthesis expects. | ||
| - file_per_package | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
tests/testdata/buf.build/anthropics/buffa/v0.5.2/eliza/plugin.sum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| h1:ktcklOdY2UGmhTov4n3zaTVV0iCPTFbaog1tzH7DP/c= |
1 change: 1 addition & 0 deletions
1
tests/testdata/buf.build/anthropics/buffa/v0.5.2/petapis/plugin.sum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| h1:kF+N9OmF6c28gEY8W515PuHMwC/Cf0aA5oCSzA1URIw= |
1 change: 1 addition & 0 deletions
1
tests/testdata/buf.build/anthropics/connect-rust/v0.4.2/eliza/plugin.sum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| h1:SRIzgpj/ikb2VPSKtC+vrgyo5GRTj/uXOIbVZZlP2W0= |
1 change: 1 addition & 0 deletions
1
tests/testdata/buf.build/anthropics/connect-rust/v0.4.2/petapis/plugin.sum
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| h1:StGZ3okU/OTwEG8vTwI/Qgfmo1UZ665jvZD6YjRGR/w= |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
silly non-expert-in-rust question: I see the default features; those don't include the
tlsfeature, but is that just something that is "enabled" by having the various "deps" in the sub-features installed? (Mostly trying to confirm that someone consuming this generated SDK could still use the TLS features.)There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[claude code] Yes — Cargo features are additive and unified per-crate across the dependency graph. The generated SDK crate only needs
connectrpc's default features for the generated code to compile, so that's all it declares. A consumer who wants TLS adds their own direct dependency in their application'sCargo.toml:Cargo then compiles
connectrpconce with the union of features requested by both the SDK crate and the application, sotls(andclient-tls/server-tls/ any other optional feature) is fully available. Same model the tonic SDK crates use — the SDK doesn't gate runtime features.