26 releases (15 breaking)

new 0.16.0 Jul 22, 2021
0.14.0 Jun 29, 2021
0.12.0 Mar 12, 2021
0.9.0 Jul 10, 2020
0.3.1 Oct 23, 2019
Download history 23/week @ 2021-04-06 39/week @ 2021-04-13 41/week @ 2021-04-20 6/week @ 2021-04-27 22/week @ 2021-05-04 10/week @ 2021-05-11 29/week @ 2021-05-18 1/week @ 2021-05-25 23/week @ 2021-06-08 1/week @ 2021-06-15 3/week @ 2021-06-22 34/week @ 2021-06-29 3/week @ 2021-07-06 3/week @ 2021-07-13 44/week @ 2021-07-20

57 downloads per month
Used in preserves-schema


4.5K 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


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.


~38K SLoC