@@ -2,13 +2,66 @@ Versioning
22==========
33
44:Author: Oskar Meler
5- :Date: 24-02 -2026
6- :Revision: 1
5+ :Date: 19-05 -2026
6+ :Revision: 2
77
8- All version numbers in BigOS follow the `Major.Minor.Patch ` format.
98
10- * **Major ** – Increment this when changes are made to existing interfaces that break backward compatibility.
9+ Versioning Scheme
10+ -----------------
1111
12- * ** Minor ** – Increment this when additions or backward-compatible changes are made to the interface .
12+ All BigOS version numbers follow the `` generation.feature.patch `` format .
1313
14- * **Patch ** – Increment this for bug fixes or other non-breaking corrections.
14+ Generation
15+ ^^^^^^^^^^
16+ Incremented when breaking changes are made to existing interfaces or formats.
17+ A change in Generation indicates **backward-incompatible modifications **.
18+
19+ Feature
20+ ^^^^^^^
21+ Incremented when new functionality is added in a backward-compatible manner.
22+ Feature updates do not break compatibility with older versions within the same Generation.
23+
24+ Patch
25+ ^^^^^
26+ Incremented for bug fixes, internal improvements, and other non-breaking changes that do not affect interface behavior or compatibility.
27+
28+
29+ Data Format vs Software Version
30+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31+
32+ BigOS distinguishes between:
33+
34+ Software version (S)
35+ The version of the running BigOS implementation (the reader/consumer).
36+
37+ Data format version (F)
38+ The version of the serialized or on-disk data being interpreted.
39+
40+ The compatibility rules define whether a given software version can correctly read a given data format version.
41+
42+
43+ Compatibility Rule
44+ ~~~~~~~~~~~~~~~~~~
45+
46+ A software version ``S `` is compatible with a data format version ``F `` if and only if the following conditions are met:
47+
48+ - S.generation == F.generation
49+ - S.feature ≥ F.feature
50+
51+ Patch versions do not affect compatibility.
52+
53+
54+ Version Limits
55+ ~~~~~~~~~~~~~~
56+
57+ Version components are constrained as follows:
58+
59+ - Generation ≤ 1024
60+ - Feature ≤ 1024
61+ - Patch ≤ 4096
62+
63+
64+ Implementation Notes
65+ ~~~~~~~~~~~~~~~~~~~~
66+
67+ stdbigos provides a :doc: `utility library </pages/api/libs/stdbigos/version >` for working with version values.
0 commit comments