hint-based build service for the diagrams graphics EDSL.


Version on this page:
LTS Haskell 22.26:
Stackage Nightly 2024-06-22:
Latest on Hackage:

See all snapshots diagrams-builder appears in

BSD-3-Clause licensed by Brent Yorgey
Maintained by [email protected]
This version can be pinned in stack with:diagrams-builder-,7891

Module documentation for

Build Status

diagrams-builder provides backend-agnostic tools for dynamically turning code into rendered diagrams, using the hint wrapper to the GHC API. It supports conditional recompilation using hashing of diagrams source code, to avoid recompiling code that has not changed. It is useful for creating tools which compile diagrams code embedded in other documents. For example, it is used by the BlogLiterately-diagrams package (a plugin for BlogLiterately) to compile diagrams embedded in Markdown-formatted blog posts, and by the diagrams-latex.sty package for embedding diagrams in LaTeX documents (see below).

Executables specific to the cairo, svg, postscript, rasterific, and PGF backends are included. Each takes an input file and an expression to render and outputs an image file using the appropriate backend. You must explicitly enable whichever executables you want using flags like -fcairo, -fsvg, and so on.

A LaTeX package, diagrams-latex.sty, is also provided in the latex/ directory of the source distribution, which renders diagrams code found within diagram environments. It can make use of any of the diagrams-builder-cairo, diagrams-builder-postscript, or diagrams-builder-pgf executables, so if you want to use diagrams-latex.sty you should install diagrams-builder with the appropriate option. Note that diagrams-latex.sty is licensed under the GPL. For more information on using diagrams-latex.sty, see this tutorial.


v0.8.0.3 (2018-06-09)

  • Bump upper bounds: allow exceptions-0.10, lens-4.16, hint-0.8, base-4.11, base-orphans-0.7
  • Test with GHC 8.4
  • Drop GHC 7.8 support

v0.8.0.2 (2018-01-21)

  • Allow haskell-src-exts-1.20 and haskell-src-exts-simple-1.20
  • Bug fix for GHC 8.2: temp module generation now uses a valid name (#32)

v0.8.0.1 (2016-11-28)

  • Allow haskell-src-exts-1.19 and haskell-src-exts-simple-1.19

  • Allow hint-0.7 in Hackage revision 2.

  • Allow base-4.10 in Hackage revision 3.

v0.8 (2016-10-26)

  • diagrams-builder-pgf: add catch-all case for file extension
  • Better defaults (#29):
    • default extension will be chosen based on backend
    • input option automatically selected when using pgf backend
    • diagrams is now default output directory
  • Modules can now be imported qualified
  • allow lens-4.15
  • Require haskell-src-exts-1.18 and haskell-src-exts-simple
  • Require diagrams-*-1.4

v0.7.2.4 (2016-09-05)

Update upper bounds, and build with GHC 8. Allow:

  • transformers-0.5
  • lens-4.14
  • base-4.9
  • hint-0.6

Now requires diagrams-svg-1.4 and svg-builder.

v0.7.2.3 (2016-03-19)

  • allow hint-0.5

v0.7.2.2 (2016-01-16)

  • allow base-orphans-0.5

v0.7.2.1 (2015-12-06)

  • allow haskell-src-exts-1.17.*

v0.7.2.0 (2015-09-22)

  • allow lens-4.13
  • Add TypeFamilies and FlexibleContexts extensions automatically to diagrams code, so users do not have to add them manually when building with GHC 7.10

Full Changelog

v0.7.1.1 (2015-07-19)

Full Changelog

0.7.1 (16 June 2015)

  • allow base-orphans-0.4
  • add diagrams-pgf executable
  • add diagrams-latex option to use \input instead of \includegraphics, for use with diagrams-pgf (1 June 2015)

  • diagrams-builder-svg now builds again (does not build in any other 0.7.0.x releases) (1 June 2015)

  • get Typeable Any instance from base-orphans package

v0.7.0.2 (2015-05-26)

  • allow lens-4.11 (20 April 2015)

  • Fix compilation errors in diagrams-builder-rasterific executable

0.7 (19 April 2015)

  • Update to diagrams-lib-1.3.
  • Add diagrams-rasterific support.
  • Add support for DIAGRAMS_SANDBOX environment variable.
  • Allow exceptions-0.8
  • Fix diagrams-latex directory creation on Windows (2 April 2015)

  • allow lens-4.9 (13 Jan 2015)

  • Allow lens-4.7 (20 November 2014)

  • Allow lens-4.6
  • Allow and require haskell-src-exts-1.16 (22 August 2014)

  • Allow lens-4.4

0.6 (5 June 2014)

  • Require diagrams-lib-1.2
  • Change to the type of buildDiagram in actually required a major version bump. (2 June 2014) (BROKEN)

  • Allow transformers-0.4
  • Allow lens-4.2
  • Allow mtl-2.2 (21 May 2014)

  • Module parse error messages now include the error location (thanks to Yiding Jia) (15 April 2014)

  • Fix bug introduced by release (accidentally included commit meant for compatibility with unreleased versions of other diagrams packages) (15 April 2014) (BROKEN)

  • Allow haskell-src-exts-1.15 (7 April 2014)

  • Allow exceptions-0.5 (20 March 2014)

  • Allow lens-4.1 in executables also (19 March 2014)

  • Allow lens-4.1 (15 March 2014)

- Update for `hint-0.4`
- Allow `diagrams-lib-1.1` and `diagrams-cairo-1.1`
- Allow `lens-4.0` (8 March 2014)

- Allow `base-4.7` (6 March 2014)

- Allow `diagrams-lib-1.1`
- Allow `lens-4.0` (27 January 2014)

- Allow hashable-1.1

0.5 (27 January 2014)

- Consolidate buildDiagram arguments into a single record of
- Add a `postProcess` argument, a function to be applied to the
  interpreted diagram.

0.4.2 (26 November 2013)

- `buildDiagram` now accepts expressions of type `Diagram` or `IO
  Diagram`: it just tries both.
- Add dependency on `mtl`.

0.4.1 (24 November 2013)

- bug fix: avoid ambiguity errors when parsing unknown operators
- update to work with diagrams-1.0 (2 October 2013)

- allow cryptohash-0.11 (11 September 2013)

- require diagrams-svg >= (11 September 2013)

- fix compile error in diagrams-builder-svg executable
- require diagrams-svg >= 0.8 (10 September 2013) [BROKEN]

- allow diagrams-svg-0.8 (31 August 2013)

- allow cryptohash-0.10 (22 August 2013)

- allow haskell-src-exts 1.14

0.4: 9 August 2013

  • Add hsenv compatibility.
  • Big improvements in the way rebuilding is handled:
    • Strip comments before deciding whether to rebuild, so changing only comments does not trigger a rebuild
    • Take local imports into account: if a diagram has an import which corresponds to a local file, rebuild if that file has changed
    • Rebuild when options (e.g. size) change (3 April 2013)

  • depend on cryptohash >= 0.8 && < 0.10 (use new unified API)
  • remove base16-bytestring dependency

0.3: 3 Feburary 2013

  • new diagrams-builder-postscript tool
  • miscellaneous improvements to diagrams-latex.sty 11 December 2012

  • new diagrams-builder-svg tool
  • deal properly with an empty list of sources (#2)
  • put cached diagrams in .diagrams_cache instead of diagrams by default
  • bug fix: cached files should use same extension as requested output, not “png”
  • bug fix: create output directory for cached images if it doesn’t exist
  • new module Diagrams.Builder.CmdLine; factor out common utilities for command-line tools
  • depend on 0.6 versions of diagrams libs 26 August 2012

Initial release