syndicate-2017/index.md

3.0 KiB
Raw Blame History

title layout class link
Home page frontpage
ghrepo
https://github.com/tonyg/syndicate

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

Motivation

Every interactive program needs some way of

  • representing the conversations it is having as concurrent components

  • mapping incoming events to these components

  • managing the shared understanding that the components are building as they work towards the program's goal

  • cleaning up shared state after partial failure of a component

  • scoping interactions and shared state inside the program

Existing programming languages lack linguistic support for these requirements, leaving the programmer to fend for themselves.

Syndicate is a language designed to help organise interactive programs.

Features

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 address the above challenges.

Code

Syndicate is implemented both for Racket and for ES5.

Link to Syndicate github repo The [Syndicate github repository]({{ page.link.ghrepo }}) contains implementations along with some larger example programs.

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. 9th Int. Workshop on Programming Language Approaches to Concurrency and Communication-cEntric Software (PLACES 2016), 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. 25th European Symposium on Programming (ESOP 2016), April 2016, Eindhoven, Netherlands.