Rust implementation of Dataspaces, Syndicate, and a high-speed networked dataspace broker.
Go to file
Tony Garnock-Jones 4b872828a5 Use OUT_DIR 2021-08-10 22:07:48 -04:00
benches More fine-grained state and new ownership relations, to potentially permit avoiding scheduling overhead by directly entering an actor's runtime context 2021-07-24 23:22:01 +02:00
examples More fine-grained state and new ownership relations, to potentially permit avoiding scheduling overhead by directly entering an actor's runtime context 2021-07-24 23:22:01 +02:00
protocols Merge latest changes from the syndicate-protocols repository 2021-07-22 14:13:15 +02:00
src Use OUT_DIR 2021-08-10 22:07:48 -04:00
.gitignore Use OUT_DIR 2021-08-10 22:07:48 -04:00
Cargo.lock Preserves updated num dependency 2021-08-09 09:18:40 -04:00
Cargo.toml New preserves releases 2021-08-10 10:54:05 -04:00
Makefile Switch to preserves-schema deserialize; minor performance tweaks 2021-07-21 23:29:53 +02:00
README.md README.md 2021-05-12 15:36:27 +02:00
build.rs Use OUT_DIR 2021-08-10 22:07:48 -04:00
rust-toolchain Tokio-0.2 based Preserves chat-ish server 2019-09-24 22:07:49 +01:00
syndicate-rs-server.png README.md 2021-05-12 15:36:27 +02:00

README.md

Syndicate/rs

A Rust implementation of:

  • the Syndicate network protocol, including
  • a high-speed Dataspace indexing structure (see HOWITWORKS.md from syndicate-rkt),
  • a standalone Syndicate protocol broker service, and
  • a handful of examples.

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

Running the examples

In one window, start the server:

./target/release/syndicate-server

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

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