Skip to content

Releases and Versioning

go-while edited this page Oct 30, 2026 · 8 revisions

Releases and Versioning

Releases are git tags vX.Y.Z on main (tags). Use one with go get github.com/go-while/nntp-testkit@v0.7.0, or @latest.

The kit is below 1.0. So far a minor version (0.x.0) added API or raised the Go minimum, and the one patch version (v0.4.1) changed behaviour only. Raising the Go minimum needs a new minor version.

Go versions

go.mod says go 1.26.0. CI (test.yml) runs Go oldstable and stable on Linux and macOS, today 1.26 and 1.27. Windows is not tested: proc sends Unix signals. NOTES.md says what to do once Go 1.28 is out.

Changes

Version Date Changes
v0.10.0 2026-10-30 conformance.Options.StrictOverviewFmt and -strict-overview-fmt in cmd/nntp-conformance: LIST OVERVIEW.FMT and OVER must use RFC 3977's :bytes and :lines; by default the older Bytes:/Lines: the RFC still allows are accepted
v0.9.0 2026-10-25 yenc: yEnc-encoded test posts. Encode (single part), EncodeParts (multi-part); options for line length, raw dots and spaces, extra escapes and broken posts (no =ybegin/=yend, wrong size or CRC); Data in four reproducible profiles (random, plain, escapes, edges); Generator fills a fake-server group with such posts
v0.8.0 2026-10-25 conformance and cmd/nntp-conformance: black-box checks of a server against RFC 3977 (reader commands), RFC 4643 (AUTHINFO) and RFC 4644 (streaming, IHAVE), each passed, failed or skipped with a detail. Fake server: HDR and XHDR in Store mode, LIST HEADERS, NoHdr/NoXhdr and a HdrLines hook; a peer server no longer lists READER, answers MODE READER with 502 and AUTHINFO with 482 or 502 (RFC 4643)
v0.7.1 2026-10-24 COMPRESS DEFLATE: the client and the fake server send each compressed command or reply in one socket write, so a server that answers and closes (nnrpd on QUIT) no longer makes the client's write fail with EPIPE/ECONNRESET; internal/inflate stops after its output failed
v0.7.0 2026-10-23 COMPRESS DEFLATE (RFC 8054): client.Conn.TryCompress, Compress, StartCompress, Compressed (an own inflater that also reads zlib's partial flush, as INN's nnrpd sends it); fakeserver.Conn.StartCompress, StartCompressOutputOnly, Compressed; StoreOptions.Compress, CompressOutputOnly; PeerOptions.Compress, CompressOutputOnly; Step.Compress
v0.6.0 2026-10-23 PeerHandler answers IHAVE (435, 436 with PeerOptions.Defer436Once, 335 then 235/437); PeerOptions.Reject (TAKETHIS 439, IHAVE 437 after the article) and NoStream (MODE STREAM 501, CHECK/TAKETHIS 500); CAPABILITIES of the peer lists IHAVE. Store mode: NEWNEWS over the new Article.Arrived, StoreOptions.NoNewnews; HELP leaves out the commands NoOver, NoXover and NoNewnews turn off; proc.Process.Done(), a channel closed once the process exited (a bounded wait that never stops it)
v0.5.0 2026-10-23 Generated groups: Store.AddGenerated with a Generator (articles made on demand, never stored, 10^7 and more), SetGeneratedHigh, NumbersIn, GenLimit, GeneratedArticle, DefaultGenLimit; StoreOptions.OverviewFields (overview records out of step with the articles); proc.Options.Ulimit (resource limits for the process: few file descriptors, a file size limit)
v0.4.1 2026-10-22 A 480 written to a logged-in connection (also one from Faults.Override) ends its login, so the client must send AUTHINFO again, as after a login that timed out
v0.4.0 2026-10-22 Behaviours of real servers: Store.RemoveArticle, Expire, Cancel (the high-water mark stays), HighestExisting; StoreOptions.GroupNumbers, ListgroupRange, NoOver, NoXover, EmptyOverReply, MaxOverRange, OverRangeTooLarge; Options.MaxConns and MaxConnsGreeting; Conn.ID; faults LineDelay, OverrideFrom, OverrideTimes
v0.3.0 2026-10-22 Faults OverrideLine, Drip, Endless and LongLine
v0.2.0 2026-10-21 Go 1.26 minimum; CI on Linux and macOS
v0.1.0 2026-10-17 First release: client (strict mode), fakeserver (Script, Handler and Store mode, faults, TLS, streaming peer), proc, the conformance stub

Users

Project Uses
NewsCache tests/e2e pins a version in its go.mod (v0.10.0 since its PR #232, 2026-10-30); its e2e suite runs the conformance checks against the real daemon, with StrictOverviewFmt
INN fork tests/e2e: end-to-end tests of innd, nnrpd, innfeed, innxmit, getlist and pullnews (v0.7.0)

Clone this wiki locally