1# libX11 - Core X11 protocol client library
2
3Documentation for this library can be found in the included man pages,
4and in the Xlib spec from the specs subdirectory, also available at:
5
6 - https://www.x.org/releases/current/doc/libX11/libX11/libX11.html
7
8 - https://www.x.org/releases/current/doc/libX11/libX11/libX11.pdf
9
10and the O'Reilly Xlib books, which they have made freely available online,
11though only for older versions of X11:
12
13 - X Series Volume 2: Xlib Reference Manual (1989, covers X11R3)
14 https://www.archive.org/details/xlibretmanver1102nyemiss
15
16 - X Series Volume 2: Xlib Reference Manual, 2nd Edition (1990, covers X11R4)
17 https://www.archive.org/details/xlibrefmanv115ed02nyemiss
18
19All questions regarding this software should be directed at the
20Xorg mailing list:
21
22 https://lists.x.org/mailman/listinfo/xorg
23
24The primary development code repository can be found at:
25
26 https://gitlab.freedesktop.org/xorg/lib/libX11
27
28Please submit bug reports and requests to merge patches there.
29
30For patch submission instructions, see:
31
32 https://www.x.org/wiki/Development/Documentation/SubmittingPatches
33
34## Release 1.8.12
35
36 * x11.pc: Add URL field (!280)
37 * xkb: Bring over fixes from Xserver to shared XKB source files (!279)
38
39## Release 1.8.11
40
41 * Close xcb connection after freeing display structure to avoid XIO error
42 when running synchronized (!264)
43 * Don't allocate memory for a zero-sized list of directories when
44 `SetFontPath()` is called with `ndirs == 0` (!266)
45 * Fix `-Werror=array-bounds` build failures with gcc 14.2 when
46 `MALLOC_0_RETURNS_NULL` is defined (!267)
47 * Set `data` field to 0 when initializing new requests (!268)
48 * ximcp: don't leak window if `XGetAtomName()` fails (!269)
49 * ximcp: allow XNArea with OnTheSpot (!270)
50 * ximcp: hide internal functions added in 1.8.10 (!271)
51 * Handle `-Wextra-semi-stmt` warnings from clang (!272)
52 * xkb: avoid undefined behavior due to left shift overflow (#225, !273)
53 * Fix misuse of `UCSConvertCase()` in `XConvertCase()` (!274)
54 * drop `pthread-stubs` dependency on Dragonfly, FreeBSD, & NetBSD (!277)
55
56## Release 1.8.10
57
58 * Re-fix XIM input sometimes jumbled (#205, #206, #207, #208, !246)
59 * Fix various static analysis errors (!250)
60 * Add compose sequences for Arabic hamza (!218), Ezh (!221), and
61 hryvnia currency (!259)
62 * Make colormap private interfaces thread safe (#215, !254)
63 * Fix deadlock in XRebindKeysym() (!256)
64 * Assorted memory handling cleanups (!251, !258)
65 * Restore VAX support still in use by NetBSD (!257)
66
67## Release 1.8.9
68
69 * Fix regressions introduced in 1.8.8 (!245, !248) - this includes reverting
70 for now the previous "Fix XIM input sometimes jumbled (#198, !236)"
71
72## Release 1.8.8
73
74 * Fix XIM input sometimes jumbled (#198, !236)
75 * Fix _XkbReadGetDeviceInfoReply for nButtons == dev->buttons (!237)
76 * Drop ifdefs for platforms that are no longer supported (!242, !243)
77 * Assorted memory handling cleanups
78
79## Release 1.8.7
80
81 * Security fixes and hardening in XImage and pixmap handling code
82 (CVE-2023-43786, CVE-2023-43787, !234)
83 * Fix buffer allocation in _XkbReadKeySyms() (CVE-2023-43785)
84 * Fail XOpenDisplay() if server-provided default visual is invalid (!233)
85 * Bring XKB docs in line with actual implementation (!231, !228)
86 * Xutil.h: declare XEmptyRegion() and XEqualRegion() as Bool (!225)
87 * Assorted updates to en_US.UTF-8 compose keys (!213, !214, !215, !216,
88 !217, !219, !220, !222, !223, !226, !227, !229)
89
90## Release 1.8.6
91
92 * Add bounds checks in InitExt.c (CVE-2023-3138)
93
94## Release 1.8.5
95
96 * autoconf & libtool updates (!187, !188)
97 * Restore missing text in XSetScreenSaver man page (#187, !203)
98 * Update am_ET.UTF-8 compose keys to use dead-vowel symbols,
99 in coordination with xkeyboard-config 2.39 (!205)
100 * Assorted updates to en_US.UTF-8 compose keys (!189, !195, !196, !198,
101 !199, !200, !201, !207, !208, !209)
102
103## Release 1.8.4
104
105 * Revert AddressSanitizer fix from 1.8.3 that caused regression (#176, !180)
106 * Add two compose sequences for "capital B with stroke", remove others (!179)
107 * Further improved handling of reentering libX11 via X*IfEvent() calls (!176)
108
109
110## Release 1.8.3
111
112 * Improved handling of reentering libX11 via X*IfEvent() calls (!171, !173)
113 * Fix loading of en_US.UTF-8/XLC_LOCALE (#167, !174)
114 * Add XFreeThreads() and automatic call from a destructor function when
115 thread-safety-constructor is enabled (!167).
116 * Address issues found by UBSan and AddressSanitizer
117 * Fix build with older gcc versions (!169)
118
119## Release 1.8.2
120
121 * Allow X*IfEvent() to reenter libX11 to avoid deadlock from unsafe
122 calls when thread-safety-constructor is enabled (!150).
123 * Remove Xlib's pthread function stubs - instead use system provided
124 threads functions, including linking against any needed pthread
125 libraries if thread-safety-constructor is enabled (!155, !156).
126 * Fix off-by-one error in XKeycodeToKeysym for indexes > 3 (!78).
127 * Allow XNSpotLocation with OnTheSpot (!127).
128 * Fix Win32 build when -fno-common is in effect (!140).
129 * Fix memory leak in XRegisterIMInstantiateCallback (!158).
130 * Add compose sequences for the double-struck capitals ℕ ℤ ℚ ℝ ℂ (!144),
131 the Samogitian E with dot above and macron (!147), Unicode minus sign (!163).
132 * Change <Compose> <^> <-> to mean superscript minus instead of macron (!162).
133 * Delete compose sequences that mix top-row digits with numpad digits (!139)
134 or mix upper & lower case letters (!144).
135 * Delete some unuseful compose sequences meant for Bépo layout (!146).
136 * Delete compose sequences using leftcaret & rightcaret keysyms (!163).
137 * Remove KOI8-R character set from en_US.UTF-8/XLC_LOCALE (!148).
138 * Map sr locales to sr_RS compose files (!161).
139
140## Release 1.8.1
141
142 * Fix --enable-thread-safety-constructor configure option
143
144## Release 1.8
145
146 * Add --enable-thread-safety-constructor configure option (default: enabled)
147 to call XInitThreads() from the library's constructor, thus enabling
148 thread-safety and locking by default. This may expose bugs in clients
149 which did not follow documented rules for calling libX11 functions.
150 * Fix Ethopian (am_ET.UTF-8) compose sequences.
151 * Remove 8 compose sequences that generated the input symbols.
152 * Add compose seuences for abovedot (\<period\> \<space\>),
153 diaeresis (\<quotedbl\> \<space\>), and ogonek (\<semicolon\> \<space\>).
154
155## Release 1.7.5
156
157 * Avoids a segfault when an invalid name is used for opening a display.
158
159## Release 1.7.4
160
161 * Fixes the "Unknown sequence number" error by allowing backward jumps
162 in the sequence number when widening it.
163 * Any changes to virtual modifiers get propagated properly.
164 * Greek case-conversion tables were updated to Unicode Data 14.0.
165 * Compose sequences for ☮ ⇐ ⇑ ⇓ were added,
166 being the following: OY, ()), =<, =^, and =v.
167 * Hammer-and-sickle can be composed with question mark plus backslash.
168
169## Release 1.7.3
170
171 * Fixes a hanging issue in _XReply() where the replying thread would
172 wait for an event when another thread was already waiting for one.
173 * Avoids a crash when the X connection gets broken while closing down.
174
175## Release 1.7.2
176
177This is a bug fix release, correcting a regression introduced by and
178improving the checks from the fix for CVE-2021-31535.
179
180## Release 1.7.1
181
182This is a bug fix release, including a security fix for
183CVE-2021-31535, nls and documentation corrections.
184
185 * Reject string longer than USHRT_MAX before sending them on the wire
186 * Fix out-of-bound access in KeySymToUcs4()
187 * nls: allow composing all breved letters also with a lowercase "u"
188 * nls: add 'C.utf8' as an alias for 'en_US.UTF-8'
189 * Nroff code fixes
190 * Comments fixes
191
192## Release 1.7.0
193
194Version 1.7.0 includes a new API, hence the change from the 1.6 series
195to 1.7:
196
197 * XSetIOErrorExitHandler which provides a mechanism for applications
198 to recover from I/O error conditions instead of being forced to
199 exit. Thanks to Carlos Garnacho for this.
200
201This release includes a bunch of bug fixes, some of which have been
202pending for over three years:
203
204 * A bunch of nls cleanups to remove obsolete entries and clean up
205 formatting of the list. Thanks to Benno Schulenberg for these.
206
207 * Warning fixes and other cleanups across a huge swath of the
208 library. Thanks to Alan Coopersmith for these.
209
210 * Memory allocation bugs, including leaks and use after free in the
211 locale code. Thanks to Krzesimir Nowak, Jacek Caban and Vittorio
212 Zecca for these.
213
214 * Thread safety fixes in the locale code. Thanks to Jacek Caban for
215 these.
216
217 * poll_for_response race condition fix. Thanks to Frediano Ziglio for
218 the bulk of this effort, and to Peter Hutterer for careful review
219 and improvements.
220
221Version 1.7.0 includes a couple of new locales:
222
223 * ia and ie locales. Thanks to Carmina16 for these.
224
225There are also numerous compose entries added, including:
226
227 * |^ or ^| for ↑, |v or v| for ↓, ~~ for ≈. Thanks to Antti
228 Savolainen for this.
229
230 * Allowing use of 'v' for caron, in addition to 'c', so things like
231 vC for Č, vc for č. Thanks to Benno Schulenberg for this.
232
233 * Compose sequences LT, lt for '<', and GT, gt for '>' for keyboards
234 where those are difficult to access. Thanks to Jonathan Belsewir
235 for this.
236