Among the new features in Rainbow Yellow are:
New Rainbow UI
A new UI (which I’ve previewed before in group meetings) is available. This is much improved over the original console-based UI we’ve had since Rainbow’s inception. Among the features are:
- A more “architectural” view of the instantiation of Rainbow
- Details about how parts of Rainbow were specified
- L ive tracking of Stitch executions
More details can be found at Rainbow UI Documentation.
Rainbow Example
An example using this UI and SWIM, with strategies derived from various ZNN versions, is also available. The example is built in Docker, and is available from DockerHub also as cmuable/rainbow-example:3.0.
More details about how to run it and build it yourself are available at Rainbow Example.
Rainbow Configuration Checking
A Rainbow configuration checker is now integrated with Rainbow startup, and can also be used standalone. The checker checks things like:
- Do gauge classes, types, probes, property exist that are specified in gauges.yml. Are the operations they say they issue on models available on those models?
- Do probes and effectors reference correct properties in probes.yml and effectors.yml. Do classes and scripts referenced exist?
- Do Acme models parse correctly?
- Are the Stitch strategies correctly typed. I have this in bold, because for quite some time you could only find out if there was an error in strategies/tactics by running those strategies and tactics. The new typechecker goes some way to helping with this. It doesn’t yet check everything, but it checks a lot of common (and not so common) mistakes.
- Is the new UI configured correctly?
There is a new script called check-config.sh that can be used standalone with errors displayed on the console. When running rainbow-oracle.sh to start Rainbow, this is automatically called and any errors will be displayed in the UI.
Rainbow Testing Infrastructure
A new testing infrastructure for Rainbow that helps with writing unit and integration test cases for probes, gauges, and models.
Updated Stitch
In addition to the new and improved type checker for Stitch, some Stitch semantics have been "officially" updated. These are described at Stitch Language Changes.
Miscellaneous
In addition to the above major changes, some more minor changes have also been released:
-
In memory communications: The default communications mechanism for Rainbow uses Paolo Casanova’s Extremely Simple (and misnamed) Event Bus (ESEB) for network communications. Sometimes (e.g., BRASS and the simple example) all of Rainbow runs on one machine in one process and so the network communication overhead is not worth it. There is now a new in memory communication connector implemented using Google Guava EventBus.
-
Documentation: There is some updated documentation now on GitHub, including sketching out how to do a target definition (e.g., at Target Definition).