|
cwist
Modern C web framework with libttak runtime
|
The codename of a CWIST LTS release is a state identifier. It carries no semantic meaning and no tier (major, minor, and so on); it follows only the alphabet's tail-in sequential propagation rule.
$$\text{AA} \rightarrow \text{AB} \rightarrow \text{BA} \rightarrow \text{BB} \rightarrow \text{BC} \rightarrow \text{CB} \rightarrow \text{CC} \rightarrow \text{CD} \rightarrow \dots$$
AAAB (B enters at the tail)BA (B propagates left)BB (B complete)BC (C enters at the tail)CB (C propagates left)CC (C complete)Codenames extend to three letters only when the two-letter sequence is exhausted. A three-letter codename expands the same way as the two-letter one: the new letter always enters at the tail (rightmost position) and propagates one position to the left per release until every position holds it; then the next letter enters at the tail.
$$\text{AAA} \rightarrow \text{AAB} \rightarrow \text{ABB} \rightarrow \text{BBB} \rightarrow \text{BBC} \rightarrow \text{BCC} \rightarrow \text{CCC} \rightarrow \dots$$
AAAAAB (B enters at the tail)ABB (B propagates left)BBB (B complete)BBC (C enters at the tail)BCC (C propagates left)CCC (C complete)The codename is shown next to the release identifier in build binaries and CLI output:
Independently of the codename, from v4 on the existing public API does not change (ROADMAP.md "API stability from v4.0"). CI checks this with scripts/ci/check_api_baseline.py.
docs/api/v4.0-api-baseline.txt records the public headers: names, function signatures (parameter names dropped) and struct/union/enum layouts.make api-baseline and commit it in the same PR.v4 exists, CI also fails when a guaranteed entry from that tag's baseline is removed or changed, even with the baseline regenerated. New API passes; the experimental (WebTransport) sections are not checked.When a major version line opens for the first time (the major number increments), the releases of that line are named sequentially from v1: v1 → v2 → v3 → v4 → …. The counter always starts at 1 and never skips.
This rule applies to every fresh major line independently: the first ascent of the next major starts again at v1, regardless of how far the previous line counted. Do not carry the previous line's counter over, and do not jump ahead (for example to a .0 style name) because an editor or autocomplete suggested it.