Skip to content

release: v0.8.0#242

Merged
iainmcgin merged 4 commits into
mainfrom
release/v0.8.0
Jun 25, 2026
Merged

release: v0.8.0#242
iainmcgin merged 4 commits into
mainfrom
release/v0.8.0

Conversation

@iainmcgin

Copy link
Copy Markdown
Collaborator

Release prep for v0.8.0.

What's in this PR

Not in this PR (follow-ups after the tag)

  • benchmarks/history/runs/v0.8.0.json + REPORT/charts regeneration — measured at the tagged commit for clean provenance.
  • Codegen lazy-view doc emission emits an unresolved [FooView] intra-doc link (surfaced by cargo doc -D warnings in buffa-test; internal crate, CI doesn't enforce, but a real codegen bug).

Release summary (from CHANGELOG)

The headline of this release is that the owned representation of every field kind is now pluggable end to end: string, bytes, repeated, singular message, and map fields each accept a crate-local type via a small from_wire-style trait, so an inline-string or small-vector representation can avoid the per-field heap allocation without giving up the generated codec. Alongside that, UTF-8 validation on the decode path now defaults to smoothutf8 with the slack-buffer fast path — view decode is +15–22% on the string-heavy benchmark messages — and an opt-in FooLazyView family lets a caller decode a few fields of a large message without recursing into untouched sub-trees. There are eight breaking changes, all on the trait surface or generated-code shape; regenerate code with the matching buffa-codegen.

- Bump workspace version to 0.8.0 (and all intra-workspace dep refs).
- Finalize CHANGELOG [Unreleased] -> [0.8.0] with a release summary
  paragraph; add the five entries the audit found missing
  (#189/#206/#208/#216/#229), fix two off-by-one PR refs, replace nine
  issue-refs with PR-refs, tag the entries that had no (#NNN), and move
  two mis-filed entries to their Keep-a-Changelog section.
- README: update the Performance methodology line for the bare-metal
  cross-impl harness (was still "Docker, v0.7.1").
- Fix three broken intra-doc links in buffa-codegen surfaced by
  `cargo doc -D warnings`.
Re-run on bare metal at the release HEAD (with the fast-utf8 default).
The smoothutf8 slack-buffer fast path is visible in the buffa view-decode
column: LogRecord 1,113 -> 1,351 (+21%), ApiResponse 752 -> 911 (+21%),
MediaFrame 36,486 -> 41,474 (+14%). Go numbers carried forward unchanged.

README inline raw-data tables synced to the regenerated tables.md, and
the surrounding prose updated for the new ratios and the bare-metal
methodology (the Reflection section still referenced the old Docker
harness).
@github-actions

Copy link
Copy Markdown

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

@iainmcgin iainmcgin marked this pull request as ready for review June 25, 2026 18:09
buffa-smolstr is the worked ProtoString-newtype reference for a foreign
type, not a dependency to ship: publishing it would tie consumers to
this repository's smol_str pin, when the point of the pluggable-type
design is that they bring their own representation against their own
versions. Moved under examples/ (kept as a workspace member so
buffa-test can depend on it), marked publish = false, added a README
stating the example-only status, and rewrote the doc references and
the on_unimplemented diagnostic to point at examples/custom-types as
the canonical template. The publish workflow already didn't list it.
smoothutf8 0.1.0 declared simdutf8 with default-features = false and
never re-enabled simdutf8/std, so without -C target-cpu=x86-64-v3
simdutf8's runtime CPU dispatch was compiled out and >=128 B inputs
fell back to core::str::from_utf8 (47% of LogRecord's string bytes).
0.1.1 fixes the feature wiring; cargo tree confirms simdutf8/std is
now active and the disassembly shows verify_with_slack doing an
indirect call (runtime dispatch) instead of calling from_utf8.
LogRecord owned decode +1.8% (within the predicted +2-3%).

Separately: cross_metal_run.sh now passes --noplot --discard-baseline
--sample-size 50 --nresamples 1000 to criterion. The published number
is the cross-pass median, so the per-pass criterion CI (default 100k
bootstrap resamples) and plots are unused; this cuts buffa's pass from
1h14m to 27m. Spread is slightly wider (median 2.8% vs 2.3%) but well
within the documented floor.

Tables, charts, and the README inline raw-data tables regenerated;
prost/prost-bytes/google were measured on the same instance type
earlier the same day and are carried forward (only buffa+reflect
changed).
@iainmcgin iainmcgin requested a review from rpb-ant June 25, 2026 21:53
@iainmcgin iainmcgin added this pull request to the merge queue Jun 25, 2026
Merged via the queue into main with commit 3e72fbb Jun 25, 2026
8 checks passed
@iainmcgin iainmcgin deleted the release/v0.8.0 branch June 25, 2026 21:59
@github-actions github-actions Bot locked and limited conversation to collaborators Jun 25, 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