;;; -*- Mode:Text; Fonts:(CPTFONTB) -*- ;;; RELEASE NOTES FOR PATCH RELEASE 3.272 ;;; (Software Update to Release 3) ;;; THIS IS A PRELIMINARY, WORKING DRAFT. ;;; Unresolved issues are marked by "???" ;;; To print this file on the Lowell net: (fs:hardcopy-file "tish:softserv.doc;3patch.text" :page-headings nil :file-heading nil) Release Notes for Patch Release 3.272 (Software Update to Release 3) LMI Part #3329-0000 Rev 4 - 2/27/87 Table of Contents 1.0 Overview 1.1 Patch Release Components 1.2 Dependencies 1.3 Update Methodology 1.3.1 Site Files and the SYS HOST 1.3.2 Miscellaneous Tips 2.0 Installation Procedure 3.0 Fixes and Features 3.1 System 3.2 Microcode 4.0 Known Limitations and Restrictions 1.0 Overview This document accompanies the patch distribution tape with LMI part number 3328-0000. This patch release is a layered update to LMI Lambda software Release 3 LISP. A summary of the most significant bug fixes and enhancements is in the section 'Fixes and Features', below. These patches have been provided to improve the Lambda operating environment and software integrity. Patches may be required to ensure proper functionality of optional software, system operations, or user applications. Please review the section 'Fixes and Features' to determine the impact, if any, that these patches may have on your software environment. Contact LMI Customer Service with any questions you may have. The complete procedure for loading and saving patches is documented in section 2 below. 1.1 Patch Release Components The visible effect of loading patches is to upgrade the revision levels of standard software components from the original release patch levels. The updated components are 'System Revision Level' and 'Microcode'. Here is part of the output from (PRINT-HERALD) on a "vanilla" (original LMI distribution) Release 3 band: System Revision Level 3.205 Microcode 1593 After loading patches into the original Release 3 band, (PRINT-HERALD) should reflect the following revision levels: System Revision Level 3.272 Microcode 1600 Use (PRINT-HERALD) to verify that patches are being loaded into the proper band and that the upgrade is successful. 1.2 Dependencies As of this writing, there are no known dependencies between patch revision level and optional software products. If any problems are encountered with optional software, contact the LMI Customer Assistance Line for further information. It is always a good idea to recompile applications code under new LMI software releases; this ensures that modifications, e.g. to system macro definitions, are incorporated in your code. 1.3 Update Methodology Although the patches can be loaded into any Release 3 LISP band, the safest procedure is to install the distribution 3.205 band and then load patches. This new band should be saved to disk with the (DISK-SAVE) function. The patched band can then be used for (re)loading any user environment customizations that may be needed -- for example, optional software or in-house application systems and/or patches. The typical procedure is: A] restore the patches and microcode to the SYS HOST B] save updated band on the SYS HOST C] recompile and test applications D] copy microcode to other systems on the network E] save or copy new band(s) on other systems Review the patch information in section 3, below, to determine what changes, if any, are required to make your code consistent with the new patches. You can restore the patch distribution tape from any Lambda host that has both a tape drive *AND* network access to its SYS HOST (see below). The installation procedure automatically restores the files from the distribution tape to the SYS HOST. Note: MODIFYING LMI-PROVIDED SOURCE CODE CAN CAUSE UNPREDICTABLE SYSTEM BEHAVIOR. Compare any "local patches" you may have installed to the distributed patch files to be sure that no conflicts have been created. The sequence of commands used for loading and saving patches is explained in section 2. 1.3.1 Site Files and the SYS HOST The SYS HOST (referred to frequently in LMI documentation) is generally a Lambda system containing a slot 0 file system partition on which the "Release 3.0 LISP Files" (sources) have been loaded. Many Lambda systems running Chaosnet or TCP/IP software can access sources, patches, and site information contained on one SYS HOST. The installation procedure assumes that patches are being loaded into a Release 3 LISP band with VALID SITE INFORMATION. It is at least necessary that each system being updated can access files on its SYS HOST, which may or not be itself. To verify access to the SYS HOST and source directories, execute (listf "SYS:SITE;") -- to list your site file entries (listf "SYS:RELEASE;") -- to list an LMI source directory If either of these commands fails, you may have a problem with site files or with the network itself; call LMI for assistance. If you have customized your site files, you can load them into a band running on your SYS HOST with the following commands: (si:set-sys-host "LM" nil nil ";") (update-site-configuration-info) ...where ";" is the name of your site file directory [for example, "RELEASE-3.CUSTOMER-SITE;"]. The form of SI:SET-SYS-HOST is more complicated when you need to access site files from a remote Chaosnet host. For example, to load the site files from the default directory on a SYS HOST named "LAMBDA-A" with Chaosnet address 3740 (octal), execute: (si:set-sys-host "LAMBDA-A" :lispm #o3740 "RELEASE-3.CUSTOMER-SITE;") (update-site-configuration-info) 1.3.2 Miscellaneous Tips You can, if necessary, reload the vanilla 3.205 band / microcode tape from the SDU Load program using the "install" command, as documented in the Lambda Operations Manual for Release 3. The installation steps below *must* be executed in Release 3 LISP. Some of the LISP commands will fail unless they are executed in the "Initial Lisp Listener" (the first window that appears on the high-resolution monitor). Always login immediately after cold-booting the Lambda. For example, to log in as "keith", execute: (login "keith" t) 2.0 Installation Procedure Follow steps 1-5 to restore patches and microcode, switch to the new microcode, and load patches into the band. Step 6 suggests using (PRINT-HERALD) to confirm that the update has worked. Then follow steps 7-8 to DISK-SAVE a new band. This new current band is now a foundation on which any site-specific customizations (e.g., optional software) can be layered. Finally, verify that your applications and normal operations work properly with the updated software. You can repeat steps 2-6 as needed to reload patches on other systems. INSTALLATION PROCEDURE [STEP 1] RESTORE PATCH FILES AND MICROCODE PARTITION *** THIS STEP MUST BE EXECUTED IN THE INITIAL LISP LISTENER! Mount the patch distribution tape and execute the following: (tape:install-distribution-tape) You should be prompted as follows: Do you wish to install PATCH DISTRIBUTION TAPE #1? (Y or N) Answer 'Y' to confirm that this is the correct tape. Any other messages or error at this point may indicate that the wrong tape has been loaded. If you encounter an error indicating that "the TAPEMASTER device is currently being used" by another processor, you can press to "steal" the tape drive from the other processor. Next, a menu will appear prompting you to "Choose Installation Parameters". The options, with default values, are: - Query about each file being restored: NO - Load patches after restoring tape: NO [The default option for "Load patches" is NO because the patches must be loaded later in the installation anyway, after booting with the new microcode. If you click on YES, the compiled patch files will be loaded into the running LISP world. This is recommended only if you want to test the patches without saving a band at this time.] To proceed, click left with the mouse on the box marked "Exit". The installation procedure will automatically restore the patch files from the tape. After the patch files are restored, you will be prompted whether to restore the microcode partition: Restore partition "ULAMBDA 1600"? (Yes or No) Answer YES to restore the new microcode to a disk partition. You will then be prompted to specify a partition to contain the new microcode; for example, Type a partition name on LAMBDA-A (unit 0) for writing partition ULAMBDA 1600 or to find one>> Enter a partition name of the form LMCn, where 'n' is the number (generally 1 through 4) of a spare microcode partition. If you do not know which partition to choose, press to list the disk label. Select a partition name; then press Control-P, enter the chosen name, and exit by pressing . After you select a partition name, you will be prompted to confirm: "Do you really want to clobber partition ...?" Answer YES to continue. After the files and microcode are restored, you should see the message "Patch installation complete." Once the patch tape files have been restored on the SYS HOST, you can build a patched band on any system communicating with this SYS HOST by following the remaining installation steps on each system. Alternatively, you could build one band and copy it to other systems via tape or band transfer. [STEP 2] COPY NEW MICROCODE FROM SYS HOST TO OTHER HOSTS *** Skip this step if you are only updating one stand-alone Lambda system (which is its own SYS HOST). EXPLANATION: This step is only required on a network, for systems other than the one you worked with in STEP 1. For example, if the SYS HOST does not have a tape drive, you can perform STEP 1 on a different system; the files are restored to the SYS HOST, but the microcode is copied to a partition on the "local system," the one with the tape drive. So, every Lambda system on the network (except for the one you worked on in STEP 1) needs a copy of the new microcode partition. The microcode can be copied from a file on the SYS HOST to a disk partition. Execute the following on each system where you need a copy of the microcode: (si:load-lmc-file "SYS:UBIN;ULAMBDA.LMC" 'LMCn) ...where 'n' is the number (generally 1-4) of a spare microcode band. You will be prompted to confirm; answer YES to continue. [STEP 3] SET NEW CURRENT MICROCODE Execute (set-current-microload 'LMCn) ...where 'LMCn is the band containing the new microcode. This will cause the system to select the new microcode by default when you cold-boot. [STEP 4] COLD BOOT LISP Press Control-Meta-Control-Meta-Line to exit LISP and bring up the Newboot "Command:" prompt. If you have previously used the Newboot program to select temporary partition selections, you must cancel these overriding selections by executing Command: set-band - Command: set-uload - This will ensure that the default band/microcode specified in the disk label are selected. Execute Command: label to verify that the new microcode and original Release 3 band are selected. Then execute Command: boot to cold-boot LISP. When LISP comes up, you should see a message at the top of the screen, before the herald: "Loading error table from microcode partition". This confirms that the new microcode has been accessed. [STEP 5] LOAD PATCHES Execute (load-patches :noselective :nosite) This will load all patches into the running LISP environment. As each patch is loaded, a summary description is printed on the screen. This command can be re-executed at any time, as long as the SYS HOST is accessible. Only those patches that have not previously been loaded are loaded by LOAD-PATCHES. If you wish to review the patch comments at a later time, execute (si:print-system-modifications) [STEP 6] CONFIRM PATCH UPDATE LEVEL To verify the software revisions after loading patches, execute (PRINT-HERALD) and confirm the new software levels: System Revision Level 3.272 Microcode 1600 [STEP 7] SAVE BAND *** THIS STEP MUST BE EXECUTED IN THE INITIAL LISP LISTENER! Execute (disk-save 'LODn) ...where 'n' is the number (generally 1-4) of a spare load band [LOD disk partition]. You will be asked to confirm; answer YES. Answer the prompt for a herald comment with a descriptive phrase, e.g. "3.272 patch". The system will compute a disk partition comment, but it might be longer than 16 characters; you will be prompted for a shorter comment. Kill off the long comment by pressing Control-A Control-K, and enter a new one such as "3.272 patch". [STEP 8] SET CURRENT BAND After the machine re-boots, make the patched band "current" by executing (set-current-band 'LODn) ...where 'LODn is the patched band you saved in the previous step. 3.0 Fixes and Features The significant modifications included in this patch release are outlined below. 3.1 System Full details on each patch, with code, are available in the individual patch files in "SYS:RELEASE;". Some of the patch comments listed below contain further information on user-visible effects. Significant modifications to System 3.205 include: System Problem/Fix ------ ----------- 3.206 Fix CommonLISP MAKE-ARRAY (keywords not recognized). 3.207 Fix values of Boolean constants so that BOOLE and functions that depend on it like BIT-ANDC1 now behave correctly. 3.208 Make CommonLISP IF indent correctly. 3.209 Fix BIT-AND, -IOR, -XOR, -EQV, -NAND, -NOR, -ANDC1, -ANDC2, -ORC1, -ORC2, and BIT-NOT to accept a result-bit-array argument of T. Also, fix typo in SI:CHECK-SEQUENCE-ARGS. 3.210 Redefine CLI:TIME as a macro. 3.211 Fix to TAGBODY, allow tags to be integers. 3.212 Inspector feature (inspecting named-structures). 3.213 Argument to TIME:SET-LOCAL-TIME can be universal time. 3.214 Fix TV:BASIC-MENU, TV:MENU-HIGHLIGHTING-MIXIN to accommodate strings in item lists 3.215 FIND: Fix :FROM-END T. COUNT-IF-NOT: Call COUNT-1 with correct args. COUNT, COUNT-IF, COUNT-IF-NOT: Accept :FROM-END keyword. 3.216 CommonLISP DEFSTRUCT: Create "COPY-" function if :copier option is not supplied. 3.217 Fix e.g. (nsubst '(z) '(b) '(a b) :test #'equal). 3.218 Describing a symbol uses better criteria for figuring out when it is interned in other packages. MACROLET'ed macros are now seen by local functions. 3.219 Fix NCONC to not accept non-lists. 3.220 Fix :FROM-END T in REMOVE, DELETE, etc. 3.221 Fix FORMAT args ~E and ~G. 3.222 Internal compiler fix. 3.223 Fix to RECEIVE-BAND. 3.224 Internal modifications to configuration structures for Excelan. 3.225 Handle logical-end-of-tape condition in FIND-FILE, FIND-FILE-REVERSE, etc. 3.226 Remove OUTPUT-FILENAME keyword from COMPILE-FILE [use :OUTPUT-FILE]. 3.227 Fix typo in Common-LISP MAKE-ARRAY [:DISPLACED-INDEXED-OFFSET -> :DISPLACED-INDEX-OFFSET]. 3.228 Cosmetic fixes, e.g. documentation strings. 3.229 Fix bug with TAPE:COMPARE-FILES on disk partitions. 3.230 Pretty printing of the PLIST of a special form now works. 3.231 FS:BALANCE-DIRECTORIES determines whether a file needs to be copied based on version numbers -- but it didn't preserve version numbers when copying. 3.232 Fix e.g., (SXHASH '((nil) . 5)). 3.233 In FS:BALANCE-DIRECTORIES, if two files have the same version number, but one has a later creation date, the later file should be copied. 3.234 Fix SUB-APROPOS. 3.235 Fix arg to FORMAT in GC. 3.236 Fix Common-LISP ASSOC / RASSOC to use the :KEY keyword. 3.237 Fix redisplayer of rubout-handler buffer to call :STRING-OUT with the :END argument supplied, avoiding possible error traps from STRING-LENGTH. 3.239 Fix printing regions and buffers of Zwei buffers (e.g. ZMail, Converse) that don't use ZMacs-buffers. 3.240 ALLOCATE-DMABUF lost a buffer each and every time its PROCESS-WAIT function was called more than once before the scheduler let it run again. 3.241 Use `ERROR-RESTART' instead of `CATCH-ERROR-RESTART' in (FTP:CMD) so that the FTP command loop will be reentered as expected. 3.242 Bind *PRINT-RADIX* to NIL in (FTP:CMD) to prevent garbage from being printed with numbers by PRINC and PRIN1. 3.243 Fix MAPCAN and MAPCON so that they NCONC properly. 3.244 Change METER:RESUME-GC-PROCESS so that both arrest reasons are removed and the GC actually starts again. 3.245 Use ARRAY-LENGTH instead of STRING-LENGTH on fat-strings. Fixes ZMacs non-incremental delimited search problem. 3.246 Make sure that all host nicknames are put in the right order on the host table list. Nicknames with a long domain suffix were getting shuffled to the end, where the host's "official" name is supposed to go. 3.247 Make SIGNAL-PROCEED-CASE work with proceed types (the keys of the clauses) that are not symbols, numbers, or characters. Make ASSERT work with PLACE expressions that are not just variables. For both macros, the problem cases already worked in the evaluator, but not in compiled code. 3.272 Add :CLEAR-INPUT and :CLEAR-OUTPUT methods to UNIX-STREAMs. Call the new methods from the :CLOSE method. Also, if :CLOSE is called with ABORTP non-NIL, it drops pseudo-carrier on the line for 1-second. 3.249 Make STRING and ALPHALESSP do the right thing with bignums. 3.250 Comment only. 3.251 Remove uninformative doc-string from CHAR-STANDARD. 3.252 Chaosnet fixes. 3.253 Support for version 5 local-file format; re-writing of parent directory tree is improved. Existing (version 4) file systems can be converted with the function (fs:install-new-lm-version). *** WARNING: New format is *not* downward-compatible; release 2.0 bands will not be able to read converted file systems. This format is experimental, and is provided in 3.0 for future compatibility only. 3.254 Improvements to version 5 file system. 3.255 Fix to LMFS-OPEN-OUTPUT-FILE. 3.256 Fix to LMFS-UPDATE-DIRECTORY. 3.257 Improve behavior of TAPE:WRITE-PARTITION, TAPE:RESTORE-FILES, etc. when using multiple tapes. 3.258 Add site initialization which plugs chaos address into internal configuration structure (proc-conf). [??? Is this the slot 4 change-its-address fix???] 3.259 Improved signalling and handling for local file errors. 3.260 Set file system types and default devices at site-option time. 3.261 Improved 3com (Chaos) packet checking. 3.262 Fix to DISK-RESTORE/DISK-SAVE, which frequently crashed on LISP initialization. 3.263 Fix problem in process scheduler. 3.264 Fix to mail header parsing to allow addresses such as @sail.stanford.edu:gls@think.com [or] @a.b.c,@r.s.s.com:dcp@q.s.s.com More details in "SYS:RELEASE;PATCH-3-264.LISP". 3.265 Define TV:GET-BOW-MODE: "If screen is white characters on a black background, return T". 3.266 Codewalker fixes concerning macros. * The expansion functions of local macros are always defined in the top level environment. * Fix ZL:MACROEXPAND-ALL when given things like (macrolet ((x () 'x) (y (thing) `(car ,thing))) (y (x))) 3.267 Fix to MAKE-SEQUENCE: allow TYPE to be (vector bit), (vector double-float), etc. 3.268 Fix ZMacs M-X View File of large font files. 3.269 Fix C-Sh-C (Compile Region) in Zmail buffers. 3.270 No longer advise user to report tape device driver or hardware error to LMI (e.g., when an attempt is made to LIST-FILES on a blank tape). [??? Why not???] 3.271 Change to GC to allow gauges [???] to work. 3.272 Fix so that FS:DIRECTORY-LIST over the network with an invalid directory does not hang. 3.2 Microcode The following significant modifications to the microcode have been made: 1594 Fix to %STRING-SEARCH-CHAR. 1595 Important fix to the Garbage Collector; problem with forwarding pointers caused intermittent LISP crashes. 1598 Fix to REMAINDER function; fixes, e.g., a Macsyma bug. 1599 Fix to exponentiation of very small numbers. 1600 Fix to lexical closures. 4.0 Known Limitations and Restrictions Some bugs have been reported since the initial distribution of LISP Release 3, and thus are not listed in the manual "Known Bugs and Limitations". The following is a current list of the most significant bugs that are not fixed as of this patch update: [??? Need final list !!!]