Skip to content

Add anthropics/buffa plugin v0.3.0#2333

Open
iainmcgin wants to merge 1 commit intobufbuild:mainfrom
iainmcgin:add-buffa-plugin
Open

Add anthropics/buffa plugin v0.3.0#2333
iainmcgin wants to merge 1 commit intobufbuild:mainfrom
iainmcgin:add-buffa-plugin

Conversation

@iainmcgin
Copy link
Copy Markdown

@iainmcgin iainmcgin commented Mar 17, 2026

Adds the protoc-gen-buffa plugin for Rust protobuf code generation, under the new top-level anthropics org as requested in earlier review.

About buffa

buffa is a zero-copy Rust Protobuf implementation with:

  • Editions support (2023/2024) and full proto2/proto3 coverage
  • Zero-copy view types - borrowed &str/&[u8] field access without owned allocation
  • no_std + alloc compatible
  • Proto3 JSON mapping with serde integration
  • Conformance: passes the protobuf conformance suite (5539 binary+JSON tests, 0 expected failures)

Crates are on crates.io: buffa, buffa-types, protoc-gen-buffa.

Output convention

The plugin emits one .rs file per proto file with a flat naming scheme: foo/v1/bar.proto -> foo.v1.bar.rs. No subdirectories, no mod.rs - module tree assembly is a separate packaging plugin (protoc-gen-buffa-packaging, submitted separately).

Open questions for review

  1. opts: I set json=true and views=true. If BSR has conventions for which opts to expose vs bake in, please advise.
  2. File naming: The per-file output naming (pkg.subpkg.file.rs) is flat but per-proto-file, not per-package like prost. If BSR's lib.rs synthesis expects per-package naming instead, we can add a plugin option to switch modes.

Process note

CONTRIBUTING.md asks for an issue first - happy to open one if you would prefer to discuss before reviewing the PR. Filed this as a draft in the meantime.

Related: #2334 (anthropics/connect-rust) declares this plugin as a dep, so this one would need to land first.

@bufdev
Copy link
Copy Markdown
Member

bufdev commented Mar 19, 2026

I think we might want to make a top-level anthropics org for this, instead of under community - also re: connect-rust.

@iainmcgin
Copy link
Copy Markdown
Author

I think we might want to make a top-level anthropics org for this, instead of under community - also re: connect-rust.

Sure thing I'll redraft as part of updating to the new versions I'll likely release next week.

@iainmcgin iainmcgin changed the title Add community/anthropics-buffa plugin v0.2.0 Add anthropics/buffa plugin v0.2.0 Apr 2, 2026
@iainmcgin iainmcgin changed the title Add anthropics/buffa plugin v0.2.0 Add anthropics/buffa plugin v0.3.0 Apr 2, 2026
@@ -0,0 +1,4 @@
source:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think there's supposed to be a crates section here? See the prost plugin as an ezample

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

changed to crate ref instead of github ref 👍

buffa is a zero-copy Rust Protobuf implementation with editions support
(2023/2024), no_std compatibility, and view types for borrowed field
access. Passes the protobuf conformance suite (5539 binary+JSON tests).

The plugin emits one .rs file per proto file using a flat naming
convention (`foo/v1/bar.proto` -> `foo.v1.bar.rs`). Module tree
assembly is a separate `protoc-gen-buffa-packaging` plugin in the same
repo, registered separately.

Crates: https://crates.io/crates/protoc-gen-buffa
Repo: https://github.com/anthropics/buffa
@iainmcgin iainmcgin marked this pull request as ready for review April 3, 2026 15:54
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