11# Editions
22
3- An ** edition ** is a named grouping of encodings: it records exactly which encodings a Vortex
4- file may contain, and when each encoding joined the set. The current edition,
5- [ ` core2026.07.0 ` ] ( #core2026070 ) , groups the 32 encodings the default file writer emits today .
3+ Vortex defines an evergrowing set of serializable array encodings, once written this can be read back by any future
4+ version of vortex.
5+ ** Editions ** are used to keep track of these encodings and talk about groups of encodings .
66
7- Editions make compatibility concrete. Because every edition is published and frozen, "written
8- under ` core2026.07.0 ` " says precisely which encodings a reader must support — and every Vortex
9- release supports every edition published before it, so files written under an edition remain
10- readable, and queryable, by all future versions of Vortex.
7+ The edition ` core2026.07.0 ` (coming soon) is the first such edition containing all encodings currently
8+ enabled by the writer.
9+ Editions are additive so an edition that comes after a previous one contains all the encodings from the previous one
10+ and more.
11+ The writer can be configured with a set of different editions (e.g. ` core2026.07.0 ` and ` unstable2026.05.0 ` all stable
12+ encoding released before July 2026 and all unstable encodings from May 2026).
1113
12- Editions constrain writing, not reading: a reader needs no configuration and always
13- understands every published edition. The only time an edition surfaces on the read path is in
14- the error described next.
14+ Editions can be used to constrain your minimum required vortex reader, since latest version over vortex across all
15+ editions is the earliest version of vortex required to read that file.
1516
1617## Resolving an unknown-encoding error
1718
@@ -28,8 +29,9 @@ it does not support. Find the encoding ID in the [registry](#edition-registry) b
2829
2930## Writing with an edition
3031
31- By default the writer targets the latest ` core ` edition — there is nothing to configure, and
32- every file you write carries the read-forever guarantee. If a file would contain an encoding
32+ The default the writer targets a ` core ` edition lagging the latest vortex release by a few version giving delay before
33+ writing the latest vortex encodings to disk.
34+ Every file you write carries the read-forever guarantee. If a file would contain an encoding
3335outside the targeted edition, the write fails immediately; edition violations never surface as
3436someone else's read error later.
3537
@@ -42,13 +44,9 @@ Two knobs exist when the default is not what you want:
4244 and may emit any encoding in their union; each encoding belongs to exactly one family.
4345
4446You can also opt out of editions entirely to write custom or experimental encodings. Doing so
45- is an explicit choice that gives up the portability guarantee — only readers that know your
47+ is an explicit choice that gives up the standardization guarantee — only readers that know your
4648encodings can read those files.
4749
48- Compression presets (the default writer, the compact preset, CUDA-oriented presets) choose
49- * within* the targeted edition, so switching presets never changes which readers can read a
50- file.
51-
5250## How editions change
5351
5452A published edition is frozen — its encoding list never grows or shrinks. New encodings are
@@ -57,72 +55,6 @@ edition; each encoding's registry entry records the edition it joined in. In the
5755encoding may be * deprecated* , meaning writers stop emitting it — but readers keep decoding it
5856indefinitely, so deprecation never invalidates existing files.
5957
60- Editions are also distinct from the file format version (the ` u16 ` tag in the file's
61- end-of-file marker): the format version describes the structure of the file container, the
62- edition describes which encodings may appear inside it.
63-
6458## Edition registry
6559
66- | Edition | Status | Frozen on | Encodings |
67- | ---| ---| ---| ---|
68- | [ core2026.07.0] ( #core2026070 ) | current | 2026-07 | 32 |
69- | [ core2026.10.0] ( #core2026100 ) | draft | — | 32 |
70-
71- The registry is verified continuously: real ` .vortex ` files written by previous releases are
72- re-read and checked against known-good values, and published editions are pinned by tests so
73- no code change can silently alter a frozen set. The guarantee assumes a default-feature build
74- of Vortex; disabling default cargo features (e.g. ` zstd ` ) removes the corresponding decoders.
75-
76- ### core2026.07.0
77-
78- | | |
79- | ---| ---|
80- | ** Status** | current |
81- | ** Frozen on** | 2026-07 |
82- | ** Required Vortex release** | the first release that includes this edition |
83- | ** Encodings** | 32 |
84-
85- | Encoding ID | Since |
86- | ---| ---|
87- | ` fastlanes.bitpacked ` | core2026.07.0 |
88- | ` fastlanes.delta ` | core2026.07.0 |
89- | ` fastlanes.for ` | core2026.07.0 |
90- | ` fastlanes.rle ` | core2026.07.0 |
91- | ` vortex.alp ` | core2026.07.0 |
92- | ` vortex.alprd ` | core2026.07.0 |
93- | ` vortex.bool ` | core2026.07.0 |
94- | ` vortex.bytebool ` | core2026.07.0 |
95- | ` vortex.chunked ` | core2026.07.0 |
96- | ` vortex.constant ` | core2026.07.0 |
97- | ` vortex.datetimeparts ` | core2026.07.0 |
98- | ` vortex.decimal ` | core2026.07.0 |
99- | ` vortex.decimal_byte_parts ` | core2026.07.0 |
100- | ` vortex.dict ` | core2026.07.0 |
101- | ` vortex.ext ` | core2026.07.0 |
102- | ` vortex.fixed_size_list ` | core2026.07.0 |
103- | ` vortex.fsst ` | core2026.07.0 |
104- | ` vortex.list ` | core2026.07.0 |
105- | ` vortex.listview ` | core2026.07.0 |
106- | ` vortex.masked ` | core2026.07.0 |
107- | ` vortex.null ` | core2026.07.0 |
108- | ` vortex.pco ` | core2026.07.0 |
109- | ` vortex.primitive ` | core2026.07.0 |
110- | ` vortex.runend ` | core2026.07.0 |
111- | ` vortex.sequence ` | core2026.07.0 |
112- | ` vortex.sparse ` | core2026.07.0 |
113- | ` vortex.struct ` | core2026.07.0 |
114- | ` vortex.varbin ` | core2026.07.0 |
115- | ` vortex.varbinview ` | core2026.07.0 |
116- | ` vortex.variant ` | core2026.07.0 |
117- | ` vortex.zigzag ` | core2026.07.0 |
118- | ` vortex.zstd ` | core2026.07.0 |
119-
120- Not included, because they are experimental and their serialized forms may still change:
121- ` vortex.onpair ` , ` vortex.zstd_buffers ` , ` vortex.patched ` , ` vortex.piecewise-sequence ` , and
122- everything behind the ` unstable_encodings ` feature flag. Writing them requires opting out of
123- the edition.
124-
125- ### core2026.10.0
126-
127- The draft staging area for the next ` core ` edition: no guarantee until frozen, contents may
128- change freely. No changes relative to [ core2026.07.0] ( #core2026070 ) yet.
60+ Coming soon..
0 commit comments