@@ -13,6 +13,7 @@ Notes on how to release a new version of Darshan
1313 4) update the Changelog, if needed (browse git log since last release)
1414 - commit
1515 5) update version number in top-level darshan.version file
16+ - See below for the guide line of setting the version number.
1617 - commit
1718 6) follow checklist for corresponding release of PyDarshan
1819 - found at darshan-util/pydarshan/RELEASE-CHECKLIST-PyDarshan.txt
@@ -49,3 +50,43 @@ Notes on how to release a new version of Darshan
4950 enabled by the release
5051 - commit, submit PR to upstream Spack repository
515214) announce on web page (new post) and mailing list
53+
54+ ----
55+ ## Setting the release version number
56+
57+ There are two versions that must be set when making a new release:
58+ software semantic version and libtool ABI version.
59+
60+ * Software Semantic Versioning
61+ + https://semver.org
62+ + A version number is in a form of MAJOR.MINOR.PATCH
63+ 1. MAJOR version when you make incompatible API changes
64+ 2. MINOR version when you add functionality in a backward compatible manner
65+ 3. PATCH version when you make backward compatible bug fixes
66+ + A pre-release version MAY be denoted by appending a hyphen, for example,
67+ 1.0.0-alpha.
68+
69+ * GNU Libtool's ABI versioning
70+ + http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
71+ + A version number is in a form of current.revision.age
72+ 1. "current (c)" is the most recent interface number that this library
73+ implements. A change in this number typically indicates a
74+ backward-incompatible ABI change.
75+ 2. "revision (r)" is the implementation number of the current interface.
76+ Tracks changes in the library's source code without affecting the ABI.
77+ 3. "age (a)" is the difference between the newest and oldest interfaces that
78+ this library implements. It indicates the number of interfaces added
79+ since the last current increment.
80+ + Rules for Updating Version Information:
81+ * Initial State: Begin with 0:0:0 for new libraries.
82+ * Release-based Updates: Update versions only before a public release.
83+ * Source Code Changes: Increment "revision" if the source code has changed
84+ since the last update, even without interface changes.
85+ (c:r:a becomes c:r+1:a)
86+ * Interface Changes (Addition/Removal/Modification): Increment "current" and
87+ reset "revision" to 0 if any interfaces have been added, removed, or changed.
88+ * Interface Additions: Increment "age" if new interfaces have been added since
89+ the last public release.
90+ * Interface Removals: Reset "age" to 0 if any interfaces have been removed
91+ since the last public release.
92+
0 commit comments