On this page· 4
Versioning
- file format 6
- Rust SDK 1.0 preview
PLXI carries five version numbers. Each changes for a different reason.
| Number | Where it is | Current | Changes when |
|---|---|---|---|
| File format version | the header line's v6 token and the footer's version field | 6 | a change would make an unmodified version-6 reader misread a file |
| Record version | each record's v member | 1 for every registered kind | a member is removed, made required, or changes type or meaning |
| Specification revision | the specification's front matter | 6.0 | the text is clarified, or optional members, kinds or error kinds are added: 6.x |
| Corpus version | the conformance manifest; corpus_version() in the SDK | 1 | cases are added or changed |
| Error-kinds version | the error-kind list; error_kinds_version() in the SDK | 1 | a kind is added (a minor change) or removed or renamed (a major one) |
- A file format version other than 6 is rejected with
unsupported_version. Versions 1 to 5 are retired and have no readers, and there is no in-place path from one file version to another. - A record with a higher
vthan the reader supports is kept opaque and written back with the same values and member order. - A kind the reader has never seen is kept opaque the same way. Adding a kind needs no version change.
- A new optional member on a kind at the same
vis kept, and written back after the declared members.
A .plxi.gz file is one gzip member whose decompressed bytes are a complete pack. It is a way to ship a pack, not a different format. A reader decompresses it in full before it reads the appendix.
The Rust SDK recognises gzip input by its first two bytes, 1F 8B, not by the file name, and inflates it once.
The Rust SDK's version, 1.0 preview, is separate from all five numbers above. Changes