MCL 5.0 Release Notes --------------------- (Note: This is an initial draft of the MCL 5.0 release notes and is subject to change for the final release; however, it is fairly complete and accurate.) Thanks to the community of MCL users for your feedback, suggestions, enhancements, bug reports, and bug fixes. ---------------------------------------- MCL 5.0 runs fully native in Mac OS X. User code must be Carbon-compatible to run properly. All previous patches are included. This MCL release is CarbonLib based and includes new ccl:library;interfaces;*.lisp that are translations of Universal Interfaces 3.4.1 (thanks to Brendan Burns). These interface files include the Carbon "traps". MCL 5.0 requires Mac OS 8.0 or later. (Actually it has not been tested on Mac OS versions prior to 8.5). It also requires a version of CarbonLib equal to or later than 1.4 in the Extensions folder of the System folder. The compiled file type is ".cfsl" to denote Carbon compatibility. The values of both *.fasl-pathname* and ccl::*.pfsl-pathname* are #P".cfsl". New *features* include :CARBON-COMPAT and :CCL-5.0. The :CARBON-COMPAT feature is used in MCL source files to include both carbon and pre-carbon versions of some functionality. You may wish to do the same. If you wish to begin migrating your code to carbon compatibility, something like the following can be used to find which "traps"/entry-points are used that are not in Carbon. (let* ((oldies nil) (ilib-sld (ccl::interfacelib-sld))) (maphash #'(lambda (k v) (declare (ignore k)) (when (eq (ccl::slep.sld (car v)) ilib-sld) (push v oldies))) ccl::*shared-library-entry-points*) oldies) NOTE: The trap emulator is used when attempting to use the old name of a trap whose name has changed; e.g. #_DisposHandle should be changed to #_DisposeHandle. However, note that if you compile a file containing an obsolete trap name on Mac OS 9 etal you will just get the warning about "using trap emulator" but an attempt to use that compiled file later on Mac OS X native will crash. So please heed those warnings! Change calls to obsolete traps to use the current names! Note that most of the name changes occurred around 1996 or 1997 so there has been plenty of time to get up to date. This release also works with Classic emulation on Mac OS X. To run in Classic mode under 0S X requires CarbonLib 1.4 (which ships with OS 9.2.1, which in turn ships with Mac OS X 10.1) or later. Bugs Fixed ---------------------------------------- For the solution to a Mac OS X problem regarding threads and exception handling we owe thanks to: /* This code is derived from David Keppel's QuickThreads -- Threads-building toolkit. Copyright (c) 1993 by David Keppel Permission to use, copy, modify and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice and this notice appear in all copies. This software is provided as a proof-of-concept and for demonstration purposes; there is no representation about the suitability of this software for any purpose. */ And also thanks to thread code from OpenMCL that adapts David Keppel's code for the PPC. The function set-dead-keys now does nothing on OS versions >= 10.2. The structure that it modifies is read only in 10.2. Add function ccl::jaguar-p, i.e. is OS version >= 10.2 GET-STRING-FROM-USER and MESSAGE-DIALOG take a :theme-background argument. The default is T. Some button sizes in built in dialogs adjusted for OSX. Add do-nothing appleevent handler for :|appr| :|thme| Some Fred display fixes from Shannon Spires. Fix selected-window on application-resume (from Shannon Spires). Pointerp no longer conses. Increase tsp and vsp stack sizes if osx-p for performance reasons. The extension Platinum Pop Up Menus just sets *use-pop-up-control* true if osx-p. Fix function io-buffer-read-bytes-to-vector. Fix in ccl:examples;fred-word-completion.lisp Function GETHASH fixed for a problem more likely to occur if EGC is enabled but in fact could have occurred any time if a GC happened between doing one thing then another with equalp hash tables. Old bug. Add support for mice with scroll wheels. Suggested and debugged by Waldemar Horwat. The variable ccl::*wheel-scroll-factor* controls how many lines each click will scroll. The initial value is 4. Interface toolkit modified to make it possible to drag IFT items into windows that were not created with IFT. Thanks to Shannon Spires. Added function ccl::set-preferred-size-resource (psize) where psize is a size in bytes. The MCL "partition size" under OSX is set to the maximum of the preferred size in the size resource or 20,000,000 bytes. This function provides a way to change the size resource. The change will not "take" until reboot and if used will also cause (ROOM) to provide misinformation until reboot. (Yes, it's ugly!) It is doing just what you can also do with Resedit. Fixed apropos-dialog so the default button throbs and pulsates as default buttons normally do on OSX, rather than having a blue outline. TWIMC, default buttons must be contained in the window, not in a subview of the window. View-default-size for control-dialog-items more likely correct on OSX. Fixed ccl:interfaces;carbonevents.lisp - (defconstant foo bar/1000) => (defconstant foo (/ bar 1000)) Format fixed to not error on float NaNs or Infinity. Format ~F and ~E fixed for some cases when neither w nor d is provided. Fix so edit-definition finds methods defined as below - from Gary Warren King (defgeneric foo (a b) (:method ((a bar) (b baz)) ...) ...) Function fsqrt is faster. |;-reader| treats linefeed like newline if *linefeed-equals-newline* is true - the default - to deal with Unix text files. New Features ---------------------------------------- Menu item command keys may now have one modifier, e.g. '(:shift #\n). It's easy to extend this to more than one modifier if there is any interest. No more references to "Chicago" font. All are replaced by (ccl::sys-font-spec). Added an enhancement to "ccl:examples;platinum-pop-up-menus.lisp" that shows the icon of the selected item, if any, in the menu body text when pop-up-menu-item-display is :selection. From Terje Norderhaug. The function ccl::bbox-p is defined (i.e. are we running in Classic emulation). set-pop-up-item-check-mark no longer conses. Attempting to redefine a generic function as a regular function causes a continuable error. Choose-file-dialog etal resolve aliases for the :directory argument. Documentation button in Apropos dialog works for generic functions and classes. From Gary Warren King. The function load-patches does resolve-aliases. From Terje Norderhaug. Enforce read-only in set-structure-slot-value. Enforce slot type in set-structure-slot-value. Added variable *check-slot-type*. If true, enforce slot type in %shared-initialize, set-slot-value, and initialize-class-and-wrapper. The initial value is NIL. True value has not been tested much and probably doesn't work for primary classes. Proceed with caution. Add "Apple;Carbon;Multimedia" to ccl::*lazy-shared-libraries* for #_GetGraphicsImporterForFile etal. Changed Load File... (cmd-y) and Open... (cmd-o) to include files wih no mac-file-type (i.e. is 0). The function LOAD is changed as follows: If the file has no mac-file-type (i.e. it is 0), then if it's extension is .cfsl assume it is a compiled file, otherwise assume it is a Lisp file. There is a Fred command c-x c-f that changes the line endings for the whole buffer from #\Linefeed to #\Newline. Thus a person using Fred can at least read Mac OS X files such as .c, .p, .h files which terminate lines with #\Linefeed. Move the CERROR about redefining a generic function as a regular function from compile time to run time. Ansi-make-load-form is included. This adds on optional environment argument to make-load-form methods and changes the argument list of the function make-load-form-saving-slots. This change is not backwards compatible. See ccl:library;ansi-make-load-form.lisp for details. Conditionalize out choose-process-dialog in ccl:examples;appleevent-toolkit because #_PPCBrowser does not exist in CarbonLib. Add stream-read-sequence for fred-delegation-mixin from Shannon Spires. Added macro with-cfstrs from John Montbriand. Known problems: ---------------------------------------- We thought the floating point problem with dual processor G4's was fixed in OS 10.1.5. Apparently not. It just occurs less frequently. Dont yet know whether 10.2 has fixed the problem. It may not have. No support for long file names. Balloon help is not implemented; neither is Help of any kind. FF-LOAD does not work if OSX-P and never will. Replace uses with CFM shared libraries. ccl:examples;driver.lisp is no more. ccl:examples;notinrom folder is no more. ccl:examples;library-info.lisp does not work. ccl:examples;define-interrupt-handler.lisp does not compile. Static-text-dialog-items with small bold font e.g. '("geneva" 9 :bold) lose the boldness unless one turns off smoothing for fonts whose size is <= 8 rather than anything larger. Also spacing is weird for small plain fonts (an OS X bug, workaround unknown at this time). -end-