Update README
This commit is contained in:
parent
c8f32f1910
commit
ef8e205eb2
64
README.md
64
README.md
|
@ -1,12 +1,8 @@
|
||||||
# Second Racket implementation of Syndicate
|
# Third Racket implementation of Syndicate
|
||||||
|
|
||||||
## Quickstart
|
## Quickstart
|
||||||
|
|
||||||
raco pkg install syndicate
|
git clone -b novy https://git.syndicate-lang.org/syndicate-lang/syndicate-rkt
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
git clone https://git.syndicate-lang.org/syndicate-lang/syndicate-rkt
|
|
||||||
cd syndicate-rkt
|
cd syndicate-rkt
|
||||||
make link
|
make link
|
||||||
|
|
||||||
|
@ -22,27 +18,31 @@ implementation of Syndicate, which includes
|
||||||
|
|
||||||
- a TCP echo server example, which listens for connections on port
|
- a TCP echo server example, which listens for connections on port
|
||||||
5999 by default, in
|
5999 by default, in
|
||||||
[`syndicate-examples/echo.rkt`](syndicate-examples/echo.rkt).
|
[`syndicate-examples/tcp-echo-server.rkt`](syndicate-examples/tcp-echo-server.rkt).
|
||||||
Connect to it using, for example, `telnet localhost 5999`.
|
Connect to it using, for example, `telnet localhost 5999`.
|
||||||
|
|
||||||
- a number of other examples both small and large, in
|
- a number of other examples both small and large, in
|
||||||
[`syndicate-examples/`](syndicate-examples/).
|
[`syndicate-examples/`](syndicate-examples/).
|
||||||
|
|
||||||
## New implementation
|
## New design, new implementation
|
||||||
|
|
||||||
This is a reimplementation of Syndicate that takes the language-level
|
This implementation of Syndicate is based on the *Syndicated Actor
|
||||||
constructs of facets, endpoints, and fields to heart, integrating
|
Model*, a design that takes the language-level constructs of facets,
|
||||||
knowledge of facets and endpoints into the dataspace implementation
|
capabilities denoting objects, and dataflow fields to heart. The
|
||||||
itself.
|
implementation integrates these ideas into a facet- and
|
||||||
|
assertion-oriented actor implementation and a capability-aware
|
||||||
|
dataspace implementation.
|
||||||
|
|
||||||
It gains a *significant* performance advantage by doing so.
|
It gains a *significant* performance advantage (10-30x speedup!) over
|
||||||
|
[2017-era dataspace implementations](https://git.syndicate-lang.org/syndicate-lang/syndicate-2017/src/branch/main/racket)
|
||||||
|
by representing patterns over assertions in a
|
||||||
|
[new way](syndicate/HOWITWORKS.md), and a smaller but not
|
||||||
|
insignificant advantage over
|
||||||
|
[2019-era implementations](https://git.syndicate-lang.org/syndicate-lang/syndicate-rkt/src/branch/fruit)
|
||||||
|
by switching to a simpler and more general actor implementation.
|
||||||
|
|
||||||
Programs seem to be about *20x faster* (compared to the
|
The dataspace implementation techniques herein are the subject of a
|
||||||
[previous implementation](https://git.syndicate-lang.org/syndicate-lang/syndicate-2017/src/branch/main/racket)).
|
forthcoming paper. The prototype that embodies the new idea is in
|
||||||
Some are only 10x faster, some are 30x faster.
|
|
||||||
|
|
||||||
The implementation techniques herein are the subject of a forthcoming
|
|
||||||
paper. The prototype that embodies the new idea is in
|
|
||||||
[historical/prototype.rkt](historical/prototype.rkt), and
|
[historical/prototype.rkt](historical/prototype.rkt), and
|
||||||
[syndicate/HOWITWORKS.md](syndicate/HOWITWORKS.md) describes the
|
[syndicate/HOWITWORKS.md](syndicate/HOWITWORKS.md) describes the
|
||||||
approach via prose.
|
approach via prose.
|
||||||
|
@ -50,30 +50,28 @@ approach via prose.
|
||||||
All the drivers end up looking much nicer with this new
|
All the drivers end up looking much nicer with this new
|
||||||
implementation. The previously-separate GL-2D support is now
|
implementation. The previously-separate GL-2D support is now
|
||||||
integrated as just another driver (though the timing characteristics
|
integrated as just another driver (though the timing characteristics
|
||||||
of the old implementation are not precisely preserved). The
|
of the old implementation are not precisely preserved). The connection
|
||||||
[ground.rkt](syndicate/ground.rkt) implementation is much cleaner.
|
to the surrounding Racket environment is also much cleaner.
|
||||||
|
|
||||||
To see the difference in speed, try out the "many Racket logos"
|
<!-- To see the difference in speed, try out the "many Racket logos" -->
|
||||||
animation example/demo after installing the `syndicate` and
|
<!-- animation example/demo after installing the `syndicate` and -->
|
||||||
`syndicate-examples` packages:
|
<!-- `syndicate-examples` packages: -->
|
||||||
|
|
||||||
racket -l syndicate-examples/gl-2d-many
|
<!-- racket -l syndicate-examples/gl-2d-many -->
|
||||||
|
|
||||||
Hopefully you'll get a smooth 60fps, though I admit I'm running it on
|
<!-- Hopefully you'll get a smooth 60fps, though I admit I'm running it on -->
|
||||||
a fairly fast machine so you might need to drop the `sprite-count` in
|
<!-- a fairly fast machine so you might need to drop the `sprite-count` in -->
|
||||||
the code a bit to sustain 60fps.
|
<!-- the code a bit to sustain 60fps. -->
|
||||||
|
|
||||||
## Compiling and running the code
|
## Compiling and running the code
|
||||||
|
|
||||||
You will need Racket version 7.6 or later. (If you're using Racket CS,
|
You will need Racket version 8.1 or later.
|
||||||
you'll need version 7.8 or later because of
|
|
||||||
[this issue](https://github.com/racket/racket/issues/3132).)
|
|
||||||
|
|
||||||
Once you have Racket installed, run
|
Once you have Racket installed, run
|
||||||
|
|
||||||
raco pkg install syndicate
|
<!-- raco pkg install syndicate -->
|
||||||
|
|
||||||
to install the package from the Racket package repository, or
|
<!-- to install the package from the Racket package repository, or -->
|
||||||
|
|
||||||
raco pkg install --link syndicate
|
raco pkg install --link syndicate
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue