ProjectStability and versioning

Stability and versioning

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

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 are covered.

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#

TeXForm follows Semantic Versioning. 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#

Every release documents user-visible changes in the changelog, grouped as Added, Changed, and Fixed. Internal refactors that do not change observable behavior are not listed.

Last updated