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) intmethod ontypes.Point, implemented for bothsecp256k1anded25519points.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:
EncodeIntototypes.Pointinterface.EncodeIntoforsecp256k1anded25519points.EncodevsEncodeIntoand demonstrate that:EncodeIntoproduces the same bytes asEncode.Benchmarks
Ran on AMD Ryzen 9 5950X, Go 1.23:
Summary