The concepts described in the book manuscript are accompanied by a running implementation: the Trinity demonstrator, a live system you can try in your browser right now. Readers who wish to try things out — to run a query against a live node, to spawn an actor, to load and exercise a statechart actor, to make remote procedure calls between nodes that put the distributed side of things on display — will find the demonstrator a useful companion. It is an attempt to make the essential ideas observable, reproducible, and interactable, rather than merely readable.
Two caveats deserve mention. First, this is a proof-of-concept, not a production system. The demonstrator is hosted with best-effort availability, and readers should not be surprised if it is occasionally unreachable. Second, the implementation covers SWI-Prolog specifically. But the book's proposals are intended to be implementable on other Prolog systems as well, and one of the long-term goals of the Trinity project is to encourage independent implementations that can be compared and tested for interoperability. The SWI-Prolog proof of concept is a starting point, not a reference implementation to be frozen.
The implementation work has been done in cooperation with several AIs.
This implementation is much smaller and is written for clarity. The code is meant to be read alongside the book. As a result, a number of features are absent or only partially sketched out. It is one of many starting points if your goal is to understand how Web Prolog nodes work from the inside, or if you want to port its core components to another Prolog system.
This is an attempt to port the simple node from SWI-Prolog to Trealla Prolog (v2.95.4). The port is almost complete at this point in time.
This is an attempt to port the simple node from SWI-Prolog to Ciao Prolog. This is only a port of a node (i.e. no actors, send or receive) and uses engines rather than threads.