Changelog for libcspm-1.0.0

1.0.0 Thomas Gibson-Robinson <> 2013-10-11 This is a major release that delivers a fully functional evaluator that is both efficient and compatible with FDR2. This is the library used by FDR3 (available from for parsing and manipulating CSPm. * Changes to the evaluator included: * Major efficiency and memory improvements. In particular, when a pattern binds to a process, the entire tree of operator applications is not saved in the environment, meaning that memory usage is minimised. This should have no noticeable performance impact. * Fixed the naming of processes within let expressions. * The ability to handle all processes. * Misc fixes with dot handling, including within prefixes. * Improvements to the handling of infinite sets. * An error is thrown when a datatype is not rectangular. * Events is now available. * An error is thrown when an invalid event or datatype is constructed (e.g. when c.1 is constructed, if c is a channel allowing only 0 as its first field). * The pretty printing structure has been overhauled to make it possible to have side effects. This permits more attractive pretty printing of values. * Added Hashable instances for many of the built in datatypes. * Fixed many small incompatibilites in the parser. * Fixed a bug that prevented multiple assertions from being included. * Enhanced the renamer to produce better errors. * Add full support for modules, including parameterised modules. * Fixed many small bugs in the evaluator. 0.2.1 Thomas Gibson-Robinson <> 2012-01-18 * Fixed a bug in the typechecker that prevented certain (uncommon) functions that took function arguments that were polymorphic in dot from being type checked. * Exposed ErrorMessages to allow clients to present them more usefully. * Added location information to renamer errors. * Made compatible with GHC 7.0.4. 0.2.0 Thomas Gibson-Robinson <> 2012-01-04 * Enhanced the evaluator: * Dot is not handled correctly; * More versions of infinite sets are allowed; * Add experimental and partial support of $ in prefixes. This should mean that the evaluator has feature parity with FDR2, although it does lack testing. * Added a renamer that renames all variables in a file or expression to ensure that they do not clash. * Enhanced the parser to be more compatible with FDR2 with regard to the ambiguity with > and end of sequence. See the comment in src/CSPM/Parser.hs. * Fixed a bug in the typechecker where it would incorrectly allow yield types to be chosen in prefixes. For example, given c?x?y:{0,1} where c is a channel that has only one field, of type A, the typechecker would assign a type of Int=>A for x, which does not match the evaluator which would assign x to the whole A. To fix this a new type constraint was added, Inputable, that any type other than yield satisfies. * Added a lot more documentation, particularly on the abstract syntax tree and how to use the library. 0.1.2 Thomas Gibson-Robinson <> 2011-11-04 * Fix building with GHC 7.2 and Alex 3. * Remove the last few remaining mentions to sfdr (the old name for cspmchecker). 0.1.1 Thomas Gibson-Robinson <> 2011-11-03 * Fix the build of cspmchecker. 0.1 Thomas Gibson-Robinson <> 2011-11-03 * Initial Release.