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 registeredEditionInclusions byEditionSession::components_in. - Edition
Declaration - 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. - Edition
Family - A family of editions: an independently versioned, additive group of members, registered
with
EditionSession::declare_family. - Edition
Id - The identifier of an edition, e.g.
core2026.07.0. - Edition
Inclusion - 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. - Edition
Member - 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"). - Edition
Session - The session’s registry of editions and edition inclusions.
- Enabled
Editions - The editions enabled for writing in a session.
Enums§
- Component
Kind - The kind of member an edition membership covers.
Traits§
- AsComponent
Id - A source of a component id for edition declarations.
- Edition
Session Ext - Session data for Vortex editions.