- Update this file in every change set that affects release behavior, build output, packaging, or CI/CD.
- Add new bullets under
## Unreleasedin the most relevant section. - Keep bullets concise, user-facing, and outcome-focused.
- Do not rewrite or delete historical release sections.
- When cutting a release tag
vX.Y.Z, copyUnreleasedentries into a new## vX.Y.Z - YYYY-MM-DDsection, then resetUnreleasedto empty templates. - If a change is not shipped, remove it from
Unreleasedbefore release.
- Release automation now builds bundled standalone Python wheels for the
fullprofile and a matching source distribution on Linux x86_64. - Conda packaging now includes a
perfecthash-pythonoutput, and the top-levelperfecthashpackage now installs both the native full profile and the Python package. - Release automation now publishes bundled Python wheels to TestPyPI from the
shared
release.ymlworkflow before any real PyPI publish.
- The supported Python package now resolves its version from the same tag/CI inputs as the native release path instead of using a hard-coded pre-release version string.
- Linux branch CI now validates the root Python package, bundled-wheel build,
and runtime smoke path on the
linux-x86_64-py313leg. - The published Python distribution name is now
tpn-perfecthash, while the import package and CLI entry point remainperfecthashandph.
- Tag-triggered conda publication now expands the built package artifact list before invoking the Anaconda CLI, avoiding literal
**glob failures in GitHub Actions. - Standalone bundled Python wheels now report the installed package version correctly outside a git checkout by preferring wheel metadata at runtime.
- Python release publication now uses GitHub OIDC trusted publishing instead of long-lived index API tokens.
- Release, packaging, CI, and Python docs now describe the root Python package,
bundled-wheel release assets, and the legacy status of
python/. - Release docs now cover the GitHub environment approvals and TestPyPI/PyPI trusted publisher setup for Python releases.
- No new additions.
- No changes.
- Tag-triggered Linux conda packaging now installs and resolves NASM reliably on GitHub runners by provisioning
nasmin the workflow environment and preferring PATH-based NASM discovery before BUILD_PREFIX fallback.
- No documentation-only updates.
- No new additions.
- No changes.
- Improved tag-triggered conda packaging NASM discovery by allowing the recipe build to prefer a BUILD_PREFIX-provided assembler when available.
- No documentation-only updates.
- Repo-local release-engineering and conda-packaging skills now capture the maintainer workflows used to cut releases, validate conda packages, and publish org-channel artifacts.
- Installed public headers now live under
include/PerfectHash/, and public consumers use<PerfectHash/...>include paths instead of polluting the flat include directory. - Conda packaging now propagates the package version into CMake/binaries via
PERFECTHASH_VERSION_OVERRIDE, so org-channel builds report the shipped version instead of the latest git tag.
- Windows RawDog MASM header generation now resolves the new public include root correctly after the header-layout refactor.
- Conda profile variants now declare solver-level mutual exclusion, preventing co-install of conflicting profile packages.
- Added
docs/packaging.mdand refreshed release/CI notes to reflect the current conda workflow, org-channel publishing, and release-versioning policy.
- No new additions.
- Dependency-mode defaults now disable
PERFECTHASH_BUILD_EXESandPERFECTHASH_ENABLE_TESTSwhen PerfectHash is consumed as a subproject.
- FetchContent consumer
ALLbuilds now avoid multi-target RawDog header generation races foronline-rawdog-llvmandfullprofiles.
- Release engineering ledgers now include the full FetchContent profile-matrix validation and
v0.70.7release verification trail.
- No new additions.
- Conda recipe now relies on canonical
build.shbehavior without duplicatebuild.scriptdeclaration. - Conda recipe build requirements now include
nasmfor Linux/macOS assembly builds.
- Windows release packaging now uses strict error handling and consistent stage/package naming so
.zipartifacts are generated reliably.
- Updated release engineering ledgers with post-release validation outcomes and run references.
- Tag-derived CMake version resolution with optional explicit override for release automation.
- CMake package export/config support for downstream
find_package(PerfectHash CONFIG REQUIRED)usage. - Build profiles:
full,online-rawdog, andonline-rawdog-llvm. - New consumer example at
examples/cmake-fetchcontent-consumercovering FetchContent and installed-package flows. - Auto-generated release note script (
ci/generate-release-notes.sh) for commit summaries since prior tag. - New tag-cut helper
ci/cut-release.shwith preflight checks and optional tag push.
- Release scripts now resolve version from git tags before file-based fallbacks.
- Release scripts and GitHub release workflow now support profile-aware builds and profile-tagged artifact names.
- Release workflow now generates release body content from repository history plus curated notes.
- Release docs now direct maintainers to use
ci/cut-release.shfor cutting tags.
- Installed CMake package now exports only profile-relevant targets, enabling slim-profile install + consume flows.
- Slim-profile FetchContent consumers no longer pull unnecessary ALL-target build edges that caused RawDog object race failures.
- Release engineering ledgers added under
agents/RELEASE-ENGINEERING-*. - Removed references to the legacy manual version-bump flow.