Release 2.2.0 - #145
Merged
Merged
Conversation
Typed accessors and pattern-matching ergonomics (#105): *_enum companions for every enum-backed field; IPv4/TCP/DHCP curate a short __match_args__ by hand where the auto-generated positional form is too wide to be usable; DNS resource records gain typed RDATA and every question, not just the first. Universal round-trip properties, nightly fuzzing, a pcap reader (#106): Hypothesis fuzzing covers all 18 protocols instead of 4; CI runs a derandomized profile on every push and a full random-seed sweep nightly; every raise site carries structured diagnostic context instead of a formatted string; a real Pyodide runtime proves the browser claim in CI; read_captures()/read_pcap()/read_pcapng() take bytes, not a path, autodetecting classic pcap vs. pcapng. Plus the roadmap's closing research work (#124, #107): an audit of ten comparable Python packet libraries' CI configurations for an actual performance-regression gate (none have one), and the resulting lift of the comparative-claims embargo — every previously-held section of docs/CLAIMS.md re-measured against this tree and published, including one number that moved against this project (decode throughput vs. dpkt) and is reported as measured rather than smoothed over. No breaking changes anywhere in this release — every addition is additive, matching the minor-version scope; nothing here required the major bump 2.0.0 needed for .payload's removal. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0143tMFpiopxYLf6A2EeDyo9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Version bump for the release that closes out the post-1.3.0 roadmap (#107). Bumps
pyproject.toml,src/netprotocols/__init__.py, anduv.lockfrom 2.0.0 to 2.2.0, and turns theCHANGELOG.md## [Unreleased]header into## [2.2.0] - 2026-09-04— same mechanics as the 2.0.0 release (#133).Why 2.2.0 and not a major bump: everything accumulated on
mastersince 2.0.0 is additive — Tier 3 (#105, typed accessors and pattern-matching ergonomics), Tier 4 (#106, round-trip properties/fuzzing/pcap reader), and this session's #124 audit + embargo lift (docs/tooling only). No breaking changes, so this is a minor bump per semver. 2.2.0 rather than 2.1.0 because the roadmap (#107) itself pre-assigned Tier 3 → 2.1.0 and Tier 4 → 2.2.0 as milestone labels before either shipped; since neither was released standalone, shipping the combined state under the higher, already-public label (referenced throughoutREADME.md's roadmap table and issue #106) is more faithful to that plan than semver reasoning alone would require, and 2.1.0 was never actually a released version to skip past.What's included
pyproject.toml,src/netprotocols/__init__.py: version 2.0.0 → 2.2.0uv.lock: regenerated (uv lock) to matchCHANGELOG.md:## [Unreleased]→## [2.2.0] - 2026-09-04Verification
uv run --frozen ruff check .anduv run --frozen ruff format --check .are cleanuv run --frozen mypyis clean (strict)uv run --frozen pytestpasses — 1088 passedpython -c "from netprotocols import __version__; print(__version__)"→2.2.0Notes
Once merged, pushing tag
v2.2.0triggersrelease.yml: re-runs the full CI matrix against the tagged commit, verifies the tag matches the packaged version, and publishes to PyPI via trusted publishing — same as 2.0.0.🤖 Generated with Claude Code
https://claude.ai/code/session_0143tMFpiopxYLf6A2EeDyo9
Generated by Claude Code