Skip to main content

Crate vortex_edition

Crate vortex_edition 

Source
Expand description

Definitions of Vortex editions: named sets of serialized component IDs. Frozen editions carry a forever read-compatibility guarantee; draft editions do not.

Editions live on the session, like encodings do: EditionSession holds the registered editions and EnabledEditions selects which of them a writer may emit. Declarations are plain constants — an EditionId plus an Edition record, and one EditionInclusion per member stating that it is a member of an edition and every later edition of the same family. Any crate can register declarations into a session, so inclusions can live next to the component they describe.

Every membership is typed by a ComponentKind, and members are resolved one kind at a time with EditionSessionExt::enabled_component_ids: the file writer restricts the arrays, layouts, extension dtypes, and aggregates it writes from separate id sets. Array memberships name wire IDs rather than in-memory array representations. An array plugin may serialize one current in-memory representation under several historical IDs. The serialization context validates the ID chosen by the plugin before writing it. Readers resolve the ID stored in the file and either deserialize it into the current representation or reject it as unknown.

An edition is represented as a draft until its Edition::min_library_version is recorded. A stable edition may freeze in the release that cuts it; once that release version is known, the field is backfilled to document the freeze. The per-edition member sets are computed from the registered declarations by EditionSession::components_in, and correctness is enforced by unit tests: EditionSession::validate checks a whole registry, and test_harness::validate_edition validates one edition’s constraints — call it once in the #[cfg(test)] module of each edition definition.

The first-party edition declarations live in this crate. The public vortex crate re-exports them and registers and enables them on the default session. See the published spec at https://docs.vortex.dev/specs/editions.html.

Re-exports§

pub use declarations::EDITION_DECLARATIONS;
pub use declarations::EDITION_FAMILIES;

Modules§

declarations
The first-party Vortex edition declarations, one module per edition.
test_harness
Test harness for edition declarations.

Structs§

Edition
An edition: a named set of serialized components that can acquire a read-compatibility guarantee, registered with EditionSession::declare_edition. The set itself is computed from the registered EditionInclusions by EditionSession::components_in.
EditionDeclaration
Declares an edition together with its new members in one block. Registered with EditionSession::declare, which derives each entry’s membership (since = the declared edition) from the block structure.
EditionFamily
A family of editions: an independently versioned, additive group of members, registered with EditionSession::declare_family.
EditionId
The identifier of an edition, e.g. core2026.07.0.
EditionInclusion
Declares that a serialized component is a member of an edition — and of every later edition of the same family. Registered with EditionSession::declare_inclusion.
EditionMember
A member that joins an edition, named by id string or vtable and tagged with its kind. Built with the per-kind constructors, so a declaration reads as EditionMember::array(&"vortex.alp").
EditionSession
The session’s registry of editions and edition inclusions.
EnabledEditions
The editions enabled for writing in a session.

Enums§

ComponentKind
The kind of member an edition membership covers.

Traits§

AsComponentId
A source of a component id for edition declarations.
EditionSessionExt
Session data for Vortex editions.