Skip to content

chore(release): prepare v0.9.5 - #68

Merged
biobo-bot[bot] merged 1 commit into
mainfrom
chore/release-v0.9.5
Oct 29, 2026
Merged

biobo-bot[bot] merged 1 commit into
mainfrom
chore/release-v0.9.5

Conversation

@sentomk

@sentomk sentomk commented Oct 29, 2026

Copy link
Copy Markdown
Owner

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 (deprecating PTN_BIND), rewrites handler classification, and lets bare is<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: FetchContent GIT_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, the PTN_BIND deprecation and a migration guide.
  • docs/performance/v0.9.5.md: new performance note for the bare is<T> / alt<I> fast path, measured against the v0.9.4 tag (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

  • Release note examples compiled and run against current headers (Apple clang 17, C++17, -Wall -Wextra -Werror); the same examples fail to compile against v0.9.4.
  • Full suite: 256/256 passing (Apple clang 17, Release).
  • Commit message checked with scripts/check_commit_msg.py.

Post-merge steps (tracked separately)

  • Tag v0.9.5 and create the GitHub release.
  • Update packaging/vcpkg/portfile.cmake SHA512 to the v0.9.5 tarball, then bump the port in the sentomk/vcpkg fork and open the microsoft/vcpkg PR.

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.

@biobo-bot biobo-bot Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release prep looks good — approving.

Checked

  • Version bumps are consistent: CMakeLists.txt, packaging/vcpkg/vcpkg.json and the README FetchContent GIT_TAG all move to 0.9.5. No version macros in include/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_t is in pattern_base.hpp and applied in ops.hpp as described.
  • The roadmap now lists the handler-classification change alongside the other v0.9.5 items, and the performance/index.md summary 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_BIND deprecation spells out the C++17 + PTN_ON case 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

codecov Bot commented Oct 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark comparison (informational)

Base de9febb vs PR 03a2b22, run one after the other on the same GitHub-hosted runner. This does not block merging.

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.

Benchmark Base (ns) PR (ns) Delta Adjusted Verdict
PatterniaPipe CommandParser 1.773 1.776 +0.2% +0.2% within noise
PatterniaPipe PacketMixed 1.622 1.624 +0.1% +0.1% within noise
PatterniaPipe PacketMixedHeavyBind 1.682 1.682 -0.0% -0.0% within noise
PatterniaPipe ProtocolRouter 1.617 1.616 -0.1% -0.1% within noise
PatterniaPipe VariantAltHot 1.559 1.557 -0.1% -0.1% within noise
PatterniaPipe VariantAltHotGuarded 1.713 1.714 +0.1% +0.1% within noise
PatterniaPipe VariantMixed 1.997 1.997 -0.0% -0.1% within noise
PatterniaPipe VariantMixedGuarded 1.996 1.998 +0.1% +0.1% within noise
Control rows (not Patternia code)
Benchmark Base (ns) PR (ns) Delta
IfElse CommandParser 2.146 2.145 -0.1%
IfElse ProtocolRouter 1.866 1.867 +0.1%
Sequential VariantAltHot 1.713 1.712 -0.1%
Sequential VariantAltHotGuarded 1.871 1.871 -0.0%
Sequential VariantMixed 1.168 1.167 -0.0%
Sequential VariantMixedGuarded 1.427 1.436 +0.7%
StdVisit CommandParser 1.401 1.395 -0.4%
StdVisit ProtocolRouter 1.516 1.514 -0.1%
StdVisit VariantAltHot 1.557 1.558 +0.1%
StdVisit VariantAltHotGuarded 1.713 1.713 +0.0%
StdVisit VariantMixed 1.992 1.992 +0.0%
StdVisit VariantMixedGuarded 2.151 2.154 +0.1%
SwitchIndex VariantAltHot 1.714 1.715 +0.1%
SwitchIndex VariantAltHotGuarded 1.870 1.871 +0.1%
SwitchIndex VariantMixed 0.992 0.916 -7.7%
SwitchIndex VariantMixedGuarded 1.393 1.412 +1.3%
Switch CommandParser 2.251 2.252 +0.0%
Switch PacketMixed 1.465 1.434 -2.1%
Switch PacketMixedHeavyBind 1.494 1.498 +0.3%
Switch ProtocolRouter 1.589 1.593 +0.3%

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.

@biobo-bot
biobo-bot Bot merged commit 0a0650a into main Oct 29, 2026
24 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.

1 participant