Vexil 0.6.0

The vexilc 0.6.0 release caps a focused 0.x stabilization wave. It is not a 1.0 claim. The release establishes a clearer compiler-to-runtime path, explicit package boundaries, and documentation that distinguishes broad evidence from representative coverage.

Highlights

  • Import version requirements are enforced as SemVer across direct and transitive project graphs.
  • Concrete type aliases work for containers and imported named types while remaining transparent on the wire.
  • Unsupported message invariants fail closed with a dedicated diagnostic.
  • Result encoding retains the published 0 = Err, 1 = Ok contract.
  • Unknown non-exhaustive union values preserve their discriminant and payload in Rust, TypeScript, Go, and Python.
  • Generated-code checks compile and execute target output, including expanded Go and Python compliance coverage.
  • A curated example path moves from a first schema through evolution, cross-language byte agreement, and stateful telemetry, with regeneration and execution checked in CI.
  • Python vexil-runtime 0.1.0 is published on PyPI through Trusted Publishing.

Upgrade notes

Regenerate code with the matching vexilc release and run your target's native test suite. If you use non-exhaustive unions, handle or retain the generated unknown case. If a schema contains invariant, compilation now rejects it instead of implying enforcement that did not exist.

Import requirements such as @ ^0.5.0 now have effect. Give imported schemas a valid schema-level @version; a missing version produces a warning and a mismatch produces an error.

Current boundaries

This release does not add a new wire format, cross-field constraints, regex constraints, invariant execution, RPC definitions, a standard library, a transport profile, or encryption. These remain separately decidable work and have no promised version number.

Go and Python have representative native and generated-code evidence rather than the broader coverage currently held by Rust and TypeScript.

Published components

Components version independently. This release wave published:

  • compiler and Rust, TypeScript, Go, and Python generators at 0.5.0;
  • Rust runtime and vexilc at 0.6.0;
  • vexil-store at 0.5.0;
  • TypeScript runtime at 0.5.2;
  • Go runtime module at 0.1.1; and
  • Python runtime at 0.1.0.

See the GitHub release for pre-built vexilc archives and checksums.