cairo 1.0.0 release available

The cairo team is very pleased to announce cairo 1.0 available from:

    which can be verified with:
        abc50d6a657cba15b3956c8c3aaea080b71172bb  cairo-1.0.0.tar.gz
        (signed by Carl Worth)

All future 1.x.y releases of cairo will be source and binary
compatible with cairo 1.0.0.

With this release, we'd like to remind everyone of the proper position
for the number 1 in software releases, which is at the beginning.
While this release does mark the culmination of months or years of
work by many people, it's more significant in marking what is yet to
come. Cairo has just begun and we're excited to see where it will go
from here.

In this release, we have marked three backends as "supported"

        xlib, image, win32

and all other backends as "experimental" which as such, do not have
part in the API guarantees of this release. The experimental backends
will not be compiled by default, but they are still available for
people to experiment with by means of --enable options to
configure. We recognize that many people would find the experimental
backends useful, (even with existing bugs), and it is with caution
that we mark them this way. We are not trying to remove utility, but
we do think it is important to carefully advertise which backends are
not yet up to the standards of stability, completeness, and rendering
fidelity expected from a cairo backend.

These "experimental" backends are certainly not going away, and we
hope that each one will become a "supported" backend in a future cairo
release quite soon.


PS. Call it "cairo" or the "cairo graphics library", but try not to
ever call it "Cairo" unless writing it at the beginning of a sentence.

What is cairo
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers. Experimental backends include OpenGL
(through glitz), Quartz, XCB, PostScript and PDF file output.

Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).

The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,

Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface.  At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.

Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version

Where to get more information about cairo
The primary source of information about cairo is:

The latest releases of cairo can be found at:

Snapshots of in-development versions of cairo:

The programming manual for using cairo:

Mailing lists for contacting cairo users and developers:

Answers to some frequently asked questions about cairo:

What's new in 1.0.0 compared to 0.9.2
Experimental backends
 * The Glitz, PS, PDF, Quartz, and XCB backends have been declared
   experimental, and are not part of the API guarantees that accompany
   this release. They are not built by default, even when the required
   libraries are available, and must be enabled explicitly with
   --enable options to configure.

   It is very painful for us to be pushing out a major release without
   these backends enabled. There has been a tremendous amount of work
   put into each one and all are quite functional to some
   extent. However, each also has some limitations. And none of these
   backends have been tested to the level of completeness and
   correctness that we expect from cairo backends.

   We do encourage people to experiment with these backends and report
   success, failure, or means of improving them.

Operator behavior
 * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
   behaved in an inconsistent and buggy fashion and could affect areas
   outside the clip mask. In 0.9.0, these six "unbounded" operators
   were fixed to consistently clear areas outside the shape but within
   the clip mask.  This is useful behavior for an operator such as IN,
   but not what was expected for SOURCE and CLEAR. So, in this release
   the behavior of SOURCE and CLEAR has been changed again. They now
   affect areas only within both the source and shape. We can write
   the new operators as:

     SOURCE: dest' = (mask IN clip) ? source : dest
     CLEAR:  dest' = (mask IN clip) ? 0 : dest

Behavior and API changes
 * Setting the filter on a gradient pattern would change the
   interpolation between color stops away from the normal linear
   interpolation. This dubious behavior has been removed.

   implementation details that leaked into cairo.h -- have been moved
   into an internal header.

 * The cairo_show_text function now advances the current point
   according to the total advance values of the string.

API additions
 * cairo_set_dash can now detect error and can set

 * When compiled against recent versions of fontconfig and FreeType,
   artificial bold fonts can now be turned on from fonts.conf using
   the FC_EMBOLDEN fontconfig key.

 * The compositing code from the 'xserver' code tree has now been
   completely merged into libpixman. This includes MMX optimization of
   common operations.

 * The image transformation code in libpixman has been improved and
   now performs significantly faster.

Bug fixes
 * Several crashes related to corruption in the font caches have been

 * All test cases now match pixel-for-pixel on x86 and PPC; this
   required fixing bugs in the compositing, stroking, and pattern
   rendering code.

 * Negative dash offsets have been fixed to work correctly.

 * The stroking of paths with multiple subpaths has now been fixed to
   apply caps to all subpaths rather than just the last one.

 * Many build fixes for better portability on various systems.

 * Lots of other bug fixes, but we're too tired to describe them in
   more detail here.

We would like to express our appreciation to everyone who has
contributed to making cairo everything it is today. Hundreds of people
have debated API on mailing lists, tested early snapshots, submitted
bug reports, and contributed code.

The following list has been extracted from cairo's ChangeLog, and we
recognize that is only a very small subset of those who have helped.

Josh Aas - Memory leak fix for quartz backend
Shawn T. Amundson - Build fix
Olivier Andrieu - PNG backend
Peter Dennis Bartok - Bug fix for clipping
Dave Beckett - Build fixes, Debian packaging
Billy Biggs - Pixman code merge. Optimization. Fixes for subtle rendering bugs.
Damien Carbery - Build fixes
Andrew Chant - Adding const where needed
Steve Chaplin - Bug fixes for PNG reading
Tomasz Cholewo - Bug fixes
John Ehresman - Build fixes for win32
John Ellson - First font/glyph extents functions
Behdad Esfahbod - Release script improvements, bug fixes.
Bertram Felgenhauer - Fixes for subtle arithmetic errors
J. Ali Harlow - win32 backend updates
Richard Henderson - "slim" macros for better shared libraries
James Henstridge - Build fixes related to freetype
Graydon Hoare - Support for non-render X server, first real text support
Thomas Hunger - Initial version of cairo_in_stroke/fill
Kristian Høgsberg - PDF backend, PS backend with meta-surfaces
Amaury Jacquot - Documentation review, application testing
Adrian Johnson - PDF backend improvement
Michael Johnson - Bug fix for pre-C99 compilers
Øyvind Kolås - Bug fixes. Better default values.
Martin Kretzschmar - Arithmetic fix for 64-bit architectures
Alexander Larsson - Profiling and performance fixes.
Tor Lillqvist - win32 build fixes, build scripts
Luke-Jr - Build fix for cross-compiling
Jordi Mas - Bug fix for cairo_show_text
Jeff Muizelaar - Patient, painful, pixman code merge. Test fixes
Peter Nilsson - Glitz backend
Geoff Norton - Build fixes
Robert O'Callahan - Const-correctness fixes.
Mike Owens - Bug fixes
Keith Packard - Original concept, tessellation, dashing, font metrics rewrite
Stuart Parmenter - Original GDI+ backend, win32 fixes
Christof Petig - Build fixes related to freetype
David Reveman - New pattern API, glitz backend
Calum Robinson - Quartz backend
Tim Rowley - Quartz/ATSUI fixes, X server workarounds, win32 glyph path support
Jamey Sharp - Surface/font backend virtualization, XCB backend
Jason Dorje Short - Build fixes and bug fixes
Travis Spencer - XCB backend fix
Bill Spitzak - Build fix to find Xrender.h without xrender.pc
Owen Taylor - Font rewrite, documentation, win32 backend
Malcolm Tredinnick - Documentation fixes
Sasha Vasko - Build fix to compile without xlib backend
Vladimir Vukicevic - Bug fix for clipping
Carl Worth - Original library, support for paths, images
Richard D. Worth - Build fixes for cygwin

(please let us know if you're aware of someone we've missed)