Stability and versioning
big-code-analysis is on the 1.x line. The full stability
contract lives in STABILITY.md at the root of the
repository — that file is the source of truth and is updated
alongside the changelog at every release.
The headlines for library consumers:
- Shape stability across patch and minor bumps. Every public
type and function signature listed in
STABILITY.md § "What is stable in shape"
is held across the
1.xline. Additive changes (new items, newLANGvariants, newMetricsErrorvariants, new language features) are allowed in minor bumps. Breaking shape changes are reserved for the next major bump and will appear in the changelog under (breaking) in the2.0.0section. - No value stability guarantee within
1.x. A grammar pin bump or a bug fix in a metric definition can shift any metric value on any file in any direction, even across a patch bump. Each such drift is flagged in the changelog. Pin to an exact version (big-code-analysis = "= 1.1.0") if you need bit-for-bit reproducibility across runs. - MSRV is
1.94. Bumping the MSRV is treated as a minor-bump event and is flagged in the changelog under (breaking) — see STABILITY.md § MSRV policy. - Escape hatches. The
Nodewrapper exposestree_sitter::Nodethrough.0, and thetree_sittercrate is re-exported asbig_code_analysis::tree_sitter. Anything reached through those seams follows the pinnedtree-sitterversion, not our own SemVer. See STABILITY.md § Escape hatches before depending on them.
On the 2.0 horizon
A small number of loose ends are deferred to 2.0; they are
listed in STABILITY.md § "On the 2.0 horizon".
The headline items are:
- The per-metric
Statsstructs gain#[non_exhaustive], so field additions stop being a shape break in the strict SemVer sense. - The deprecated
metrics/metrics_with_optionsshims (in favour ofanalyze) are removed. - The accumulated metric-definition fixes that have shifted values
across
1.xget a clean re-baseline note.
2.0 is not scheduled. Until then, 1.x is the surface you should
depend on.