preserves.dev
This commit is contained in:
parent
3f70c7a256
commit
4a93ede771
|
@ -308,7 +308,7 @@ language, the Preserves concept of an *embedded value* is used in the SAM to rel
|
|||
portions of a datum referring to SAM entities.
|
||||
|
||||
Concretely, in [Preserves text
|
||||
syntax](https://preserves.gitlab.io/preserves/preserves.html#textual-syntax), embedded values
|
||||
syntax](https://preserves.dev/preserves.html#textual-syntax), embedded values
|
||||
appear prepended with `#!`. In messages transferred across links using the [Syndicate network
|
||||
protocol][], references might appear as `#![0 123]`, `#![1 555]`, etc. etc.
|
||||
|
||||
|
@ -664,7 +664,7 @@ schema is as a specification of the allowable shapes for data to be used in a pa
|
|||
context.
|
||||
|
||||
Synit, and many programs making use of the [Syndicated Actor Model][], uses [Preserves][]'
|
||||
[schema language](https://preserves.gitlab.io/preserves/preserves-schema.html) to define
|
||||
[schema language](https://preserves.dev/preserves-schema.html) to define
|
||||
schemas for many different applications.
|
||||
|
||||
For more, see [the section on schemas in the chapter on
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
Synit makes **extensive** use of *Preserves*, a programming-language-independent language for
|
||||
data.
|
||||
|
||||
- [Preserves homepage](https://preserves.gitlab.io/)
|
||||
- [Preserves specification](https://preserves.gitlab.io/preserves/preserves.html)
|
||||
- [Preserves Schema specification](https://preserves.gitlab.io/preserves/preserves-schema.html)
|
||||
- [Preserves homepage](https://preserves.dev/)
|
||||
- [Preserves specification](https://preserves.dev/preserves.html)
|
||||
- [Preserves Schema specification](https://preserves.dev/preserves-schema.html)
|
||||
- [Source code](https://gitlab.com/preserves/preserves) for many (not all) of the implementations
|
||||
- Implementations for
|
||||
[Nim](https://git.sr.ht/~ehmry/preserves-nim),
|
||||
|
@ -17,7 +17,7 @@ data.
|
|||
|
||||
The Preserves data language is in many ways comparable to JSON, XML, S-expressions, CBOR, ASN.1
|
||||
BER, and so on. From the [specification
|
||||
document](https://preserves.gitlab.io/preserves/preserves.html):
|
||||
document](https://preserves.dev/preserves.html):
|
||||
|
||||
> Preserves supports *records* with user-defined *labels*, embedded *references*, and the usual
|
||||
> suite of atomic and compound data types, including *binary* data as a distinct type from text
|
||||
|
@ -64,7 +64,7 @@ is a syntactic superset of JSON, and a completely equivalent compact binary synt
|
|||
the definition of [canonical form](#canonical-form) for Preserves values.[^syrup]
|
||||
|
||||
Here are a few example values, written using the text syntax (see [the
|
||||
specification](https://preserves.gitlab.io/preserves/preserves.html#textual-syntax) for the
|
||||
specification](https://preserves.dev/preserves.html#textual-syntax) for the
|
||||
grammar):
|
||||
|
||||
Boolean : #t #f
|
||||
|
@ -85,8 +85,8 @@ Commas are optional in sequences, sets, and dictionaries.
|
|||
### Canonical form
|
||||
|
||||
Every Preserves value can be serialized into a *canonical form* using the [binary
|
||||
syntax](https://preserves.gitlab.io/preserves/preserves.html#compact-binary-syntax) along with
|
||||
[a few simple rules](https://preserves.gitlab.io/preserves/canonical-binary.html) about
|
||||
syntax](https://preserves.dev/preserves.html#compact-binary-syntax) along with
|
||||
[a few simple rules](https://preserves.dev/canonical-binary.html) about
|
||||
serialization ordering of elements in sets and keys in dictionaries.
|
||||
|
||||
Having a canonical form means that, for example, a cryptographic hash of a value's canonical
|
||||
|
@ -140,7 +140,7 @@ rewriting capability references happens when an in-memory value is serialized fo
|
|||
Preserves comes with a schema language suitable for defining protocols among actors/programs in
|
||||
Synit. Because Preserves is a superset of JSON, its schemas can be used for parsing JSON just
|
||||
as well as for native Preserves values.[^you-have-to-use-a-preserves-reader] From the [schema
|
||||
specification](https://preserves.gitlab.io/preserves/preserves-schema.html):
|
||||
specification](https://preserves.dev/preserves-schema.html):
|
||||
|
||||
> A Preserves schema connects Preserves Values to host-language data
|
||||
> structures. Each definition within a schema can be processed by a
|
||||
|
@ -325,7 +325,7 @@ Here's the Preserves value equivalent to the example above, expressed using the
|
|||
can't reliably tell whether two values are the same or different, how are you supposed to
|
||||
use them to look things up in anything database-like?
|
||||
Languages like JSON, which [don't have a well-defined equivalence
|
||||
relation](https://preserves.gitlab.io/preserves/why-not-json.html#json-syntax-doesnt-mean-anything),
|
||||
relation](https://preserves.dev/why-not-json.html#json-syntax-doesnt-mean-anything),
|
||||
aren't good enough. When programs communicate with each other, they need to be sure that
|
||||
their peers will understand the information they receive exactly as it was sent.
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
# Working with schemas
|
||||
|
||||
- [Preserves schema specification](https://preserves.gitlab.io/preserves/preserves-schema.html)
|
||||
- [Index of Preserves schema tools](https://preserves.gitlab.io/preserves/doc/schema-tools.html)
|
||||
- [Preserves schema specification](https://preserves.dev/preserves-schema.html)
|
||||
- [Index of Preserves schema tools](https://preserves.dev/doc/schema-tools.html)
|
||||
|
||||
[preserves-schemac]: https://preserves.gitlab.io/preserves/doc/preserves-schemac.html
|
||||
[preserves-schemac]: https://preserves.dev/doc/preserves-schemac.html
|
||||
|
||||
## Schema source code: *.prs files
|
||||
|
||||
|
@ -26,7 +26,7 @@ above is placed in `simpleChatProtocol.prs`.
|
|||
|
||||
Many of the code generator tools for Preserves schemas require not source code, but instances
|
||||
of the [Preserves
|
||||
metaschema](https://preserves.gitlab.io/preserves/preserves-schema.html#appendix-metaschema).
|
||||
metaschema](https://preserves.dev/preserves-schema.html#appendix-metaschema).
|
||||
To compile schema source code to metaschema instances, use
|
||||
[preserves-schemac][]:
|
||||
|
||||
|
@ -141,7 +141,7 @@ Generate Rust definitions corresponding to a metaschema instance with [preserves
|
|||
The best way to use it is to integrate it into your `build.rs` (see [the
|
||||
docs][preserves-schema-rs]), but you can also use it as a standalone command-line tool.
|
||||
|
||||
[preserves-schema-rs]: https://preserves.gitlab.io/preserves/doc/preserves-schema-rs.html
|
||||
[preserves-schema-rs]: https://preserves.dev/doc/preserves-schema-rs.html
|
||||
|
||||
The following command generates a directory `./rs/chat` containing rust sources for a module
|
||||
that expects to be called `chat` in Rust code:
|
||||
|
@ -179,7 +179,7 @@ Generate TypeScript definitions from schema **sources** (not metaschema instance
|
|||
[preserves-schema-ts][]. Unlike other code generators, this one understands schema source code
|
||||
directly.
|
||||
|
||||
[preserves-schema-ts]: https://preserves.gitlab.io/preserves/doc/preserves-schema-ts.html
|
||||
[preserves-schema-ts]: https://preserves.dev/doc/preserves-schema-ts.html
|
||||
|
||||
The following command generates a directory `./ts/gen` containing TypeScript sources:
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ Synit builds upon many existing technologies, but primarily relies on the follow
|
|||
- [PostmarketOS](https://postmarketos.org/). Synit builds on PostmarketOS, replacing only a
|
||||
few core packages. All of PostmarketOS and Alpine Linux are available underneath Synit.
|
||||
|
||||
- [Preserves](https://preserves.gitlab.io/). The Preserves data language and its associated
|
||||
- [Preserves](https://preserves.dev/). The Preserves data language and its associated
|
||||
schema and query languages are central to Synit.
|
||||
|
||||
- [Syndicate](https://syndicate-lang.org/). Syndicate is an umbrella project for tools and
|
||||
|
@ -53,7 +53,7 @@ overview of the contents of the repository.
|
|||
|
||||
Synit depends on published packages for Preserves and Syndicate support in each of the many
|
||||
programming languages it uses. These will be automatically found and downloaded during the
|
||||
Synit build process, but you can find details on the [Preserves](https://preserves.gitlab.io/)
|
||||
Synit build process, but you can find details on the [Preserves](https://preserves.dev/)
|
||||
and [Syndicate](https://syndicate-lang.org/) homepages, respectively.
|
||||
|
||||
For the Smalltalk-based phone-management and UI part of the system, you will need a number of
|
||||
|
|
|
@ -31,13 +31,13 @@ name](#the-active-target).
|
|||
*Program* = *Instruction* ...
|
||||
|
||||
A configuration source file is a file whose name ends in `.pr` that contains zero or more
|
||||
Preserves [text-syntax](https://preserves.gitlab.io/preserves/preserves.html#textual-syntax)
|
||||
Preserves [text-syntax](https://preserves.dev/preserves.html#textual-syntax)
|
||||
values, which are together interpreted as a sequence of *Instruction*s.
|
||||
|
||||
**Comments.** [Preserves
|
||||
comments](https://preserves.gitlab.io/preserves/conventions.html#comments) are ignored. One
|
||||
comments](https://preserves.dev/conventions.html#comments) are ignored. One
|
||||
unfortunate wart is that because Preserves comments are really
|
||||
[annotations](https://preserves.gitlab.io/preserves/preserves.html#annotations), they are
|
||||
[annotations](https://preserves.dev/preserves.html#annotations), they are
|
||||
required by the Preserves data model to be attached to some other value. Syntactically, this
|
||||
manifests as the need for *some non-comment following every comment*. In scripts written to
|
||||
date, often an empty *SequencingInstruction* serves to anchor comments at the end of a file:
|
||||
|
|
|
@ -686,13 +686,13 @@ care should be taken in the case of non-cryptographic transport protocols like p
|
|||
|
||||
To use such a transport for this protocol, establish a connection and begin transmitting
|
||||
[`Packet`s](#packet-definitions) encoded as Preserves values using either the Preserves [text
|
||||
syntax](https://preserves.gitlab.io/preserves/preserves.html#textual-syntax) or the Preserves
|
||||
[binary syntax](https://preserves.gitlab.io/preserves/preserves.html#compact-binary-syntax).
|
||||
syntax](https://preserves.dev/preserves.html#textual-syntax) or the Preserves
|
||||
[binary syntax](https://preserves.dev/preserves.html#compact-binary-syntax).
|
||||
The session starts with the first packet and ends with transport disconnection. If either peer
|
||||
in a connection detects a syntax error, it MUST disconnect the transport. A responding server
|
||||
MUST support the binary syntax, and MAY also support the text syntax. It can autodetect the
|
||||
syntax variant by following [the rules in the
|
||||
specification](https://preserves.gitlab.io/preserves/preserves.html#appendix-autodetection-of-textual-or-binary-syntax):
|
||||
specification](https://preserves.dev/preserves.html#appendix-autodetection-of-textual-or-binary-syntax):
|
||||
the first byte of a valid binary-syntax Preserves document is guaranteed not to be
|
||||
interpretable as the start of a valid UTF-8 sequence.
|
||||
|
||||
|
|
Loading…
Reference in New Issue