tailscale/types
Mike O'Driscoll bb59942df2
types/key: use AvailableBuffer for WriteRawWithoutAllocating (#19102)
Use bufio.Writer.AvailableBuffer to write the 32-byte public key
directly into bufio's internal buffer as a single append+Write,
avoiding 32 separate WriteByte calls. Fall back to the existing
byte-at-a-time path when the buffer has insufficient space.

```
name                                old ns/op  new ns/op  speedup
NodeWriteRawWithoutAllocating-8     121        12.5       ~9.7x
(0 allocs/op in both)
```

Add BenchmarkNodeWriteRawWithoutAllocating and expand
TestNodeWriteRawWithoutAllocating to cover both fast (AvailableBuffer)
and slow (WriteByte fallback) paths with correctness and allocation
checks.

Updates tailscale/corp#38509

Signed-off-by: Mike O'Driscoll <mikeo@tailscale.com>
2026-03-24 18:08:08 -04:00
..
appctype appc,feature/conn25,net: Add DNS response interception for conn25 2026-02-20 07:43:37 -08:00
bools all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
dnstype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
empty all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
events wgengine/magicsock,control/controlclient: do not overwrite discokey with old key (#18606) 2026-03-20 08:56:27 -04:00
flagtype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
geo types/geo: fix floating point bug causing NaN returns in SphericalAngleTo (#18777) 2026-03-02 17:33:57 -08:00
iox all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ipproto all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
jsonx types/ptr: deprecate ptr.To, use Go 1.26 new 2026-03-05 20:13:18 -08:00
key types/key: use AvailableBuffer for WriteRawWithoutAllocating (#19102) 2026-03-24 18:08:08 -04:00
lazy all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
logger all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
logid all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
mapx all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
netlogfunc all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
netlogtype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
netmap all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00
nettype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
opt all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
persist tailcfg: reintroduce UserProfile.Groups 2026-03-09 11:08:45 +00:00
prefs types/ptr: deprecate ptr.To, use Go 1.26 new 2026-03-05 20:13:18 -08:00
preftype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
ptr types/ptr: deprecate ptr.To, use Go 1.26 new 2026-03-05 20:13:18 -08:00
result all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
structs all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
tkatype all: remove AUTHORS file and references to it 2026-01-23 15:49:45 -08:00
views all: use Go 1.26 things, run most gofix modernizers 2026-03-06 13:32:03 -08:00