log — validation proof

Go’s own log 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 log row in Validated Test Packages.

Validated 2026-08-25 · converter e2182a59e

8 matched · 1 disclosed — Go 1.23.12, windows/amd64, converted package src/core/log.

Verdicts

Test go test go2cs
TestAll pass pass
TestDefault pass pass
TestDiscard pass fail (disclosed)
TestEmptyPrintCreatesLine pass pass
TestFlagAndPrefixSetting pass pass
TestNonNewLogger pass pass
TestOutput pass pass
TestOutputRace pass pass
TestUTCFlag 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
TestDiscard alloc-profile at-most-one AllocsPerRun assert over l.Printf(“%s”, <102400-byte string>): Go’s single allocation is the variadic []any, and its func(b []byte) []byte closure over format/v does not escape Output, so Go’s escape analysis keeps the closure off the heap entirely. The converted call must heap-allocate what Go stack-allocates — the params array, the display class the C# compiler emits for the same closure, and its delegate — measured 3 golib-site allocations per run against Go’s 1, and that figure is a LOWER BOUND (go2cs’s counter covers golib’s sites, not compiler-emitted or BCL allocations). Same shape as bufio’s TestReadStringAllocs: the count is comparable, it is WHERE the allocations live that differs

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.