summaryrefslogtreecommitdiff
path: root/README
blob: 21afb2fe5abb7f3836a202fd9a870c381a839379 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
This is a Common Lisp implementation of the Encoding for Robust Immutable
Storage specification (https://purl.org/eris). It implements the version 1.0 of
the specification.

The code is licensed under the LGPLv3 or any later version, unless specified
otherwise in a file.

Depends on Alexandria, Ironclad version 0.58+, function-cache,
trivial-gray-streams, bordeaux-threads, and fiveam for testing. In addition, on
POSIX systems the mmap and osicat libraries are used for the parallel decoder.

Until the Ironclad library released version 0.58, you have to use the master
branch as it contains the necessary patch to add the RFC Chacha variant to
Ironclad.


The public API is exported by the ERIS package.

There are the following functions for converting to and from ERIS
representations to eris-cl objects:

read-capability-to-urn
urn-to-read-capability
octets-to-read-capability
read-capability-to-octets
reference-to-block-urn
block-urn-to-reference

The eris-encode (INPUT BLOCK-SIZE OUTPUT-FUNCTION &KEY SECRET HASH-OUTPUT)
function can be used to encode a vector or a stream into an ERIS
read-capability.

The eris-decode (READ-CAPABILITY FETCH-FUNCTION &KEY (CACHE-CAPACITY 2048))
function can be used to decode an ERIS read-capability. It returns a stream of
the class ERIS-DECODE-STREAM: this class implements the Gray streams protocol.

In addition, on POSIX systems, eris-decode-parallel (READ-CAPABILITY
FETCH-FUNCTION OUTPUT-FILE &KEY (CACHE-CAPACITY 4096) (THREADS 4)
(INITIAL-BINDINGS *DEFAULT-SPECIAL-BINDINGS*)) function is available. This
function will attempt to decode an ERIS read-capability in parallel into a file
specified by the OUTPUT-FILE string or pathspec.

See the docstrings of the specific functions for more details.