Release per December 2019: v0.1.0

Version v0.1.0 concurs with the second milestone in the project as supported by NLnet.


Starting with this second milestone, we introduce semantic versioning for the Perspectives Distributed Runtime. We have omitted that for the first milestone, alas. The current major release number is 0 (zero), the initial minor release number should have been 0 too, so for this second release we use 1. We have no patches, so the version number of the current release is v0.1.0

The documentation comes in versions too, and follows the versioning of the PDR.


  1. On assignment. The syntax for assignment to roles has changed. This is reflected in the language reference. Furthermore, a document with a more in-depth treatment of assignment as been released (Assignment).
  2. Rules. A text on coding bots.
  3. State and dependency tracking. On the mechanism behind the FRP and the forward rule system.
  4. State change - cache, save and sync. Background (introductionary) to saving etc.
  5. Perspectives across context boundaries
  6. Semantics of the Perspectives language. The Semantic model is developed a bit further, especially regarding the Empty and Universal types.


  1. Let*. Expressions have been extended with a let* expression. This introduces sequential variable binding. The body of the let* can be an expression, or a series of assignments (in rules).
  2. Parser. The runtime system now incorporates a parser for the Perspectives Language. The Core project holds many tests. The parser can be called from the command line, as explained below.
  3. Many smaller changes. The dependency tracking, caching and saving mechanisms have been overhauled and many other improvements have been put in place.


It is currently possible to use the PDR as a command line facility, to parse an .arc file to the JSON serialisation of the internal representation of the model it describes. To do so, run this on the command line in the project root directory:

$ pulp run -- --parse test/test1.arc

where test1.arc is a very small model:

domain: Test
case: TestCase
user: Self
property: Prop1 (mandatory, not functional, Number)
thing: SomeRole
context: AContextRole filledBy: NestedCase
bot: for Self
perspective on: Self
if true then
createRole SomeRole
case: NestedCase

Replace test1.arc with a path to your own file relative to the project root directory.

The result will be streamed to standard output. To capture it in a file, run:

$ pulp run -- --parse test/test1.arc > test1.json