CBOR+ZStd
Concise Binary Object Representation with ZStandard Compression
Introduction
This format combines Concise Binary Object Representation (CBOR) and ZStandard, a fast lossless compression algorithm.
Stencila provides support for CBOR+ZStd as a more compact alternative to JSON or CBOR for storing documents. It may be preferred over those formats for storing very large documents. Also consider JSON+Zip which may provide similar levels of compression, but which is more portable.
Usage
Use the .cbor.zstd
file extension, or the --to cborzstd
or --from cborzstd
options, when converting to/from CBOR+Zstd e.g.
stencila convert doc.smd doc.cbor.zstd
Implementation
Stencila support lossless, bi-directional conversion between Stencila documents and CBOR+ZStd powered by the Rust crates ciborium
and zstd
.
Support
Stencila supports these operations for CBOR+Zstd:
- decoding from a file
- encoding to a file
Support and degree of loss by node type:
Node type | Encoding | Decoding | Notes |
---|---|---|---|
Works | |||
Article | 🟢 No loss | 🟢 No loss | |
AudioObject | 🟢 No loss | 🟢 No loss | |
AuthorRole | 🟢 No loss | 🟢 No loss | |
Chat | 🟢 No loss | 🟢 No loss | |
ChatMessage | 🟢 No loss | 🟢 No loss | |
ChatMessageGroup | 🟢 No loss | 🟢 No loss | |
Claim | 🟢 No loss | 🟢 No loss | |
Collection | 🟢 No loss | 🟢 No loss | |
Comment | 🟢 No loss | 🟢 No loss | |
CreativeWork | 🟢 No loss | 🟢 No loss | |
Directory | 🟢 No loss | 🟢 No loss | |
Figure | 🟢 No loss | 🟢 No loss | |
File | 🟢 No loss | 🟢 No loss | |
ImageObject | 🟢 No loss | 🟢 No loss | |
MediaObject | 🟢 No loss | 🟢 No loss | |
Periodical | 🟢 No loss | 🟢 No loss | |
Prompt | 🟢 No loss | 🟢 No loss | |
PublicationIssue | 🟢 No loss | 🟢 No loss | |
PublicationVolume | 🟢 No loss | 🟢 No loss | |
Review | 🟢 No loss | 🟢 No loss | |
SoftwareApplication | 🟢 No loss | 🟢 No loss | |
SoftwareSourceCode | 🟢 No loss | 🟢 No loss | |
Table | 🟢 No loss | 🟢 No loss | |
TableCell | 🟢 No loss | 🟢 No loss | |
TableRow | 🟢 No loss | 🟢 No loss | |
VideoObject | 🟢 No loss | 🟢 No loss | |
Prose | |||
Admonition | 🟢 No loss | 🟢 No loss | |
Annotation | 🟢 No loss | 🟢 No loss | |
Cite | 🟢 No loss | 🟢 No loss | |
CiteGroup | 🟢 No loss | 🟢 No loss | |
DefinedTerm | 🟢 No loss | 🟢 No loss | |
Emphasis | 🟢 No loss | 🟢 No loss | |
Heading | 🟢 No loss | 🟢 No loss | |
Link | 🟢 No loss | 🟢 No loss | |
List | 🟢 No loss | 🟢 No loss | |
ListItem | 🟢 No loss | 🟢 No loss | |
Note | 🟢 No loss | 🟢 No loss | |
Paragraph | 🟢 No loss | 🟢 No loss | |
QuoteBlock | 🟢 No loss | 🟢 No loss | |
QuoteInline | 🟢 No loss | 🟢 No loss | |
Section | 🟢 No loss | 🟢 No loss | |
Strikeout | 🟢 No loss | 🟢 No loss | |
Strong | 🟢 No loss | 🟢 No loss | |
Subscript | 🟢 No loss | 🟢 No loss | |
Superscript | 🟢 No loss | 🟢 No loss | |
Text | 🟢 No loss | 🟢 No loss | |
ThematicBreak | 🟢 No loss | 🟢 No loss | |
Underline | 🟢 No loss | 🟢 No loss | |
Math | |||
MathBlock | 🟢 No loss | 🟢 No loss | |
MathInline | 🟢 No loss | 🟢 No loss | |
Code | |||
CodeBlock | 🟢 No loss | 🟢 No loss | |
CodeChunk | 🟢 No loss | 🟢 No loss | |
CodeExpression | 🟢 No loss | 🟢 No loss | |
CodeInline | 🟢 No loss | 🟢 No loss | |
CompilationMessage | 🟢 No loss | 🟢 No loss | |
ExecutionMessage | 🟢 No loss | 🟢 No loss | |
Data | |||
Array | 🟢 No loss | 🟢 No loss | |
ArrayHint | 🟢 No loss | 🟢 No loss | |
ArrayValidator | 🟢 No loss | 🟢 No loss | |
Boolean | 🟢 No loss | 🟢 No loss | |
BooleanValidator | 🟢 No loss | 🟢 No loss | |
ConstantValidator | 🟢 No loss | 🟢 No loss | |
Cord | 🟢 No loss | 🟢 No loss | |
Datatable | 🟢 No loss | 🟢 No loss | |
DatatableColumn | 🟢 No loss | 🟢 No loss | |
DatatableColumnHint | 🟢 No loss | 🟢 No loss | |
DatatableHint | 🟢 No loss | 🟢 No loss | |
Date | 🟢 No loss | 🟢 No loss | |
DateTime | 🟢 No loss | 🟢 No loss | |
DateTimeValidator | 🟢 No loss | 🟢 No loss | |
DateValidator | 🟢 No loss | 🟢 No loss | |
Duration | 🟢 No loss | 🟢 No loss | |
DurationValidator | 🟢 No loss | 🟢 No loss | |
EnumValidator | 🟢 No loss | 🟢 No loss | |
Integer | 🟢 No loss | 🟢 No loss | |
IntegerValidator | 🟢 No loss | 🟢 No loss | |
Null | 🟢 No loss | 🟢 No loss | |
Number | 🟢 No loss | 🟢 No loss | |
NumberValidator | 🟢 No loss | 🟢 No loss | |
Object | 🟢 No loss | 🟢 No loss | |
ObjectHint | 🟢 No loss | 🟢 No loss | |
String | 🟢 No loss | 🟢 No loss | |
StringHint | 🟢 No loss | 🟢 No loss | |
StringValidator | 🟢 No loss | 🟢 No loss | |
Time | 🟢 No loss | 🟢 No loss | |
TimeValidator | 🟢 No loss | 🟢 No loss | |
Timestamp | 🟢 No loss | 🟢 No loss | |
TimestampValidator | 🟢 No loss | 🟢 No loss | |
TupleValidator | 🟢 No loss | 🟢 No loss | |
Unknown | 🟢 No loss | 🟢 No loss | |
UnsignedInteger | 🟢 No loss | 🟢 No loss | |
Flow | |||
Button | 🟢 No loss | 🟢 No loss | |
CallArgument | 🟢 No loss | 🟢 No loss | |
CallBlock | 🟢 No loss | 🟢 No loss | |
CodeLocation | 🟢 No loss | 🟢 No loss | |
CompilationDigest | 🟢 No loss | 🟢 No loss | |
ExecutionDependant | 🟢 No loss | 🟢 No loss | |
ExecutionDependency | 🟢 No loss | 🟢 No loss | |
ExecutionTag | 🟢 No loss | 🟢 No loss | |
ForBlock | 🟢 No loss | 🟢 No loss | |
Form | 🟢 No loss | 🟢 No loss | |
Function | 🟢 No loss | 🟢 No loss | |
IfBlock | 🟢 No loss | 🟢 No loss | |
IfBlockClause | 🟢 No loss | 🟢 No loss | |
IncludeBlock | 🟢 No loss | 🟢 No loss | |
Parameter | 🟢 No loss | 🟢 No loss | |
Variable | 🟢 No loss | 🟢 No loss | |
Walkthrough | 🟢 No loss | 🟢 No loss | |
WalkthroughStep | 🟢 No loss | 🟢 No loss | |
Style | |||
StyledBlock | 🟢 No loss | 🟢 No loss | |
StyledInline | 🟢 No loss | 🟢 No loss | |
Edits | |||
InstructionBlock | 🟢 No loss | 🟢 No loss | |
InstructionInline | 🟢 No loss | 🟢 No loss | |
InstructionMessage | 🟢 No loss | 🟢 No loss | |
PromptBlock | 🟢 No loss | 🟢 No loss | |
SuggestionBlock | 🟢 No loss | 🟢 No loss | |
SuggestionInline | 🟢 No loss | 🟢 No loss | |
Config | |||
Config | 🟢 No loss | 🟢 No loss | |
Other | |||
Brand | 🟢 No loss | 🟢 No loss | |
ContactPoint | 🟢 No loss | 🟢 No loss | |
Enumeration | 🟢 No loss | 🟢 No loss | |
Grant | 🟢 No loss | 🟢 No loss | |
ModelParameters | 🟢 No loss | 🟢 No loss | |
MonetaryGrant | 🟢 No loss | 🟢 No loss | |
Organization | 🟢 No loss | 🟢 No loss | |
Person | 🟢 No loss | 🟢 No loss | |
PostalAddress | 🟢 No loss | 🟢 No loss | |
Product | 🟢 No loss | 🟢 No loss | |
PropertyValue | 🟢 No loss | 🟢 No loss | |
ProvenanceCount | 🟢 No loss | 🟢 No loss | |
RawBlock | 🟢 No loss | 🟢 No loss | |
Thing | 🟢 No loss | 🟢 No loss |
See the Rust crate codec-cbor
for more details.