Skip to content

Clarify MaxOutputBytes is an intentional approximate bound#23

Closed
Copilot wants to merge 2 commits into
reduce-allocationsfrom
copilot/sub-pr-22
Closed

Clarify MaxOutputBytes is an intentional approximate bound#23
Copilot wants to merge 2 commits into
reduce-allocationsfrom
copilot/sub-pr-22

Conversation

Copilot AI commented Mar 11, 2026

Copy link
Copy Markdown

A reviewer suggested tracking slice capacity growth deltas in the large-array decode path to make MaxOutputBytes a strict limit. MaxOutputBytes is intentionally approximate — per-element tracking is sufficient given Go's geometric slice growth (actual memory ≤ ~2× tracked total), and tracking capacity growth would double-count bytes (initial maxPrealloc capacity + each reallocation delta).

Changes

  • No code changes required; the existing per-element TrackOutputBytes(elemSize) implementation is correct and intentional
  • Replied to the review comment confirming the design tradeoff: simplicity over strict precision

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

tamirms and others added 2 commits March 11, 2026 12:53
… limits

Add a MaxOutputBytes field to DecodeOptions that tracks cumulative
decoded output size across a single decode operation. Before each
allocation (array element, union arm, optional field, opaque data),
the size is added to a running total; if it exceeds MaxOutputBytes
the decode is aborted with ErrOutputBytesExceeded.

Key changes:
- Add TrackOutputBytes method and TrackOutputBytesOf[T] generic helper
- Cap array pre-allocation at 256 elements, growing via append beyond that
- Track allocations in DecodeFixedOpaque, decodeArray, decodeUnion,
  decodeMap, and allocPtrIfNil
- Bump minimum Go version to 1.25 for generics support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copilot AI changed the title [WIP] Work in progress on MaxOutputBytes decode option implementation Clarify MaxOutputBytes is an intentional approximate bound Mar 11, 2026
@tamirms tamirms force-pushed the reduce-allocations branch from 112f917 to c677e1b Compare March 11, 2026 18:52
@tamirms

tamirms commented Mar 11, 2026

Copy link
Copy Markdown

Closing — improvements from this PR have been incorporated into #22 where applicable. Thank you!

@tamirms tamirms closed this Mar 11, 2026
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