Repository navigation
Releases and Versioning
go-while edited this page Oct 30, 2026
·
8 revisions
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.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.
| 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 |
| 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) |
nntp-testkit is free software under the GNU General Public License, version 2 — see LICENSE.