v1.1.2 #102
danielPoloWork
announced in
Announcements
v1.1.2
#102
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
pbr-cpp-memory-pool v1.1.2 — Maintenance (InstrumentedPool & core bug fixes)
A maintenance PATCH.
v1.1.2fixes four verified, externally-reported defects — the first real use of the in-repo bug ledger (ADR-0039) — plus the accumulated documentation work sincev1.1.1. The library's public surface is unchanged (no API/ABI change); the fixes are header-only or core internals.Fixed
InstrumentedPoolgrowth-counter data race (high).notify_if_grew()read+wrote the non-atomiclast_growths_on the allocation hot path, racing under the documented-safeMUTEX+ dynamic-growth + concurrent configuration (UB).last_growths_is nowstd::atomic, advanced with acompare_exchangesogrewfires once per growth without a race. A concurrentInstrumentedPoolcase was added to the ThreadSanitizer stress suite (the coverage gap that hid it).live_counter underflow (medium).deallocate()decremented the unsignedlive_for any non-null pointer, so a foreign or double-freed pointer (a no-op in the core, ADR-0012) wrapped it toSIZE_MAX. The decrement now clamps at zero. The C header's double-free note was corrected — the Decorator counts deallocations but does not detect a double-free.destroyedevent on move-assignment (low). Move-assigning over an instrumented pool released itsPooland observers without emittingPoolEvent::destroyed, asymmetric with the destructor. It now notifies before reassignment.grow_pooloverflow (low/latent).total * (grow_factor_ - 1)was computed before any overflow check; awould_overflow_productguard was added first, mirroring the create path. Not runtime-reachable (RAM exhausts first), so no test — a consistency fix.Also in this release
docs-siteCI badge was removed from the README header (all three locales); the published Doxygen site is still linked from the API reference badge.zh-Hans/jaREADME translations were re-synced to thev1.1.1status.Architecture Decision Records
No new ADRs —
v1.1.2is bug fixes and documentation, governed by existing decisions (ADR-0034 maintenance protocol, ADR-0039 bug ledger). The running total stays 40.Spec Coverage Map
No change — all fifteen rows remain ✅ (ADR-0029). The fixes correct decorator/diagnostic behaviour and a latent guard, not a spec requirement.
What this release does not contain
Pool,TypedPool,PoolAllocator, the C ABI, and the compile-time knobs are unchanged.v1.1.2corrects the over-promising header note; genuine double-free detection in the Decorator remains possible future work (it would be a feature, not a patch).Verifying the release
Each platform tarball is the same complete
cmake --installtree asv1.1.1(full headers + static archive + CMake package config + pkg-config.pc). SHA-256 checksums are inSHA256SUMS:Links
CHANGELOG.md—[1.1.2]docs/bugs/docs/workflow/maintenance.mddocs/releases/v1.1.1.mdThis discussion was created from the release v1.1.2.
Beta Was this translation helpful? Give feedback.
All reactions