Go to file
Tony Garnock-Jones 73c6593f84 Python 0.994 docs 2024-02-05 23:01:01 +01:00
_data Python 0.994 docs 2024-02-05 23:01:01 +01:00
_includes Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
_layouts Link QuickRef in nav 2023-10-17 10:55:11 +02:00
_plugins Proper layouting 2019-08-18 22:08:55 +01:00
doc Make `convert` the default subcommand for `preserves-tool` 2023-11-03 13:07:05 +01:00
git-hooks Remove split-out Rust implementation 2024-01-28 15:18:08 +01:00
historical Correct names 2022-03-07 08:31:24 +01:00
implementations Bump python version to 0.994.0 2024-02-05 22:58:16 +01:00
path Remove single-precision floats from the implementations 2024-01-27 14:40:37 +01:00
python Python 0.994 docs 2024-02-05 23:01:01 +01:00
schema Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
tests Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
.gitignore Restrict usage of commas. Bump spec version to 0.992 2023-11-01 14:13:36 +01:00
.gitlab-ci.yml Update CI script 2021-05-21 21:58:31 +02:00
Internet_Archive_Logo.svg Update why-not-json 2023-10-16 15:31:25 +02:00
LICENSE LICENSE, NOTICE, README.md 2019-08-08 14:46:03 +01:00
Makefile Remove split-out Rust implementation 2024-01-28 15:18:08 +01:00
NOTICE NOTICE 2022-06-10 17:48:30 +02:00
README.md Remove split-out Rust implementation 2024-01-28 15:18:08 +01:00
TODO.md Note in TODO.md 2020-10-26 14:15:03 +01:00
TUTORIAL.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
_config.yml Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
canonical-binary.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
cheatsheet-plaintext.md Cheatsheets for pexprs 2023-11-01 15:15:24 +01:00
cheatsheet.md Cheatsheets for pexprs 2023-11-01 15:15:24 +01:00
conventions.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
craiyon_111353.png Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
gitlab-logo-200.svg Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
gitlab-logo-500.svg Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
gitlab-logo-700.svg Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
index.md Tweak jekyll setup 2019-08-11 16:19:08 +01:00
logo-64x64.png Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
logo-256x256.png Fancy nav, plus craiyon logo! 2023-03-17 12:02:27 +01:00
normalize.css Proper layouting 2019-08-18 22:08:55 +01:00
notes.mb.md Proper layouting 2019-08-18 22:08:55 +01:00
preserves-binary.md Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
preserves-expressions.md Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
preserves-path.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
preserves-schema.md Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
preserves-text.md Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
preserves-zerocopy.md Preserves really uses Unicode scalar values, not code points. 2023-10-13 14:01:21 +02:00
preserves.css Cosmetic rearrangement of cheatsheets 2023-11-01 15:30:23 +01:00
preserves.el Fix (?) comment-dwim 2023-11-18 20:43:14 +01:00
preserves.md Switch from `#!` to `#:` for embedded values 2024-02-05 22:38:49 +01:00
questions.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
quoting.rkt Explore quoting. 2018-12-06 21:25:51 +00:00
quoting.v Drastically improve quoting.v - including a much better main theorem 2020-06-18 23:57:42 +02:00
representations.md Remove single-precision floats from the specs 2024-01-27 11:34:51 +01:00
run-jekyll Tweak run-jekyll script 2023-10-15 11:18:28 +02:00
setup.sh The Racket preserves package needs a local copy of schema.prs for the package-builder to work. Use a git hook to keep it in sync with the master copy 2021-05-26 14:27:03 +02:00
why-not-json.md Tweak 2023-10-17 11:22:12 +02:00
xml-infoset.prs XML Infoset convention 2021-09-30 14:46:46 +02:00

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 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 Schema documents and codegen

Additional resources

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-2022 Tony Garnock-Jones.

Notes


  1. Pre-alpha implementations also exist for C and C++. ↩︎