R5 changes: (see below for details)

o Numerous bug fixes

o Continued gradual conversion towards ANSI Common Lisp

o Performance improvements to image code

o Multiprocess locking and error reporting made more robust

o Event queue consing reduced

o ICCCM support

Details of changes since R4:

R4.1 changes:

o Fix reported bugs and to include the vendor-specific
  bug-fixing and performance-improving patches that I recently received.

o Code compiled with the R4 CLX will work with the R4.1X CLX, but code
  compiled with the R4.1X CLX will NOT work with the R4 CLX.  I made an effort
  to ensure backward binary compatibility with R4 CLX so that old code doesn't
  have to be recompiled to still work.  It does have to be recompiled to fix
  an event-queue bug, since the fix involved a change to the event-loop macro.

R4.2 changes:

o Atoms and visuals are now correctly maintained in a separate namespace from 
  windows, pixmaps, cursors, fonts, gcontexts, and colormaps.

o I have made an attempt to make socket code work for kcl and ibcl.  I have
  akcl here, but not kcl and ibcl, so it's only guesswork that kcl and ibcl 
  works.

o compile-clx and load-clx do more pathname merging to work around problems
  in some lisp implementations. *default-pathname-defaults* is never bound 
  anymore.

o Some ansi common lisp stuff.  If you have :ansi-common-lisp on *features*,
  CLX will:

  - Use the common-lisp package instead of the lisp package.

  - Use the common lisp condition system, being careful not to stomp on 
    define-condition and type-error.

  - Use declaim instead of proclaim.

  - Use the dynamic-extent declaration for rest args and closures.

  - Use print-unreadable-object.

o Code compiled with the R4 and R4.1 CLX will work with the R4.2 CLX, provided
  you don't have :ansi-common-lisp on your features list.  Code compiled with 
  the R4.2 CLX will NOT work with the R4 CLX.

R4.3 changes:

o Changed the ansi-common-lisp feature to clx-ansi-common-lisp.

o A new package.l file has been introduced.  All the package operations that
  were in the other files have been moved to package.l.  Because of this, 
  the compile-clx and load-clx functions which are defined in the defsystem.l
  file have been moved to the user package from the xlib package, since the xlib 
  package isn't defined when the defsystem.l file is loaded.

o excldefsys.l has been merged into defsystem.l.  You don't have to rename
  excldefsys.l to defsystem.l anymore.

o User-specified-size/position-p hints are now set correctly.
  These hints were being ignored if the size-hints structure did not
  define the corresponding geometry slots. But ICCCM declares these
  slots to be obsolete.

o (setf wm-command) has been changed to use PRIN1 inside the ANSI Common Lisp
  form WITH-STANDARD-IO-SYNTAX (or the equivalent defined in dependent.l), with
  elements of command separated by NULL characters.  This enables 
    (with-standard-io-syntax (mapcar #'read-from-string (wm-command window)))
  to recover a lisp command.

o A typo in X-TYPE-ERROR has been fixed.

o The WITH-GCONTEXT macro has been changed so that if you supply nil for a
  property value, WITH-GCONTEXT is will leave the property unchanged.  It used
  to always change the property without regard for whether the supplied value
  was nil.  This change to how the macro expands, so user code has to be 
  recompiled for the change to take effect.

o Since ANSI Common Lisp doesn't have CHAR-BIT, the implementation of
  DEFAULT-KEYSYM-TRANSLATE is now implementation dependent in ANSI Common Lisp
  implementations, with the default doing nothing to character objects.  In
  non-ANSI Common Lisps and lispms, it still uses CHAR-BIT. The definition of
  DEFAULT-KEYSYM-TRANSLATE has been moved to dependent.l.

o The image putting, getting, and copying code has been sped up a bit for lispm, 
  lcl3.0, and excl.

o The lcl3.0 io code has been sped up a bit by using read-array instead of
  fast-read-byte.

o READ-RESOURCES now handles any lines that start with # and don't start with
  #include as comments.

R4.4 changes:

o Fixed typo in DEFAULT-KEYSYM-TRANSLATE.

o In events, CurrentTime (encoded as 0 in the protocol) decodes to NIL instead 
  of 0.

o NIL now translates to and from the atom-id of 0.

o A new variable *OUTPUT-BUFFER-SIZE* has been introduced, with value 8192.
  Now, instead of the buffer creating code always creating output buffers of 
  length 8192 bytes, they create output buffers of length *OUTPUT-BUFFER-SIZE* 
  bytes.

o GCONTEXT-CACHE-P, COLORMAP-PLIST and CURSOR-PLIST have been exported.

o If CREATE-GCONTEXT is given a rect-seq as a clip-mask, then a
  SetClipRectangles request must be sent to initialize the clip-mask.  The logic
  to do this is located in FORCE-GCONTEXT-CHANGES-INTERNAL, but this wasn't
  being called because create-gcontext always forces local/server-state
  timestamps equal.  Same problem for dash lists.  CREATE-GCONTEXT has been
  fixed so that in these cases it makes the timestamps unequal so that
  FORCE-GCONTEXT-CHANGES-INTERNAL is called.

o ANGLEP type check sped up for excl.  Arc drawing should be lots faster.

o RATIONAL type definition for kcl now takes the correct optional args.

o (SETF FONT-PATH) changed to return the value

o Fixed typo in the hex parsing in READ-BITMAP-FILE

o Made READ-RESOURCES more robust about weird resource files.

o New variable *DEF-CLX-CLASS-USE-DEFCLASS*, which controls whether DEF-CLX-CLASS
  uses DEFCLASS.  If it is a list, it is interpreted by DEF-CLX-CLASS to be a list
  of type names for which DEFCLASS should be used.  If it is not a list, DEFCLASS
  is always used.  IF it is NIL, DEFCLASS is never used, since NIL is the empty
  list.  By default, it's T in Genera, NIL otherwise.

o Fixed typo in DEFINE-CONDITION for #-(or lispm clx-ansi-common-lisp excl lcl3.0).

o Fixed typo in MERGE-RESOURCES 

o In Lucid lisp, the functions aref-card8, aref-int8, aset-card8, aset-int8,
  aref-card16, aref-int16, aref-card32, aref-int32, aref-card29, aset-card16,
  aset-int16, aset-card32, aset-int32, and aset-card29 Have been fixed so that
  they can be used inline with the development compiler.

o The default value of the BYTE-LSB-FIRST-P argument to CREATE-IMAGE has been
  changed from always T to T on LSBFirst machines and NIL on MSBFirst machines.

o The order of the color values returned by ALLOC-COLOR when a color name is supplied
  as an argument is fixed so that the screen color correctly is returned as the second 
  value and the exact color is correctly returned as the third value.  The order was 
  backwards.

o The internal WITH-BUFFER-INPUT and WITH-BUFFER-OUTPUT macros have been
  changed to wrap macrolet around body only when necessary.  This simplifies the
  compiler's job for non lisp machines.

o All uses of DEFINE-CONDITION have been changed to include a slots argument,
  even if that argument is NIL -- the argument is not optional.

o DEFINE-CONDITION is no longer exported from the XLIB package.

o New functionality has been added to make-pixmap and make-window.  They may
  now take a :PIXMAP or :WINDOW argument (respectively).  If non-NIL (default is
  nil), they will use that argument as the pixmap or window object to be set.
  Otherwise they will create a new pixmap/window object.  This whole schmeel is
  necessary because creation of window and pixmap objects in CLX doesn't go
  through the CLOS initialize-instance mechanism.

o The DESCRIBE-WINDOW debug utility has been fixed to not use strange
  lisp machine format codes.

o Numerous Allegro specific changes in support of Allegro CL version 4.0.

R4.5 changes:

o Fixed READ-VECTOR-CARD8 and WRITE-VECTOR-CARD8 to work with arbitrary vectors.

o Changed COMPILE-CLX and LOAD-CLX to use the verbose mode of COMPILE-FILE and LOAD.

o Added a conditional for HPUX to COMPILE-CLX.

o Changed DISPLAY-CONNECT to save the default colormap ID in the ID database.

o Added new keyword arguments :PROGRAM-SPECIFIED-POSITION-P and :PROGRAM-SPECIFIED-SIZE-P
  to SET-WM-PROPERTIES and corresponsing slots in the WM-SIZE-HINTS structure.
  These control the appropriate flags in the size hints.  The old way of controlling these
  flags, with the :X, :Y, :WIDTH, and :HEIGHT arguments, is now obsolete due to changes
  in the ICCCM.

o Removed bogus declarations from the SETF expander for WM-NAME.

o Defined a proper SETF function for CUT-BUFFER when in ANSI Lisp.

o Fix the encoding of the revert-to argument to SET-INPUT-FOCUS.

o Fix a fencepost error in STORE-COLORS.

o Fix TEXT-EXTENTS and TEXT-WIDTH to handle font changes properly.

o Fix TEXT-EXTENTS-LOCAL to handle negative ascents and descents properly.

o Fix DRAW-IMAGE-GLYPHS to not try to write more than 255 glyphs.

o Added conditionalizations for Minima, a new operating system under development at Symbolics.

o Some gratuitous changes in the Symbolics-specific code.

o Removed *EVENT-LOOP-VERSION* and support for pre-R4.1 compiled code.

o In Lucid, fixed HOLDING-LOCK to clean up on timeout.

o Gcontexts and fonts without associated displays now print correctly.

Requests that send "strings" of two byte font indices can *not* assume that
the two byte objects are being written on two byte boundaries.  The simplest
fix was just to modify the write-*-card16 functions to use a new macro that
writes one half of the object at a time.  The only undesirable affect of
this is that CLIENT-MESSAGE and CHANGE-PROPERTY are slightly slower for
card16 data than they were before.
    NEW macro
	-- write-card16-by-bytes			bufmac.l
    CHANGED functions:
	-- write-list-card16				buffer.l
	-- write-list-card16-with-transform		""
	-- write-simple-array-card16			""
	-- write-simple-array-card16-with-transform	""
	-- write-vector-card16				""
	-- write-vector-card16-with-transform		""

Print functions changed to use write-string instead of princ where
possible.  This allows for much cleaner printing when *print-circle* is
true -- princ is required to use *print-circle*, even for strings!
Write-string is, of course, not so burdened.
	-- print-color					clx.l
	-- print-display				""
	-- print-drawable				""
	-- print-visual-info				""
	-- print-colormap				""
	-- print-cursor					""
	-- print-gcontext				""
	-- print-screen					""
	-- print-font					""
	-- print-resource-database			resource.l
	-- print-image					image.l

Changes to display tracing: In a multiprocessing system is it very helpful
to know what process wrote or read certain requests.  Thus I have modified
the format of the trace-history list.  It is now an alist of: ((id .
more-info) .  byte-vector).  (more-info is a list returned by the
trace-more-info function).  Also added the ability to suspend and resume
tracing without destroying the trace history.  Renamed 'display-trace' to
'show-trace' to avoid confusion.  (Having both 'trace-display and
'display-trace wasn't such a hot idea).
	-- lots-o-stuff					debug/trace.l

Image-glyph functions had a different argument order than non-image glyph
functions.  Image-glyph functions changed to be compatible with others.
Declarations in draw-glyphs* functions were wrong.
	-- draw-image-glyphs				text.l
	-- draw-image-glyphs8				text.l
	-- draw-image-glyphs16				text.l
	-- draw-glyphs8					text.l
	-- draw-glyphs16				text.l

Quote #.'ed arrays to accomodate CLTL1 lisps
	-- empty-data constants				image.l

Set-input-focus fix wasn't finished
	-- set-input-focus				requests.l

Standardized strange integer type specifier in keysym macro
	-- keysym					translate.l

===============================================================================
Franz specific changes, applicable to Allegro and Extended Common Lisps:
(note that all these changes are #+excl or #+allegro, so if you're not
 using our product these changes are "commented" out)
-----------------------------------------------------------------------
Atom-cache hash table type changed to #'equal.  Resource-id-map has table
type changed to #'equal.
    NEW macro
	-- atom-cache-map-test				depdefs.l
    CHANGED def-clx-class
	-- display					clx.l
    CHANGED macro
	-- resource-id-map-test				depdefs.l

Don't bother to import require, provide, since we're using the CLTL1
package.  Also put the requires and provides inside eval-when to make the
compiler happy.  Don't redefine typep, instead push our customizations onto
the typep handling list.
	-- toplevel forms				excldep.l

Old code removed from file
	-- removed some cmacros				exclcmac.l

Allegro >=4.0 now does support with-standard-io-syntax and
print-unreadable-object.
	-- with-standard-io-syntax{,-function}		dependent.l
	-- print-unreadable-object{,-function}		depdefs.l

Conditionalizations in Makefile cleaned up.
	-- 						exclMakefile

Descriptive comment added to holding-lock
	-- holding-lock					dependent.l

Added typep transformers for all CLX types.
	--						excldep.cl

R5.0 changes:

o Changed occurrances STRING-CHAR to BASE-CHAR.

o Fixed some type declarations to use type NULL instead of NIL.

o Various fixes to vendor-specific code.

o Detect attempts to use images an incorrect depth.

o Stop doing case conversion on resource names be default.