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 |
---|---|---|---|---|---|---|
✓ | ✓ | ✓ | ✓ | ✓ | ||
✓ | ✓ | ✓ | ✓ | ✓ | ||
✓ | ½ | ✓ | ✓ | ✓ | ||
✓ | ✓ | |||||
✓ | ✓ | ✓ | ||||
½ |
-
The TypeScript implementation can be used natively or from JavaScript, both in the
browser and in
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. ↩
-
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. ↩ -
The Java implementation has limited support for syndicated-actor features. ↩