4.7 KiB
title | layout | class | link | ||||
---|---|---|---|---|---|---|---|
Home | page | frontpage |
|
noun
/ˈsindikit/
- a self-organizing group of individuals, companies, corporations or entities formed to transact some specific business, to pursue or promote a shared interest. —Wikipedia
Overview
Syndicate is an Actor-based language offering
-
pub/sub pattern-based message routing, for mapping events to actors
-
dataspaces, stores for semi-structured data, for managing shared state
-
state change notifications for keeping actors informed of changes in dataspaces
-
integrated techniques for registering and discovering services and for cleaning up after both graceful and unexpected actor failures
-
recursive layering of groups of actors, each group with a private dataspace of its own, for organising larger programs
Together, these features help programmers organise their interactive programs.
Example
These two actors implement a toy “bank account” actor that listens for
deposit
messages and maintains an account
balance record in the
shared dataspace. The first is written using Syndicate implemented for
Racket, and the second using Syndicate for JavaScript.
{% capture racket_example1 %}{% include frontpage_racket_example1.md %}{% endcapture %} {% capture javascript_example1 %}{% include frontpage_javascript_example1.md %}{% endcapture %} {% capture racket_example2 %}{% include frontpage_racket_example2.md %}{% endcapture %} {% capture javascript_example2 %}{% include frontpage_javascript_example2.md %}{% endcapture %}
The next two implement a client for the “bank account”. Each time the balance in the shared dataspace changes, they print a message to the console.
Code
Syndicate is implemented both for Racket and for JavaScript.
The [Syndicate github repository]({{ page.link.ghrepo }}) contains implementations along with some larger example programs.
Documentation
Forthcoming.
Papers
Tony Garnock-Jones, [“From Events To Reactions: A Progress Report”]({{ site.baseurl }}/papers/from-events-to-reactions-a-progress-report-20160301-1747.pdf), In: Proc. PLACES 2016 (workshop), April 2016, Eindhoven, Netherlands.
Tony Garnock-Jones and Matthias Felleisen, [“Coordinated Concurrent Programming in Syndicate”]({{ site.baseurl }}/papers/coordinated-concurrent-programming-in-syndicate-20160111-1409.pdf), In: Proc. ESOP 2016, April 2016, Eindhoven, Netherlands.
Tony Garnock-Jones, Sam Tobin-Hochstadt, and Matthias Felleisen, [“The Network as a Language Construct”]({{ site.baseurl }}/papers/network-as-language-construct-20140117-1204.pdf), In: Proc. ESOP 2014, April 2016, Eindhoven, Netherlands.