diff options
Diffstat (limited to 'libxcb/NEWS')
-rw-r--r-- | libxcb/NEWS | 891 |
1 files changed, 468 insertions, 423 deletions
diff --git a/libxcb/NEWS b/libxcb/NEWS index eaa31e885..bb4b47d68 100644 --- a/libxcb/NEWS +++ b/libxcb/NEWS @@ -1,423 +1,468 @@ -Release 1.7 (2010-08-13)
-========================
-- Always wake up readers after writing
-- Get rid of PATH_MAX and MAXPATHLEN
-- Add ~ operator support in code generator
-- xcb_open: Improve protocol/host parsing
-- xcb_connect_to_display_with_auth_info: Fix memory leak
-- Report which extensions are being built
-
-Release 1.6 (2010-04-09)
-========================
-- darwin: xnu doesn't support poll on ttys on the master side
-- Fix descriptor leak on memory error path
-- Support xcb_discard_reply
-- Open the X11 socket with close-on-exec flag
-- Fix authentication on hpux and Hurd
-
-Release 1.5 (2009-12-03)
-========================
-- setsockopt(SO_KEEPALIVE) on TCP display connections
-- Add DRI2 support
-- Fix check dependency
-- Cygwin build fix: Add -no-undefined to libtool flags
-
-Release 1.4 (2009-07-15)
-========================
-* Add majorCode, minorCode and resourceID fields to X generic error
-* Fix precedence bug: wrong length for big-requests preceded by sync
-* Fix libxcb-randr version info
-
-Release 1.3 (2009-05-29)
-========================
-* Copy full IPv4 mapping (Bug #20665)
-* Fix XID allocation
-* Use poll() instead of select() when available
-* Fix local socket connection on Hurd
-* Fix XDM-AUTHORIZATION-1
-* Disable Nagle on TCP socket
-
-Release 1.2 (2009-02-17)
-========================
-* Stop packaging auto-generated C files into tarball.
-
-Release 1.1.93 (2008-12-11)
-===========================
-Enhancements:
-* Apple: Enable support for launchd DISPLAY socket
-* Treat XIDs the same as other cardinal values.
-
-Release 1.1.92 (2008-11-01)
-===========================
-Enhancements:
-* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields
-* Fixed overly aggressive warning about fixed field following variable
-* Added generation of extern "C" for compatibility with C++
-* Remove libxcb-xlib and xcbxlib.h.
-* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io.
-* Track 64-bit sequence numbers internally.
-* Use sequence number ranges in pending replies
-* Remove duplicate XCB_EXTENSION calls for Composite extension
-* Factorize m4 macros and add one to set X extensions
-* Allow compile-time setting for XCB queue buffer size
-* Support handing off socket write permission to external code.
-* Add support for the abstract socket namespace under Linux
-
-Bug fixes:
-* Fix tiny memory leak in read_packet
-* Fix some fd leaks in _xcb_open_*()
-
-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@minilop.net>, with agreement from
-Josh Triplett <josh@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.0 (2006-11-23)
-========================
-
-The "Thanksgiving" release: We feel thankful to have it released. Five years
-have passed since XCB's initial commit on September 3rd, 2001:
- <http://gitweb.freedesktop.org/?p=xcb.git;a=commit;h=09e54c4a3c>
-
-* Support IPv6. XCB now supports displays with IPv6 addresses, with or without
- enclosing square brackets, or with hosts which resolve to IPv6 addresses, by
- using getaddrinfo instead of gethostbyname, and by including support for
- authentication for such connections. This allows such displays as "::1:1.1".
-
-* XCB now uses the libpthread-stubs, to properly support optional use of
- pthreads even on platforms which do not have all the necessary pthread stubs
- in libc or otherwise available by default.
-
-* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now
- required to build XCB's unit tests. The version that we were requiring was
- not actually new enough to let our unit tests compile, and the AM_PATH_CHECK
- macro is now considered deprecated. We know that versions of check using
- pkg-config are new enough to work, and the check dependency was optional
- anyway, so we've dropped support for older versions.
-
-* Provide a xcb_prefetch_maximum_request_length counterpart to
- xcb_get_maximum_request_length.
-
-* Fix Bug #5958: zero out padding bytes in requests.
-
-* Change xcb_connect to pass the display number to _xcb_get_auth_info, which
- passes it to get_authptr. This allows get_authptr to stop hacking the
- display number out of the sockaddrs of various address families, such as
- port - X_TCP_PORT, or the number after the last X in the UNIX socket path.
-
-* Remove --with-opt and --with-debug options from configure.ac; configure
- supports the use of custom CFLAGS, so please use that instead.
-
-* Reove support for the <localfield> tag in protocol descriptions, since they
- no longer use it, and since new protocol descriptions should not need it
- either.
-
-* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or
- XCBPROTO_LIBS.
-
-* XCB builds which use xdmcp now include it in Requires.private, to support
- static linking.
-
-* Replace "long" with uint32_t when used for a 32-bit quantity
-
-* Various enhancements to the generation of documentation with Doxygen:
- * Check for doxygen in configure.ac
- * Fix some Doxygen warnings.
- * Install documentation.
- * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets
- generated from xcb.doxygen.in, so that it can use top_builddir and
- top_srcdir to find source and to output documentation.
- * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily
- available via autoconf.
-
-
-Release 1.0 RC3 (2006-11-02)
-============================
-
-Note: Version 0.9.4 of the test suite tool "check" provides a broken
-version of the AM_PATH_CHECK macro, which causes autoconf to fail due to
-insufficient quoting on the macro names it prints in its deprecation
-message. We have written a patch to fix this problem, available at:
-<http://bugs.debian.org/cgi-bin/bugreport.cgi/check-m4-am-path-check-use-quadrigraphs-in-macro-names-to-unbreak-autoconf.patch?bug=395466;msg=20;att=1>
-Version 0.9.4-2 of the Debian package for check includes this patch.
-Users of other distributions who want to re-autotool libxcb will need to
-apply this patch, use an older version of check, or wait for a fixed
-upstream version. This bug does not affect users who use the distributed
-tarballs and do not re-autotool.
-
-* Add library support for xcb-xinerama, using new protocol description
- from xcb-proto.
-* In the generated protocol code, define and use constants for opcode
- numbers rather than hard-coding them.
-* In the API conversion script, match only XCB-namespaced XID generators
- when converting to xcb_generate_id.
-* Quit treating xproto specially in Makefile.am: handle it like all the
- extensions.
-* Generate Doxygen documentation comments in the protocol stubs, and
- provide a Doxygen config file for building HTML documentation for XCB.
-* Add note to xcbxlib.h that nothing except Xlib/XCB should use it.
-* Extend test suite to test xcb_parse_display with NULL argument and
- display in $DISPLAY.
-
-
-Release 1.0 RC2 (2006-10-07)
-============================
-
-API changes
------------
-
-In our announcement of XCB 1.0 RC1, we proposed two API changes for
-community feedback:
-
- We would greatly appreciate API review in this final release
- candidate period. We've had some limited feedback that our attempts
- to impose static type safety on XIDs in C pose more a hindrance than
- a help, so we would appreciate discussion over whether this
- constitutes a "serious issue with the API". Some question also
- remains of whether xcb_poll_for_event should have the out-parameter
- 'error', now that XCB has a more uniform mechanism for reporting
- connection errors. Speak now on these points or leave us alone. ;-)
-
-Since we've received feedback agreeing with our proposed changes, and no
-objections or requests to keep the existing API, we made both changes
-and bumped the soname to libxcb.so.1.0.0 in preparation for the release
-of XCB 1.0.
-
-* Remove XID wrapper structures and replace them with uint32_t typedefs.
- XID union types like xcb_drawable_t and xcb_fontable_t also become
- uint32_t typedefs. The API conversion script now replaces xcb_*_new
- with calls directly to xcb_generate_id. This change makes
- xcb_generate_id part of the client API rather than the extension API,
- so move xcb_generate_id from xcbext.h to xcb.h.
-
-* Remove the 'int *error' out-parameter for xcb_poll_for_event.
- xcb_poll_for_event now shuts down the xcb_connection_t on fatal
- errors; use xcb_connection_has_error to check.
-
-The Xlib-specific API in libxcb-xlib also changed:
-
-* Stop exposing the XCB IO lock for Xlib's benefit, by removing
- xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib
- now provides xcb_xlib_lock and xcb_xlib_unlock.
-
-Code generation changes
------------------------
-
-* The code generator no longer implicitly imports xproto for extensions.
- xcb-proto 1.0 RC2 includes the corresponding change to explicitly
- import xproto in extensions that need it
-
-* The generated protocol headers now declare "struct foo", "union foo"
- or "enum foo", not just the typedef "foo" of an unnamed
- struct/union/enum type.
-
-Bug Fixes
----------
-
-* Make Plan 7 'checked' requests work correctly.
-
-Documentation improvements
---------------------------
-
-* Document xcb_generate_id.
-
-* Tutorial enhancements.
-
-
-Release 1.0 RC1 (2006-09-25)
-============================
-
-The Great XCB Renaming
-----------------------
-
-Rename API to follow a new naming convention:
-
-* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES
-* xcb_functions_lowercase_with_underscores
-* xcb_types_lowercase_with_underscores_and_suffix_t
-* expand all abbreviations like "req", "rep", and "iter"
-
-Word boundaries for the names in the protocol descriptions fall:
-
-* Wherever the protocol descriptions already have an underscore
-* Between a lowercase letter and a subsequent uppercase letter
-* Before the last uppercase letter in a string of uppercase letters
- followed by a lowercase letter (such as in LSBFirst between LSB and
- First)
-* Before and after a string of digits (with exceptions for sized types
- like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h
- convention)
-
-Also fix up some particular naming issues:
-
-* Rename shape_op and shape_kind to drop the "shape_" prefix, since
- otherwise these types end up as xcb_shape_shape_{op,kind}_t.
-* Remove leading underscores from enums in the GLX protocol description,
- previously needed to ensure a word separator, but now redundant.
-
-This renaming breaks code written for the previous API naming
-convention. The scripts in XCB's tools directory will convert code
-written for the old API to use the new API; they work well enough that
-we used them to convert the non-program-generated code in XCB, and when
-run on the old program-generated code, they almost exactly reproduce the
-new program-generated code (modulo whitespace and bugs in the old code
-generator).
-
-Authors: Vincent Torri, Thomas Hunger, Josh Triplett
-
-In addition to the API renaming, the library SONAMEs have changed to
-libxcb.so and libxcb-extname.so. The library major version remains at 0,
-to become version 1 before 1.0 is released; the SONAME lowercasing means
-that this will not conflict with XCB 0.9 libraries.
-
-The header files have moved from /usr/include/X11/XCB/ to
-/usr/include/xcb/. The XML-XCB protocol descriptions have moved to
-/usr/share/xcb, with extension descriptions no longer relegated to an
-extensions/ subdirectory. The API conversion script api_conv.pl will fix
-references to the header files, and packages using pkg-config will
-automatically use the new library names.
-
-Error handling Plan 7
----------------------
-
-All request functions now come in an "unchecked" and "checked" variant.
-The checked variant allows callers to handle errors inline where they
-obtain the reply, or by calling xcb_request_check for requests with no
-reply. The unchecked variant uses the event queue for errors. Requests
-with replies default to checked, because the caller must already make a
-function call to retrieve the reply and can see the error at that time;
-the unchecked variant uses the suffix _unchecked. Requests without
-replies default to unchecked, because the caller will not necessarily
-expect to handle a response, and the checked variant uses the suffix
-_checked.
-
-Connection error handling
--------------------------
-
-Fatal connection errors now put the xcb_connection_t object into an
-error state, at which point all further operations on that connection
-will fail. Callers can use the new xcb_connection_has_error function to
-check for this state in a connection. Functions that return a
-connection, such as the xcb_connect function, may instead return an
-xcb_connection_t already in an error state.
-
-In the future we expect to add additional API for getting more
-information about the error condition that caused the connection to get
-into an error state.
-
-Smaller API changes
--------------------
-
-All functions that have been marked 'deprecated' up to now have been
-removed for this release. After XCB 1.0 is released, functions marked
-'deprecated' will be preserved until the end of time to maintain
-compatibility.
-
-XCB no longer provides a sync function. Most callers of this function
-should use xcb_flush instead, which usually provides the intended
-functionality and does not require a round-trip to the server. If you
-really need this functionality, either use xcb_get_input_focus like sync
-used to do, or use the xcb_aux_sync function from the xcb-aux library in
-xcb-util. However, note that we do not consider the libraries in
-xcb-util remotely stable yet.
-
-XCB no longer provides xcb_[extension_name]_init functions for each
-extension. These functions previously caused XCB to issue and process a
-QueryExtension request. Callers should now directly call
-xcb_get_extension_data on the xcb_[extension_name]_id, or use
-xcb_prefetch_extension_data if they do not need to force a round-trip
-immediately.
-
-The compatibility functions in xcbxlib.h, provided solely for use by
-Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to
-have to change the libxcb soname if we later change or remove the Xlib
-compatibility functions, and nothing except Xlib/XCB should ever use
-them. (Applications which use Xlib/XCB do not need this library either;
-Xlib/XCB only uses it internally.)
-
-The descriptions of several extensions have been updated to match the
-latest versions implemented in the X.org X server.
-
-GIT Repository split
---------------------
-
-Previously, several XCB-related projects all existed under the umbrella
-of a single monolithic GIT repository with per-project subdirectories.
-We have split this repository into individual per-project repositories.
-
-Josh Triplett and Jamey Sharp wrote a tool called git-split to
-accomplish this repository split. git-split reconstructs the history of
-a sub-project previously stored in a subdirectory of a larger
-repository. It constructs new commit objects based on the existing tree
-objects for the subtree in each commit, and discards commits which do
-not affect the history of the sub-project, as well as merges made
-unnecessary due to these discarded commits.
-
-We would like to acknowledge the work of the gobby team in creating a
-collaborative editor which greatly aided the development of git-split
-(as well as these release notes).
-
-Build and implementation fixes
-------------------------------
-
-XCB no longer needs proto/x11 from X.org; the XCB header xproto.h
-provides the definitions from X.h, named according to XCB conventions.
-
-XCB should now build with non-GNU implementations of Make.
-
-XCB properly handles 32-bit wrap of sequence numbers, and thus now
-supports issuing more than 2**32 requests in one connection.
-
-Fixed bugs #7001, #7261.
+Release 1.8 (2012-01-11) +======================== +- xcb_disconnect: call shutdown() to force a disconnect +- Use special path to sockets when running under Solaris Trusted Extensions +- Remove unused DECnet code +- Add #include <sys/socket.h> to xcb_conn.c +- Make launchd code in xcb_util.c match surrounding code indent levels +- If protocol is "unix", use a Unix domain socket, not TCP +- Added more error states and removed global error_connection +- Handle XGE events with the "send event" flag +- added xcb_sumof() with restriction to uint8_t +- xkb: updated configure.ac/Makefile.am +- xkb: added pkg config file +- special case 'intermixed variable and fixed size fields': fixed reply side, needs testing +- added accessors for special cases +- Add support for building with Python 3 +- Insert, not append explicit xcbgen dir python path +- xcb_request_check: Sync even if an event was read for this sequence. +- _xcb_conn_wait: Shut down the connection on unexpected poll() events. +- xcb_send_request: Send all requests using a common internal send_request. +- xcb_request_check: Hold the I/O lock while deciding to sync. +- xcb_discard_reply: Simplify by re-using poll_for_reply helper. +- xcb_in: Use 64-bit sequence numbers internally everywhere. +- Enable AM_SILENT_RULES on automake 1.11 or newer. +- Factor reader_list management out of wait_for_reply. +- Dequeue readers that can't receive any new responses. +- Delete the old c-client.xsl. +- Keep ALIGNOF definition out of the public namespace. +- darwin: Don't use poll() when expected to run on darwin10 and prior +- Add Win32 +- Allow disconnecting connections that are in error state. +- Make xcb_take_socket keep flushing until idle +- Support pre-IPv6 systems (without getaddrinfo) +- Drop AI_ADDRCONFIG when resolving TCP addresses +- xcb_auth: Fix memory leak in _xcb_get_auth_info. +- Don't emit out-of-module sizeof definitions +- Clean up a couple of warnings in xprint +- Prevent reply waiters from being blocked. +- Prevent theoretical double free and leak on get_peer_sock_name. +- Introduce a variant of xcb_poll_for_event for examining event queue. +- xcb_take_socket: Document sequence wrap requirements +- Compute alignment correctly +- Fix a dead-lock due to xcb_poll_for_reply + + +Release 1.7 (2010-08-13) +======================== +- Always wake up readers after writing +- Get rid of PATH_MAX and MAXPATHLEN +- Add ~ operator support in code generator +- xcb_open: Improve protocol/host parsing +- xcb_connect_to_display_with_auth_info: Fix memory leak +- Report which extensions are being built + +Release 1.6 (2010-04-09) +======================== +- darwin: xnu doesn't support poll on ttys on the master side +- Fix descriptor leak on memory error path +- Support xcb_discard_reply +- Open the X11 socket with close-on-exec flag +- Fix authentication on hpux and Hurd + +Release 1.5 (2009-12-03) +======================== +- setsockopt(SO_KEEPALIVE) on TCP display connections +- Add DRI2 support +- Fix check dependency +- Cygwin build fix: Add -no-undefined to libtool flags + +Release 1.4 (2009-07-15) +======================== +* Add majorCode, minorCode and resourceID fields to X generic error +* Fix precedence bug: wrong length for big-requests preceded by sync +* Fix libxcb-randr version info + +Release 1.3 (2009-05-29) +======================== +* Copy full IPv4 mapping (Bug #20665) +* Fix XID allocation +* Use poll() instead of select() when available +* Fix local socket connection on Hurd +* Fix XDM-AUTHORIZATION-1 +* Disable Nagle on TCP socket + +Release 1.2 (2009-02-17) +======================== +* Stop packaging auto-generated C files into tarball. + +Release 1.1.93 (2008-12-11) +=========================== +Enhancements: +* Apple: Enable support for launchd DISPLAY socket +* Treat XIDs the same as other cardinal values. + +Release 1.1.92 (2008-11-01) +=========================== +Enhancements: +* Added small fix to support trailing fixed fields; also warning for non-pad fixed fields +* Fixed overly aggressive warning about fixed field following variable +* Added generation of extern "C" for compatibility with C++ +* Remove libxcb-xlib and xcbxlib.h. +* Inline _xcb_lock_io, _xcb_unlock_io, and _xcb_wait_io. +* Track 64-bit sequence numbers internally. +* Use sequence number ranges in pending replies +* Remove duplicate XCB_EXTENSION calls for Composite extension +* Factorize m4 macros and add one to set X extensions +* Allow compile-time setting for XCB queue buffer size +* Support handing off socket write permission to external code. +* Add support for the abstract socket namespace under Linux + +Bug fixes: +* Fix tiny memory leak in read_packet +* Fix some fd leaks in _xcb_open_*() + +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@minilop.net>, with agreement from +Josh Triplett <josh@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.0 (2006-11-23) +======================== + +The "Thanksgiving" release: We feel thankful to have it released. Five years +have passed since XCB's initial commit on September 3rd, 2001: + <http://gitweb.freedesktop.org/?p=xcb.git;a=commit;h=09e54c4a3c> + +* Support IPv6. XCB now supports displays with IPv6 addresses, with or without + enclosing square brackets, or with hosts which resolve to IPv6 addresses, by + using getaddrinfo instead of gethostbyname, and by including support for + authentication for such connections. This allows such displays as "::1:1.1". + +* XCB now uses the libpthread-stubs, to properly support optional use of + pthreads even on platforms which do not have all the necessary pthread stubs + in libc or otherwise available by default. + +* Switch from the old AM_PATH_CHECK macro to pkg-config. check 0.9.4 is now + required to build XCB's unit tests. The version that we were requiring was + not actually new enough to let our unit tests compile, and the AM_PATH_CHECK + macro is now considered deprecated. We know that versions of check using + pkg-config are new enough to work, and the check dependency was optional + anyway, so we've dropped support for older versions. + +* Provide a xcb_prefetch_maximum_request_length counterpart to + xcb_get_maximum_request_length. + +* Fix Bug #5958: zero out padding bytes in requests. + +* Change xcb_connect to pass the display number to _xcb_get_auth_info, which + passes it to get_authptr. This allows get_authptr to stop hacking the + display number out of the sockaddrs of various address families, such as + port - X_TCP_PORT, or the number after the last X in the UNIX socket path. + +* Remove --with-opt and --with-debug options from configure.ac; configure + supports the use of custom CFLAGS, so please use that instead. + +* Reove support for the <localfield> tag in protocol descriptions, since they + no longer use it, and since new protocol descriptions should not need it + either. + +* xcb-proto has no libraries or headers, so don't use XCBPROTO_CFLAGS or + XCBPROTO_LIBS. + +* XCB builds which use xdmcp now include it in Requires.private, to support + static linking. + +* Replace "long" with uint32_t when used for a 32-bit quantity + +* Various enhancements to the generation of documentation with Doxygen: + * Check for doxygen in configure.ac + * Fix some Doxygen warnings. + * Install documentation. + * Handle out-of-tree builds, with srcdir != builddir. xcb.doxygen now gets + generated from xcb.doxygen.in, so that it can use top_builddir and + top_srcdir to find source and to output documentation. + * Fill in PROJECT_NUMBER from @VERSION@, now that we have it readily + available via autoconf. + + +Release 1.0 RC3 (2006-11-02) +============================ + +Note: Version 0.9.4 of the test suite tool "check" provides a broken +version of the AM_PATH_CHECK macro, which causes autoconf to fail due to +insufficient quoting on the macro names it prints in its deprecation +message. We have written a patch to fix this problem, available at: +<http://bugs.debian.org/cgi-bin/bugreport.cgi/check-m4-am-path-check-use-quadrigraphs-in-macro-names-to-unbreak-autoconf.patch?bug=395466;msg=20;att=1> +Version 0.9.4-2 of the Debian package for check includes this patch. +Users of other distributions who want to re-autotool libxcb will need to +apply this patch, use an older version of check, or wait for a fixed +upstream version. This bug does not affect users who use the distributed +tarballs and do not re-autotool. + +* Add library support for xcb-xinerama, using new protocol description + from xcb-proto. +* In the generated protocol code, define and use constants for opcode + numbers rather than hard-coding them. +* In the API conversion script, match only XCB-namespaced XID generators + when converting to xcb_generate_id. +* Quit treating xproto specially in Makefile.am: handle it like all the + extensions. +* Generate Doxygen documentation comments in the protocol stubs, and + provide a Doxygen config file for building HTML documentation for XCB. +* Add note to xcbxlib.h that nothing except Xlib/XCB should use it. +* Extend test suite to test xcb_parse_display with NULL argument and + display in $DISPLAY. + + +Release 1.0 RC2 (2006-10-07) +============================ + +API changes +----------- + +In our announcement of XCB 1.0 RC1, we proposed two API changes for +community feedback: + + We would greatly appreciate API review in this final release + candidate period. We've had some limited feedback that our attempts + to impose static type safety on XIDs in C pose more a hindrance than + a help, so we would appreciate discussion over whether this + constitutes a "serious issue with the API". Some question also + remains of whether xcb_poll_for_event should have the out-parameter + 'error', now that XCB has a more uniform mechanism for reporting + connection errors. Speak now on these points or leave us alone. ;-) + +Since we've received feedback agreeing with our proposed changes, and no +objections or requests to keep the existing API, we made both changes +and bumped the soname to libxcb.so.1.0.0 in preparation for the release +of XCB 1.0. + +* Remove XID wrapper structures and replace them with uint32_t typedefs. + XID union types like xcb_drawable_t and xcb_fontable_t also become + uint32_t typedefs. The API conversion script now replaces xcb_*_new + with calls directly to xcb_generate_id. This change makes + xcb_generate_id part of the client API rather than the extension API, + so move xcb_generate_id from xcbext.h to xcb.h. + +* Remove the 'int *error' out-parameter for xcb_poll_for_event. + xcb_poll_for_event now shuts down the xcb_connection_t on fatal + errors; use xcb_connection_has_error to check. + +The Xlib-specific API in libxcb-xlib also changed: + +* Stop exposing the XCB IO lock for Xlib's benefit, by removing + xcb_get_io_lock from the Xlib-specific XCB API; instead, libxcb-xlib + now provides xcb_xlib_lock and xcb_xlib_unlock. + +Code generation changes +----------------------- + +* The code generator no longer implicitly imports xproto for extensions. + xcb-proto 1.0 RC2 includes the corresponding change to explicitly + import xproto in extensions that need it + +* The generated protocol headers now declare "struct foo", "union foo" + or "enum foo", not just the typedef "foo" of an unnamed + struct/union/enum type. + +Bug Fixes +--------- + +* Make Plan 7 'checked' requests work correctly. + +Documentation improvements +-------------------------- + +* Document xcb_generate_id. + +* Tutorial enhancements. + + +Release 1.0 RC1 (2006-09-25) +============================ + +The Great XCB Renaming +---------------------- + +Rename API to follow a new naming convention: + +* XCB_CONSTANTS_UPPERCASE_WITH_UNDERSCORES +* xcb_functions_lowercase_with_underscores +* xcb_types_lowercase_with_underscores_and_suffix_t +* expand all abbreviations like "req", "rep", and "iter" + +Word boundaries for the names in the protocol descriptions fall: + +* Wherever the protocol descriptions already have an underscore +* Between a lowercase letter and a subsequent uppercase letter +* Before the last uppercase letter in a string of uppercase letters + followed by a lowercase letter (such as in LSBFirst between LSB and + First) +* Before and after a string of digits (with exceptions for sized types + like xcb_char2b_t and xcb_glx_float32_t to match the stdint.h + convention) + +Also fix up some particular naming issues: + +* Rename shape_op and shape_kind to drop the "shape_" prefix, since + otherwise these types end up as xcb_shape_shape_{op,kind}_t. +* Remove leading underscores from enums in the GLX protocol description, + previously needed to ensure a word separator, but now redundant. + +This renaming breaks code written for the previous API naming +convention. The scripts in XCB's tools directory will convert code +written for the old API to use the new API; they work well enough that +we used them to convert the non-program-generated code in XCB, and when +run on the old program-generated code, they almost exactly reproduce the +new program-generated code (modulo whitespace and bugs in the old code +generator). + +Authors: Vincent Torri, Thomas Hunger, Josh Triplett + +In addition to the API renaming, the library SONAMEs have changed to +libxcb.so and libxcb-extname.so. The library major version remains at 0, +to become version 1 before 1.0 is released; the SONAME lowercasing means +that this will not conflict with XCB 0.9 libraries. + +The header files have moved from /usr/include/X11/XCB/ to +/usr/include/xcb/. The XML-XCB protocol descriptions have moved to +/usr/share/xcb, with extension descriptions no longer relegated to an +extensions/ subdirectory. The API conversion script api_conv.pl will fix +references to the header files, and packages using pkg-config will +automatically use the new library names. + +Error handling Plan 7 +--------------------- + +All request functions now come in an "unchecked" and "checked" variant. +The checked variant allows callers to handle errors inline where they +obtain the reply, or by calling xcb_request_check for requests with no +reply. The unchecked variant uses the event queue for errors. Requests +with replies default to checked, because the caller must already make a +function call to retrieve the reply and can see the error at that time; +the unchecked variant uses the suffix _unchecked. Requests without +replies default to unchecked, because the caller will not necessarily +expect to handle a response, and the checked variant uses the suffix +_checked. + +Connection error handling +------------------------- + +Fatal connection errors now put the xcb_connection_t object into an +error state, at which point all further operations on that connection +will fail. Callers can use the new xcb_connection_has_error function to +check for this state in a connection. Functions that return a +connection, such as the xcb_connect function, may instead return an +xcb_connection_t already in an error state. + +In the future we expect to add additional API for getting more +information about the error condition that caused the connection to get +into an error state. + +Smaller API changes +------------------- + +All functions that have been marked 'deprecated' up to now have been +removed for this release. After XCB 1.0 is released, functions marked +'deprecated' will be preserved until the end of time to maintain +compatibility. + +XCB no longer provides a sync function. Most callers of this function +should use xcb_flush instead, which usually provides the intended +functionality and does not require a round-trip to the server. If you +really need this functionality, either use xcb_get_input_focus like sync +used to do, or use the xcb_aux_sync function from the xcb-aux library in +xcb-util. However, note that we do not consider the libraries in +xcb-util remotely stable yet. + +XCB no longer provides xcb_[extension_name]_init functions for each +extension. These functions previously caused XCB to issue and process a +QueryExtension request. Callers should now directly call +xcb_get_extension_data on the xcb_[extension_name]_id, or use +xcb_prefetch_extension_data if they do not need to force a round-trip +immediately. + +The compatibility functions in xcbxlib.h, provided solely for use by +Xlib/XCB, now exist in a separate library libxcb-xlib. We don't want to +have to change the libxcb soname if we later change or remove the Xlib +compatibility functions, and nothing except Xlib/XCB should ever use +them. (Applications which use Xlib/XCB do not need this library either; +Xlib/XCB only uses it internally.) + +The descriptions of several extensions have been updated to match the +latest versions implemented in the X.org X server. + +GIT Repository split +-------------------- + +Previously, several XCB-related projects all existed under the umbrella +of a single monolithic GIT repository with per-project subdirectories. +We have split this repository into individual per-project repositories. + +Josh Triplett and Jamey Sharp wrote a tool called git-split to +accomplish this repository split. git-split reconstructs the history of +a sub-project previously stored in a subdirectory of a larger +repository. It constructs new commit objects based on the existing tree +objects for the subtree in each commit, and discards commits which do +not affect the history of the sub-project, as well as merges made +unnecessary due to these discarded commits. + +We would like to acknowledge the work of the gobby team in creating a +collaborative editor which greatly aided the development of git-split +(as well as these release notes). + +Build and implementation fixes +------------------------------ + +XCB no longer needs proto/x11 from X.org; the XCB header xproto.h +provides the definitions from X.h, named according to XCB conventions. + +XCB should now build with non-GNU implementations of Make. + +XCB properly handles 32-bit wrap of sequence numbers, and thus now +supports issuing more than 2**32 requests in one connection. + +Fixed bugs #7001, #7261. |