[cairo-announce] cairo snapshot 1.7.6 now available

Carl Worth cworth at cworth.org
Thu Sep 18 15:26:44 PDT 2008

A new cairo snapshot 1.7.6 is now available from:


    which can be verified with:

	07be7452ddd24df4841c13bc73f76c2543f1d849  cairo-1.7.6.tar.gz

	(signed by Carl Worth)

  Additionally, a git clone of the source tree:

	git clone git://git.cairographics.org/git/cairo

    will include a signed 1.7.6 tag which points to a commit named:

    which can be verified with:
	git verify-tag 1.7.6

    and can be checked out with a command such as:
	git checkout -b build 1.7.6

The cairo community is happy to announce the 1.7.6 snapshot of the
cairo graphics library. This is a "release candidate" for the upcoming
1.8.0 release, so we will greatly appreciate any reports of problems
in this release, and no major changes are currently planned before

See below for details, and have fun!


Notable changes in 1.7.6
The largest number of changes since 1.7.4 did not change the
implementation of cairo itself, but instead revamped cairo's build
system. The primary goal of the revamp is to make the build system
less fragile, (particularly for non-Linux platforms). For example, now
people building on win32 will no longer need to maintain a
platform-specific list of files to be built. Also, the .so file will
now be installed with a different naming scheme, (for example, 1.7.6
will install with a .10706 suffix). Much thanks, Behdad!

And, as usual, Chris Wilson has made another large round of robustness
improvements, (eliminating dead code, fixing propagation of error
status values, test suite improvements, etc. etc.). Thanks as always,

API changes since 1.7.4
There have been a few changes of API that was new during the 1.7

* Remove cairo_font_options_set_lcd_filter
   and cairo_font_options_get_lcd_filter

  Motivation: At the Cairo Summit, this API was determined to be too
        specific to the freetype font backend to be in the general
        API. A similar API with a cairo_ft prefix might be introduced
        in the future. Note that cairo will still respect the
        corresponding fontconfig settings for these options.

* Replace cairo_has_show_glyphs
     with cairo_surface_has_show_glyphs

  Motivation: This really is a surface-specific interface, and the
        convenience function on the cairo_t is not obviously
        necessary. An application can easily call:

        cairo_surface_has_show_glyphs (cairo_get_target (cr));

        as needed.

* Add cairo_text_cluster_flags_t
   to cairo_show_text_glyphs

  Motivation: This flag, (and specifically the
        CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the
        cairo_bool_t backward argument in each of the above
        interfaces. This leads to more readable user code, and also
        allows future extensibility.

As always, there are no changes to any API from any major cairo
release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same
compatibility promise it always has.

Bug fixes since 1.7.4
xlib: Faster bookkeeping (Karl Tomlinson)

PS: Fix gradients with non-constant alpha (Chris Wilson)

Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)

Several other minor fixes.

All commits from cairo 1.7.4 to 1.7.6
Adrian Johnson (11):
      Win32: Fix uninitialized variable
      Put user fonts in a separate subset
      Add null output stream
      Add _cairo_type3_glyph_surface_analyze_glyph()
      Enable show_glyphs inside of in user-font glyphs
      PS: execute type3 glyphs in their own dictionary
      Don't overwrite previous status
      Return correct status
      Update user-font-proxy PDF/PS ref images
      Fix scaling of glyphs in type3 subset glyphs
      Change user-font-rescale test to use opaque colors

Alex Rostovtsev (1):
      [png] Specify a no-op flush callback (NULL deref)

Antoine Azar (1):
      Fixed cairo version in win32 makefile

