[cairo-announce] cairo release 0.9.2 now available

Carl Worth cworth at cworth.org
Sat Aug 13 05:41:52 PDT 2005

A new cairo release 0.9.2 is now available from:


    which can be verified with:

        6b9139a9dafae6593dd5bcdf89308ff42c32e689  cairo-0.9.2.tar.gz

        (signed by Carl Worth)

What is cairo?
Cairo is a vector graphics library designed to provide high-quality
display and print output. Currently available backends include the X
Window System, OpenGL (via glitz), Quartz, win32, in-memory image
buffers, PNG images, PostScript, and PDF files.

As of version 2.7/2.8, GTK+ now performs much of its drawing through
cairo and allows application code to perform rendering through cairo.

For more information on cairo, see http://cairographics.org

Why this release?
This is a development release leading up to cairo 1.0.

The cairo 1.0 release will be source and binary compatible with the
cairo 0.9.x series. All API changes in cairo 0.9.x are finalized at
this point, and cairo 0.9.x should be considered API frozen. Barring
discovery of serious issues with the new APIs, no API changes are
anticipated between this release and the 1.0 release.

Have fun! And please report any problems here:


Detailed notes on this release are included below.


Release 0.9.2 (2005-08-13 Carl Worth <cworth at cworth.org>)
Release numbering
 * You will notice that this release jumped from 0.9.0 to 0.9.2. We've
   decided to use an odd micro version number (eg. 0.9.1) to indicate
   in-progress development between releases. As soon as 0.9.2 is
   tagged, the version will be incremented in CVS to 0.9.3 where it
   will stay until just before 0.9.4 is built, uploaded, and tagged.

   So, even-micro == a released version, odd-micro == something in-between.

Libpixman dependency dropped
 * As of this release, the dependency on an internal libpixman has
   been dropped. Instead, the code from libpixman needed for cairo has
   been incorporated into the cairo source tree. The motivation for
   this change is that while cairo's API is stable and ready to be
   maintained after the 1.0 release, libpixman's API is not, so we do
   not want to expose it at this time.

   Also, the incorporation of libpixman into cairo also renames all
   previously-public libpixman symbols in order to avoid any conflict
   with a future release of libpixman

API additions
 * Macros and functions have been added so that the version of cairo
   can be queried at either compile-time or at run-time. The version
   is made available as both a human-readable string and as a single

	CAIRO_VERSION_STRING		   eg. "0.9.2"
	CAIRO_VERSION			   eg. 000902

	const char*
	cairo_version_string (void);	/* eg. "0.9.2" */

	cairo_version (void);		/* eg. 000902 */

   A macro is provided to convert a three-part component version into
   the encoded single-integer form:


   For example, the CAIRO_VERSION value of 000902 is obtained as
   CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version
   comparisons easy, either at compile-time:


   Or at run-time:

	if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ }

Thread safety
 * This release adds pthread-based locking (when available) to make
   the caches used by cairo safe for threaded programs. Some may
   remember a failed experiment with this locking between the 0.5.1
   and 0.5.2 snapshots, (where even single-threaded programs that
   linked with -lpthread would deadlock). We believe that that problem
   has been fixed, so we are looking forward to testing and reports
   from users with threaded applications.

Bug fixes
 * The XCB and Quartz backends failed to compiled in the 0.9.0 release
   due to minor syntax errors. These have now been fixed.

 * Various crashes in glitz and pixman due to size 0 glyphs have been

Corrections to previous 0.9.0 announcement

 * The previous announcement for 0.9.0 was written rather hastily and
   had some problems. It neglected to mention the new
   cairo_get_antialias function and it it incorrectly listed a new
   function as cairo_flush instead of the correct cairo_surface_flush.

 * In addition the following release notes were mistakenly omitted:

Soname change
 * In all prior snapshots, the libtool library versioning was set to
   1:0:0. As this release is intended to mark the beginning of
   backwards-compatible releases, the versioning has been incremented
   to 2:0:0. You will notice that the numeric extension on the
   installed library filename will change similarly.

   This change will also require all cairo-using applications to be
   recompiled. We recognize that this may cause some frustration since
   this release is backwards-compatible with 0.6.0 and in that sense
   "shouldn't" require re-compilation. However, since all historical
   snapshots have used the same 1:0:0 version in spite of incompatible
   API changes between them, it was essential that the upcoming 1.0
   release series have distinct library versioning.

   All future releases will use the library versioning to properly
   indicate compatibility between releases. So, any application
   re-compiled now to work with the 0.9.0 will not need to be
   recompiled when a compatible 1.0 release of cairo is made in the

Semantic changes
 * The behavior of cairo_set_source with a pattern with a non-identity
   matrix was previously not well-defined. The new behavior is as

	The pattern's transformation matrix will be locked to the
	user space in effect at the time of cairo_set_source(). This means
	that further modifications of the CTM will not affect the source
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo-announce/attachments/20050813/ce0a4a7e/attachment.pgp

More information about the cairo-announce mailing list