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