1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
|
% Changelog
% Ivan Lazar Miljenovic
Release History and Changelog
=============================
The following is information about what major changes have gone into
each release.
Changes in 2999.20.0.2
----------------------
* Fix Haddock issue (thanks to **Moritz Kiefer**)
* Bump HSpec upper bound (thanks to **Moritz Kiefer**)
* Make Hackage happier with Cabal-Version field
Changes in 2999.20.0.1
----------------------
* Allow building with temporary-1.3.*.
Changes in 2999.20.0.0
----------------------
* Can now create subgraphs using the Monadic representation.
* Allow unescaped `-` and `'` in HTML labels (thanks to **Andrey
Kartashov**)
* Support for strict `Text` instances for printing/parsing.
* Creating a Graph representation with `mkGraph` was not adding edges
correctly (reported by **Joshua Chia**).
* Test suite now uses HSpec, making it a lot easier to add tests for
specific issues.
* Builds with GHC 8.4.* (thanks to **Tony Day**).
* Monoid and Semigroup instances for Monadic representation (thanks to
**Chris Martin**).
* Be more lenient in parsing some attributes (e.g. allow `top` instead
of just `t` for `VerticalPlacement`).
* Add new HTML attributes: `Columns`, `GradientAngle`, `Rows`, `Sides`
and `Style`.
* Improve/update the TestParsing executable to work on being able to
parse all the sample `Dot` graphs shipped with Graphviz.
* Bump dependencies.
Changes in 2999.19.0.0
----------------------
* Roll back change in 2999.18.1.0 for Monadic graphs, as they turn out
to not actually work in practice (reported by **Lennart Spitzner**).
* Add a `quickParams` value to help with testing graphs in ghci
(requested by **Ian Jeffries**).
* Fix parsing of edge chains (reported by **Jonas Collberg**).
* Fix how seemingly numeric text literals are quoted (reported by
**Joey Hess**).
Changes in 2999.18.1.2
----------------------
* Allow dlist-0.8, thanks to **Sean Leather**.
* Properly allow QuickCheck-2.9.
Changes in 2999.18.1.1
----------------------
* Bump allowed version of QuickCheck for the test suite.
Changes in 2999.18.1.0
----------------------
* Monadic graphs can now have edges to and from lists of nodes, as
requested by **Harold Carr**.
* Compatible with GHC-8.* pre-releases.
- Please note that there is currently a warning emitted on
compilation by GHC-8.*; this has been reported
[here](https://ghc.haskell.org/trac/ghc/ticket/11822).
Changes in 2999.18.0.2
----------------------
* Match new behaviour of `dot`, etc. in supporting edge specifications
like `a, b -> c, d` (spotted by **Dilawar Singh**).
Changes in 2999.18.0.1
----------------------
* Loosened bound on `fgl-arbitrary`.
Changes in 2999.18.0.0
----------------------
* Now builds on GHC 7.10.*.
* Attribute changes:
- Added the `NoTranslate` attribute.
- Add support for overlines in HTML labels.
Both of these are available as of Graphviz 2.38.0, but were
somehow overlooked in previous releases of this library.
* Uses new `fgl-arbitrary` library for testing rather than custom
instances for FGL graphs.
* Migrated to git; central repository now on
[GitHub](https://github.com/ivan-m/graphviz).
Changes in 2999.17.0.2
----------------------
* Augmentation tests are no longer run by default. This avoids
problems where Graphviz is not installed/configured properly.
* Use `.gv` for temporary files instead of `.dot`.
Changes in 2999.17.0.1
----------------------
* Allow usage of `transformers-0.4.*`, by **Sergei Trofimovich**.
Changes in 2999.17.0.0
----------------------
* Add support for Graphviz 2.32.0, 2.32.1, 2.34.0, 2.36.0 and 2.38.0:
- **WARNING**: at least as of Graphviz-2.32.0, `dot -Tcanon` no
longer produces Dot code that is in the format expected by the
Canonical Dot representation in this library. As such, unless
you're very sure of your sources you should _always_ use the
Generalised representation for parsing (see also the new
`FromGeneralisedDot` class mentioned below).
- New attributes:
+ `XDotVersion` (as of 2.34.0)
+ `InputScale` (as of 2.36.0)
+ `OverlapShrink` (as of 2.36.0)
- Changed attributes:
+ `Aspect` no longer available (as of 2.36.0)
+ New `ModeType` values for use with `sfdp`: `SpringMode` and
`MaxEnt`.
+ `Weight` now takes a value of type `Number`, that explicitly
distinguishes between `Doubles` and `Ints`.
+ `FixedSize` and `Normalize` now have their own types.
+ New `Shape`s: `Star` and `Underline` (as well as `Square`
which seems to have been omitted from previous versions).
- Other relevant changes:
+ `XDot` now takes an optional version. Note that this
doesn't have any effect on how _graphviz_ works.
+ The default extension for Dot-graphs is now `.gv` rather
than `.dot` to reflect Graphviz's changed conventions.
* Other changes to the API:
- Add the `FromGeneralisedDot` class, which provides a
semi-inverse to `fromCanonical` in `DotRepr`.
- `GraphID` now uses `Number` rather than separate `Int` and
`Double` constructors; this only matters if you manually
constructed or de-constructed `GraphID` values (`ToGraphID`
still works).
- Add the ability to parse a Dot graph "liberally": that is, if an
`Attribute` doesn't match the specification, then let it fall
back to an `UnknownAttribute`. This is still experimental, and
requires more manual usage than the in-built commands (e.g. it
isn't supported in the default round-tripping).
- Now using the definition of `bracket` from `polyparse >= 1.9`.
- Monadic representation now has `Functor` and `Applicative`
instances to satisfy the up-coming changes in GHC 7.10.
* Compilation time has been reduced in two ways:
- The `Data.GraphViz.Attributes.Complete` module has been split up
(but still exports the same API, so no need to import more
modules). Whilst I haven't measured it, this should also reduce
memory requirements for compilation.
- The testsuite now uses the library explicitly, and thus no
longer needs to re-compile half the library.
* Bug-fixes:
- Double values are now longer parseable without double quotes if
they have an exponential term (to better match the definition).
- It is no longer assumed when round-tripping that `dot -Tdot`
generates canonicalised Dot graphs.
* The `TestParsing` script is now directly buildable by Cabal using
the `test-parsing` flag (the resulting executable is called
`graphviz-testparsing`). This is not made an actual test-suite as
not all files found will be actual Dot graphs, and it's known that
it fails on some. Instead it's meant to be used as an indication of
how well this library parses "real-world" Dot code.
Changes in 2999.16.0.0
----------------------
* Add support for Graphviz-2.30.0:
- New attributes:
+ `Area`
+ `Head_LP`
+ `LayerListSep`
+ `LayerSelect`
+ `Tail_LP`
+ `XLP`
- `BgColor`, `Color` and `FillColor` now take a list of colors
with optional weightings.
- Layer handling now supports layer sub-ranges.
- Added the voronoi-based option to `Overlap`.
- Added the `Striped` and `Wedged` styles.
* Updates to attributes and their values:
- The following attributes have had their values changed to better
reflect what they represent:
+ `FontPath` takes a `Path` value.
+ `Layout` takes a `GraphvizCommand` (and thus
`GraphvizCommand` has been moved to
`Data.GraphViz.Attributes.Complete`).
- Added `MDS` to `Model` (which had somehow been overlooked).
- Various attributes now have defaults added/updated/removed if
wrong.
- Removed the following deprecated attributes:
+ `ShapeFile`
+ `Z`
* Now any value that has a defined default can be parsed when the Dot
code just has `attribute=""` (which `dot -Tcanon` is fond of doing
to "reset" attributes).
* `GraphvizCommand` now defines `Sfdp` (which had somehow been
overlooked up till now).
* The `canonicalise` and related functions have been re-written;
whilst there might be some cases where their behaviour does not
fully match how `dot -Tcanon` and `tred` behave (due to the
interaction of various attributes), the new implementation is much
more sane.
* Use temporary files rather than pipes when running dot, etc.
Makes it more portable, and also avoids issues where dot, etc. use
100% CPU when a graph is passed in via stdin.
Original patch by **Henning Thielemann**.
* `renderCompactDot` now outputs to just one line (which means it's
shorter, but more difficult to read for a human).
* The QuickCheck instances are a bit smarter now to avoid having such
ugly huge outputs when a test fails.
* More documentation to help you understand what certain data types
are for, etc.
Changes in 2999.15.0.1
----------------------
* Fixed bug where `canonicalise` and related functions did not
properly deal with attributes of a single node or edge within a
sub-graph.
Changes in 2999.15.0.0
----------------------
* The repository is now hosted on
[hub.darcs.net](http://hub.darcs.net/ivanm/graphviz), and using the
bug-tracker there.
* Updates to various `Attribute` definitions:
- The list of available shapes has been expanded to take into
account the new synthetic biology shapes.
- The `Size` and `FontNames` attributes now have specified data types.
- The optional start and end points for `Spline`s were previously
the wrong way round; this has now been fixed.
- Explicitly only print 2-dimensional `Point` values for `Rect`
and `DPoint` (previously only 2-dimensional values where parsed,
but it was possible to print a 3-dimensional value).
- HTML-like labels previously disallowed empty textual label
components when parsing; spotted by **Daniel Hummel**.
* `GraphvizParams` now lets you specify whether a "cluster" is
actually a cluster or a sub-graph. Requested by **Gabor Greif**.
* Fixed an error where printing edges whose attributes contained a
`ColorScheme` attribute, that attribute would stay in the state and
the old color scheme would override the _parent's_ state.
* Previously, some malformed attributes were accepted when being
parsed as they silently became parsed as an `UnknownAttribute`.
Now, attributes where the attribute name and the equal sign are
successfully parsed **but** the value of the attribute is _not_
successfully parse will throw an unrecoverable error.
**Note**: this does mean that some Dot graphs that are accepted by
Graphviz (as they separate tokenizing from parsing; as such
something like `"0.1"` is successfully accepted as an integer,
specifically `0`) are no longer accepted when parsing them in.
* Miscellaneous parsing improvements:
- Whilst not specified anywhere, Graphviz seems to treat empty
quotes as values for attributes expecting a number as their
default; as such, this is now taken into account when parsing.
- `DPoint` values can now parse an optional `+` prefix.
- Whitespaces after commas in HSV colors are now accepted.
* Error messages from parsing are improved to help you track down
where the parsing error occurred (in that it's easier to find which
attribute failed to parse, etc.).
* Some parsing combinators are no longer publicly accessible, but
shouldn't be needed by end users anyway (as they were there for
parsing the Attribute data type).
Changes in 2999.14.1.0
----------------------
* Add `isGraphvizInstalled` and `quitWithoutGraphviz` for programs to
test whether Graphviz has been installed (as previous attempts at
doing so via actual calls to dot, neato, etc. weren't working and
would be too verbose anyway).
Changes in 2999.14.0.0
----------------------
* Added an instance of `Labellable` for strict `Text` values, as
requested by **Erik Rantapaa**.
Changes in 2999.13.0.3
----------------------
* Allow usage of transformers-0.3.*. Spotted by **Peter Simons**.
Changes in 2999.13.0.2
----------------------
* The `String` instance for `ToGraphID` requires the
`TypeSynonymInstances` pragma (at least on GHC < 7.4). Spotted by
**Gregory Guthrie**.
Changes in 2999.13.0.1
----------------------
* Fixed Haddock typos.
Changes in 2999.13.0.0
----------------------
* Added support for the `osage` and `patchwork` visualisation tools,
available as of Graphviz-2.28.0.
* Updated attributes as of Graphviz-2.28.0:
- `SVG` colors are now supported, and the support for different
colors has been revamped.
- `overlap=false` is now equivalent to `overlap=prism` and the
`RemoveOverlaps` option has been removed.
- `LabelScheme` and `Rotation` are new attributes for use with
`sfdp`.
- `Scale` is a new attribute for use with `twopi`.
- Add new italics, bold, underline, superscript and subscript
options for HTML-like labels.
- `LHeight` and `LWidth` for getting the height and width of the
root graph and clusters.
* Updated attributes from the current development branch of Graphviz
(i.e. 2.29.*). Please note that these will probably not work yet,
but are implemented now for future-proofing.
- A new style for edges: `Tapered`.
- `XLabel` allows you to specify labels external to a node or
edge. `ForceLabels` allow you to specify that these should be
drawn even when they will cause overlaps.
- `ImagePath` allows you to specify where to search for images.
- HTML-like labels now support `ID` values as well as horizontal
and vertical rules.
- `BgColor` and `FillColor` now take a list of colors: this allows
gradient fills for graphs, clusters and nodes. The `Radial`
style and `GradientAngle` are also used for this purpose.
- `FillColor` is now used by edges to set the color of any arrows.
- [WebP](http://en.wikipedia.org/wiki/WebP) output support added.
* Other attribute changes:
- Use a specified data type for the `Ordering` attribute rather
than an arbitrary `Text` value, and provide a documented wrapper
in `Data.GraphViz.Attributes`.
- `Bb` has been renamed `BoundingBox`.
- `ID` now only takes `EscString` (a type alias for `Text`) values
rather than arbitrary `Label`s.
- The `Data.GraphViz.Attributes.HTML` module has had all values
re-named and is now meant to be imported qualified. It is also
no longer re-exported from `Data.GraphViz.Attributes.Complete`.
* The `ToGraphID` class provides a common wrapper to help create
cluster identifiers, etc.
* Cabal's `Test-Suite` functionality is now used. As part of this,
the `Data.GraphViz.Testing` module and sub-modules are no longer
exported by the library.
* The new `Benchmark` support in Cabal-1.14 is now used for the
benchmark script.
* Dropped support for base-3.
* The `Data.GraphViz.State` module is no longer exposed, as there's no
need for users to use it.
* Bugfixes:
- Some corner cases in canonicalisation prevented it from being
idempotent.
- The `TestParsing` script will no longer crash and refuse to
continue if an IO-based error (e.g. unable to successfully call
`dot`) occurs.
- A typo was spotted by **Gabor Greif**.
Changes in 2999.12.0.4
----------------------
* Parsing error messages have been cleared up, especially when parsing
Dot graphs. This came about from trying to help **Uri J. Braun**
with an error in his code (which took a while to diagnose as a
problem with the node type).
* Made more clear to people looking in `Data.GraphViz` who want to
create Dot graphs by hand to look in `Data.GraphViz.Types` (came
about when **Rustom Mody** stated he got confused trying to work out
how to do this).
* Fixed up augmentation; bug and fix spotted by **Max Rabkin**.
* Fix up the TestParsing script to actually use the new type setup.
It can also now take a single directory as an argument, and will try
to parse all (non-recursive) files in that directory.
Changes in 2999.12.0.3
----------------------
* Fixes various mistakes in the Haddock documentation that slipped
through (either in the `String -> Text` conversion or adding new
modules and not checking their documentation thoroughly enough).
Changes in 2999.12.0.2
----------------------
* Forgot to explicitly list the module for Arbitrary instance for the
graph representation.
Changes in 2999.12.0.1
----------------------
* Fix a bug that prevented graphviz from being built with GHC 7.2.
Changes in 2999.12.0.0
----------------------
Many large-level changes were done in this release; in rough
categories these are:
### Conversions from other types
* Can now more easily create Dot graphs from other graph-like data
structures with the new `graphElemsToDot` function, which takes a
list of nodes and edges.
* It is now no longer possible to use `graphToDot`, etc. to create Dot
graphs with anonymous clusters; all clusters must now have explicit
names (note that uniqueness is not enforced, and it is still
possible to directly create Dot graphs with anonymous clusters).
### Dot graph representations
* The canonical graph representation has been moved to its own module:
`Data.GraphViz.Types.Canonical`.
* The generalised representation has had all its "G" and "g" prefixes
removed.
* Two new representations:
- `Data.GraphViz.Types.Graph` allows graph-like manipulation of
Dot code.
- `Data.GraphViz.Types.Monadic` provides a monadic interface into
building relatively static graphs, based upon the
[_dotgen_](http://hackage.haskell.org/package/dotgen) library by
Andy Gill.
* The `DotRepr` class has been expanded, and three pseudo-classes have
been provided to reduce type-class contexts in type signatures.
### Using and manipulation Dot graphs
* Pure Haskell implementations of `dot -Tcanon` and `tred` are
available in `Data.GraphViz.Algorithms`.
* A new module is available for more direct low-level I/O with Dot
graphs, including the ability to run custom commands as opposed to
being limited to the standard dot, neato, etc.
### Attributes
* `Data.GraphViz.Attributes` now contains a slimmed-down recommended
list of attributes; the complete list can still be found in
`Data.GraphViz.Attributes.Complete`.
* The `charset` attribute is no longer available.
* Functions for specifying custom attributes (for pre-processors,
etc.) are available.
### Implementation
* Now uses [`Text`](http://hackage.haskell.org/package/text) values
rather than `String`s. Whilst performing this migration, the
improvements in speed for both printing and parsing improved
dramatically.
- As part of this, human-readable Dot code is now produced by
default. As such, the `prettyPrint` and `prettyPrint'`
functions have been removed.
* Now uses state-based printing and parsing, so that things like graph
directedness, layer separators and color schemes can be taken into
account.
* Parsing large data-types (e.g. `Attributes`) now uses less
back-tracking.
* Now has a benchmarking script for testing printing and parsing
speed.
* Uses a custom exception type rather than a mish-mash of error,
`Maybe`, `Either`, exception types from used libraries, etc.
* Usage of UTF-8 is now enforced when doing I/O. If another encoding
is required, the `Text` value that's printed/parsed has to be
written/read from disk/network/etc. manually.
### Bug-Fixes
* The `Rects` `Attribute` should be able to take a list of `Rect`
values; error spotted by **Henning Gunther**.
* In some cases, global attribute names were being printed without
even an empty list (which doesn't match what dot, etc. expect).
Changes in 2999.11.0.0
----------------------
* Addition of the `Labellable` class (and its method `toLabel`) to
make it easier to construct labels.
* Backslashes (i.e. the `\` character) are now escaped/unescaped
properly (bug spotted by **Han Joosten**). As part of this:
- Dot-specific escapes such as `\N` are now also handled
correctly, so the slash does not need to be escaped.
- Newline (`'\n'`) characters in labels, etc. are escaped to
centred-newlines in Dot code, but not unescaped.
* `Point` values can now have the optional third dimension and end in
a `!` to indicate that that position should be used (as input to
Graphviz).
* `LayerList` uses `LayerID` values, and now has a proper `shrink`
implementation in the test suite.
Changes in 2999.10.0.1
----------------------
* Fixed a mistake in one of the source files that was made just to
make
[haskell-src-exts](http://hackage.haskell.org/package/haskell-src-exts)
happier.
* Fix the `Arbitrary` instance for `Point` in the testsuite (since
there's only one constructor now).
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.
|