Rust implementation of Dataspaces, Syndicate, and a high-speed networked dataspace broker.
Go to file
Tony Garnock-Jones 69c526436f Release independent packages
syndicate@0.26.0
syndicate-macros@0.21.0
syndicate-server@0.29.0
syndicate-tools@0.4.0

Generated by cargo-workspaces
2023-01-31 14:13:06 +01:00
dev-scripts Update configuration in run-server 2021-10-07 20:54:14 +02:00
docker Use busybox as base rather than a completely empty image, for convenience 2022-05-25 11:02:33 +02:00
syndicate Release independent packages 2023-01-31 14:13:06 +01:00
syndicate-macros Release independent packages 2023-01-31 14:13:06 +01:00
syndicate-server Release independent packages 2023-01-31 14:13:06 +01:00
syndicate-tools Release independent packages 2023-01-31 14:13:06 +01:00
.gitignore Update deps; in particular, get preserves 3.0, which has the fixed numerics/symbols syntax 2023-01-16 15:03:35 +01:00
Cargo.lock Release independent packages 2023-01-31 14:13:06 +01:00
Cargo.toml syndicate-macaroon 2022-10-18 14:05:12 +02:00
Cross.toml Makefile & Cross.toml hack to work around an aarch64 cross-compilation issue (https://github.com/rust-embedded/cross/issues/598) 2021-10-13 12:12:02 +02:00
Makefile Fix tag format template 2023-01-08 13:19:06 +01:00
README.md Update README 2021-09-02 15:30:16 +02:00
fixtags.sh fixtags.sh 2022-02-04 17:06:18 +01:00
rust-toolchain Split out syndicate-server crate 2021-08-12 21:42:14 -04:00
syndicate-rs-server.png README.md 2021-05-12 15:36:27 +02:00

README.md

Syndicate/rs

A Rust implementation of:

  • the Syndicated Actor model, including assertion-based communication, failure-handling, capability-style security, dataspace entities, and facets as a structuring principle;

  • the Syndicate network protocol, including

    • a high-speed Dataspace indexing structure (skeleton.rs; see also HOWITWORKS.md from syndicate-rkt) and

    • a standalone Syndicate protocol "broker" service (roughly comparable in scope and intent to D-Bus); and

  • a handful of example programs.

The Syndicate/rs server running.
The Syndicate/rs server running.

Quickstart

git clone https://git.syndicate-lang.org/syndicate-lang/syndicate-rs
cd syndicate-rs
cargo build --release
./target/release/syndicate-server -p 8001

Running the examples

In one window, start the server:

./target/release/syndicate-server -p 8001

Then, choose one of the examples below.

Producer/Consumer (sending messages)

In a second window, run a "consumer" process:

./target/release/examples/consumer

Finally, in a third window, run a "producer" process:

./target/release/examples/producer

State producer/consumer (state replication)

Replace producer with state-producer and consumer with state-consumer, respectively, in the instructions of the previous subsection to demonstrate Syndicate state replication.

Pingpong example (latency)

In a second window, run

./target/release/examples/pingpong pong

and in a third window, run

./target/release/examples/pingpong ping

The order is important - the difference between ping and pong is about who kicks off the pingpong session.

Performance note

You may find better performance by restricting the server to fewer cores than you have available. For example, for me, running

taskset -c 0,1 ./target/release/syndicate-server -p 8001

roughly quadruples throughput for a single producer/consumer pair, on my 48-core AMD CPU.