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.