Add EncodeInto
to types.Point
for allocation-free encoding
#2
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.
Description
This PR introduces a new
EncodeInto(dst []byte) int
method ontypes.Point
, implemented for bothsecp256k1
anded25519
points.The goal is to allow callers (like ring-go) to reuse buffers when serializing points, instead of always allocating a fresh slice. This is particularly helpful inside signature verification loops where point encoding is on the hot path.
Key changes:
EncodeInto
totypes.Point
interface.EncodeInto
forsecp256k1
anded25519
points.Encode
vsEncodeInto
and demonstrate that:EncodeInto
produces the same bytes asEncode
.Benchmarks
Ran on AMD Ryzen 9 5950X, Go 1.23:
Summary