On this page· 4

Versioning

  • file format 6
  • Rust SDK 1.0 preview

PLXI carries five version numbers. Each changes for a different reason.

Five numbers

Table 1. Version numbers: 5
NumberWhere it isCurrentChanges when
File format versionthe header line's v6 token and the footer's version field6a change would make an unmodified version-6 reader misread a file
Record versioneach record's v member1 for every registered kinda member is removed, made required, or changes type or meaning
Specification revisionthe specification's front matter6.0the text is clarified, or optional members, kinds or error kinds are added: 6.x
Corpus versionthe conformance manifest; corpus_version() in the SDK1cases are added or changed
Error-kinds versionthe error-kind list; error_kinds_version() in the SDK1a kind is added (a minor change) or removed or renamed (a major one)

What a reader does with a number it does not know

  • 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 v than 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 v is kept, and written back after the declared members.

Compressed packs

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 SDK's own version

The Rust SDK's version, 1.0 preview, is separate from all five numbers above. Changes

Sections