Skip to content

Commit 79f8c43

Browse files
committed
release checklist: add versioning guide line
1 parent 0ad3933 commit 79f8c43

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

darshan-test/RELEASE-CHECKLIST.txt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
5152
14) 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

Comments
 (0)