Changelog for libcspm-1.0.0

If this renders badly as markdown, see the plain text version

1.0.0 Thomas Gibson-Robinson thomas.gibsonrobinson@gmail.com 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 https://www.cs.ox.ac.uk/projects/fdr) 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 thomas.gibsonrobinson@gmail.com 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 thomas.gibsonrobinson@gmail.com 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 thomas.gibsonrobinson@gmail.com 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 thomas.gibsonrobinson@gmail.com 2011-11-03 * Fix the build of cspmchecker.

0.1 Thomas Gibson-Robinson thomas.gibsonrobinson@gmail.com 2011-11-03 * Initial Release.