syndicate-2017/index.md

4.7 KiB
Raw Blame History

title layout class link
Home page frontpage
ghrepo docs
https://github.com/tonyg/syndicate http://docs.racket-lang.org/syndicate/index.html

noun
/ˈsindikit/

  1. 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 %}

{{ racket_example1 | markdownify }} {{ javascript_example1 | markdownify }}

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.

{{ racket_example2 | markdownify }} {{ javascript_example2 | markdownify }}

Code

Syndicate is implemented both for Racket and for JavaScript.

Link to Syndicate github repo 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.