Announcing diagrams-0.4

I am pleased to announce the release of version 0.4 of diagrams, a full-featured framework and embedded domain-specific language for declarative drawing.

The last announcement was of the 0.1 release; there have been quite a few changes and improvements since then, including:

  • A new website including a gallery of examples
  • A new comprehensive user manual with lots of illustrative examples
  • New primitive shapes: rounded rectangles, wedges, and a new flexible API for generating polygons
  • Cubic splines
  • Basic text support
  • Support for external image primitives
  • Lots more convenient combinators, bug fixes, and improvements

Cool, how can I try it out?

For the truly impatient:

cabal install gtk2hs-buildtools
cabal install diagrams

For the slightly less impatient, read the quick tutorial, which has detailed information about how to install the necessary packages and will introduce you to the fundamentals of the framework.

For those who are even less impatient but want to really dig in and use the power features, read the user manual.

Cool, how can I contribute?

There are lots of ways you can contribute! First, you may want to subscribe to the project mailing list, and/or come hang out in the #diagrams IRC channel on

  • There are lots of easy bug fixes, improvements, and feature requests just waiting for people wanting to get involved: see the bug tracker for a list of open tickets.

    The source repositories are mirrored using both darcs (on and git (on, and patches are accepted in either place, thanks to Owen Stephen’s great work on darcs-bridge.

  • Create a higher-level module built on top of the diagrams framework (e.g. tree or graph layout, generating Turing machine configuration diagrams, Penrose tilings … your imagination is the only limit!) and submit it for inclusion in a special diagrams-contrib package which will be created for such higher-level user-contributed modules.
  • Use diagrams to create some cool graphics and submit them for inclusion in the gallery.
  • Start your own project built on top of diagrams and let us know how it goes!
  • Last but certainly not least, just try it out for your pet graphics generation needs and contribute your bug reports and feature requests.

Happy diagramming!

Brought to you by the diagrams team:

  • Brent Yorgey
  • Ryan Yates

with contributions from:

  • Sam Griffin
  • Claude Heiland-Allen
  • John Lato
  • Vilhelm Sjöberg
  • Luite Stegeman
  • Kanchalai Suveepattananont
  • Scott Walck

About Brent

Associate Professor of Computer Science at Hendrix College. Functional programmer, mathematician, teacher, pianist, follower of Jesus.
This entry was posted in haskell, projects and tagged , , , . Bookmark the permalink.

2 Responses to Announcing diagrams-0.4

  1. Tim Docker says:

    This new library version looks well designed. I’d like to use it where I currently use cairo directly. I can’t however, until it can layout text with knowledge of the font metrics. eg it doesn’t currently look possible to:

    – layout text items beside/underneath one another
    – drawing a box around a text item

    or at least it’s not possible without hardcoding text sizes into the code.

    Are there plans to address this?

    • Brent says:

      Yes, absolutely! The current text support is essentially just a placeholder — better than nothing but not by much. Thanks for mentioning that you want this, it bumps it up higher in the priority queue. =)

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.