syndicate-rkt/syndicate
Tony Garnock-Jones 47a113026c README.md 2018-05-03 15:06:53 +01:00
..
drivers gl-2d driver and examples 2018-05-01 17:39:17 +01:00
examples Actually-useful instantaneous frame rate measurement 2018-05-01 22:40:12 +01:00
test Add second, non-dataspace, test case to illustrate correct behaviour 2018-05-02 23:36:03 +01:00
.gitignore Tweak .gitignore 2018-04-29 14:54:22 +01:00
Makefile Add `test` make target 2018-04-29 16:08:20 +01:00
README.md README.md 2018-05-03 15:06:53 +01:00
bag.rkt Add `bag-empty?` 2018-05-02 18:20:24 +01:00
dataspace.rkt Ensure (??) that relays' assertions can't outlive them 2018-05-02 18:10:52 +01:00
event-expander.rkt Progress on syntax veneer 2018-04-08 11:44:32 +01:00
ground.rkt Drain multiple external ground events at once. (Good or bad idea?) 2018-05-01 17:34:51 +01:00
info.rkt Refactor tests 2018-04-29 11:55:32 +01:00
lang.rkt In case there are no activation-forms, add a gratuitous `(void)` at the end. 2018-04-30 22:47:53 +01:00
main.rkt Nested dataspaces 2018-04-29 14:54:14 +01:00
pattern.rkt Support vector in patterns, like we already support list 2018-05-01 20:57:22 +01:00
prototype.rkt Rearrange 2018-03-27 22:21:49 +13:00
relay.rkt Ensure (??) that relays' assertions can't outlive them 2018-05-02 18:10:52 +01:00
skeleton.rkt Support vector in patterns, like we already support list 2018-05-01 20:57:22 +01:00
syntax-classes.rkt Add timer/timestate support; this prompted a change to endpoint registration. 2018-04-29 22:27:55 +01:00
syntax.rkt Handy logging for diagnosing problems 2018-05-01 22:39:50 +01:00
term.rkt Support vector in patterns, like we already support list 2018-05-01 20:57:22 +01:00
test-implementation.rkt Correct printing of test procedures 2018-05-02 18:20:33 +01:00

README.md

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.

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 implementation is much cleaner.

The implementation test suite lives in test/.

Try out the "many Racket logos" animation example/demo:

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.