diff --git a/CHANGELOG.md b/CHANGELOG.md index 52f08aa..dd98faf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,18 @@ under *Changed* or *Removed*. The `Unreleased` block accumulates entries during development and is rolled into a dated version block (`## [X.Y.Z] — YYYY-MM-DD`) when a release PR closes a milestone. +## [1.0.1] — 2026-06-14 + +**Packaging patch over the frozen `v1.0.0` API.** Ships the two Phase-2 +package-manager integrations completed as Milestone 7's stretch items — the +**vcpkg** overlay port (M7.8, [ADR-0030](docs/adr/0030-vcpkg-port.md)) and the +**Conan 2.x** recipe (M7.9, [ADR-0031](docs/adr/0031-conan-recipe.md)), both +pinned to the `v1.0.0` source tag and building through the project's own ADR-0028 +install rules. This is a **`PATCH`** because the shipped library is **byte-identical +to `v1.0.0`** — no source, API, ABI, or behaviour change; only repository-side +packaging metadata was added (which is also why the closing of Milestone 8 stays +targeted at `v1.1.0`). Full release notes in [`docs/releases/v1.0.1.md`](docs/releases/v1.0.1.md). + ### Added (M7.8) - **vcpkg port — Phase 2 distribution** ([ADR-0030](docs/adr/0030-vcpkg-port.md), @@ -889,7 +901,8 @@ Milestone 2 → `v0.2.0`. Full release notes in --- -[Unreleased]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/compare/v1.0.0...HEAD +[Unreleased]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/compare/v1.0.1...HEAD +[1.0.1]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.1 [1.0.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.0 [0.6.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v0.6.0 [0.5.0]: https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v0.5.0 diff --git a/README.md b/README.md index f55f856..1c7ce96 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![docs-site](https://github.com/danielPoloWork/pbr-cpp-memory-pool/actions/workflows/docs-site.yml/badge.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/actions/workflows/docs-site.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Standard: C++17 / ANSI C](https://img.shields.io/badge/Standard-C%2B%2B17%20%2F%20ANSI%20C-blue.svg)](docs/specs/01_spec_cpp_memory_pool.md) -[![Status: v1.0.0 stable](https://img.shields.io/badge/Status-v1.0.0%20stable-brightgreen.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.0) +[![Status: v1.0.1 stable](https://img.shields.io/badge/Status-v1.0.1%20stable-brightgreen.svg)](https://github.com/danielPoloWork/pbr-cpp-memory-pool/releases/tag/v1.0.1) > Part of the **Purpose-Built References (PBR)** series — small, didactic, production-quality C/C++ reference implementations of high-performance building blocks. @@ -191,6 +191,8 @@ Reports for other host × compiler combinations (Linux / GCC, Linux / Clang, mac ## Status +`v1.0.1` — **packaging patch** over the frozen `v1.0.0` API: adds the vcpkg port and the Conan 2.x recipe (Phase 2 distribution, ADRs [0030](docs/adr/0030-vcpkg-port.md) / [0031](docs/adr/0031-conan-recipe.md)). The shipped library is byte-identical to `v1.0.0` — a `PATCH`, no API/ABI/behaviour change. Release notes: [`docs/releases/v1.0.1.md`](docs/releases/v1.0.1.md). The stable baseline it patches: + `v1.0.0` — **the first stable release.** The public C ABI (`memory_pool_create` / `_alloc` / `_free` / `_destroy` plus the O(1) introspection accessors) and the C++ surface (`Pool`, `TypedPool`, `PoolAllocator`, `InstrumentedPool`, `PoolObserver`) are frozen under the SemVer 1.0 promise — no breaking change without a `2.0.0`. `v1.0.0` seals the feature set built across Milestones 0–6 — the O(1) implicit-free-list fixed-block pool with zero per-block metadata, the RAII / typed / STL-allocator C++ wrappers, compile-time-configurable thread safety, optional geometric dynamic growth, and opt-in observability — and adds the Milestone 7 polish: the published Doxygen API site (M7.1), the expanded usage / performance / compatibility README (M7.2), `find_package` install + pkg-config packaging (M7.4), and the patterns-catalogue (M7.5) and specification-compliance (M7.6, [ADR-0029](docs/adr/0029-spec-compliance-acceptance-audit.md)) acceptance audits. All fifteen Spec Coverage Map rows are ✅, re-verified end-to-end. Twenty-nine ADRs (0001–0029) record every decision; all eleven adopted design patterns are Implemented. Release notes for `v1.0.0` live in [`docs/releases/v1.0.0.md`](docs/releases/v1.0.0.md). | Milestone | Title | Status | diff --git a/ROADMAP.md b/ROADMAP.md index c629b43..4f2d7a6 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -167,6 +167,10 @@ When a roadmap item flips from ⏳ to ✅, update the corresponding cell(s) in t > Living, dated note describing where the project stands at the end of the most recent work session. Updated at the close of each session so the next session resumes from a known point without re-reading the full PR history. Latest entry first; older entries are kept for trail. +### 2026-06-14 — Packaging patch release (v1.0.1) + +- A maintenance **`PATCH`** cut by the maintainer's request, immediately after M7.9 merged: it bundles the M7.8 vcpkg port + M7.9 Conan recipe (the post-1.0 packaging additions) into a tagged release. **Chosen as `1.0.1`, not `1.1.0`,** because the shipped library is byte-identical to `v1.0.0` (only repository-side packaging metadata was added) and to keep the Milestone 8 close targeted at `v1.1.0`. `version.hpp` → `1.0.1`, `pool_smoke` asserts updated, `CHANGELOG.md` `[Unreleased]` rolled into `## [1.0.1] — 2026-06-14`, `docs/releases/v1.0.1.md` added, README badge/status refreshed. Not a numbered roadmap item — an ad-hoc patch release. After merge: agent tags `v1.0.1`, maintainer publishes. Next: Milestone 8 (i18n & governance → `v1.1.0`). + ### 2026-06-14 — End of M7 release session (v1.0.0 — the stable release) - **Done in this session** — the whole of Milestone 7: 7.1 (ADR-0027 Doxygen API site → GitHub Pages, PR #53), 7.2 (full usage / performance / compatibility README, PR #55), 7.3 (CHANGELOG audit + draft v1.0.0 headline, PR #56), 7.4 (ADR-0028 install/export + pkg-config `find_package`, PR #57), 7.5 (patterns-catalogue audit, PR #58), 7.6 (ADR-0029 spec-compliance acceptance audit, PR #59), and 7.7 (this release PR — bump to `1.0.0`, roll `CHANGELOG.md` into `[1.0.0] — 2026-06-14`, add `docs/releases/v1.0.0.md`, refresh README). diff --git a/docs/releases/v1.0.1.md b/docs/releases/v1.0.1.md new file mode 100644 index 0000000..f814f87 --- /dev/null +++ b/docs/releases/v1.0.1.md @@ -0,0 +1,48 @@ +# pbr-cpp-memory-pool v1.0.1 — packaging patch + +`v1.0.1` is a **packaging-only patch** over [`v1.0.0`](v1.0.0.md). It ships the two Phase-2 package-manager integrations that closed Milestone 7's stretch items. **The library itself is byte-identical to `v1.0.0`** — no source, API, ABI, or behaviour change; only repository-side packaging metadata was added. (That is why this is a `PATCH` rather than a `MINOR`, and why Milestone 8 still closes at `v1.1.0`.) + +## What's new + +### vcpkg port ([ADR-0030](../adr/0030-vcpkg-port.md)) + +An in-repo overlay port under [`ports/pbr-memory-pool/`](../../ports/pbr-memory-pool/), pinned to the `v1.0.0` source tag by SHA512. It builds from source through the project's own CMake install rules ([ADR-0028](../adr/0028-install-and-packaging-layout.md)) and relocates the `find_package` config and pkg-config `.pc` into vcpkg's layout. + +```bash +vcpkg install pbr-memory-pool --overlay-ports=ports +``` + +### Conan 2.x recipe ([ADR-0031](../adr/0031-conan-recipe.md)) + +A recipe under [`conan/`](../../conan/) (with a ConanCenter-style `test_package/`), pinned to the `v1.0.0` source tag by SHA256. It builds through the same install rules and re-exposes the target via Conan's generators. + +```bash +conan create conan/ # then depend on pbr-memory-pool/1.0.1 +``` + +Both integrations yield the identical imported target as every other consumption mode: + +```cmake +find_package(pbr_memory_pool CONFIG REQUIRED) +target_link_libraries(my_app PRIVATE pbr::memory_pool) +``` + +Registry publication (microsoft/vcpkg, ConanCenter / self-hosted) is **deferred** — both port files are written to upstream conventions and the submission steps are documented in [`ports/README.md`](../../ports/README.md) and [`conan/README.md`](../../conan/README.md). + +## Spec Coverage Map + +**No change** — packaging adds no spec requirement. All fifteen rows remain ✅ (accepted in [ADR-0029](../adr/0029-spec-compliance-acceptance-audit.md) at `v1.0.0`). + +## Verifying the release + +Each platform tarball is the same complete `cmake --install` tree as `v1.0.0` (full headers + static archive + CMake package config + pkg-config `.pc`). SHA-256 checksums are in `SHA256SUMS`: + +```bash +sha256sum --check SHA256SUMS +``` + +## Links + +- Changelog entry: [`CHANGELOG.md` — `[1.0.1]`](../../CHANGELOG.md#101--2026-06-14) +- Previous release: [`docs/releases/v1.0.0.md`](v1.0.0.md) +- Specification: [`docs/specs/01_spec_cpp_memory_pool.md`](../specs/01_spec_cpp_memory_pool.md) diff --git a/src/main/cpp/it/d4np/memorypool/version.hpp b/src/main/cpp/it/d4np/memorypool/version.hpp index 86034fd..c71e12a 100644 --- a/src/main/cpp/it/d4np/memorypool/version.hpp +++ b/src/main/cpp/it/d4np/memorypool/version.hpp @@ -23,10 +23,10 @@ inline constexpr unsigned PBR_MEMORY_POOL_VERSION_MAJOR = 1; inline constexpr unsigned PBR_MEMORY_POOL_VERSION_MINOR = 0; /** Patch version component (incremented for hotfixes between milestones). */ -inline constexpr unsigned PBR_MEMORY_POOL_VERSION_PATCH = 0; +inline constexpr unsigned PBR_MEMORY_POOL_VERSION_PATCH = 1; /** Pre-formatted version string, kept in lockstep with the components above. */ -inline constexpr const char* PBR_MEMORY_POOL_VERSION_STRING = "1.0.0"; +inline constexpr const char* PBR_MEMORY_POOL_VERSION_STRING = "1.0.1"; } // namespace it::d4np::memorypool diff --git a/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp b/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp index e31341a..d9fd1fd 100644 --- a/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp +++ b/src/test/cpp/it/d4np/memorypool/pool_smoke_test.cpp @@ -56,12 +56,12 @@ TEST_CASE("version constants are consistent with the project version") { const std::string_view ver{mem::PBR_MEMORY_POOL_VERSION_STRING}; CHECK(ver.find('.') != std::string_view::npos); - // Milestone 7 closes at v1.0.0 — the first stable release; these constants - // are bumped from this release PR (M7.7) in lockstep with version.hpp. The - // public C ABI and C++ surface are frozen here under the SemVer 1.0 promise. + // v1.0.1 — a packaging-only patch over the frozen v1.0.0 API (the vcpkg + // port + Conan recipe, M7.8/M7.9). The library binary is unchanged; only + // these constants move, in lockstep with version.hpp. CHECK(mem::PBR_MEMORY_POOL_VERSION_MAJOR == 1U); CHECK(mem::PBR_MEMORY_POOL_VERSION_MINOR == 0U); - CHECK(mem::PBR_MEMORY_POOL_VERSION_PATCH == 0U); + CHECK(mem::PBR_MEMORY_POOL_VERSION_PATCH == 1U); } TEST_CASE("memory_pool_create / _destroy round-trip on valid arguments") {