Versioning
Tags are component first — rodeo-sdk/vX.Y.Z, matching rodeo-002/vX.Y.Z — so a
tag listing groups by component rather than interleaving unrelated numbers.
The current release is rodeo-sdk/v0.2.0, and it is a line in the sand: the
last release before the rewrite for the shipping boards. common/version.h
carries the number and the real changelog.
The instruments built before it — rodeo-001 and rodeo-002 — keep building
against that release, frozen at rev-a/rodeo-sdk/. rodeo-002 moves onto the
rewritten SDK first, once every Rev B board has been brought up; rodeo-001
stays on the frozen copy.
The rewrite starts at v0.3.0: in a 0.x SDK a breaking change is a minor version.
Requiring a minimum
An app can refuse to build against an SDK that is too old, which is better than failing at a missing symbol or, worse, silently compiling against changed behaviour:
#include "version.h"
static_assert(RODEO_SDK_AT_LEAST(0, 2, 0), "this app needs a newer SDK");Why 0.x
Deliberately. Two instruments in, the shape of the SDK is clear but the seams are not
all settled — version.h names what is still unresolved and what stands between this
and a 1.0. Until then, treat minor versions as able to move things.