packages feed

graphviz-2999.10.0.0: Changelog

% graphviz - Changelog
% Ivan Lazar Miljenovic

Release History and Changelog
=============================

The following is information about what major changes have gone into
each release.

Changes in 2999.10.0.0
----------------------

* Conversion of `FGL`-style graphs to `DotRepr` values is now achieved
  using the new `GraphvizParams` configuration type.  This allows us
  to define a single parameter that stores all the conversion
  functions to pass around rather than having to pass around several
  functions.  This also allows all the non-clustered and clustered
  functions to be collapsed together, whereas what used to be handled
  by the primed functions is now achieved by using the
  `setDirectedness` function.

  There are three default `GraphvizParams` available:

    - `defaultParams` provides some sensible defaults (no attributes
      or clustering).

    - `nonClusteredParams` is an alias of `defaultParams` where the
      clustering type is explicitly set to be `()` for cases where you
      don't want any clustering at all (whereas `defaultParams` allows
      you to set your own clustering functions).

    - `blankParams` sets all fields to be `undefined`; this is useful
      for situations where you have functions that will set some
      values for you and there is no sensible default you can use
      (mainly for the clustering function).

* Expansion of the `DotRepr` class:

    - More common functions are now defined as methods (`getID`,
      etc.).

    - The ability to get more information about the structure of the
      `DotRepr` graph, as well as where all the `DotNode`s are, etc.

    - `graphNodes` now returns `DotNode`s defined only as part of
      `DotEdge`s, and will also merge duplicate `DotNode`s together.

    - `graphNodes` and `graphEdges` also return `GlobalAttributes`
      that apply to them.

* The `Point` type now only has one constructor: `Point Double
  Double`.  The `Int`-only constructor was present due to historical
  purposes and I thought that the `Pos` value for a `DotNode` would
  always be a pair of `Int`s; this turns out not to be the case.

* `SortV` and `PrismOverlap` now only take `Word16` values rather than
  `Int`s, as they're not meant to allow negative values (the choice of
  using `Word16` rather than `Word` was arbitrary, and because it's
  unlikely those values will be large enough to require the larger
  values available in `Word`).

* `NodeCluster` has been generalised to not have to take an `LNode`
  for the node type; the type alias `LNodeCluster` is available if you
  still want this.

* Several documentation typos fixed, including one spotted by **Kevin
  Quick**.

* The test-suite now allows running individual tests.

Changes in 2999.9.0.0
---------------------

