[ANNOUNCE] XCB 1.1 now available

Jamey Sharp jamey at minilop.net
Sun Nov 4 19:46:43 PST 2007


libxcb 1.1 and xcb-proto 1.1 are now available from:

    <http://xcb.freedesktop.org/dist/xcb-proto-1.1.tar.bz2>
    with sha1sum: 72bb3fe28e7ef55af335e8df41ca871517891698

    <http://xcb.freedesktop.org/dist/xcb-proto-1.1.tar.gz>
    with sha1sum: 56e83a4660eec619e9512443858a03b078a87a31

    <http://xcb.freedesktop.org/dist/libxcb-1.1.tar.bz2>
    with sha1sum: b27c7eb86fd2ea43cea83cadcf20cc77abf5defe

    <http://xcb.freedesktop.org/dist/libxcb-1.1.tar.gz>
    with sha1sum: 2faa668c01695035098f36e2f9e9ab22ba4d5775

About libxcb
============

libxcb provides an interface to the X Window System protocol, which
replaces the current Xlib interface. It has several advantages over
Xlib, including:
- size: small, simple library, and lower memory footprint
- latency hiding: batch several requests and wait for the replies later
- direct protocol access: interface and protocol correspond exactly
- proven thread support: transparently access XCB from multiple threads
- easy extension implementation: interfaces auto-generated from XML-XCB

Xlib can also use XCB as a transport layer, allowing software to make
requests and receive responses with both, which eases porting to XCB.
However, client programs, libraries, and toolkits will gain the most
benefit from a native XCB port.

About xcb-proto
===============

xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
generate the majority of its code and API. We provide them separately
from libxcb to allow reuse by other projects, such as additional
language bindings, protocol dissectors, or documentation generators.

This separation between the XCB transport layer and the
automatically-generated protocol layer also makes it far easier to write
new extensions. With the Xlib infrastructure, client-side support for
new extensions requires significant duplication of effort. With XCB and
the XML-XCB protocol descriptions, client-side support for a new
extension requires only an XML description of the extension, and not a
single line of code.

Why this release?
=================

In the eleven months since XCB's 1.0 release, a few portability and
correctness bugs have been found in libxcb. This release fixes those,
adds nicer handling of Xlib locking bugs, updates pure-XCB extension
support for RandR to version 1.2 and DAMAGE to version 1.1, and enhances
the libxcb documentation.

Please report any issues you find to the freedesktop.org bug tracker,
at:

    <https://bugs.freedesktop.org/enter_bug.cgi?product=XCB>

Discussion about XCB occurs on the XCB mailing list:

    <xcb at lists.freedesktop.org>
    <http://lists.freedesktop.org/mailman/listinfo/xcb>

You can obtain the latest development versions of XCB using GIT.
For anonymous checkouts, use:

    git clone git://anongit.freedesktop.org/git/xcb/libxcb
    git clone git://anongit.freedesktop.org/git/xcb/proto

This release corresponds to the GIT tag "1.1", signed by Jamey Sharp
with key ID 0E08F665. In each repository, you can verify this tag with
the command:

    git verify-tag 1.1

Detailed notes on this release follow.

Release 1.1 (2007-11-04)
========================

This release requires xcb-proto 1.1, due to the addition of the
extension-multiword attribute to the XML schema.

This release contains several important bug fixes, summarized below. It
also contains a patch much like Novell's libxcb-sloppy-lock.diff.
Rationale from the commit message follows. The patch and this rationale
were authored by Jamey Sharp <jamey at minilop.net>, with agreement from
Josh Triplett <josh at freedesktop.org>.

    I strongly opposed proposals like this one for a long time.
    Originally I had a very good reason: libX11, when compiled to use
    XCB, would crash soon after a locking correctness violation, so it
    was better to have an informative assert failure than a mystifying
    crash soon after.

    It took some time for me to realize that I'd changed the libX11
    implementation (for unrelated reasons) so that it could survive most
    invalid locking situations, as long as it wasn't actually being used
    from multiple threads concurrently.

    The other thing that has changed is that most of the code with
    incorrect locking has now been fixed. The value of the assert is
    accordingly lower.

    However, remaining broken callers do need to be fixed. That's why
    libXCB will still noisily print a stacktrace (if possible) on each
    assertion failure, even when assert isn't actually invoked to
    abort() the program; and that's why aborting is still default. This
    environment variable is provided only for use as a temporary
    workaround for broken applications.

Enhancements:
* Print a backtrace, if possible, on locking assertion failures.
* Skip abort() on locking assertions if LIBXCB_ALLOW_SLOPPY_LOCK is set.
* xcb_poll_for_event: Return already-read events before reading again.
* Output a configuration summary at the end of ./configure.

Bug fixes:
* Don't hold the xlib-xcb lock while sleeping: that allows deadlock.
* Allow unix:<screen> style display names again.
* Bug #9119: test xcb_popcount
* Fix unit tests for FreeBSD
* NetBSD doesn't have AI_ADDRCONFIG: use it only if it's available.
* Require libXau >= 0.99.2; earlier versions have a broken .pc file
* Use substitition variables in xcb-xinerama.pc.in
* Update autogen.sh to one that does objdir != srcdir
* Add tools/* and autogen.sh to EXTRA_DIST.
* Doxygen can now be fully disabled if desired.

Documentation improvements:
* Many fixes and updates to the tutorial.
* Iterators, requests, and replies get partial Doxygen documentation.


Release 1.1 (2007-11-04)
========================

Incompatible change to the XML schema: rather than special-casing the
treatment of protocol extension names, use the new extension-multiword
attribute.  Normally, XCB prefixes C extension functions with
xcb_extname_.  However, some of the existing extensions used multi-word
names, such as xcb_big_requests_ or xcb_xc_misc_. Those extensions now
use this attribute to match their existing defined API.  This allows the
XCB code generator to avoid special-casing those extension names.

Protocol updates:
* Update DAMAGE to 1.1
* Update RandR to version 1.2

Bug fixes:
* fix XSync Initialize call
* Update autogen.sh to one that does objdir != srcdir.


-- Jamey Sharp <jamey at minilop.net>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.x.org/archives/xorg/attachments/20071104/6b1070f3/attachment.pgp>


More information about the xorg mailing list