Version v0.2.0 concurs with the third milestone in the project as supported by NLnet.
This release sees a number of important new mechanisms. The goal we've set for this release includes a first version of a general user interface. This requires most of the basic mechanisms to be available (and caused a number of aspects to be included in this release that were not foreseen).
context
and binding
. As the language is further developed, many other functions will turn out to be useful. Often, they will be useful only in particular cases. Rather than extending the language with a new keyword for each such function, we introduce a mechanism for external functions. Such functions come in two flavors: core external functions and foreign external functions. The former are compiled with the core of the program (the Perspectives Distributed Runtime). A mechanism for them, together with a number of functions oriented to Couchdb, is released now. The mechanism for foreign functions is not yet ready. It will enable the programmer to add a Javascript module to his model and make use of functions defined therein. Obviously, this introduces a safety risk. See the text External Function Interfaceobject
variable in rules. A rule on a computed perspective may change the state that the computation rests on. Consequently, after changing that state the original object set may no longer be computed. There are plausible use cases where this would be a problem. By introducing a variable object
that is automatically bound to the original object set in the right hand side of rules, we solve this problem. See The case for an object variable in rulesWith this release, we publish an end user program with a user interface - in its very first version. This program is based on Electron and is maintained in a seperate repository. Furthermore, it depends on several other projects, one of them newly released now. These are the newly published repositories:
The reference page has been actualised in several places, e.g. regarding to the new object
variable and the externel interface. Furthermore we've published a number of new language design documents:
Apart from the main screen of the InPlace end user program, we've created two models whose current versions are published with this release, for test usage:
The plan for this release included a chat-app skeleton. However, we found it doesn't add anything to the other two models in terms of either real functionality or feature demonstration, so we've postponed it to a later release when we have synchronisation between PDR installations. Chatting will demonstrate that synchronisation.
To test drive the alpha version of the InPlace end user program, you will have to install the full development environment and build all projects. We refer you to the readme document of perspectives-react-integrated-client for instructions how to start the client.
Also, you'll have to install Couchdb. Perspectives development depends on version V2.1.1; however, we have good reason to believe the latest Couchdb version will work for you, too.
Notice that you need to have at least model:System in Couchdb in order to be able to start InPlace. Run
pulp test
to achieve this. We will soon release a version with more convenient ways of test driving InPlace!