https://preserves.dev/ [logo-64x64] * Core * QuickRef * Schema * Path Gitlab logo Preserves: an Expressive Data Language This repository contains a definition and various implementations of Preserves, a data model with associated serialization formats in many ways comparable to JSON, XML, S-expressions, CBOR, ASN.1 BER, and so on. 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 specification: + Preserves semantics and data model, + Preserves textual syntax, and + Preserves machine-oriented binary syntax * Preserves tutorial * Quick Reference for Preserves syntax * Canonical Form for Binary Syntax * Syrup, a hybrid binary/human-readable syntax for the Preserves data model Preserves schema and queries * Preserves Schema specification * Preserves Path specification Implementations Implementations of the data model, plus Preserves textual and binary transfer syntax Language^1 Code Package Docs Nim git.syndicate-lang.org Python preserves.dev pip install preserves docs Racket preserves.dev raco pkg install preserves Rust preserves.dev cargo add preserves docs Squeak Installer ss project: Smalltalk SqueakSource 'Preserves'; install: 'Preserves' TypeScript/ preserves.dev yarn add @preserves/core JavaScript Implementations of the data model, plus Syrup transfer syntax Language Code Guile github.com/ocapn/syrup Haskell github.com/zenhack/haskell-preserves JavaScript github.com/zarutian/agoric-sdk Python github.com/ocapn/syrup Racket github.com/ocapn/syrup Tools Preserves documents * preserves-tool, generic syntax translation and pretty-printing Preserves Schema documents and codegen * Tools for working with Preserves Schema Additional resources * Change History of the Preserves specifications * Preserves Expressions (P-expressions, pexprs) * Some conventions for common data types * Open questions; see also the issues list * Why not Just Use JSON? Contact Tony Garnock-Jones tonyg@leastfixedpoint.com Licensing 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-2024 Tony Garnock-Jones. Notes 1. Pre-alpha implementations also exist for C and C++. -