aboutsummaryrefslogtreecommitdiffhomepage
path: root/notes/versioning_topics_2021-11-19.txt
blob: 6b89526c920d5db1ed25841071d40f1cb1bd1a54 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

SLUL misc versioning topics
===========================

1. How to let OS distributors create own versions, while still supporting the upstream version?
2. How to support different SLUL versions for implementation and interface?


1. OS distributor versioning
----------------------------
Without API changes, it is simple:

 \slul 0.0.0
 \name example
 \type library
 \version 1.2.3+distpatch1

(other versioning conventions such as 1.2.3-1 are also fine, as long as they
don't conflict with the upstream project)

With ABI changes, it gets trickier:

 \slul 0.0.0
 \name example
 \type library
 \version 1.2.3+distpatch1
 \abi_def 1.0.0 xxx
 \abi_def 1.1.0 xxx
 \abi_def 1.1.0+distpatch1 xxx
 \abi_def 1.1.1 xxx
 \abi_def 1.1.1+distpatch1 xxx
 ...and so on...

The API change would require a new abi_def in each following API version
(although ones that are not released in the distribution do not strictly
need a "distpatch" API version)


2. Separate SLUL version for module implementation
--------------------------------------------------

 \slul 0.1.0
 \name example
 \type library
 ...
 \impl_slul 0.2.0
 \source implfile1.slul
 \source implfile2.slul

Building the module would require SLUL 0.2.0 in this example, but using the
module would only require SLUL version 0.1.0.