net/netip — validation proof
Go’s own net/netip test suite, converted to C# by go2cs, built against the converted standard
library, run under the Go-semantics test host, and compared verdict for verdict against a clean
go test -json baseline of the same sources. This page is generated by the converter from that
comparison — it is the evidence behind the net/netip row in
Validated Test Packages.
Validated 2026-08-29 · converter c3bea225e
210 matched · 57 disclosed — Go 1.23.12, windows/amd64, converted package
src/core/net/netip.
Verdicts
| Test | go test |
go2cs |
|---|---|---|
TestAddrFrom16 |
pass | pass |
TestAddrFrom16/v4-raw |
pass | pass |
TestAddrFrom16/v6-raw |
pass | pass |
TestAddrFromSlice |
pass | pass |
TestAddrLessCompare |
pass | pass |
TestAddrMarshalUnmarshal |
pass | pass |
TestAddrMarshalUnmarshalBinary |
pass | pass |
TestAddrPortCompare |
pass | pass |
TestAddrPortMarshalTextString |
pass | pass |
TestAddrPortMarshalUnmarshal |
pass | pass |
TestAddrPortMarshalUnmarshal/#00 |
pass | pass |
TestAddrPortMarshalUnmarshalBinary |
pass | pass |
TestAddrStringAllocs |
pass | fail (disclosed) |
TestAddrStringAllocs/ipv4 |
pass | fail (disclosed) |
TestAddrStringAllocs/ipv4-in-ipv6 |
pass | fail (disclosed) |
TestAddrStringAllocs/ipv4-in-ipv6+zone |
pass | fail (disclosed) |
TestAddrStringAllocs/ipv6 |
pass | fail (disclosed) |
TestAddrStringAllocs/ipv6+zone |
pass | fail (disclosed) |
TestAddrStringAllocs/zero |
pass | pass |
TestAddrWellKnown |
pass | pass |
TestAddrWellKnown/IPv4_unspecified |
pass | pass |
TestAddrWellKnown/IPv6_link-local_all_nodes |
pass | pass |
TestAddrWellKnown/IPv6_link-local_all_routers |
pass | pass |
TestAddrWellKnown/IPv6_loopback |
pass | pass |
TestAddrWellKnown/IPv6_unspecified |
pass | pass |
TestAs4 |
pass | pass |
TestAsSlice |
pass | pass |
TestBitsClearedFrom |
pass | pass |
TestBitsSetFrom |
pass | pass |
TestIPBitLen |
pass | pass |
TestIPNextPrev |
pass | pass |
TestIPProperties |
pass | pass |
TestIPProperties/interface-local_multicast_v6Addr |
pass | pass |
TestIPProperties/interface-local_multicast_v6AddrZone |
pass | pass |
TestIPProperties/link-local_unicast_v4Addr |
pass | pass |
TestIPProperties/link-local_unicast_v6Addr |
pass | pass |
TestIPProperties/link-local_unicast_v6AddrZone |
pass | pass |
TestIPProperties/link-local_unicast_v6Addr_upper_bound |
pass | pass |
TestIPProperties/link-local_unicast_v6_mapped_v4Addr |
pass | pass |
TestIPProperties/loopback_v4Addr |
pass | pass |
TestIPProperties/loopback_v6Addr |
pass | pass |
TestIPProperties/loopback_v6_mapped_v4Addr |
pass | pass |
TestIPProperties/multicast_v4Addr |
pass | pass |
TestIPProperties/multicast_v6Addr |
pass | pass |
TestIPProperties/multicast_v6AddrZone |
pass | pass |
TestIPProperties/multicast_v6_mapped_v4Addr |
pass | pass |
TestIPProperties/nil |
pass | pass |
TestIPProperties/private_v4Addr_10/8 |
pass | pass |
TestIPProperties/private_v4Addr_172.16/12 |
pass | pass |
TestIPProperties/private_v4Addr_192.168/16 |
pass | pass |
TestIPProperties/private_v6Addr |
pass | pass |
TestIPProperties/private_v6_mapped_v4Addr_10/8 |
pass | pass |
TestIPProperties/private_v6_mapped_v4Addr_172.16/12 |
pass | pass |
TestIPProperties/private_v6_mapped_v4Addr_192.168/16 |
pass | pass |
TestIPProperties/unicast_v4Addr |
pass | pass |
TestIPProperties/unicast_v6Addr |
pass | pass |
TestIPProperties/unicast_v6AddrZone |
pass | pass |
TestIPProperties/unicast_v6Addr_unassigned |
pass | pass |
TestIPProperties/unicast_v6_mapped_v4Addr |
pass | pass |
TestIPProperties/unspecified_v4Addr |
pass | pass |
TestIPProperties/unspecified_v6Addr |
pass | pass |
TestIPStringExpanded |
pass | pass |
TestIPStringExpanded/192.0.2.1 |
pass | pass |
TestIPStringExpanded/2001:db8::1 |
pass | pass |
TestIPStringExpanded/2001:db8::1%eth0 |
pass | pass |
TestIPStringExpanded/::ffff:192.0.2.1 |
pass | pass |
TestIPStringExpanded/invalid_IP |
pass | pass |
TestIPv4Constructors |
pass | pass |
TestIPv6Accessor |
pass | pass |
TestInlining |
pass | pass |
TestInvalidAddrPortString |
pass | pass |
TestIs4AndIs6 |
pass | pass |
TestIs4In6 |
pass | pass |
TestNoAllocs |
pass | fail (disclosed) |
TestNoAllocs/Addr.As16 |
pass | fail (disclosed) |
TestNoAllocs/Addr.As4 |
pass | fail (disclosed) |
TestNoAllocs/Addr.BitLen |
pass | fail (disclosed) |
TestNoAllocs/Addr.Compare |
pass | fail (disclosed) |
TestNoAllocs/Addr.Is4 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Is4In6 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Is6 |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsGlobalUnicast |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsInterfaceLocalMulticast |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsLinkLocalMulticast |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsLinkLocalUnicast |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsLoopback |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsMulticast |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsPrivate |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsUnspecified |
pass | fail (disclosed) |
TestNoAllocs/Addr.IsZero |
pass | fail (disclosed) |
TestNoAllocs/Addr.Less |
pass | fail (disclosed) |
TestNoAllocs/Addr.Next |
pass | fail (disclosed) |
TestNoAllocs/Addr.Prefix/4 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Prefix/6 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Prev |
pass | fail (disclosed) |
TestNoAllocs/Addr.Unmap |
pass | fail (disclosed) |
TestNoAllocs/Addr.WithZone |
pass | fail (disclosed) |
TestNoAllocs/Addr.Zone/4 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Zone/6 |
pass | fail (disclosed) |
TestNoAllocs/Addr.Zone/6zone |
pass | fail (disclosed) |
TestNoAllocs/AddrFrom16 |
pass | fail (disclosed) |
TestNoAllocs/AddrFrom4 |
pass | fail (disclosed) |
TestNoAllocs/AddrPortFrom |
pass | fail (disclosed) |
TestNoAllocs/IPv4 |
pass | fail (disclosed) |
TestNoAllocs/IPv6LinkLocalAllNodes |
pass | fail (disclosed) |
TestNoAllocs/IPv6LinkLocalAllRouters |
pass | fail (disclosed) |
TestNoAllocs/IPv6Loopback |
pass | fail (disclosed) |
TestNoAllocs/IPv6Unspecified |
pass | pass |
TestNoAllocs/MustParseAddr |
pass | fail (disclosed) |
TestNoAllocs/MustParseAddrPort |
pass | fail (disclosed) |
TestNoAllocs/MustParsePrefix |
pass | fail (disclosed) |
TestNoAllocs/ParseAddr/4 |
pass | fail (disclosed) |
TestNoAllocs/ParseAddr/6 |
pass | fail (disclosed) |
TestNoAllocs/ParseAddrPort |
pass | fail (disclosed) |
TestNoAllocs/ParsePrefix/4 |
pass | fail (disclosed) |
TestNoAllocs/ParsePrefix/6 |
pass | fail (disclosed) |
TestNoAllocs/Prefix.Contains |
pass | fail (disclosed) |
TestNoAllocs/Prefix.IsSingleIP |
pass | fail (disclosed) |
TestNoAllocs/Prefix.IsZero |
pass | fail (disclosed) |
TestNoAllocs/Prefix.Masked |
pass | fail (disclosed) |
TestNoAllocs/Prefix.Overlaps |
pass | fail (disclosed) |
TestNoAllocs/PrefixFrom |
pass | fail (disclosed) |
TestParseAddr |
pass | pass |
TestParseAddr/#00 |
pass | pass |
TestParseAddr/.1.2.3 |
pass | pass |
TestParseAddr/0.0.0.0 |
pass | pass |
TestParseAddr/000001.00000002.00000003.000000004 |
pass | pass |
TestParseAddr/010.000.015.001 |
pass | pass |
TestParseAddr/0300.0250.0214.0377 |
pass | pass |
TestParseAddr/0:0:0:0:00000:ffff:127.1.2.3 |
pass | pass |
TestParseAddr/0:0:0:0:0:ffff:0:00000 |
pass | pass |
TestParseAddr/0xc0.0xa8.0x8c.0xff |
pass | pass |
TestParseAddr/1..2.3 |
pass | pass |
TestParseAddr/1.2.3. |
pass | pass |
TestParseAddr/1.2.3.4%eth0 |
pass | pass |
TestParseAddr/1.2.3.4.5 |
pass | pass |
TestParseAddr/1234 |
pass | pass |
TestParseAddr/127.0.1 |
pass | pass |
TestParseAddr/127.1 |
pass | pass |
TestParseAddr/192.1234567 |
pass | pass |
TestParseAddr/192.168.0.1.5.6 |
pass | pass |
TestParseAddr/192.168.12345 |
pass | pass |
TestParseAddr/192.168.140.255 |
pass | pass |
TestParseAddr/192.168.300.1 |
pass | pass |
TestParseAddr/1:2:3:4:5:6:7 |
pass | pass |
TestParseAddr/1:2:3:4:5:6:7:8:9 |
pass | pass |
TestParseAddr/1:2:3:4::5:6:7:8 |
pass | pass |
TestParseAddr/1:2::ffff:192.168.140.255%eth1 |
pass | pass |
TestParseAddr/:: |
pass | pass |
TestParseAddr/::1 |
pass | pass |
TestParseAddr/::ffff:1.2.03.4 |
pass | pass |
TestParseAddr/::ffff:1.2.3.z |
pass | pass |
TestParseAddr/::ffff:192.168.140.255 |
pass | pass |
TestParseAddr/::ffff:192.168.140.255%eth1 |
pass | pass |
TestParseAddr/::ffff:192.168.140.bad |
pass | pass |
TestParseAddr/FD9E:1A04:F01D::1 |
pass | pass |
TestParseAddr/bad |
pass | pass |
TestParseAddr/fd7a:115c::626b:430b |
pass | pass |
TestParseAddr/fd7a:115c:a1e0::4843:cd96:626b:430b |
pass | pass |
TestParseAddr/fd7a:115c:a1e0:ab12:4843:cd96:626b:430b |
pass | pass |
TestParseAddr/fd7a:115c:a1e0:ab12:4843:cd96:626b:430b%eth0 |
pass | pass |
TestParseAddr/fd7a:115c:a1e0:ab12:4843:cd96:626b:: |
pass | pass |
TestParseAddr/fd7a:115c:a1e0:ab12:4843:cd96:: |
pass | pass |
TestParseAddr/fe801::1 |
pass | pass |
TestParseAddr/fe80: |
pass | pass |
TestParseAddr/fe80:1?:1 |
pass | pass |
TestParseAddr/fe80::1% |
pass | pass |
TestParseAddr/fe80::1::1 |
pass | pass |
TestParseAddr/fe80:tail:scal:e:: |
pass | pass |
TestParseAddr/ffff::ffff:ffff:ffff:ffff:ffff:ffff:192.168.140.255 |
pass | pass |
TestParseAddr/ffff:ffff:ffff:ffff:ffff:ffff:ffff:192.168.140.255 |
pass | pass |
TestParseAddrPort |
pass | pass |
TestParseAddrPort/1.1.1.1:-123 |
pass | pass |
TestParseAddrPort/1.1.1.1:-123/AppendTo |
pass | pass |
TestParseAddrPort/1.1.1.1:-123/Marshal |
pass | pass |
TestParseAddrPort/1.1.1.1:123456 |
pass | pass |
TestParseAddrPort/1.1.1.1:123456/AppendTo |
pass | pass |
TestParseAddrPort/1.1.1.1:123456/Marshal |
pass | pass |
TestParseAddrPort/1.2.3.4:1234 |
pass | pass |
TestParseAddrPort/1.2.3.4:1234/AppendTo |
pass | pass |
TestParseAddrPort/1.2.3.4:1234/Marshal |
pass | pass |
TestParseAddrPort/:0 |
pass | pass |
TestParseAddrPort/:0/AppendTo |
pass | pass |
TestParseAddrPort/:0/Marshal |
pass | pass |
TestParseAddrPort/[1.2.3.4]:1234 |
pass | pass |
TestParseAddrPort/[1.2.3.4]:1234/AppendTo |
pass | pass |
TestParseAddrPort/[1.2.3.4]:1234/Marshal |
pass | pass |
TestParseAddrPort/[::1]:1234 |
pass | pass |
TestParseAddrPort/[::1]:1234/AppendTo |
pass | pass |
TestParseAddrPort/[::1]:1234/Marshal |
pass | pass |
TestParseAddrPort/fe80::1:1234 |
pass | pass |
TestParseAddrPort/fe80::1:1234/AppendTo |
pass | pass |
TestParseAddrPort/fe80::1:1234/Marshal |
pass | pass |
TestParseIPError |
pass | pass |
TestParseIPError/%eth0 |
pass | pass |
TestParseIPError/500.0.0.1 |
pass | pass |
TestParseIPError/::gggg%eth0 |
pass | pass |
TestParseIPError/fe80::1cc0:3e8c:119f:c2e1% |
pass | pass |
TestParseIPError/localhost |
pass | pass |
TestParsePrefixAllocs |
pass | fail (disclosed) |
TestParsePrefixAllocs/192.168.1.0/24 |
pass | fail (disclosed) |
TestParsePrefixAllocs/aaaa:bbbb:cccc::/24 |
pass | fail (disclosed) |
TestParsePrefixError |
pass | pass |
TestParsePrefixError/1.1.1.0%a/24 |
pass | pass |
TestParsePrefixError/1.1.1.0/+32 |
pass | pass |
TestParsePrefixError/1.1.1.0/-1 |
pass | pass |
TestParsePrefixError/1.1.1.0/-32 |
pass | pass |
TestParsePrefixError/1.1.1.0/0032 |
pass | pass |
TestParsePrefixError/1.1.1.0/032 |
pass | pass |
TestParsePrefixError/1.1.1.0/33 |
pass | pass |
TestParsePrefixError/1.1.1.0/q |
pass | pass |
TestParsePrefixError/1.257.1.1/24 |
pass | pass |
TestParsePrefixError/192.168.0.0 |
pass | pass |
TestParsePrefixError/2001::/129 |
pass | pass |
TestParsePrefixError/2001:db8::%a/32 |
pass | pass |
TestPrefix |
pass | pass |
TestPrefix/0.0.0.0/0 |
pass | pass |
TestPrefix/100.64.0.0/10 |
pass | pass |
TestPrefix/192.168.0.0/24 |
pass | pass |
TestPrefix/192.168.1.1/32 |
pass | pass |
TestPrefix/2000::/3 |
pass | pass |
TestPrefix/2001:db8::/96 |
pass | pass |
TestPrefix/::/0 |
pass | pass |
TestPrefixCompare |
pass | pass |
TestPrefixContains |
pass | pass |
TestPrefixFromInvalidBits |
pass | pass |
TestPrefixIsSingleIP |
pass | pass |
TestPrefixMarshalTextString |
pass | pass |
TestPrefixMarshalUnmarshal |
pass | pass |
TestPrefixMarshalUnmarshal/#00 |
pass | pass |
TestPrefixMarshalUnmarshal/0.0.0.0/0 |
pass | pass |
TestPrefixMarshalUnmarshal/1.2.3.4/32 |
pass | pass |
TestPrefixMarshalUnmarshal/2001:db8::/32 |
pass | pass |
TestPrefixMarshalUnmarshal/::/0 |
pass | pass |
TestPrefixMarshalUnmarshal/::1/128 |
pass | pass |
TestPrefixMarshalUnmarshalBinary |
pass | pass |
TestPrefixMasked |
pass | pass |
TestPrefixMasked/192.168.0.255/24 |
pass | pass |
TestPrefixMasked/2100::/3 |
pass | pass |
TestPrefixMasked/invalid_Prefix |
pass | pass |
TestPrefixMasked/invalid_Prefix#01 |
pass | pass |
TestPrefixMasking |
pass | pass |
TestPrefixMasking/IPv4 |
pass | pass |
TestPrefixMasking/IPv4/100.64.0.0/10 |
pass | pass |
TestPrefixMasking/IPv4/192.0.0.0/16 |
pass | pass |
TestPrefixMasking/IPv4/255.255.240.0/20 |
pass | pass |
TestPrefixMasking/IPv4/invalid_Prefix |
pass | pass |
TestPrefixMasking/IPv6 |
pass | pass |
TestPrefixMasking/IPv6/2001:db8::/32 |
pass | pass |
TestPrefixMasking/IPv6/::/63 |
pass | pass |
TestPrefixMasking/IPv6/a000::/4 |
pass | pass |
TestPrefixMasking/IPv6/fe80::dead:beef:0:0/96 |
pass | pass |
TestPrefixMasking/IPv6/invalid_Prefix |
pass | pass |
TestPrefixMasking/IPv6_zone |
pass | pass |
TestPrefixMasking/IPv6_zone/2001:db8::/32 |
pass | pass |
TestPrefixMasking/IPv6_zone/::/63 |
pass | pass |
TestPrefixMasking/IPv6_zone/a000::/4 |
pass | pass |
TestPrefixMasking/IPv6_zone/fe80::dead:beef:0:0/96 |
pass | pass |
TestPrefixMasking/IPv6_zone/invalid_Prefix |
pass | pass |
TestPrefixMasking/nil |
pass | pass |
TestPrefixMasking/nil/invalid_Prefix |
pass | pass |
TestPrefixMasking/nil/invalid_Prefix#01 |
pass | pass |
TestPrefixOverlaps |
pass | pass |
TestPrefixString |
pass | pass |
TestPrefixUnmarshalTextNonZero |
pass | pass |
TestPrefixValid |
pass | pass |
TestUint128AddSub |
pass | pass |
Disclosed divergences
A disclosed divergence is a specific Go assertion the managed CLR provably cannot satisfy — not
a skipped test and not a tolerance. Each one is pinned by exact failure signature in the package’s
hand-owned go2cs_test_disclosures.json;
a disclosed test that fails any other way is still a hard mismatch.
| Test | Class | Pinned reason |
|---|---|---|
TestAddrStringAllocs |
aggregate |
no failure text of its own — the roll-up of this test’s disclosed subtests |
TestAddrStringAllocs/ipv4 |
alloc-profile |
exact-count AllocsPerRun assert (t.Errorf ‘allocs=%d, want 1’): Addr.String() must complete in exactly one allocation (the result string); the converted formatting path allocates 2 golib-site object(s) per run - the append-based hex/decimal formatting’s intermediate slice storage the CLR heap-allocates where Go’s escape analysis keeps it on the stack. True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the count reaches 1. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestAddrStringAllocs/ipv4-in-ipv6 |
alloc-profile |
exact-count AllocsPerRun assert (t.Errorf ‘allocs=%d, want 1’): Addr.String() must complete in exactly one allocation (the result string); the converted formatting path allocates 3 golib-site object(s) per run - the append-based hex/decimal formatting’s intermediate slice storage the CLR heap-allocates where Go’s escape analysis keeps it on the stack. True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the count reaches 1. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestAddrStringAllocs/ipv4-in-ipv6+zone |
alloc-profile |
exact-count AllocsPerRun assert (t.Errorf ‘allocs=%d, want 1’): Addr.String() must complete in exactly one allocation (the result string); the converted formatting path allocates 3 golib-site object(s) per run - the append-based hex/decimal formatting’s intermediate slice storage the CLR heap-allocates where Go’s escape analysis keeps it on the stack. True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the count reaches 1. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestAddrStringAllocs/ipv6 |
alloc-profile |
exact-count AllocsPerRun assert (t.Errorf ‘allocs=%d, want 1’): Addr.String() must complete in exactly one allocation (the result string); the converted formatting path allocates 106 golib-site object(s) per run - the append-based hex/decimal formatting’s intermediate slice storage the CLR heap-allocates where Go’s escape analysis keeps it on the stack. True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the count reaches 1. Measured 106 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestAddrStringAllocs/ipv6+zone |
alloc-profile |
exact-count AllocsPerRun assert (t.Errorf ‘allocs=%d, want 1’): Addr.String() must complete in exactly one allocation (the result string); the converted formatting path allocates 106 golib-site object(s) per run - the append-based hex/decimal formatting’s intermediate slice storage the CLR heap-allocates where Go’s escape analysis keeps it on the stack. True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the count reaches 1. Measured 106 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs |
aggregate |
no failure text of its own — the roll-up of this test’s disclosed subtests |
TestNoAllocs/Addr.As16 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.As4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.BitLen |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Compare |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Is4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Is4In6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Is6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsGlobalUnicast |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsInterfaceLocalMulticast |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsLinkLocalMulticast |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsLinkLocalUnicast |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsLoopback |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsMulticast |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsPrivate |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsUnspecified |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.IsZero |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Less |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 6 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 6 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Next |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Prefix/4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Prefix/6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Prev |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Unmap |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.WithZone |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Zone/4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Zone/6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Addr.Zone/6zone |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 4 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 4 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/AddrFrom16 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/AddrFrom4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 1 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 1 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/AddrPortFrom |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 1 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 1 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/IPv4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 1 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 1 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/IPv6LinkLocalAllNodes |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/IPv6LinkLocalAllRouters |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/IPv6Loopback |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 2 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/MustParseAddr |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/MustParseAddrPort |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/MustParsePrefix |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/ParseAddr/4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/ParseAddr/6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 3 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 3 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/ParseAddrPort |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/ParsePrefix/4 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/ParsePrefix/6 |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 4 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 4 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Prefix.Contains |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 8 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 8 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Prefix.IsSingleIP |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Prefix.IsZero |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Prefix.Masked |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 5 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 5 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/Prefix.Overlaps |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 10 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 10 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestNoAllocs/PrefixFrom |
alloc-profile |
want-0 AllocsPerRun assert (t.Fatalf ‘allocs = %d; want 0’): the measured closure runs netip constructors/methods that Go keeps allocation-free via stack allocation and inlining (the package’s own TestInlining pins those inlining decisions), while the converted path allocates 1 golib-site object(s) per run - parse working buffers, slice headers, and pointer-box shells the managed conversion needs on the heap. go2cs’s AllocsPerRun counter is a true object count over golib’s allocation sites (a lower bound on the real total), so this is a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when its site’s count reaches zero. Measured 1 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestParsePrefixAllocs |
aggregate |
no failure text of its own — the roll-up of this test’s disclosed subtests |
TestParsePrefixAllocs/192.168.1.0/24 |
alloc-profile |
differential want-0 AllocsPerRun assert (t.Errorf ‘allocs=%d, want 0’): asserts ParsePrefix allocates exactly as many objects as ParseAddr of the same address; the converted ParsePrefix adds 2 golib-site object(s) per run over ParseAddr’s own count (the prefix parse’s extra slicing and value box). True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the differential reaches zero. Measured +2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
TestParsePrefixAllocs/aaaa:bbbb:cccc::/24 |
alloc-profile |
differential want-0 AllocsPerRun assert (t.Errorf ‘allocs=%d, want 0’): asserts ParsePrefix allocates exactly as many objects as ParseAddr of the same address; the converted ParsePrefix adds 2 golib-site object(s) per run over ParseAddr’s own count (the prefix parse’s extra slicing and value box). True object count over golib’s allocation sites (a lower bound on the real total): a genuine allocation-profile divergence, not a counting-regime artifact. Reduction of exactly these sites is the banked zh-box reduction arc’s netip harvest; this entry retires when the differential reaches zero. Measured +2 object(s)/run, 2026-08-29, go1.23.12/windows-amd64. |
Excluded declarations
Declarations filtered from both sides of the comparison, and therefore not claimed above:
Benchmark, Fuzz and Example declarations the converted host does not execute, plus any
test requiring a capability the managed runtime does not provide — a testing member the host
has not implemented, or a platform behavior it provably cannot reproduce. Each is named with
the capability it needs.
- BenchmarkAddrMarshalText (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAddrPortMarshalText (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAddrPortString (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAddrString (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkAs16 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkBinaryMarshalRoundTrip (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPNextPrev (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPStringExpanded (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPv4 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPv4Contains (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPv4_inline (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPv6 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkIPv6Contains (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkParseAddr (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkParseAddrPort (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkPrefixMarshalText (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkPrefixMasking (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStdIPv4 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStdIPv6 (benchmark): benchmark execution is deferred to Phase 4D
- BenchmarkStdParseIP (benchmark): benchmark execution is deferred to Phase 4D
- FuzzParse (fuzz): fuzz execution is deferred to Phase 4D