Behdad Esfahbod (175):
      [configure.in] Post release version increment to 1.7.5
      [RELEASING] Document how to release with failing tests
      [doc] Fix typo
      [doc] Another typo fix
      [cairo-ft] Add useless cairo_warn decorator
      Tone down comment
      Add new public API cairo_surface_has_show_text_glyphs()
      [Makefile.am] Add autogen.sh to dist.  Oops!
      [src/Makefile.am] Remove gcc dependency
      [configure.in] Move library version information to Version.mk
      [autogen.sh] Prefer glibtoolize to libtoolize if available
      Cleanup libtool version handling
      [configure.in] Autogenerate libtool version info
      Rename _cairo_matrix_compute_scale_factors to _cairo_matrix_compute_basis_scale_factors
      [autogen.sh] Handle case of no aclocal found
      Move version number to src/cairo-version.h
      Move version functions to cairo-misc.c
      Undefine PACKAGE* macros defined by autotools
      Some nasty tracks to make changing version number not cause a total rebuild
      Update header glob
      [doc] Clean up doc file names
      [configure.in] Add CAIRO_BEGIN/END_DECLS to config.h
      [configure.in] Don't include cairo-features.h in cairo-no-features.h
      [configure] Add user-fonts to list of configured components
      [configure.in] Define CAIRO_CONFIG_COMMANDS for easier file creation
      [configure.in] Make unsupported-backend warning generation automatic
      [configure.in] Cache atomic-ops check results
      [configure.in] Remove unused MMX checks
      [configure.in] Use warning-flag facilities for -fno-strict-aliasing
      [configure.in] Cache WARN_UNUSED_RESULT test results
      [configure.in] Consistently use _save_cflags/libs
      [configure.in] Create backend .pc files using CAIRO_CONFIG_COMMANDS
      [configure.in] Create temp file in current dir
      Revamp the build system.
      [src/check-link.c] Simple test to check we can link to the built cairo.so
      [autogen.sh] Create dummy src/Config.mk so we can bootstrap
      [boilerplate] Cleanup
      [boilerplate] Remove obsolete reference to pixman
      Move _GNU_SOURCE declarations to where it's used
      [boilerplate] Add cairo_boilerplate_version[_string]() functions
      [boilerplate/check-link.c] Check that we can link to the built boilerplate
      [HACKING] Improve win32 note.
      [boilerplate/check-link.c] Oops.  Add it.
      Also test linking when cross-compiling
      [HACKING] Write some more paragraphs
      [src/README] Refer to BIBLIOGRAPHY
      [src/Makefile.am] Minor fix in MAINTAINERCLEANFILES
      [Makefile.am] Move releasing rules to Releasing.mk
      [Makefile.am] Move lcov rules to Analysis.mk
      [configure.in] Use $SED instead of sed
      [configure.in] m4 voodoo
      [configure.in] Oops, this m4 quoting is tricky.  Another try.
      [configure.in] Don't use sed -e.  Fixes build on Macs
      [configure.in] I'm reminded that it's more portable to do -i first...
      [configure.in] Travis says this time it will work...
      [configure.in] No, OS X sed is broken in much more than one way, really
      Move some top-level build files into build/
      [configure.in] Split in various files
      [doc] Fix out-of-tree build
      [doc/public/check-doc-coverage.sh] Also test cairo-undeclared
      [Makefile.am] Use check_PROGRAMS
      [autogen.sh] Only search in build/*.ac
      [boilerplate] Rename xmalloc.[ch] to boilerplate namespace
      Cleanup configure.in macros
      Get rid of CAIRO_LDADD in favor of CAIRO_LIBS
      [configure.in] Move report generation to build/enable.ac
      [configure.in] Remove unused variables
      [build/enable.ac] Reformat for readability
      [configure.in] Break CAIRO_BACKEND_ENABLE into feature-specific ones
      [acinclude.m4] Disallow "_CAIRO" patterns in the output
      [build/enable.ac] Add a feature "type" argument (font, surface, ...)
      [configure.in] Forbid arbitrary CAIRO_ patterns in the output
      Rename src/*.mk to src/Makefile.*
      Rename build/*.mk to build/Makefile.am.*
      Rename build/*.ac to build/configure.ac.*.
      [configure.ac] Add AM_PROG_CC_C_O
      [test] Do not include "xmalloc.h" directly
      [util] Fix an automake warning
      [configure.ac] Add some automake options
      [configure.ac] Sanitize feature names
      [configure.ac] Quote version macros
      [configure.ac] Cosmetic
      [configure.ac.enable] More macro cleanup
      [.gitignore] Update
      [configure.ac.enable] Add all-powerful hook registration macro
      [configure.ac.enable] Move all feature configureation to a single hook
      [configure.ac.enable] Add CAIRO_FEATURE_IF_ENABLED
      [configure.ac.bulid] Break feature config into smaller hooks
      [configure.ac.enable] Simplify _CAIRO_ENABLE_FULL
      [configure.ac.enable] Redo cache invalidation to be automatic
      [configure.ac.enable] Move macros around
      [configure.ac.enable] Further break feature configuration hooks
      [configure.ac.enable] Sanitize feature default value
      Back to using autoconf 2.58
      [configure.ac.enable] Make feature hooks take an ENABLED argument
      [configure.ac] Opt for more automake warnings and checks
      [Makefile.am] Rename INCLUDES to AM_CPPFLAGS
      [{test,perf}/Makefile.am] Define html-local target instead of html
      [autogen.sh] Make sure ChangeLog exists
      [configure.ac.enable] Actually install pkgconfig files
      Rename cairo-backend.pc.in to cairo-features.pc.in
      [configure.ac.enable] Fix warning messages
      [test/pdiff/Makefile.am] Another automake warning fix
      More fixes for pkgconfig files
      [test/pdiff] Fix include syntax
      [autogen.sh] Make libtoolize silent
      [configure.ac.enable] Don't report CFLAGS
      [configure.ac.build] Keep private features private
      [doc] Don't include *.h as sources
      [configure.ac.enable] Don't collect .pc files in win32 Makefile
      [configure.ac.enable] More fixes for private features
      Build -uninstalled.pc files
      Add support for always-builtin features in the build system
      [configure.ac] Fix pixman requires
      [configure.ac] Really fix pixman config
      [configure.ac.enable] Don't collect .pc files for builtin features
      [configure.ac.enable] Implement accumulators
      [configure.ac.enable] Add some dnl's
      [configure.ac.enable] Use AS_CASE
      Move m4 macros into build/aclocal.*.m4 files
      [configure.ac] Add CAIRO_BEGINEND_DECLS
      Mark private symbol so
      [autogen.sh] Quote ORIGDIR
      [aclocal.enable.m4] Escape shell arguments
      Makefile.am cleanup
      Update gtk-doc makefile fragment
      [doc] Don't rebuild after every configure run
      [boilerplate/Makefile.am] Add unneeded rule
      [Makefile.am.common] Unify more common rules
      [configure.ac.enable] Cleanup Makefile.*.config generation
      [src/Makefile.am] Add comment referring to Makefile.sources
      [src/README] s/Source.mk/Makefile.sources/
      [Makefile.am] Add doc back to SUBDIRS
      [Makefile.am] Add util to SUBDIRS
      [doc] Make "make check" build without gtk-doc
      [configure.ac] Build -uninstalled.pc files
      [scaled-font] Improve comment
      [scaled-font] Fix bug unlocking the wrong mutex (#16819)
      [scaled_font] Improve readability
      [configure.ac] Avoid sed -i (#17563)
      [aclocal] Move CAIRO_PARSE_VERSION to acinclude.m4
      [aclocal] Don't use m4_defn
      [configure.ac.version] Quote m4_define arguments
      [configure] Add non-pkgconfig cflags/libs before substitution
      Revert "[configure] Append -lz to LIBS"
      [configure.ac] Generate boilerplate/Makefile.am.config
      Create cairo-features-win32.h
      [Makefile.win32] Don't declare CAIRO_NO_MUTEX
      [*/Makefile.win32] Use Makefile.win32.config
      [aclocal] Fix pkgconfig file collection
      [boilerplate/Makefile.am] Distribute Makefile.win32.config
      [.gitignore] Update
      [src/Makefile.am.analysis] Split off from src/Makefile.am
      [src/Makefile.am.analysis] Fix typos and improve scripts
      [configure.ac] Warn if no native surface backend is enabled, err if no native font
      [configure.ac] Clean up report syntax
      [test] Make test programs depend on check programs
      [INSTALL] Update
      [autogen.sh] Remove --enable-gtk-doc from configure options
      [util/Makefile.am] Cleanup
      Revert "[Makefile.am] Add CAIRO_LIBS to check-link."
      [configure.ac] Err, don't pass argument to AC_PROG_LIBTOOL
      [configure.ac] Set pixman required version back to 0.12.0
      [doc] Fix glob for doc sources
      [show_text_glyphs] Replace the bool backward with cairo_text_cluster_flags
      Update tests to new cairo_text_cluster_flags_t API
      [acinclude.m4] Define m4_foreach_w if not available
      [acinclude.m4] Add compat macros for autoconf 2.59
      [doc/public/check-doc-coverage.sh] Fix typo in checking cairo-undeclared.txt
      [doc/public/check-doc-coverage.sh] Make doc building needed for the test faster
      [doc] Remove lcd_filter API from doc listing
      [src/check-doc/syntax.sh] Fix test for out-of-tree build
      [src/check-*.sh] Use computed list of source files instead of running "find"
      [configure.ac] Make sure version information do not end up in config.h
      [src/Makefile.win32] Remove recursive cairo_headers var

