The diagrams team is very pleased to announce the 1.0 release of diagrams, a framework and embedded domain-specific language for declarative drawing in Haskell. Check out the gallery for some examples of what it can do. Diagrams can be used for a wide range of purposes, from data visualization to illustration to art, and diagrams code can be seamlessly embedded in blog posts, LaTeX documents, and Haddock documentation, making it easy to incorporate diagrams into your documents with minimal extra work.

What’s new

Brent recently gave a talk at the New York Haskell Users’ Group presenting the new release. You can find videos of the talk on vimeo: part 1 presents a basic introduction to the library, and part 2 talks about mathematical abstraction and DSL design. The slides are also available.

This release includes a number of significant new features and improvements. Highlights include:

Support for drawing arrows between given points or between diagrams, with many options for customization (tutorial, documentation, API).

A new framework for creating custom command-line-driven executables for diagram generation (tutorial, API).

Offsets of trails and paths, i.e. compute the trail or path lying a constant distance from the given one (documentation, API).

A new API, based on Metafont, for constructing cubic splines with control over things like tangents and “tension” (tutorial, API).

Tangent and normal vectors of segments and trails (API).

Alignment can now be done by trace in addition to envelope (API).

The lens package is now used consistently for record fields throughout the library (documentation).

Across-the-board improvements in performance and size of generated files.

See the release notes for full details, and the migration guide for help porting your diagrams 0.7 code to work with diagrams 1.0.

Try it out

For the truly impatient:

cabal install diagrams

Diagrams is supported under GHC 7.4 and 7.6.

To get started, read the quick start tutorial, which will introduce you to the fundamentals of the framework and provide links for further reading.

For those who are less impatient and want to really dig in and use the power features, read the extensive user manual. There is also a growing collection of tutorials on specific topics.

Get involved

Diagrams has a friendly and growing community of users and developers. To connect with the community, subscribe to the project mailing list, and/or come hang out in the #diagrams IRC channel on freenode.org for help and discussion. Development continues stronger than ever, and there are a wide range of projects available for new contributors of all levels of Haskell skill. Make some diagrams. Fix some bugs. Submit your cool examples for inclusion in the gallery or your cool code for inclusion in the diagrams-contrib package.

Happy diagramming!

Brought to you by the diagrams team:

Daniel Bergey

Jeff Rosenbluth

Ryan Yates

Brent Yorgey

with contributions from:

Jan Bracker

Conal Elliott

Daniil Frumin

Sam Griffin

Niklas Haas

Peter Hall

Claude Heiland-Allen

Deepak Jois

John Lato

Felipe Lessa

Chris Mears

Ian Ross

Carlos Scheidegger

Vilhelm Sjöberg

Michael Sloan

Jim Snavely

Luite Stegeman

Kanchalai Suveepattananont

Michael Thompson

Scott Walck