# Stability and versioning

What the stability guarantee covers, lockstep versioning across Rust, Python, and JavaScript, and what 0.x means.

https://texform.dev/docs/stability-and-versioning

## What the guarantee covers [#what-the-guarantee-covers]

The `texform` crate is the only Rust crate with a public stability guarantee. The other crates in the workspace (`texform-core`, `texform-transform`, `texform-knowledge`, and the rest) are internal: their APIs may change without notice, and external integration must go through the `texform` facade.

The Python package (`texform` on PyPI) and the JavaScript package (`texform` on npm) expose that same parser, document model, transform engine, and serializer, and carry the same guarantee: public names, behavior, and data shapes documented in the [API reference](https://texform.dev/api) are covered.

## Lockstep versioning [#lockstep-versioning]

One version number covers all three release channels. A given version of the Rust crate, the Python wheel, and the npm package are built from the same source and behave identically. There is no compatibility matrix to consult: matching versions match behavior.

## Semantics during 0.x [#semantics-during-0x]

TeXForm follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html). While the major version is 0:

* **Minor releases (0.x → 0.y)** may contain breaking changes to the public API or to normalization output. Breaking changes are always marked explicitly in the changelog.
* **Patch releases (0.x.y → 0.x.z)** contain fixes and additions only.

Normalization output is part of the observable behavior: a change that alters what a profile produces for existing input is treated as a behavior change and recorded in the changelog, even when no API signature changed.

## Where changes are recorded [#where-changes-are-recorded]

Every release documents user-visible changes in the [changelog](https://texform.dev/docs/changelog), grouped as Added, Changed, and Fixed. Internal refactors that do not change observable behavior are not listed.

