Repository navigation
chore(release): prepare v0.9.5 - #68
Conversation
Problem - v0.9.5 is ready to ship: macro-free structured-binding member names, the handler classification rewrite and the variant fast path for bare is<T> and alt<I> have landed since v0.9.4. Implementation - Bump the version to 0.9.5 in CMakeLists.txt, packaging/vcpkg/vcpkg.json and the README FetchContent tag. - Add docs/changelog/v0.9.5.md with the PTN_BIND deprecation and the pointer-to-member handler behavior change; register it in releases.md and mkdocs.yml. - Add docs/performance/v0.9.5.md with the bare is<T> and alt<I> dispatch measurement against v0.9.4, and link it from the performance overview and mkdocs.yml. - roadmap: label the finished items as v0.9.5. Tests - Changelog examples compiled and run (Apple clang 17, C++17). - Full suite: 256/256.
There was a problem hiding this comment.
Release prep looks good — approving.
Checked
- Version bumps are consistent:
CMakeLists.txt,packaging/vcpkg/vcpkg.jsonand the README FetchContentGIT_TAGall move to 0.9.5. No version macros ininclude/ptn/that would also need bumping. - New pages are registered in all three places (
docs/changelog/releases.md,docs/performance/index.md,mkdocs.yml), newest-first, and the release note header matches the v0.9.4 format. - The perf note's code references are real:
canonical_pattern_tis inpattern_base.hppand applied inops.hppas described. - The roadmap now lists the handler-classification change alongside the other v0.9.5 items, and the
performance/index.mdsummary correctly folds v0.9.4 into the "no new dispatch algorithms" range. - The pointer-to-member behavior change is documented with a clear before/after and a workaround, and the
PTN_BINDdeprecation spells out the C++17 +PTN_ONcase where it's still needed.
Non-blocking nit
In the Migration Guide's "after" snippet, the comment says namespace scope, but auto r = match(p) | on(...) reads like function-scope code (it needs a p). Splitting it into a namespace-scope block for pt / auto [x, y] and a function body for the match call would make the scope rule harder to misread. Fine to leave for a follow-up.
Post-merge steps (tag, release, portfile SHA512, vcpkg port bump) are tracked in the description, so nothing missing here. CI was still running at review time; auto-merge will wait for it.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Benchmark comparison (informational)Base Noise estimate: the 20 control rows below do not run Patternia code, so they should not change between base and PR. As a group they moved by a median of +0.0% (run order and machine drift); that offset is divided out of the Patternia deltas (Adjusted). The controls then scatter by a median of 0.1%. Adjusted differences under 5.0% are treated as noise. Patternia: 8 benchmarks, 0 slower, 0 faster, 8 within noise.
Control rows (not Patternia code)
Raw results and the comparison chart are attached to this workflow run as an artifact. Shared runners are noisy, so use this as a trend, not a measurement. |
Summary
Release preparation for v0.9.5: version bumps, release note, performance note and doc registration. v0.9.5 makes
has<...>tuple-like so structured bindings name guard members without a macro (deprecatingPTN_BIND), rewrites handler classification, and lets bareis<T>/alt<I>reach the static variant dispatch fast path. No breaking API changes; one behavior change for pointer-to-member handlers is documented.Changes
CMakeLists.txt:VERSION 0.9.4→0.9.5.packaging/vcpkg/vcpkg.json:0.9.4→0.9.5.README.md: FetchContentGIT_TAG v0.9.5.docs/changelog/v0.9.5.md: new release note covering structured-binding names, handler forms, the pointer-to-member behavior change, thePTN_BINDdeprecation and a migration guide.docs/performance/v0.9.5.md: new performance note for the bareis<T>/alt<I>fast path, measured against thev0.9.4tag (about -40% on an 8-alternative variant, Apple M4 Pro, Apple clang 17, one machine and one compiler).docs/performance/index.md,docs/changelog/releases.md,mkdocs.yml: register both pages.docs/roadmap.md: unreleased items labeled as v0.9.5.Testing
-Wall -Wextra -Werror); the same examples fail to compile againstv0.9.4.scripts/check_commit_msg.py.Post-merge steps (tracked separately)
v0.9.5and create the GitHub release.packaging/vcpkg/portfile.cmakeSHA512 to the v0.9.5 tarball, then bump the port in the sentomk/vcpkg fork and open the microsoft/vcpkg PR.