Skip to content

Release 2.2.0 - #145

Merged
EONRaider merged 1 commit into
masterfrom
release/2.2.0
Sep 4, 2026
Merged

Release 2.2.0#145
EONRaider merged 1 commit into
masterfrom
release/2.2.0

Conversation

@EONRaider

Copy link
Copy Markdown
Owner

Summary

Version bump for the release that closes out the post-1.3.0 roadmap (#107). Bumps pyproject.toml, src/netprotocols/__init__.py, and uv.lock from 2.0.0 to 2.2.0, and turns the CHANGELOG.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 master since 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 throughout README.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.0
  • uv.lock: regenerated (uv lock) to match
  • CHANGELOG.md: ## [Unreleased]## [2.2.0] - 2026-09-04

Verification

  • uv run --frozen ruff check . and uv run --frozen ruff format --check . are clean
  • uv run --frozen mypy is clean (strict)
  • uv run --frozen pytest passes — 1088 passed
  • python -c "from netprotocols import __version__; print(__version__)"2.2.0

Notes

Once merged, pushing tag v2.2.0 triggers release.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

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
@EONRaider
EONRaider merged commit 401a1c6 into master Sep 4, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants