Mirror of https://gitlab.com/preserves/preserves
Tony Garnock-Jones
4f0f3322e9
- @preserves/schema-cli@0.995.209 - @preserves/schema@0.995.209 |
||
---|---|---|
_data | ||
_includes | ||
_layouts | ||
_plugins | ||
debian-packages | ||
doc | ||
git-hooks | ||
historical | ||
implementations | ||
path | ||
python | ||
schema | ||
tests | ||
.gitignore | ||
.gitlab-ci.yml | ||
Internet_Archive_Logo.svg | ||
LICENSE | ||
Makefile | ||
NOTICE | ||
README.md | ||
TODO.md | ||
TUTORIAL.md | ||
_config.yml | ||
canonical-binary.md | ||
cheatsheet-plaintext.md | ||
cheatsheet.md | ||
conventions.md | ||
craiyon_111353.png | ||
gitlab-logo-200.svg | ||
gitlab-logo-500.svg | ||
gitlab-logo-700.svg | ||
index.md | ||
logo-64x64.png | ||
logo-256x256.png | ||
normalize.css | ||
notes.mb.md | ||
preserves-binary.md | ||
preserves-expressions.md | ||
preserves-path.md | ||
preserves-schema.md | ||
preserves-text.md | ||
preserves-zerocopy.md | ||
preserves.css | ||
preserves.el | ||
preserves.md | ||
questions.md | ||
quoting.rkt | ||
quoting.v | ||
representations.md | ||
run-jekyll | ||
setup.sh | ||
why-not-json.md | ||
xml-infoset.prs |
README.md
projectpages | projecttree | title | no_site_title |
---|---|---|---|
https://gitlab.com/preserves/preserves | https://gitlab.com/preserves/preserves/tree/main | Preserves: an Expressive Data Language | true |
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 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
Implementations
Implementations of the data model, plus Preserves textual and binary transfer syntax
Language1 | 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 Smalltalk | SqueakSource | Installer ss project: 'Preserves'; install: 'Preserves' |
|
TypeScript/JavaScript | preserves.dev | yarn add @preserves/core |
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
Additional resources
- 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.