Spice Lisp Status This file contains status information on Spice Lisp. We will attempt to keep it up to date. This means that this file will change frequently and should be consulted often by Spice Lisp users. This file lists all known problems and bugs in the Spice Lisp system. Except for items listed here, Spice Lisp is supposed to be a legal implementation of Common Lisp as described in the latest Common Lisp Reference Manual. If the user spots any differences between the Lisp system and the manual that are not reflected here, please report the problem to Spice@Spice. This file corresponds to Spice Lisp version 2.0 and to the Mary Poppins edition of the Common Lisp Reference Manual, dated November 1983. The items below are divided somewhat arbitrarily into "major" and "minor" classes. Major problems are either pervasive or are specific items that the average Common Lisp user is likely to encounter frequently. Minor problems are obscure things that are unlikely to cause trouble, but that nevertheless need to be fixed. ______________________________________________________________________________ THE FOLLOWING MAJOR ITEMS ARE EITHER INCOMPLETE OR INCORRECT, ACCORDING TO THE CURRENT EDITION OF THE MANUAL: For the present, some of the irrational numeric functions are broken. These will be fixed VERY soon. There are currently a number of holes in the "system interface" and "miscellaneous" functions. PROVIDE, REQUIRE, INSPECT, and DRIBBLE are not currently implemented. Most of the time functions are unimplemented, although the TIME macro will print information about the elapsed real-time. The TRACE function cannot trace macro expansion. Complex numbers are not implemented. The functions CONJUGATE, CIS, COMPLEX, REALPART, and IMAGPART are not implemented. Complex numbers are currently optional in Common Lisp and at present we have nobody working on this. A number of the things in the file system interface chapter are not implemented. Logical names and relative pathnames are not supported. ______________________________________________________________________________ THE FOLLOWING MINOR ITEMS ARE EITHER INCOMPLETE OR INCORRECT, ACCORDING TO THE CURRENT EDITION OF THE MANUAL: The package system is installed and running. When the Lisp starts up, however, you will find yourself in the Lisp package, not the User package. There are still a few symbols (e.g. debugger commands) that have not been exported from the Lisp package, so using other packages may be inconvenient. We expect to fix this VERY soon. The :INVISIBLE option to DEFSTRUCT does not work. The circular printer is not yet incorporated into the main body of the printer. This means that setting *PRINT-CIRCLE* has no effect at the moment. Interactions between the various print switches has not been thoroughly checked out. A new scheme for handling all the printer switches is being worked on. The pretty-printer does not call structure-print functions, but rather prints structures in the default #S(...) syntax. Use of (format nil ...) in structure-print functions can result in lossage. The feature whereby one can pass a string with a fill-pointer to format as the stream argument, and have the output pushed on it is not implemented. A number of format's more obscure features either are implemented as described in an earlier version of the language or don't quite right. Beware of indirection "?" and iteration "{". Read-from-string is not implemented. The version of with-input-from-string with the supplied string is not implemented. *read-base* is not implemented. #, does not do load-time evaluation There are a number of bugs and relics from previous ages in defstruct. Including structures does not work quite right. In particular: With more than one level of inclusion, the type predicate will be incorrect. Specifying more than one constructor does not result in the creation of more than one contructor function. Copier functions are not implemented. ______________________________________________________________________________ THE FOLLOWING ITEMS ARE ALLOWED BY THE MANUAL, BUT ARE EITHER INEFFICIENT OR AWKWARD TO USE IN THE CURRENT IMPLEMENTATION: Bignum and ratio arithmetic is fairly slow, since operations on these numbers are performed by Lisp code instead of microcode. Bignums and ratios are certainly usable, but one probably doesn't want to be doing arithmetic involving such numbers in critical inner loops. Double precision floating pointer numbers ("long floats") take quite a while to print. On the other hand, they are printed with the only correct floating point number printing algorithm that exists. While using Spice Lisp, if you should ever get a strange error message and find yourself talking to a program called the "Spice Lisp Microcode Debugger", you have encountered a rather fatal error. Type "quit" followed by a carriage-return, and the Lisp will go away.