syndicate-rkt/syndicate/README.md

43 lines
1.3 KiB
Markdown
Raw Normal View History

2018-05-03 14:05:03 +00:00
# New "Imperative" Syndicate Implementation
This experimental reimplementation of Syndicate takes the
language-level constructs of facets, endpoints, and fields to heart,
and integrates knowledge of facets and endpoints into the dataspace
implementation itself.
It gains a *significant* performance advantage by doing so.
Programs seem to be about *20x faster*. Some are only 10x faster, some
are 30x faster.
The prototype that embodies the new idea is in
[prototype.rkt](prototype.rkt).
All the drivers end up looking much nicer with this new
implementation. The previously-separate GL-2D support is now
integrated as just another driver (though the timing characteristics
of the old implementation are not precisely preserved). The
[ground.rkt](ground.rkt) implementation is much cleaner.
2018-05-03 14:21:33 +00:00
Install the package by getting a Git checkout and running
```shell
raco pkg install --link -n imperative-syndicate `pwd`
```
The implementation test suite lives in [test/](test/). Run it with:
```shell
raco setup imperative-syndicate; raco test -p imperative-syndicate
```
2018-05-03 14:05:03 +00:00
Try out the "many Racket logos" animation example/demo:
```shell
racket examples/gl-2d-many.rkt
```
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
the code a bit to sustain 60fps.