Syndicate A Conversational Software Ecosystem

Language support for the Syndicated Actor Model

A number of interoperating implementations of syndicated actors and the associated DSL exist for various languages and environments.

The Syndicate git repositories contain most of the implementations linked below, along with some larger example programs.

Caveat Structor. The project codebase is currently very much in flux. If you want to look at the bleeding edge of development, check out the git repositories directly. Many of the repositories have multiple branches, one for each separate line of development.

The instructions following here are for installing slightly older but more stable variants of the language and/or model, for those curious about how it works but not curious enough to wade through getting pre-release software working.

Language Syndicated Actor Model DSL IDE support Dataspace entity Protocol client Protocol server
Racket logo Racket  
TypeScript logo TypeScript & JavaScript1  
Rust logo Rust2 ½  
Python logo Python 3        
Squeak balloon Squeak Smalltalk      
Duke (Java mascot) Java3 ½          
  1. The TypeScript implementation can be used natively or from JavaScript, both in the HTML5 logo (CC-BY-3.0) browser and in node.js node.js. It extends the TypeScript language server with support for the Syndicate DSL, which gives a nice IDE experience in LSP-supporting editors like emacs and vscode. 

  2. The Rust implementation is a high-speed implementation of the Syndicated Actor model and is also the foundation of a number of tools such as the Dataspace Broker. The “½” in the DSL column is because, while the implementation offers a few support macros, including pattern compilation and a simple during! macro, the nature of Rust makes it difficult to achieve the smooth, full integration that the DSL implementations in Racket and TypeScript achieve. 

  3. The Java implementation has limited support for syndicated-actor features.