wit/VERSIONING.md
wit/
VERSIONING.md ← this file
v0/ ← zeroclaw:[email protected] (experimental → stable)
.frozen ← created when v0 stabilizes; absent = experimental
channel.wit
logging.wit
memory.wit
plugin-info.wit
README.md
tool.wit
types.wit
v1/ ← (future) breaking changes → zeroclaw:[email protected]
Each vN/ directory maps to one WIT package major version. Minor bumps (0.2,
0.3, …) stay inside the same directory using @since annotations.
Breaking — requires a new vN+1/ directory:
Non-breaking — allowed inside an existing vN/ directory via @since:
flags bits to *-capabilitiesinterface definitions to the packageworld definitions@unstable / @since lifecycle@unstable(feature = your-feature-name). The item is invisible to
bindgen! callers that do not opt in with features: ["your-feature-name"].@unstable, add @since(version = 0.x.0).
bindgen! callers without a feature gate now see the item automatically.All current content in wit/v0/ is gated behind
@unstable(feature = plugins-wit-v0). It graduates when the first
stable Component Model release ships.
The host maintains adapters for the current major version and one previous (N-1):
| When ships | Supported | Dropped |
|---|---|---|
| V0 (current) | V0 | — |
| V1 | V1, V0 | — |
| V2 | V2, V1 | V0 |
Dropping a version requires a CHANGELOG entry, a deprecation notice in the prior release, and a clear error message naming the detected WIT version.
wit/vN/.frozen is created in a dedicated PR when the corresponding version is
declared stable. After it exists:
wit-breaking-change-check skill will be able to evaluate any PR that
removes or modifies existing lines in wit/vN/*.wit.@since annotations) are
accepted.Targeting a minor bump (e.g. 0.1 → 0.2): recompile. No source changes
needed for items added via @since.
Targeting a new major version (e.g. V0 → V1):
package declaration to zeroclaw:[email protected].wasm32-wasip2.