LispWorks Patch Release 5.1.2 Copyright (c) 2008 LispWorks Ltd. All rights reserved. See below for installation instructions. CHANGES IN VERSION 5.1.2 This patch release includes most of the private patches issued for LispWorks 5.1 from April 17, 2008 to November 1, 2008. CAPI Correct the drawing of CAPI:ELLIPSE, taking line thickness into account and positioning in the center. Fix error 'CAPI:PRINT-TEXT is called with :CHOSEN-PRINTER'. #36726 Prevent errors when making a SIMPLE-PANE with a scroll bar. CAPI/WIN32 Fix an error when user presses Return on :MULTIPLE-SELECTION and :EXTENDED-SELECTION LIST-PANELS. #36620 Fix programmatic scrolling with operation :MOVE. Fix CAPI:DROP-OBJECT-PANE-X value to include the CAPI:%SCROLL-X% scroll position value. Same for the Y coordinate. Now it matches CAPI/COCOA. #36475 Allow CAPI:RICH-TEXT-PANE to work with Unicode. #36450 Fix a bug that causes a character to be entered with an accent after starting LispWorks with some keyboard layouts (default input language). This is a fix for the lisp-hug message "Belgium (French speaking part) only bug?" Eliminate a warning when dismissing a context menu in a RICH-TEXT-PANE. #36491 Fix the :LOAD-FILE and :SAVE-FILE operations on RICH-TEXT-PANE when in a Windows code page that is not Latin-1. This is a fix for the lisp-hug message "open/save RTF error". Improve display of RICH-TEXT-PANE inside WITH-ATOMIC-REDISPLAY. #36471 Ensure in all cases that the text is visible when mapping a TEXT-INPUT-PANE that was created unmapped initially. #36250 Do the selection-callback when the user clicks on the selected item in a :SINGLE-SELECTION TREE-VIEW. #36755 Prevent the editor-pane and list-panel from seeing a mouseup message after LispWorks is activated by a mouse click when another application is active. This prevents spurious cursor movement in EDITOR-PANEs. #36693 #36694 CAPI/COCOA Include the prefix set by SET-DEFAULT-INTERFACE-PREFIX-SUFFIX in newly created INTERFACE titles. #36367 Eliminate error 'No applicable method ... CAPI-LIBRARY:RAISE-REPRESENTATION' when doing Incremental Search in an EDITOR-PANE that is displayed in a dialog. #36562 Fix creation of a RICH-TEXT-PANE without :PARAGRAPH-FORMAT. #36376 Improve display of RICH-TEXT-PANE inside WITH-ATOMIC-REDISPLAY. #36471 CAPI/MOTIF Fix the Use Default button on the Add Printer... dialog. #36726 Allow popup menus to remain on the screen when the user clicks and releases the mouse button quickly. #36727 Fix resizing of top level interface. #36301 SYSTEM Eliminate rare <**> message and crash due to uninitialized pointer bug. #36587 #36488 Eliminate spurious "Waiting INDIRECTLY for a lock ...." errors. #36587 Fix a crash when using TRY-COMPACT-IN-GENERATION on Windows. #36383 Fix sluggish behavior in 64-bit LispWorks on unix when the result of getdtablesize is not divisible by 64. #36410 Reduce memory consumption by allowing reuse of stack memory in 64-bit LispWorks without waiting for the next GC. Fix FORMAT ~E directive for some cases where rounding the argument gives a correct result. Error was "Error: [Internal] Failed when forcing format-exp-aux..." #36526 Make escaping of printed symbols depend on the macro chars in the readtable, to ensure that they can be read back again. #36551 Fix compilation of calls to functions with undefined FTYPE result types, such as access to defstruct slot with unknown type. Avoid delays in CL:RANDOM, by using /dev/urandom if available, as /dev/random can hang. #36546 Make HCL:SET-PROMOTION-COUNT work with count = 15. Note however that this API will be deprecated in the next release, please contact lisp-support if you intend to use HCL:SET-PROMOTION-COUNT. #36347 Ensure that some prompting functions used by the REPL debugger display their output before asking the user for input. #36714 Fix MP:PROCESS-KILL on a simple process. #36488 Fix some hanging situations with pthreads. #36451 Prevent a deadlock when handling interrupts. #36587 Fix memory management on Linux to avoid collision with loaded dynamic objects without .so extension. #36369 #36508 Guard against a rare bug in unlocking. #36587 Fix a bug in SLEEP seen when the Windows system time gets set to a time before the Lisp image was started. #36353 Fix composing of Unicode characters in pathnames in 64-bit LispWorks for Macintosh. #36463 Allow switching off Windows themes before any window was opened. #36589 Fix occasional hanging when using sockets or PostgreSQL. #36733 Fix sorting of very long lists. #36729 Prevent processes stopping at random. #36488 #36587 Fix rare errors 'waiting for a lock that is locked by dead stack ...'. #36587 Speed up reading from pipe streams and CALL-SYSTEM-SHOWING-OUTPUT on Windows. #36583 On x86 platforms, fix debugger command :RET from a function inside a catch frame. #36632 CLOS Avoid error in REMOVE-METHOD on a method that is not associated with a generic function. #36465 Prevent an error in a redefinition of a class that removes a slot with :ALLOCATION :CLASS or a condition class that removes the :REPORT option. #36497 SOCKETS Improve performance with OPENSSL when /dev/urandom exists. #36546 Fix a leak of socket stream handles on Windows. #36509 COMPILER Fix unexpected NaN results after running code compiled at optimize float 0 on x86 platforms. #36523 Fix "*** Ran out of patterns in (DYNAMIC-BIT).." errors. #36366 Fix compiler warnings and/or runtime errors when using the result of MULTIPLE-VALUE-CALL in a function call that can be optimized for specific types. This is a fix for the lisp-hug message "Possible compiler bug in zerop/multiple-value-call (LW5.1 Win32)" Fix compilation of (CHARACTERP ). #36525 #36512 Fix optimization of POSITION with a string argument when :END is supplied as NIL. EDITOR Fix error when entering ~ in an in-place filename completion window. Fix infinite loop when editing code with missing double quote. #36482 Define and export MOUSE-LOCATE-FORM #36362 COMMON SQL Allow independent objects of the same class to be found via different :IMMEDIATE joins. #36680 Fix problems debugging with PostgreSQL on Unix. #36308 #36337 FOREIGN LANGUAGE INTERFACE Give correct error message when failing to load a dylib on Mac OS X. Fix 64-bit function arguments in the range from -(2^31) to -1 in 32-bit LispWorks. This is a fix for the lisp-hug message "Problem with long-long NSNumber" COM/AUTOMATION Allow per-user registration of COM/Automation components. Also fix unregister to remove the typelib key when called from the command line. #36352 LISPWORKS IDE Fix the Debugger's Frame > Method Combination menu item. Show the first match when double-clicking on a filename in the Search Files tool. #35444 Ensure that some prompting functions used by the REPL debugger display their output in the Listener before asking the user for input. #36714 Cope better with 16-bit strings in the Inspector. #35591 DELIVERY Fix generic functions with AND or OR method combination in delivery. #36400 NOTES Issues marked #x have been previously reported in (Lisp Support Call #x). For a description of the changes in version 5.1.1 please refer to "CHANGES IN VERSION 5.1.1" below. For a description of the changes in version 5.1.0 please refer to the Release Notes distributed with the product in the Installation Guide and Release Notes manual. CHANGES IN VERSION 5.1.1 This patch release includes most of the private patches issued for LispWorks 5.1 to April 16, 2008. CAPI Allow SWITCHABLE-LAYOUT and TAB-LAYOUT with :COMBINE-CHILD-CONSTRAINTS T to be stretched if any of the children can be stretched. Always make a new object when obtaining a metafile from the clipboard. #36226 Delay the :CREATE-CALLBACK for dialogs until after computing the default size. #36111 Make accelerators work for menus that have not yet been displayed. Fix updating a PINBOARD-LAYOUT when a PINBOARD-OBJECT changes. #36279 CAPI/WIN32 Pass correct item(s) to the action-callback in :MULTIPLE-SELECTION and :EXTENDED-SELECTION LIST-PANELS. #36207 Fix increasing delays with DISPLAY-PANE containing large amounts of text. #36228 Eliminate warnings about deprecated foreign type when using RICH-TEXT-PANE. #36229 Fix setting of the caret position in TEXT-INPUT-PANE during creation. #36153 Fix setting the selection in TEXT-INPUT-CHOICE during creation. #36153 Prevent the selection callback when clicking on "dead" area (that is, where there are no items) of a LIST-PANEL. #36154 When a double click activates a LIST-PANEL window, force the selection before performing the action callback. #36257 Avoid crash if the programmer makes mistakes when creating DOCUMENT-FRAME. #36210 Ensure update of accelerators in MDI menus. #36146 Fix situations that cause infinite number of mouse events, for example in a PINBOARD-LAYOUT with :MOTION in its input model. #36165 Fix potential hanging after destroying interfaces. Ensure that the text is visible when mapping a TEXT-INPUT-PANE that was created unmapped initially (for example, in a hidden tab of a TAB-LAYOUT). #36250 Fix the :CHARACTER constraint for MULTI-LINE-TEXT-INPUT-PANE or DISPLAY-PANE with certain fonts, for example Lucida Console. #36171 Fix moving a :MOVABLE-BY-WINDOW-BACKGROUND interface window inside MDI container. #36214 CAPI/MOTIF On Linux allow use of OpenMotif 2.3, since it is binary compatible with OpenMotif 2.2. Previously you would see this error: Error: Motif version string ("@(#)Motif Version 2.3.0") indicates invalid library version. Requires (("Lesstif" "2.1") ("Motif" "2.2")). To use this, you must make a symbolic link libXm.so.3 -> libXm.so.4. #36372 CAPI/COCOA Fix WITH-INTERNAL-METAFILE on Cocoa when it is given a :PANE argument. #36226 Fix MULTI-LINE-TEXT-INPUT-PANE with :CHANGE-CALLBACK. Fixes to make accelerators work. CAPI/MOTIF Add a missing foreign template for X-ERROR-EVENT. SYSTEM Fix a bug in SLEEP which could prevent it from running the scheduler. #36328 Prevent some errors with pathnames that have FILE-NAMESTRING "." or "", for example when calling CHANGE-DIRECTORY with an invalid pathname. #36300 Fix CLOSE with :ABORT T on a new file. #36180 Fix hanging seen on Linux when making repeated calls to MP:NOTICE-FD without idling between these calls. #36308 Correct the printing of an unlocked MP:MAILBOX. #36314 Fix hash table with non-standard :TEST function. #36145 Prevent some error messages from the GC on 64-bit SPARC. PROFILER Fix profiling while in foreign code on non-Windows platforms. #36142 EDITOR Prevent cursor-right from scrolling an editor window after Bottom of Window command. #36307 In Mac OS X editor emulation, make the mouse position the cursor (the insertion bar) to the left or right of a character according to whether the mouse click occurs in the left or right half of the glyph. #36221 Fix infinite loop in Lisp Mode's Fill Paragraph (Alt+Q) when a comment is at the start of the buffer. Fix some rare errors. Fix Go Back command to match its documentation. Fix a bug seen when with evaluating forms in the echo area. COMMON SQL Allow long PostgreSQL queries to be interrupted on Unix. FOREIGN LANGUAGE INTERFACE Improve the caching of long strings passed to foreign code, avoiding an error "Failed to allocate foreign object." #36259 Fix crashes when foreign code calls into Lisp and the pthread thread dies immediately after Lisp returns. #36253. LISPWORKS IDE Make the Tools menu accelerators work before the menu has been displayed. On Windows, make the Edit menu display its accelerators. Improve Next Search Match (Ctrl+X `). On X11/Motif, fix potential hang when switching layout in the Debugger. Fix cross referencing for functions that contain breakpoints or have been stepped in the Stepper tool. #36085 On Cocoa, fix crash in the Tools menu accelerator. #36294 DELIVERY Fix delivery without symbol names on Solaris and HP-UX. PATCHES IN THIS RELEASE These are the filenames of the private patches added in version 5.1.2: action-selected-item-2.lisp apply-in-raw.lisp binding-vector-32.lisp binding-vector-64.lisp call-gc-because-of-some-other.lisp can-eliminate-instruction-p.lisp check-for-complex-deadlocks.lisp complete-filename-with-non-focus.lisp connect-to-external-module.lisp current-process-handle.lisp debug-menu-method-combination-data-for-stack.lisp default-ppd.lisp destroy-stack.lisp directory-search-files-edit.lisp do-p-select.lisp do-representation-scroll.lisp dynamic-bit-constant.lisp ellipse-draw.lisp ensure-ssl.lisp find-type-multiple-value-call-node.lisp format-exp-aux.lisp free-an-object-64.lisp function-typespec-result-and-arg-types.lisp generate-pass-64bit-by-value-on-32bit.lisp get-os-random-integer.lisp get-pane-for-coords.lisp in-section-form.lisp in-sweep.lisp indent-selection-command.lisp ins-bit.lisp internal-listener-ask-the-user.lisp invoke-with-output-to-printer.lisp io-get-time-as-file-time.lisp join-repeated-classes.lisp linux-setup-maximum-memory.lisp locking.lisp make-code-constructor-1-deliv.lisp make-window-representation.lisp maybe-flush-make-instance-keyword-cache.lisp mouse-locate-form.lisp mswindows-close-os-specific.lisp output-cased-symbol.lisp patch-bundle-2.lisp position-character-simple-string.lisp pq-command-complete-2.lisp process-kill.lisp pthread-detach.lisp queue-interrupt-stuff.lisp r-rich-edit-window-class.lisp raise-representation.lisp read-key-translations.lisp recombine-unicode-characters.lisp register-automation-for-user.lisp register-com-for-user.lisp rich-text-char-format.lisp rich-text-rbuttonup.lisp rich-text-read-write-file.lisp rich-text-update-cocoa.lisp rich-text-update-win32.lisp rich-text-update.lisp safe-format-to-limited-string.lisp set-application-themed.lisp set-initial-text-input-pane-selection-2.lisp sg-wakeup.lisp show-popup-menu-at-position.lisp simple-pane-scroll.lisp sort-list.lisp stack-ex-flags.lisp top-level-size.lisp transform-string-position.lisp tree-view-selection.lisp tty-ask-the-user.lisp update-class-and-subclasses.lisp wait-check-for-deadlocks.lisp wait-pipe-stream.lisp with-output-to-limited-string.lisp wm-mousemove.lisp x86-dbg-return.lisp xm-post-popup-menu.lisp These are the filenames of the private patches included in version 5.1.1. LispWorks patch releases are cumulative, so these patches are also in version 5.1.2. action-selected-item.lisp apply-registered-editor-global-preferences.lisp bottom-of-window.lisp calculate-constraints-switchable-layout.lisp can-shift-both-case-p.lisp check-motif-version-string.lisp clipboard-metafile-win32.lisp clipboard-metafile.lisp create-dialog.lisp cursorpos-to-point.lisp delete-point.lisp display-pane-long-string.lisp enprotected.lisp fill-menu.lisp foreign-stack-cache.lisp go-back.lisp initial-em_setsel2.lisp input-model-key-cocoa.lisp input-model-key-motif.lisp input-model-key-win32.lisp integer-bytes-fli.lisp integer-bytes-system.lisp interface-next-match-1.lisp invalidate-pane-constraints-recursive-simple-element-1.lisp lisp-fill-paragraph.lisp list-panel-dead-area.lisp listbox-lbuttondblclk.lisp make-pos-visible.lisp maybe-re-send-signal.lisp mdi-no-container.lisp menu-bar-update.lisp mouse-move-record.lisp multi-line-text.lisp native-process-sleep.lisp next-search-match.lisp non-native-gc-sensitive.lisp null-file-namestring-p.lisp os-specific-open.lisp pane-cursor-style.lisp pq-command-complete.lisp print-mailbox.lisp profile-stacks.lisp rehash-user.lisp scroll-if-not-visible.lisp set-initial-text-input-pane-selection.lisp sparc64-scan-stack.lisp start-and-end-messages.lisp stepper-xref.lisp text-box-extra-height.lisp tools-items-function.lisp top-level-mouse-event-handler.lisp unblock-idle-process.lisp update-for-accelerator-cocoa.lisp update-for-accelerator.lisp with-entry-from-foreign-callable.lisp x-error-event-template-1.lisp There are also patches in the itself sequence which simply define patch sequences; there are not listed above, because they are not interesting. PATCH INSTALLATION INSTRUCTIONS LISPWORKS FOR MACINTOSH Installers for 32-bit LispWorks are found under macos. Installers for 64-bit LispWorks are found under macos64. Mount the disk image 'LispWorksPatches-5.1.2.dmg' or 'LispWorks64bitPatches-5.1.2.dmg', as appropriate. Run the installer. Install the patches in the same location where LispWorks 5.1 is already installed. If the LispWorks installation is not found, patches are not installed. Choose the "Install" option when prompted. The installer will add files to the patches subdirectory. It will also update the CFBundleVersion in the LispWorks application bundle. You can remove the patches by running the patch installer again and choosing the "Uninstall" option when prompted. Uninstalling this patch release will downgrade LispWorks to version 5.1.1 Uninstalling this patch release will not remove any named patches that you have installed in the private-patches directory. LISPWORKS FOR WINDOWS Run LispWorksPatches-5.1.2.exe or LispWorks64bitPatches-5.1.2.exe (as appropriate) and follow the on-screen instructions. This will add files to the patches subdirectory. Add/Remove Programs should now show LispWorks 5.1.2 if you select the option Show updates (on XP) or View installed updates (on Vista). Removing this installation uninstalls the entire LispWorks installation, including the original software and these patches. Uninstalling will not remove any named patches that you have installed in the private-patches directory. LISPWORKS FOR LINUX Installers for 32-bit LispWorks are found under x86-linux. Installers for 64-bit LispWorks are found under amd64-linux. Download either the RPM file or the tar archive; you don't need both. Please note that LispWorks patch releases are cumulative so you don't need to download previous patch releases separately. Patch Installation from the binary RPM file Please refer to the LispWorks Release Notes and Installation Guide for information about using RPM. The distribution files are also provided in tar format in case you do not have a suitable version of RPM or are using another distribution of Linux. Installation of LispWorks patch bundles from the RPM file must be done as root. You need to install patches in the same location as you installed LispWorks. By default LispWorks Professional/Enterprise is installed in /usr/lib/LispWorks or /usr/lib64/LispWorks. If you installed LispWorks here, then install the patches in the standard RPM way: rpm -Uh lispworks-patches5.1-5.1.2-1.i386.rpm or rpm -Uh lispworks-patches5.1-5.1.2-1.x86_64.rpm as appropriate. If you installed LispWorks in another directory, /usr/lisp for example, then use --prefix to relocate the patches to that directory, for example: rpm -Uh --prefix /usr/lisp lispworks-patches5.1-5.1.2-1.i386.rpm The directory name must be an absolute pathname. Relative pathnames and pathnames including shell-expanded characters such as . and ~ do not work. If you need to uninstall the patches, this would be done (again as root) by: rpm -e lispworks-patches5.1 Uninstalling this patch release will downgrade LispWorks to version 5.1.0, and will not remove any named patches that you have installed in the private-patches directory. Patch Installation from the tar archive Again you will need to do this as root. You need to install patches in the same location as you installed LispWorks. By default tar installations of LispWorks are in /usr/local/lib/LispWorks or /usr/local/lib64/LispWorks (for 64-bit LispWorks). For example: cd /usr/local/lib/LispWorks # or your installation directory gzip -d lw51-patches2-x86-linux.tar.gz tar xf lw51-patches2-x86-linux.tar LISPWORKS FOR FREEBSD The patch installer is in the x86-freebsd directory. Login as root to perform the operations below. To upgrade from version 5.1.1, do these two operations: pkg_delete lispworks-patches-5.1.1 pkg_add lispworks-patches-5.1.2.tgz To upgrade from version 5.1.0, do: pkg_add lispworks-patches-5.1.2.tgz To uninstall these patches, do: pkg_delete lispworks-patches-5.1.2 LISPWORKS FOR UNIX Unpack the tar file in the lispworks directory. This will add files to the patches subdirectory. LISPWORKS (ALL PLATFORMS) After installing the new patches, check that there is a call to LOAD-ALL-PATCHES in your siteinit.lisp file. This ensures patches are loaded at startup. You will need to restart LispWorks. You can check if the patches have been loaded by this call: (LISP-IMPLEMENTATION-VERSION) => "5.1.2" This version number appears in Help > About window (or its title). The version number also appears in the Podium Window of the LispWorks IDE on Windows and Motif platforms. On Mac OS X, it appears in the title of the application menu when a new application bundle is created as described below. If you save an image containing the new patches LispWorks will start faster. However on fast modern machines patches will load quickly so it makes little difference. To save an image containing the patches create a save-image script such as this: --------------------- save-lw.lisp ------------------------------- (in-package "CL-USER") (load-all-patches) #+:cocoa (compile-file-if-needed (sys:example-file "configuration/macos-application-bundle") :load t) (let* ((name (format nil "LispWorks ~A~@[~A~]" (lisp-implementation-version) (when (sys:featurep :lispworks-64bit) " 64-bit"))) (exe-name (string-downcase (substitute #\- #\. (substitute #\- #\Space name))))) (save-image #+:cocoa (write-macos-application-bundle (make-pathname :name name :directory (butlast (pathname-directory (lisp-image-name)) 3 ; omit *.app/Contents/MacOS )) :executable-name exe-name) #-:cocoa (merge-pathnames (make-pathname :name exe-name) (lisp-image-name)) :remarks name)) -------------------------------------------------------------------- Use the script as a LispWorks build file, as shown below. On Cocoa, run this in Terminal.app, for example: mymac:/ 9 % cd "/Applications/LispWorks 5.1/LispWorks.app/Contents/MacOS" mymac:/Applications/LispWorks 5.1/LispWorks.app/Contents/MacOS 10 % lispworks-5-1-0-macos-universal -build /tmp/save-lw.lisp On other platforms, run this in a Unix shell or MS DOS command window: prompt> lispworks-5-1-0- -build save-lw.lisp