Skip to content

release: v0.9.1#335

Merged
iainmcgin merged 1 commit into
mainfrom
release/v0.9.1
Jul 23, 2026
Merged

release: v0.9.1#335
iainmcgin merged 1 commit into
mainfrom
release/v0.9.1

Conversation

@iainmcgin

Copy link
Copy Markdown
Collaborator

Cuts v0.9.1, a patch release driven by #331 — a regression 0.9.0 introduced.

Why now

0.9.0's element-memory bound is sized for untrusted wire input, and buffa's own tooling applied it to the descriptor sets it reads. Codegen started rejecting schemas of a few hundred .proto files with element memory limit exceeded, which is a small enough schema to hit in ordinary use. #332 fixed it; this ships it.

Three other changes ride along: the field-scoped open-enum reflection fix (#321), the view unknown-field pointer change (#329, ~10% faster view decode on payloads carrying no unknown fields), and a documentation correction described below.

The documentation correction

0.9.0's notes said of the element-memory budget that "the owned, view and reflective (DynamicMessage) decoders are all bounded". That is true, and it reads as codec-independent, which it isn't — JSON decoding runs serde_json straight into the generated Deserialize impls, which never receive a DecodeOptions. A message parsed from JSON is bounded by none of the limits that bound the same message parsed from protobuf, and the amplification is nearly as large there: {} is three JSON bytes for the element footprint that costs two on the wire.

Shipping a release about the element-memory bound while the docs overstate which codecs it covers seemed like the wrong pairing, so this adds the scope to DecodeOptions, to with_element_memory_limit, and to the guide — which was also missing with_element_memory_limit from its decode-options table entirely. Actually bounding the JSON path is a real design decision and stays in #330 for 0.10.0. No behaviour changes here.

Version choice

0.9.1 rather than 0.10.0. The only API changes are additive (DescriptorPool::decode_with_options and the new buffa-codegen decode helpers), and #329's restructuring touches a private field with no public signature change — I checked rather than assumed. That matches the convention stated in the changelog header: breaking changes increment the minor, additive changes the patch.

Verification

Ran the CI invocations locally:

  • cargo clippy --workspace --all-targets --all-features -- -D warnings — clean
  • cargo test --workspace --all-features — 49 suites, 0 failures
  • RUSTDOCFLAGS="-D warnings" cargo doc --workspace --all-features --no-deps — clean
  • changie merge is idempotent against the committed CHANGELOG.md, so check-changelog passes
  • scripts/check-publish-coverage.sh — 8 crates listed and publishable
  • markdownlint clean on the changed files; the new guide anchor resolves

The only warning anywhere is the documented editions_2024.proto skip from a protoc older than v30, which is expected outside CI. Conformance was not run locally (no Docker or local runner here); CI covers it.

Reviewer notes

Draft pending review.

Patch release for the 0.9.0 element-memory regression (#331), which made
codegen reject schemas of a few hundred .proto files. Ships alongside the
field-scoped open-enum reflection fix (#316) and the view unknown-field
pointer change (#329).

Also corrects the decode-limit documentation. The 0.9.0 notes said the
owned, view and reflective decoders are all bounded, which reads as
codec-independent; JSON decoding never receives a DecodeOptions, so none of
the limits apply to it. DecodeOptions, with_element_memory_limit and the
guide now state that scope, and the guide's decode-options table gains the
with_element_memory_limit row it was missing.

No-Verification-Needed: version bump, generated changelog, and doc-only edits
@github-actions

Copy link
Copy Markdown

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@iainmcgin
iainmcgin requested a review from rpb-ant July 23, 2026 20:50
@iainmcgin
iainmcgin marked this pull request as ready for review July 23, 2026 20:51
@iainmcgin
iainmcgin enabled auto-merge July 23, 2026 20:51
@iainmcgin
iainmcgin added this pull request to the merge queue Jul 23, 2026
Merged via the queue into main with commit fe5635f Jul 23, 2026
11 checks passed
@iainmcgin
iainmcgin deleted the release/v0.9.1 branch July 23, 2026 21:02
@github-actions github-actions Bot locked and limited conversation to collaborators Jul 23, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants