This document describes the release process and versioning policy for fortplot.
fortplot uses date-based versioning in the format YYYY.MM.PATCH:
YYYY): release yearMM): release monthPATCH): incremental patch number for the same monthExamples: 2025.06.25, 2025.08.17, 2026.05.01
This scheme ensures: - Versions are always monotonically increasing - Users can determine release recency from the version string - Patch releases within a month are clearly ordered
All version strings must be kept in sync:
fpm.toml → version fieldCMakeLists.txt → project(... VERSION ...) fieldBefore any release, verify both files have the same version string.
Update CHANGELOG.md — add all notable changes since the last release under [Unreleased], then rename to [X.Y.Z] with the release date.
Synchronize versions — update fpm.toml and CMakeLists.txt to the new version.
Run full verification:
make build
make test
make verify-artifacts
make example
make doc
Create a release commit on main:
git add CHANGELOG.md fpm.toml CMakeLists.txt
git commit -m "release: vX.Y.Z"
git tag -a vX.Y.Z -m "Version X.Y.Z"
git push origin main --tags
Publish GitHub Release — create a GitHub Release from the tag with the changelog entry as release notes.
main: unstable development branch. All features and fixes land here first.main at release time. Do not create release branches.main via PR.Users can pin to a specific version in their fpm.toml:
[dependencies]
fortplot = { git = "https://github.com/fortran-lang/fortplot", tag = "v2025.06.25" }
Users can pin to a specific version:
FetchContent_Declare(
fortplot
GIT_REPOSITORY https://github.com/fortran-lang/fortplot
GIT_TAG v2025.06.25
)
Breaking changes require a new month (or year) component. For example, if 2025.06.25 introduces a breaking API change, the next release should be 2025.07.0 or later. Document all breaking changes in the CHANGELOG.md under a ### Breaking changes section.