[Copyright status: this file is in the public domain.] The X protocol supports `extension's, which are, as the name suggests, extensions to the protocol. Each extension is identified by a name; see lx_ListExtensions and lx_QueryExtension in core.txt. Most extensions simply provide additional facilities. For example, the extension named SHAPE adds support for nonrectangular windows; the MIT-SHM extension adds support for using shared-memory segments to transport images very fast between client and server. A few affect the protocol more profoundly; for example, BIG-REQUESTS affects the encoding of request lengths, potentially affecting the wire protocol for any of the handful of requests which can be larger than 262140 bytes on the wire. There is an internal extension API which can handle most extensions; the SHAPE support, for example, is written using it. It cannot handle the few requests that affect the basic protocol, such as BIG-REQUESTS. For documentation on this API, see lx-xi.h in the source tree. As an internal API not designed for use by applications, it is not documented here; lx-xi.h has comments containing what documentation exists. The extension interfaces are still in a state of flux; they are easily the least well-developed part of liblx. For example, there is currently no support for extension events or errors. At this writing, the list of extensions liblx supports is: SHAPE Each supported extension is documented in its own file, named by prepending "ext-" and appending ".txt" to the extension name. For example, ext-SHAPE.txt contains documentation on the API to SHAPE.