Skip to main content

Release Process

This page describes how the SDIF Python package and related repositories are versioned and released.

Versioning​

The sdif Python package follows semantic versioning:

  • Patch releases (1.0.x) — bug fixes and minor corrections that do not change format behavior or the public API.
  • Minor releases (1.x.0) — new features, new CLI commands, or additions to the format that are backward-compatible.
  • Major releases (x.0.0) — breaking changes to the public API or the format itself.

Spec and Conformance Suite Coordination​

Format changes require more than a code change. Any release that modifies the format specification must also:

  • Update the relevant spec documentation pages to reflect the change.
  • Add or update conformance fixtures in the sdif-format/sdif repository to cover the new behavior.
  • Ensure the conformance suite passes against the updated implementation before the release is tagged.

This keeps the spec, the implementation, and the conformance suite in sync.

Canonical Profile Versioning​

The canonical form is identified by the profile string canonical-syntax-v1. This identifier is part of the format contract: any two implementations that produce canonical output for the same document must agree on both the bytes and the hash.

A change that would alter the canonical bytes for any existing valid document is a breaking change to the canonical profile. Such a change would require a new profile version identifier (for example, canonical-syntax-v2) rather than modifying canonical-syntax-v1 in place. This ensures that hashes computed under the old profile remain valid and that implementations can identify which canonical rules apply.

Repository Releases​

Each of the three repositories under sdif-format is released independently:

  • sdif — the Python package, released to PyPI as sdif.
  • sdif-benchmarks — released when benchmark methodology or inputs change.
  • tree-sitter-sdif — released when the grammar changes in a way that affects parsing or highlighting behavior.