18 releases (9 stable)

new 2.4.0 Jan 19, 2022
2.3.0 Nov 17, 2021
1.0.0 Sep 2, 2021
0.6.0 Aug 28, 2021
Download history 33/week @ 2021-10-02 33/week @ 2021-10-09 2/week @ 2021-10-16 28/week @ 2021-11-06 24/week @ 2021-11-13 18/week @ 2021-11-20 37/week @ 2021-12-04 2/week @ 2021-12-11 22/week @ 2022-01-01 9/week @ 2022-01-08 24/week @ 2022-01-15

55 downloads per month


12K SLoC

projectpages: "https://gitlab.com/preserves/preserves" projecttree: "https://gitlab.com/preserves/preserves/tree/main" title: "Preserves: an Expressive Data Language" no_site_title: true

This repository contains a proposal and various implementations of Preserves, a new data model and serialization format in many ways comparable to JSON, XML, S-expressions, CBOR, ASN.1 BER, and so on.

WARNING Everything in this repository is experimental and in flux! The design of Preserves is not finalised and may change drastically. Please offer any feedback you may have with this in mind.

Core documents

Preserves data model and serialization formats

Preserves is defined in terms of a syntax-neutral data model and semantics which all transfer syntaxes share. This allows trivial, completely automatic, perfect-fidelity conversion between syntaxes.

Preserves schema and queries


Implementations of the data model, plus the textual and/or binary transfer syntaxes:

Implementations of the data model, plus Syrup transfer syntax:


Preserves documents

Preserves Schema documents and codegen

Additional resources


Tony Garnock-Jones tonyg@leastfixedpoint.com


The contents of this repository are made available to you under the Apache License, version 2.0 (http://www.apache.org/licenses/LICENSE-2.0), and are Copyright 2018-2021 Tony Garnock-Jones.


~118K SLoC