Skip to content
Dave Parker edited this page Oct 26, 2021 · 11 revisions

PRISM Developer Resources

PRISM is open-source software and we encourage developers to adapt and extend it.

Here, we collate information and resources for developers of PRISM, its extensions or code that connects to it.

If you have questions or want to discuss issues relating to PRISM development, please use the PRISM developers forum on Google Groups first. For anything else, please email Dave Parker at d.a.parker@cs.bham.ac.uk.

Source code

The source code for PRISM is here:

If you plan to extend/adapt it, create a fork from that repo. This is the most up-to-date version of the code. Public releases (both binaries and source) are published on the main PRISM download page and the source code versions are also available as GitHub releases.

The manual has installation instructions. These scripts for setting up PRISM on a fresh OS/VM are also useful:

The prism-api repo contains examples of how to connect to PRISM programmatically:

The source code for PRISM-games is here:

The latest code from the main PRISM repo is merged into this periodically.

Branches and merging

For the main repo, we use a linear git history, rebasing rather than merging when feature branches are incorporated. There is no specific policy for retaining/updating the timestamps of the original commits.

The PRISM-games repo is periodically updated to incorporate updates from the main PRISM repo. This is done via merging, not rebasing, since some parts of the codebase have diverged a little.

The prism-ext repo is used for hosting public snapshots (e.g. for tool competitions) or publicly released extensions (e.g. PRISM-pomdps, before it was integrated to the main repo).

The CUDD repo is used to keep track of the modifications we have made to the CUDD (MT)BDD library.

Parsers

The (modelling and property) languages in PRISM are processed using parsers generated by JavaCC. We use version 6.0. You do not need this to build a normal version of PRISM, only if you have made your own modifications to the parsers. (In that case, note that make parser re-compiles just the parser code)