home *** CD-ROM | disk | FTP | other *** search
- 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.
-