Standard library coverage
On this page
As of Xo 0.36 (development, main cb96872b6 of 2026-11-03); Go 1.26.1. Every count below comes from a command run on that commit: go list std without internal and vendor packages, and the table in the repository’s std-coverage.md (decision 0276: Go’s standard library is std’s reference scope).
Summary
Go has 176 public standard library packages. Xo has 61 std modules besides the prelude (the builtin types and capabilities every program sees).
| Status | Go packages |
|---|---|
| Covered (done) | 66 |
| Partial | 33 |
| Not applicable by design | 52 |
| Gap, potentially planned | 25 |
Beyond Go: modules with no Go standard library counterpart, or going past it, are listed under Beyond Go.
Maturity levels
Each std module gets three marks, one per axis, and an overall level that is the weakest of the three (owner, 2026-11-02, decision 0461).
| Axis | Early | Solid | Proven |
|---|---|---|---|
| Features, against Go’s package or the domain | core uses | common uses, gaps listed | near full parity, or beyond Go |
| Testing | own tests | Go’s tests ported or a Go differential; parsers fuzzed | also --race and load stress clean, long fuzz runs, security reviewed where it applies (crypto, tls, http, x509) |
| Performance | not measured, or measured and above 2x Go | measured against Go, within 2x | at or better than Go on its benchmark |
How a mark is read here: Features from the rows of the coverage table that name the module (all done is Proven, any partial is Solid; a module with no Go package is Solid and says so). Testing from the committed corpus of Go’s tests under internal/stdtest/testdata/corpus, Go differential tests, and fuzz tests for modules that parse untrusted input. Performance from a committed result file with a Go twin. A mark with no committed evidence is Early, so a missing result is the gap to close, not a hidden number. The dates are those of the result files, which can be older than this page; a re-run can only move a mark if the file is replaced.
Today: overall 0 Proven, 26 Solid, 36 Early of 62 (prelude and 61 modules). Per axis, features 35/27/0, testing 0/41/21, performance 17/18/27 (Proven/Solid/Early). No module has the committed --race, load stress, long fuzz and security review evidence that Proven testing needs yet.
Per module
Marks only. Each module has its three marks (F features, T testing, P performance) and the short figures behind them; times are multiples of Go’s time, so lower is faster and 0.47x is better than Go. The prose behind each mark (which rows are partial, the timings, what is missing, the evidence link) is under Module notes; each module name links to its note.
| Module | Marks: F features, T testing, P performance |
|---|---|
prelude | F Solid T Solid P Early Features 15/18 · Testing ported · Performance 0.91 to 1.62x |
std/adler32 | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/archive | F Proven T Solid P Solid Features 2/2 · Testing ported + hostile · Performance 0.27 to 1.2x |
std/backoff | F Solid T Solid P Early Features beyond Go · Testing ported · Performance no row |
std/base32 | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.47 to 0.98x |
std/base64 | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.57 to 0.88x |
std/bcrypt | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/big | F Solid T Solid P Solid Features 0/1 · Testing ported · Performance 0.49 to 1.23x |
std/binary | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/bufio | F Solid T Solid P Early Features own domain · Testing ported · Performance no row |
std/cbor | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance see notes |
std/charset | F Proven T Solid P Early Features 2/2 · Testing ported · Performance no row |
std/cli | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/compress | F Proven T Solid P Proven Features 2/2 · Testing ported + hostile · Performance 0.91 to 0.96x |
std/cookiejar | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/crc32 | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.37 to 0.96x |
std/crc64 | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/cron | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/crypto | F Solid T Solid P Solid Features 12/16 · Testing ported · Performance 1.12 to 1.2x |
std/csv | F Proven T Solid P Proven Features 1/1 · Testing ported + fuzz · Performance 0.92 to 1.01x |
std/debug | F Proven T Early P Early Features 1/1 · Testing own tests · Performance no row |
std/deque | F Solid T Solid P Proven Features own domain · Testing ported · Performance 0.13 to 0.17x |
std/dns | F Solid T Early P Proven Features 0/1 · Testing own tests · Performance 0.928x |
std/embed | F Proven T Early P Early Features 1/1 · Testing own tests · Performance no row |
std/fnv | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.98x |
std/go | F Solid T Early P Early Features own domain · Testing own tests · Performance no row |
std/heap | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/html | F Proven T Early P Solid Features 1/1 · Testing own tests · Performance 0.54 to 1.37x |
std/http | F Solid T Solid P Solid Features 1/5 · Testing ported + fuzz · Performance see notes |
std/idna | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.44 to 0.98x |
std/jpeg | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 1.01 to 1.04x |
std/json | F Solid T Solid P Proven Features 0/1 · Testing ported + fuzz · Performance 0.33 to 0.49x instr. |
std/log | F Solid T Early P Early Features 1/2 · Testing own tests · Performance no row |
std/mail | F Proven T Solid P Solid Features 1/1 · Testing ported · Performance 0.45 to 1.15x |
std/metrics | F Proven T Solid P Early Features 2/2 · Testing ported · Performance no row |
std/mime | F Solid T Solid P Solid Features 0/1 · Testing ported + hostile · Performance 0.9 to 1.28x |
std/multipart | F Solid T Early P Solid Features 0/1 · Testing ported, no fuzz · Performance 1.15x instr. |
std/netip | F Proven T Early P Early Features 1/1 · Testing ported, no fuzz · Performance 1.79 to 1.88x |
std/norm | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.7 to 0.75x |
std/otp | F Proven T Solid P Solid Features 1/1 · Testing ported · Performance 0.936 to 1.316x |
std/path | F Proven T Solid P Solid Features 2/2 · Testing ported · Performance 1.08 to 1.4x |
std/png | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.94 to 1.04x |
std/rate | F Solid T Solid P Solid Features beyond Go · Testing ported · Performance 1.29x |
std/regexp | F Proven T Early P Solid Features 1/1 · Testing ported, no fuzz · Performance 0.89 to 1.25x |
std/smtp | F Proven T Early P Early Features 1/1 · Testing ported, no fuzz · Performance no row |
std/sql | F Solid T Solid P Early Features 2/3 · Testing ported · Performance no row |
std/tabwriter | F Proven T Solid P Early Features 1/1 · Testing ported · Performance no row |
std/task | F Solid T Early P Early Features own domain · Testing own tests · Performance no row |
std/template | F Solid T Early P Solid Features 1/2 · Testing ported, no fuzz · Performance 0.9 to 1.36x |
std/term | F Solid T Early P Early Features own domain · Testing own tests · Performance no row |
std/testing | F Proven T Early P Early Features 2/2 · Testing own tests · Performance no row |
std/time | F Proven T Early P Early Features 1/1 · Testing ported, no fuzz · Performance 1.9 to 3.7x |
std/tls | F Solid T Early P Solid Features 0/1 · Testing differential, no fuzz · Performance see notes |
std/toml | F Solid T Early P Solid Features beyond Go · Testing own tests · Performance 1.17 to 1.32x |
std/trace | F Solid T Early P Early Features 0/1 · Testing own tests · Performance no row |
std/udp | F Solid T Early P Early Features 0/1 · Testing own tests · Performance no row |
std/url | F Solid T Solid P Proven Features 0/1 · Testing ported + fuzz · Performance 0.78x instr. |
std/uuid | F Proven T Solid P Proven Features 1/1 · Testing ported · Performance 0.72 to 1x |
std/websocket | F Solid T Early P Solid Features 0/1 · Testing own tests · Performance 0.4 to 1.12x |
std/x509 | F Solid T Solid P Proven Features own domain · Testing ported + fuzz · Performance 0.98x |
std/xml | F Solid T Solid P Solid Features 0/1 · Testing ported + fuzz · Performance 0.95 to 1.15x |
std/xmlcodec | F Solid T Early P Solid Features own domain · Testing ported, no fuzz · Performance 0.57 to 1.13x |
Module notes
One entry per module: the three marks with their evidence, in words, and when the module was added. The marks are the table’s; nothing here changes one.
prelude
Overall Early. Added go-compiler-final (2026-10-08).
- Features Solid: 15 of 18 mapped Go rows done, 3 partial.
- Testing Solid: Go’s tests ported.
- Performance Early: Str.trim_chars 1.62 of Go’s wall (was 2.24); fs walk_dir_entries 0.91 of Go’s wall (decision 0483; walk_dir with a FileInfo each 1.49, 0.94 with Go reading each entry’s info); itoa 1.35 (was 1.52), atoi 1.46, sort of strings 1.42; split, search, case and predicate workloads 0.4 to 1.24 (2026-11-03).
std/adler32
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/archive
Overall Solid. Added v0.11.0 (2026-10-11).
- Features Proven: all 2 mapped Go rows done.
- Testing Solid: Go’s tests ported; 2,010 hostile tar and zip archives (Go-written and hand-built headers, cut and field-mutated) against Go’s archive/tar and archive/zip readers on every backend.
- Performance Solid: zip 1.20, tar 1.04, unzip 0.99, untar 0.27 of Go’s wall (2026-11-03).
std/backoff
Overall Early. Added v0.35.0 (2026-10-29).
- Features Solid: beyond Go: no Go std package.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/base32
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: encode 0.98, decode 0.47 of Go’s wall (2026-11-03).
std/base64
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: encode 0.57, decode 0.88 of Go’s wall (2026-11-03).
std/bcrypt
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/big
Overall Solid. Added v0.24.0 (2026-10-21).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported.
- Performance Solid: mul 1.23, parse 0.49 of Go’s wall (2026-11-03).
std/binary
Overall Early. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/bufio
Overall Early. Added unreleased (2026-11-03).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/cbor
Overall Solid. Added v0.37.0 (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported; 1,500 seeded inputs from a byte level builder (random head widths, indefinite lengths, floats of every width, tags, simple values, repeated keys, text that is not UTF-8, then bits flipped, cuts, insertions) against fxamacker/cbor v2 (Go has no CBOR in its standard library), plus 12,000 fresh cases on arm64 and LLVM and the RFC 8949 Appendix A examples.
- Performance Proven: decode 0.43, encode 0.26, deterministic encode 0.62 of fxamacker/cbor’s wall (2026-11-03).
std/charset
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 2 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/cli
Overall Early. Added v0.11.0 (2026-10-11).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/compress
Overall Solid. Added v0.24.0 (2026-10-21).
- Features Proven: all 2 mapped Go rows done.
- Testing Solid: Go’s tests ported; 2,000 hostile DEFLATE, zlib and gzip streams (hand-built blocks and corrupted Go output) against Go’s decoders, error texts exact, plus streaming and max_size, on every backend.
- Performance Proven: gzip 0.96, gunzip 0.92, deflate 0.96, inflate 0.91 of Go’s wall (2026-11-03).
std/cookiejar
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/crc32
Overall Solid. Added v0.35.0 (2026-10-29).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: crc32 0.96, crc32c 0.37 of Go’s wall (2026-11-03).
std/crc64
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/cron
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/crypto
Overall Solid. Added v0.7.0 (2026-10-08).
- Features Solid: 12 of 16 mapped Go rows done, 4 partial.
- Testing Solid: Go’s tests ported.
- Performance Solid: AES-GCM bulk loop 1.12, ChaCha20-Poly1305 1.2 of Go (2026-10-22).
std/csv
Overall Solid. Added v0.11.0 (2026-10-11).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported; fuzz corpus against encoding/csv (2,000 texts under random Reader options, error texts exact, and the Writer’s output; internal/stdtest/csvfuzz_test.go runs fresh seeds).
- Performance Proven: parse 0.92, format 1.01 of Go’s wall (2026-11-03).
std/debug
Overall Early. Added v0.25.0 (2026-10-21).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/deque
Overall Solid. Added v0.36.0 (2026-10-30).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Solid: Go’s tests ported.
- Performance Proven: queue and both-ends workloads 0.13 to 0.17 of Go’s wall (2026-11-03).
std/dns
Overall Early. Added v0.35.0 (2026-10-29).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: own tests only.
- Performance Proven: mx 0.928 of Go’s wall (2026-11-03).
std/embed
Overall Early. Added v0.24.0 (2026-10-21).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/fnv
Overall Solid. Added v0.35.0 (2026-10-29).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: fnv 32a, 64a, 128a at most 0.98 of Go’s wall (2026-11-03).
std/go
Overall Early. Added v0.7.0 (2026-10-08).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/heap
Overall Early. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/html
Overall Early. Added v0.35.0 (2026-10-29).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: own tests only.
- Performance Solid: escape 1.37, unescape 0.54 of Go’s wall (2026-11-03).
std/http
Overall Solid. Added v0.7.0 (2026-10-08).
- Features Solid: 1 of 5 mapped Go rows done, 4 partial.
- Testing Solid: Go’s tests ported; request head, response and URL fuzz tests.
- Performance Solid: HTTP/2 14 us a request against Go’s 32; /alloc 0.97 of v0.35.0 (2026-11-02).
std/idna
Overall Solid. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: ascii 0.71, mixed 0.94, long 0.94, map 0.91, nfcmap 0.44, enc 0.98, dec 0.96 of Go’s wall (2026-11-03).
std/jpeg
Overall Solid. Added v0.37.0 (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported; 350 seeded files from a segment-aware mutator over Go’s test images and Go-encoded images (every chroma ratio, baseline and progressive, restart intervals, CMYK, YCCK, headers, tables, scan parameters, cuts, bit flips) against Go’s Decode and DecodeConfig, plus 12,000 fresh cases on arm64 and LLVM.
- Performance Proven: decode 1.01, with RGBA conversion 1.04 of Go’s wall (2026-11-03).
std/json
Overall Solid. Added v0.7.0 (2026-10-08).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported; fuzz corpus against encoding/json (2,022 cases; internal/stdtest/jsonfuzz_test.go runs fresh seeds).
- Performance Proven: 0.33 to 0.49 of Go’s instructions on native (2026-10-21).
std/log
Overall Early. Added v0.7.0 (2026-10-08).
- Features Solid: 1 of 2 mapped Go rows done, 1 partial.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/mail
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported; 2,000 addresses, address lists, header blocks and dates against Go’s net/mail (RFC 2047, groups, folds, zones) on every backend.
- Performance Solid: display 1.15, address 0.62, header block 0.45 of Go’s wall (2026-11-03).
std/metrics
Overall Early. Added v0.25.0 (2026-10-21).
- Features Proven: all 2 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/mime
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported; 2,000 cases against Go’s mime and net/http: hostile Content-Type headers (RFC 2231, continuations, duplicates), format_media_type, every DetectContentType signature, on every backend.
- Performance Solid: format 1.28, parse 1.06, detect 0.90 of Go’s wall (2026-11-03).
std/multipart
Overall Early. Added v0.23.0 (2026-10-20).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Solid: parse 1.15 of Go’s instructions (2026-10-21).
std/netip
Overall Early. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Early: n1 1.88, n2 1.79 of Go’s wall (2026-11-03).
std/norm
Overall Solid. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: ascii 0.75, nfc 0.7 of Go’s wall (2026-11-03).
std/otp
Overall Solid. Added unreleased (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Solid: sha1 0.936, sha256 1.316, sha512 0.937 of Go’s wall (2026-11-03).
std/path
Overall Solid. Added v0.7.0 (2026-10-08).
- Features Proven: all 2 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Solid: clean 1.08, join 1.13, parts 1.40 of Go’s wall (2026-11-03).
std/png
Overall Solid. Added v0.37.0 (2026-11-03).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported; 1,000 seeded files from a chunk-level builder and Go-encoded images (every color type and depth, bad headers, palettes, tRNS, split IDATs, cuts, bit flips) against Go’s Decode and DecodeConfig, plus 36,000 fresh cases over six seeds.
- Performance Proven: decode 1.04, encode 0.94 of Go’s wall (2026-11-03).
std/rate
Overall Solid. Added v0.35.0 (2026-10-29).
- Features Solid: beyond Go: x/time/rate is outside std.
- Testing Solid: Go’s tests ported.
- Performance Solid: allow 1.29 of Go’s wall (2026-11-03).
std/regexp
Overall Early. Added v0.11.0 (2026-10-11).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Solid: match 1.25, find_all 0.89 of Go’s wall (2026-11-03).
std/smtp
Overall Early. Added v0.24.0 (2026-10-21).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Early: no committed row against Go.
std/sql
Overall Early. Added v0.7.0 (2026-10-08).
- Features Solid: 2 of 3 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/tabwriter
Overall Early. Added v0.35.0 (2026-10-29).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Early: no committed row against Go.
std/task
Overall Early. Added v0.7.0 (2026-10-08).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/template
Overall Early. Added v0.24.0 (2026-10-21).
- Features Solid: 1 of 2 mapped Go rows done, 1 partial.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Solid: render 1.36, parse 0.90 of Go’s wall (2026-11-03).
std/term
Overall Early. Added v0.11.0 (2026-10-11).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/testing
Overall Early. Added v0.7.0 (2026-10-08).
- Features Proven: all 2 mapped Go rows done.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/time
Overall Early. Added v0.7.0 (2026-10-08).
- Features Proven: all 1 mapped Go rows done.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Early: format 3.7 and parse 3.6 of Go’s wall with string layouts (5.4 and 4.7 before the one-scan format and parse), 2.03 and 1.90 with a const Layout; civil 0.46 (2026-11-03).
std/tls
Overall Early. Added v0.23.0 (2026-10-20).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: TLS 1.3 client and server differential against Go; parser with no fuzz harness.
- Performance Solid: HTTP/2 14 us a request against Go’s 32; handshakes mixed (2026-10-21).
std/toml
Overall Early. Added v0.11.0 (2026-10-11).
- Features Solid: beyond Go: Go has no TOML in std.
- Testing Early: own tests only.
- Performance Solid: decode 1.17, encode 1.32 of Go’s wall (2026-11-03).
std/trace
Overall Early. Added v0.25.0 (2026-10-21).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/udp
Overall Early. Added v0.35.0 (2026-10-29).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: own tests only.
- Performance Early: no committed row against Go.
std/url
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported; URL fuzz test.
- Performance Proven: 0.78 of Go’s instructions (2026-10-23).
std/uuid
Overall Solid. Added v0.23.0 (2026-10-20).
- Features Proven: all 1 mapped Go rows done.
- Testing Solid: Go’s tests ported.
- Performance Proven: parse 0.91, string 0.72, bytes 1.00 of Go’s wall (2026-11-03).
std/websocket
Overall Early. Added v0.24.0 (2026-10-21).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Early: own tests only.
- Performance Solid: small messages 1.12, big 0.40, dial 0.77 of Go’s wall (2026-11-03).
std/x509
Overall Solid. Added v0.35.0 (2026-10-29).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Solid: Go’s tests ported; fuzz cases in its corpus.
- Performance Proven: parse, verify, create and CRL at most 0.98 of Go’s wall (2026-11-03).
std/xml
Overall Solid. Added v0.24.0 (2026-10-21).
- Features Solid: 0 of 1 mapped Go rows done, 1 partial.
- Testing Solid: Go’s tests ported; fuzz corpus against encoding/xml (2,000 documents through Token, Token not strict, and RawToken, error texts exact; internal/stdtest/xmlfuzz_test.go runs fresh seeds).
- Performance Solid: tokens 1.15, tree 0.95 of Go’s wall (2026-11-03).
std/xmlcodec
Overall Early. Added v0.24.0 (2026-10-21).
- Features Solid: no Go package maps to it; covers its own domain’s common uses.
- Testing Early: Go’s tests ported; parser with no fuzz harness.
- Performance Solid: encode 0.57, decode 1.13 of Go’s wall (2026-11-03).
Go packages
All 176 packages of go list std, by status. A package that maps to a module names it; the repository’s coverage table has the notes per row.
Covered (66)
The module covers what a backend uses of the package, on the native backends and the Go backend.
| Go package | Xo |
|---|---|
archive/tar | std/archive |
archive/zip | std/archive |
bytes | prelude Bytes, BytesBuilder |
cmp | prelude List, Map, Set, Ord |
compress/flate | std/compress (and std/archive gzip, gunzip) |
compress/gzip | std/compress (and std/archive gzip, gunzip) |
compress/zlib | std/compress zlib, unzlib |
container/heap | std/heap |
context | scopes, cancellation, task.with_timeout |
crypto/ed25519 | std/crypto |
crypto/hkdf | std/crypto |
crypto/hmac | std/crypto hmac, hmac_hasher |
crypto/md5 | std/crypto Hash.Md5 |
crypto/pbkdf2 | std/crypto hash_password |
crypto/rand | prelude Rand, crypto.random_bytes, token |
crypto/sha1 | std/crypto Hash.Sha1 |
crypto/sha256 | std/crypto |
crypto/sha3 | std/crypto Hash |
crypto/sha512 | std/crypto Hash |
crypto/subtle | std/crypto equal |
database/sql/driver | std/sql Driver, DriverConn, DriverRows, open_driver |
embed | std/embed (with core 3.1’s embed) |
encoding/base32 | std/base32 |
encoding/base64 | std/base64, prelude Bytes |
encoding/binary | std/binary |
encoding/csv | std/csv |
encoding/hex | prelude Bytes |
encoding/pem | std/crypto |
errors | !` results, Error interface |
expvar | std/metrics |
flag | std/cli |
hash/crc32 | std/crc32 |
hash/fnv | std/fnv |
html | std/html |
log | std/log |
maps | prelude List, Map, Set, Ord |
math/bits | prelude Int word methods |
math/rand | prelude Rand capability |
math/rand/v2 | prelude Rand capability |
net/http/cookiejar | std/cookiejar |
net/http/httptest | std/testing FakeNet, Router.call |
net/http/pprof | std/debug router (decision 0325) |
net/mail | std/mail |
net/netip | std/netip |
net/smtp | std/smtp |
os/exec | prelude Proc, Cmd, Child |
path | std/path |
path/filepath | prelude Fs paths, std/path |
regexp | std/regexp |
regexp/syntax | std/regexp |
slices | prelude List, Map, Set, Ord |
sort | prelude List, Map, Set, Ord |
strconv | prelude Int.parse, parse_base, to_str_base, Float.parse, Bool.parse, quote, unquote |
strings | prelude Str |
sync | prelude Mutex, Atomic, Chan, task.once, semaphore |
sync/atomic | prelude Mutex, Atomic, Chan, task.once, semaphore |
testing | test blocks, std/testing |
testing/fstest | MemFs |
testing/quick | property tests |
testing/synctest | FakeClock, deterministic scheduling under xo test |
text/tabwriter | std/tabwriter (decision 0410) |
text/template | std/template |
time | prelude Time, Duration, std/time |
time/tzdata | std/tzdata, embedded per use |
unicode | prelude Rune |
unicode/utf8 | prelude Str, Bytes |
Partial (33)
Some of it; the notes in the coverage table name what is missing.
| Go package | Xo |
|---|---|
bufio | File, Conn, Child read and write, Fs.walk |
crypto/aes | std/crypto |
crypto/cipher | std/crypto |
crypto/ecdh | inside std/native/llrt (X25519, nistec) |
crypto/ecdsa | std/crypto |
crypto/elliptic | std/crypto |
crypto/mlkem | inside std/native/llrt/mlkem.xo |
crypto/rsa | std/crypto |
crypto/tls | std/http (with_tls, with_roots, tls_cert), std/tls (client) |
crypto/x509 | std/crypto (keys); inside std/native/llrt (x509.xo, x509verify.xo) |
crypto/x509/pkix | std/crypto (keys); inside std/native/llrt (x509.xo, x509verify.xo) |
database/sql | std/sql |
encoding/asn1 | inside std/native/llrt/asn1.xo |
encoding/json | std/json |
encoding/xml | std/xml |
fmt | string interpolation, Display, Debug |
hash | std/crypto Hasher |
html/template | std/template |
io | File, Conn, Child read and write, Fs.walk |
io/fs | File, Conn, Child read and write, Fs.walk |
io/ioutil | File, Conn, Child read and write, Fs.walk |
log/slog | std/log fields, Format.Json, std/trace |
math | prelude Float |
math/big | std/big |
mime | std/mime |
mime/multipart | std/multipart |
mime/quotedprintable | inside std/native/multipart and mail |
net | prelude Net (TCP, Unix sockets, lookup_host, dial_timeout), std/udp, std/dns (MX, TXT, SRV, PTR), DNS client in std/native/llrt/dns.xo |
net/http | std/http Client |
net/textproto | inside std/native/llrt (http1) |
net/url | std/url, std/http parse_url and Url |
os | prelude Fs, Env, Proc, Stdio |
os/signal | core 7.5 shutdown, task.stop_requested, Proc.kill |
Not applicable by design (52)
Reflection, Go source tooling, cgo and the runtime’s internals are replaced by language features or the toolchain, or the algorithm is broken or legacy.
container/list, crypto, crypto/fips140, crypto/mlkem/mlkemtest, debug/buildinfo, debug/dwarf, debug/elf, debug/gosym, debug/macho, debug/pe, debug/plan9obj, encoding, encoding/ascii85, go/ast, go/build, go/build/constraint, go/constant, go/doc, go/doc/comment, go/format, go/importer, go/parser, go/printer, go/scanner, go/token, go/types, go/version, image/color/palette, image/draw, image/gif, iter, math/cmplx, net/http/cgi, net/http/fcgi, net/http/httptrace, plugin, reflect, runtime, runtime/cgo, runtime/coverage, runtime/debug, runtime/metrics, runtime/pprof, runtime/race, runtime/trace, structs, syscall, testing/cryptotest, testing/iotest, testing/slogtest, text/template/parse, unsafe
Gaps, potentially planned (25)
Nothing yet, wanted. See Roadmap of gaps.
| Go package | Xo |
|---|---|
compress/bzip2 | none |
compress/lzw | none |
container/ring | none |
crypto/des | none |
crypto/dsa | none |
crypto/hpke | none |
crypto/rc4 | none |
encoding/gob | none |
hash/adler32 | std/adler32 |
hash/crc64 | std/crc64 |
hash/maphash | none |
image | none |
image/color | none |
image/jpeg | std/jpeg |
image/png | std/png |
index/suffixarray | none |
log/syslog | none |
net/http/httputil | none |
net/rpc | none |
net/rpc/jsonrpc | none |
os/user | Env.home |
text/scanner | none |
unicode/utf16 | std/charset |
unique | none |
weak | none |
Beyond Go
Modules with no Go standard library counterpart, or that go past it: std/backoff (no Go std package), std/dns (net.Resolver covers part), std/metrics (expvar plus a Prometheus registry), std/rate (x/time/rate is outside std), std/sql (database/sql plus a PostgreSQL driver), std/toml (Go has no TOML in std), std/trace (no Go std tracing API of this kind), std/udp (net.UDPConn), std/uuid (Go has no UUID in std), std/websocket (Go has no websocket in std). Also in std/crypto: Argon2id password hashing, AES-GCM and ChaCha20-Poly1305 as public AEAD, HKDF.
Function level checks
The coverage table is checked against the code, not only the package names. Examples from this commit (xo symbols --module=... --pub):
crypto/md5,crypto/sha1:Hash.Md5andHash.Sha1instd/crypto, one-shot and streaming (Hasher), also throughhmac. Covered.encoding/hex:Bytes.to_hexandBytes.from_hexin the prelude. Covered; Go’sDumpis not offered.hash/crc32:std/crc32withPoly.IeeeandPoly.Castagnoli,checksumandupdate. Covered.hash/crc64andhash/adler32have no module: gaps.net/http/cookiejar:std/httpreads and writes cookies on aRequest(cookie,cookies,with_cookie) but the client has no jar. Gap, planned with client cookies.
Roadmap of gaps
The gaps are potentially planned: a priority and a realistic timeframe, not a commitment. The ordering is the std owner’s estimate (2026-11-02) from port effort and demand, and the owner decides.
| Priority | Gap | Timeframe |
|---|---|---|
| 1 | encoding/gob, net/rpc; compress/bzip2, compress/lzw; small hashes (hash/crc64, hash/adler32); os/user; log/syslog; expvar; text/scanner; container/ring; unicode/utf16; index/suffixarray | Q1 2027 |
| 2 | legacy crypto (crypto/des, crypto/dsa, crypto/rc4); weak, unique | last, or possibly never |
The repository’s coverage table still lists some of these as not planned (for example encoding/gob, net/rpc, text/scanner, log/syslog, container/ring, index/suffixarray, the image packages); this page follows the owner’s list, and the table moves with the decision. CBOR is not a Go package; it is listed because it is first on the list.
Sources: std-coverage.md, std/changes (every module’s change log), decision 0276 and decision 0461.
↑ index