09/21/87 lisp Known errors in the current release of lisp. # Associated TR's Description 34 phx20769 (// x 1) and (- x 0) are optimized by p1sysred and p1redcomm into (// x) and (- x), respectively, but these are not equivalent forms. 33 phx19999 It is possible for Lisp character strings to be relocated by garbage collection after pointers to them have been put into argument lists when calling PL/I subroutines (defined with defpl1), causing strings of zeroes to be passed instead of the correct strings. Calls that pass several long strings are most likely to evoke this error, because they tend to cause garbage collection when making copies of the strings for the call (so that the callee cannot write directly into the original Lisp string, because they are immutable). 32 phx19983 The *catch macro only allows one body form, when it should allow any number. 31 phx19698 "numberp" returns t if the argument is a system-subr. 30 phx19568 DEFSETF expands to code that uses destructuring LET, but setf.incl.lisp does not make sure that lisp_destructuring_let_ is loaded. It would also be nice if it loaded backquote, as that is usually necessary; however, the programmer knows whether he is using this so can be expected to load it himself if necessary. It would be really nice if these modules were only loaded if DEFSETF were used, as most uses of setf.incl.lisp are probably only for uses of SETF, which doesn't require destructuring LET or backquote. 29 phx19567 The syntax of DEFSETF does not agree with the definition in the MIT/LCS Maclisp Manual. It is more like the Common Lisp version (probably exactly like the Zetalisp version). The syntax is (DEFSETF function (lambda-list) value-var . body) 28 phx19561 SETF can generate code that calls LDB and DPB, but it doesn't guarantee that these functions will be defined at runtime (they are defined in the "runtime" library module). 27 phx19560 The "runtime" library package doesn't (sstatus feature runtime). 25 phx04264 The "fix" function returns 0 for arguments between -1.0 and 0.0 (exclusive), but it should return -1. 24 phx19444 Lisp looks for the start_up.lisp in the default wdir, rather than in the homedir as stated in lisp.info. 21 phx19070 The interpreter doesn't complain about changing the value of the variable "t". 20 phx19018 The "tyi" function masks off the high-order 2 bits. This occurs a few lines after "rdinch" in lisp_reader_alm_.alm. There are also a number of problems like this in lisp_reader_.pl1. In general, Lisp is very inconsistent in its support of characters above 127. in symbol names; there are even places in lisp_reader_ where characters above 127 are used as special markers. 19 phx19017 "maknam" and "implode" complain if fixnums in the input list are greater than 127. They should only complain if they are greater than 511. 18 phx13416 phx09174 GC loses if lisp is invoked in a ring less than 4. There seem to be some places where pointers with ring-number equal to (R|4) are created, although they point into ring-1 segments. Referencing through these causes a fault, of course. 16 phx18177 phx19012 Compiling a defpl1 with a (return char (*) varying) last parameter causes a complaint about a "funny word" and an illegal modifier fault. 15 phx17777 (nthcdr N LIST) returns nil if the Nth cdr of LIST is a symbol. It takes an illegal modifier fault at lisp_car_cdrs_|163 if it is a fixnum. This is because it checks for the end of the list before it checks to see whether it has taken N cdr's already. 14 phx16613 (cursorpos '\) does what (cursorpos '[) should do, and vice-versa. 11 phx15718 If an alarmclock timer goes off while the lisp invocation is suspended, it prints a message but does not do a start control order. 10 phx15600 The "let" fsubr acts like the let* fsubr, i.e. it performs its bindings serially instead of in parallel. It is correct in the compiler, which just treats let as a macro for a lambda binding. The interpreter should be changed to use the macro definition, and let* should be added as the name of this fsubr. 9 phx09429 The lisp interpreter should enable mulquit and mulpi by default. This incompatible change is more than justified by compatibility with the rest of Multics. 7 phx11203 Compiling the following function gets the error: Compiler Error: (1 2) are unequal pass1 and pass2 counts. (defun make-strange-lcp-err () (subrcall X)) 6 phx10222 The garbage collector sometimes attempts to reference through a null pointer. 5 phx09829 Lisp expands pathnames relative to the working dir at the time Lisp was invoked, not the wdir in effect at the time of reference. 4 phx09385 The following scenario will cause a compiler error complaining about being unable to find an entrypoint: 1) the object segment already exists and is found by a link into a directory in which the user only has s access. 2) The program is compiled with -list 3) Severe errors are found during compilation. make_lisp_listing loses when it tries to find the symbol table of the object segment. 3 phx08651 lcp ignores invalid control arguments, instead of aborting. 2 The lisp linker should ignore null file system links when searching for a name. This is in keeping with the standard linker, and makes things like deleting a private version of some lisp library much less painfull. 1 phx12837 Lisp should provide a mechanism for establishing handlers for arbitrary conditions. It currently only deals with program_interrupt. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved