R4 changes:

o Numerous bug fixes

o Multiprocess locking and error reporting made more robust

o Event queue consing reduced

o ICCCM support

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.