Benjamin Otte (1):
      [doc] get rid of various markers that aren't interpreted by gtk-doc

Carl Worth (8):
      Rename _init_pattern_with_snapshot to _cairo_pattern_init_snapshot
      Avoid missing enum warnings with pixman 0.11.9
      Make the lcd_filter API private
      Remove text-lcd-filter tests
      NEWS: Add notes for 1.7.6 snapshot.
      Increase cairo version to 1.7.6.
      Add user-font-rescale-ps-ref.png to REFERENCE_IMAGES.
      Correct NEWS mention to talk about fontconfig setting not Xsetting.

Chris Wilson (126):
      [cairo-test] Exclude lcd-filter tests for vector targets.
      [pattern] Unbounded patterns should have infinite extents.
      [cairo-surface] Check for the error surface in _get_font_options()
      [test] Preparatory work for running under memfault.
      [test] Export a function to check whether a target is enabled.
      [test] Set CAIRO_TEST_UNTESTED to 77
      [test] Run fallback-resolution if we have at least one vector surface.
      [test] Pass a 'complete' name to create_surface().
      [test/create-from-png-stream] Correct check for png loading error.
      [test/Makefile.am] Match *-out.{pdf,ps,svg}
      [xlib] Fix leak of pending_free_glyphs on CloseDisplay.
      [cairo-gstate] Guard against unsetting the font unnecessary.
      [cairo-xlib-surface] Remove status return for SUCCESS only function.
      [xlib] Remove the key parameter from the close display hook.
      [test] Update prototype of win32-printing create_surface()
      [cairo-scaled-font] Check the most recently used font used first.
      [gitignore] Ignore *.[is]
      [Makefile.am] Delete intermediates
      [perf] Silence trivial compiler warning.
      [perf] Beware $OS may not be set.
      [ps] Promote char to an int to avoid valgrind warnings.
      [cairo-cache] Simplify a status return to boolean.
      [cairo-cache] Fixup doc comment.
      [configure] Add -Werror to CC_TRY_FLAG
      Ensure ranges of wideint types are always defined.
      [cairo-surface] Add the lcd_filter default to the nil surfaces.
      [cairo-scaled-font] Actually use bytes_per_row.
      [cairo-scaled-font] Dead store.
      [cairo-clip] Dead store.
      [cairo-image-surface] Dead store.
      [cairo-output-stream] Dead store.
      [ps] Dead store elimination.
      [pdf] dead code elimination.
      [pdf] Propagate status return.
      [pdf] Propagate error from open_stream() failure.
      [pdf-operators] Propagate error from begin_actualtext().
      [pdf-operators] Propagate error from emit_glyph_string*().
      [pdf-operators] Propagate status from end_text().
      [type3-glyph] Propagate error from image emission.
      [scaled-font-subsets] Propagate error status from index_to_ucs4().
      [scaled-font-subsets] Check for a failed malloc.
      [xlib] Return the integer from XGetDefault().
      [ft-font] Dead store elimination.
      [boilerplate] Dead store elimination.
      [test/create-from-png] Return the failure.
      [test/toy-font-face] Use cairo_test_init/fini().
      [svg] Tweak base64_write_func().
      [win32-font] Review error handling.
      [Makefile.am] Support uno.
      [cairo-compiler-private.h] Clear definition of __attribute__
      [test/user-font] Correct the lifetime of the user font face.
      [test/leaky-dashed-rectangle] Add ref to bug report.
      [test] Avoid redundant writes/reads of test surfaces via png.
      [test/make-html.pl] Don't include links to non-existent images.
      [configure.in] Add release status
      [boilerplate] Check exit code from system for trapped signals.
      [test] Initialise test context.
      [boilerplate] Daemonic conversion utility.
      [perf] Continue testing after we fail to create a surface.
      [test] Pass extended output name to ref_name_for_test().
      [test] Always write the test output to a png.
      [test] Destroy test ouput image on failure.
      [test/bufferdiff] Move unused code.
      [ps] Check for end-of-stream after advancing character.
      [test] Cache last output and compare next time.
      [test] Explicity save a fail image.
      [ps] Convert a few residual CRLF to LF.
      [pdiff] Get the surface data pointer once.
      [configure.in] Autoconf strikes back
      [ps] Mark the hex data as unsigned char.
      [test] Ensure that the output is always saved.
      [ps] Check tmpfile status after reading.
      Check that lvalue of BITSWAP8() is a uint8_t.
      [ps] Initialise has_creation_date.
      [user-font] Propagate status return.
      [xlib] Use an embedded doubly-linked list for the close display hooks.
      [xlib] Keep a pointer to the cairo_xlib_display_t on the surface.
      [cairo-test] Fixup a few memleaks on failure.
      [src/Makefile.am] make check compile fix
      [src/Makefile.am] s/libcairo_la_CFLAGS/INCLUDES/
      [scaled-fonts] Cleanup a couple of valgrind warnings.
      [autogen] Check build/ for versions.
      [CODING_STYLE] Add vim modeline
      [type1] Allocate the temporary subsetter on the stack.
      [ps] Use floating point values when flattening color.
      [ps] A flattened gradient is not linear.
      [ps] Use a color_t rather than open-code.
      [configure.ac] Bump the required version.
      [ps] Add comments about design of output.
      [ps] Support B PDF operator.
      Revert "[ps] A flattened gradient is not linear."
      [test] Add gradient-constant-alpha.
      [ps] Only use fallback images if the gradient has non-constant alpha.
      [ps] Set used level to 3 only if we use native gradients.
      [cairoint.h] Update LAST_STATUS.
      [test] Add fill-alpha.
      [test] Add fill-alpha-pattern.
      [test] fill-alpha
      [cairo-compiler-private.h] Divert popen to _popen for MSVC
      [test] Typo in Makefile.am
      [boilerplate] Include cairo-compiler-private.h
      [test/Makefile.am] Remove reference to clip-operator-ps-argb32-ref.png
      [test/Makefile.am] Update list of reference images.
      [test] Fix order of deleting images vs checks.
      [test] Check for updated reference images.
      [Makefile] Disable doc/ if we don't have gtk-doc.
      [surface] Trivial rejection of fill/stroke if clip extents is zero
      [test] Fixup potential use of uninitialized test_image.
      [boilerplate] Restrict number of retries to create an error surface.
      [test] Test handling of fractional device offsets.
      [autogen] Delete Makefile.am.config
      [Makefile] Amend checks for horrible msys environment.
      [configure] Append -lz to LIBS
      [pdf] Kill a compiler warning.
      [test/user-font-rescale] Fixup use of NAN
      [test/user-font-rescale] Tidy
      [Makefile.am] Add CAIRO_LIBS to check-link.
      [test] Check set_operator()
      [ps] Consume dictionary after where.
      Workaround undefined functions required by rsvg & poppler.
      [scaled-fonts] Correct the order of scaled/user arguments.
      [svg] Emit user-fonts.
      [gcov] Use --coverage instead.
      [test] Add missing operator-alpha ref image.
      [ps] Silence compiler warning.
      [polygon] Reduce number of branches.

Jeff Muizelaar (2):
      Check for poppler_page_render instead of poppler_page_render_to_pixbuf
      [test] Add a test case for drawing glyphs with different metrics.

M Joonas Pihlaja (1):
      [test] Only test truetype-tables if we can.

Peter O'Gorman (1):
      Compile with old compilers

Søren Sandmann Pedersen (2):
      [xlib] Use _cairo_matrix_to_pixman_matrix() to compute the XTransform
      Require pixman 0.12.0

Vladimir Vukicevic (3):
      [xlib] Check CreatePixmap dimensions before calling, to avoid unnecessary size errors
      [xlib] check for too-large surface size in create similar to avoid UNSUPPORTED loop
      [quartz] move _cairo_quartz_create_cgimage to cairo-quartz-surface.c

More information about the cairo-announce mailing list