* graphviz now has an FAQ and an improved README as well as its own
  [homepage](http://projects.haskell.org/graphviz/).

* Canonicalisation of `DotRepr` values is now available with the
  `canonicalise` function.

* Add support for record labels; values are automatically
  escaped/unescaped.  The `Record` and `MRecord` shapes have been
  added for use with these labels.  **Requested by Minh Thu and Eric
  Kow.**

* Add support for HTML-like values (this replaces the wrong and
  completely broken URL datatype).  Strings are automatically
  escaped/unescaped.

* Named `PortPos` values are now accepted (as required for record and
  HTML-like labels).

* `GraphID` no longer allows HTML-like values (since Graphviz doesn't
  seem to allow it).

* `RankSep` takes a list of `Double` values as required.

* `Attribute` has a new constructor `UnknownAttribute` for use when
  parsing deprecated Graphviz attributes in old Dot code.

* Various parsing fixes; of special note:

    - Statements no longer need to end in a semi-colon;

    - Anonymous sub-graphs are now supported.

    - Edge statements can now handle node groupings (e.g. ` a -> {b
      c}`) as well as `portPos` values (e.g. `a:from -> b:to`).

    - Unquoted `String`s containing non-ASCII characters are now
      parsed properly (though they are assumed to be encoded with
      UTF-8).  **Thanks to Jules Bean (aka quicksilver) for working
      out how to do this.**

    More specifically: almost all Dot files that ship with Graphviz, as
    documentation in the Linux kernel, etc. are now parseable.

* A new script to assist in testing whether "real-world" Dot graphs
  are parseable.

* Slight performance increase when parsing: whereas parsing is done
  case-insensitively, the "correct" case is now checked by default
  which has a moderate affect on parsing times.

* Split lines are now able to be handled when parsing.

Changes in 2999.8.0.0
---------------------

* Added support for generalised `DotGraph`s; this optional
  representation removes the restriction of ordering of Dot
  statements.  This allows for greater flexibility of how to specify
  Dot code.  As an offshoot from this, most relevant functions now
  utilise a new `DotRepr` class that work with both `DotGraph`s and
  the new `GDotGraph`s; this shouldn't affect any code already in use.

* With the **prompting of Noam Lewis**, the augmentation functions
  have been revamped in two ways:

  - Now contains support for multiple edges.

  - The ability to perform "manual" augmentation if greater control is
    desired.

* Add a preview function to quickly render and visualise an `FGL`
  graph using the `Xlib` canvas.

* Added a pseudo-inverse of the `FGL -> Dot` functions (a graph is
  created, but the original node and edge labels are unrecoverable).

* The `Printing` and `Parsing` modules have been moved (from
  `Data.GraphViz.Types` to `Data.GraphViz`).

* Reworked file-generating commands such that they return the filename
  of the created file if successful.

Changes in 2999.7.0.0
---------------------

* Updated and extended functions to interact with the Graphviz tools.
  This now includes:

  - a better listing of available output types;

  - distinguishing file outputs from canvas outputs;

  - ability to automatically add the correct file extension to file
    outputs

  - Return any errors if calling Graphviz failed rather than just
    printing them to stderr

* Improved `Color` support:

  - fixed `ColorScheme` values

  - explicitly named `X11` colors

  - conversion to/from values from the [colour] library

  [colour]: http://www.haskell.org/haskellwiki/Colour

* Removed `OrientationGraph`; problems with distinguishing it when
  parsing from node-based `Orientation` values; its functionality is
  duplicated by `Rotate`.

* By default, the generated Dot code is now no longer indented; you
  can now use the `prettyPrint` functions in `Data.GraphViz` to
  produce readable Dot code.

* Added a testsuite; this is buildable by building with
  `--flags-test`.  Numerous printing and parsing bugs were picked up
  with this.

Changes in 2999.6.0.0
---------------------

* Remove some `Shape` aliases and change capitalisation of others.

* Properly parse and print IDs of clusters.

* Allow `NodeCluster` values to have node types different from the
  `LNode` they come from.

Changes in 2999.5.1.1
---------------------

* When used as labels, etc., the Dot keywords `node`, `edge`, `graph`,
  `digraph`, `subgraph`, and `strict` need to be quoted.  **Spotted by
  Kathleen Fisher.**

Changes in 2999.5.1.0
---------------------

* Potentially fixed the `graphvizWithHandle` bug; correct approach
  **spotted by Nikolas Mayr**.

* Fixed up `Parsing` of various `Attribute` sub-values, especially
  `Point` and `Spline` (and hence `Pos`, which uses them).

* Pre-process out comments and join together multi-line strings before
  parsing.

* Properly parse `Doubles` like `".2"`.

Changes in 2999.5.0.0
---------------------

A major re-write occured; these are the highlights:

* Re-write parsing and printing of Dot code using the new `ParseDot`
  and `PrintDot` classes.  This should finally fix all quoting issues,
  as well as leaving `Show` as the code representation for hacking
  purposes.  As part of this, the `Data.GraphViz.ParserCombinators`
  module has been moved to `Data.GraphViz.Types.Parsing`.

* Re-write the various `Dot*` datatypes in `Data.GraphViz.Types`.
  Sub-graphs/clusters are now their own entity rather than being part
  of `DotNode` and the Node ID type is now a type parameter rather
  than being just `Int`.  Sub-graphs/clusters can now also be parsed.

* The various conversion functions in `Data.GraphViz` now come in two
  flavours: the unprimed versions take in a `Bool` indicating if the
  graph is directed or not; the primed versions attempt to
  automatically detect this.

* Add cluster support for the graph augmentation functions, **as
  requested by Nikolas Mayr**.

* Allow custom arrow types as supported by GraphViz; **as requested by
  Han Joosten**.

* Fixed a bug in HSV-style `Color` values where `Int` was used instead of
  `Double`; **spotted by Michael deLorimier**.

* Properly resolved the situation initially spotted by Neil Brown:
  Matthew Sackman was following Dot terminology for an edge `a -> b`
  when using _head_ for `b` and _tail_ for `a` (this is presumably
  because the head/tail of the arrow are at those nodes).  `DotEdge`
  now uses _from_ and _to_ avoid ambiguity; the various `Attribute`
  values still follow upstream usage.

Changes in 2999.1.0.2
---------------------

* Fix a bug **spotted by Srihari Ramanathan** where `Color` values
  were double-quoted.

Changes in 2999.1.0.1
---------------------

* The `Color` `Attribute` should take `[Color]`, not just a single
  `Color`.

Changes in 2999.1.0.0
---------------------

* Stop using `Either` for composite `Attributes` and use a custom
  type: this avoids problems with the `Show` instance.

Changes in 2999.0.0.0
---------------------

* Fixed a bug where the Show instance and read function for `DotEdge`
  had the from/to nodes the wrong way round.  This was not immediately
  noticed since the `Graph` to `DotGraph` functions created them the
  wrong way round, so for those users who only used these this was not
  apparent.  **Spotted by Neil Brown.**

* Greatly improved `Attribute` usage: almost all attributes are now
  covered with allowed values.

* Extend DotGraph to include whether a graph is strict or not and if
  it has an ID.  Also move the directedGraph field.

* Make `Dot` refer to the actual dot command and `DotArrow` refer to
  the `ArrowType` (rather than `DotCmd` and `Dot` as before).

* Make the `Data.GraphViz.ParserCombinators` module available to end
  users again, but not re-exported by `Data.GraphViz`; it has a
  warning message up the top not to be used.  It is there purely for
  documentative purposes.

* Use [extensible-exceptions] so that `base-3.x` is once again
  supported.

  [extensible-exceptions]: http://hackage.haskell.org/package/extensible-exceptions

* Follow the [Package Versioning Policy] rather than using dates for
  versions.

  [Package Versioning Policy]: http://www.haskell.org/haskellwiki/Package_versioning_policy


Changes in 2009.5.1
-------------------

* New maintainer: Ivan Lazar Miljenovic.

* Support `polyparse >= 1.1` (as opposed to `< 1.3`)

* Require `base == 4.*` (i.e. `GHC 6.10.*`) due to new exception handling.

* Include functions from [Graphalyze-0.5] for running GraphViz
  commands, etc.

  [Graphalyze-0.5]: http://hackage.haskell.org/package/Graphalyze-0.5

* Module re-organisation.

* The `Data.GraphViz.ParserCombinators` module is no longer available
  to end users.

* Improved Haddock documentation.

Changes in 2008.9.20
--------------------

* Differentiate between undirected and directed graphs (previously
  only directed graphs were supported).

* Clustering support was added.

Older versions
--------------

For versions of graphviz older than `2008.9.20`, the exact differences
between versions is unknown.

<!--
     Local Variables:
     mode:markdown
     End:
  -->