Corman Lisp 2.0 Release Notes May 20, 2002 --------------------------------------------- Compiler: Fixed a problem with tail recursion optimization, heap bindings and embedded lambdas. Added keyword argument checking. You should use &ALLOW-OTHER-KEYS if you wish to use key arguments which you have not explicitly declared. Key arg checking can be turned off with speed > safety. DEFSTRUCT implementation: Struct-template is created at evaluation time rather than macroexpand time. This allows COMPILE-FILE to compile DEFSTRUCT forms without dragging in tons of CLOS stuff to the compiled file. Fixed order of evaluation problem for EQ and UREF inlined code. Removed an unnecessary warning in the compiler. ANSI: Fixed ROTATEF to handle the no arguments case. Fixed SHIFTF to give an error in the no arguments case. Added VECTOR-POP. Added support for declaring (SETF func) function as inline. Added support for class slots with SLOT-VALUE and related functions. Fixed a problem where class slot definitions were duplicated in the list. Added (SETF SUBSEQ) implementation. Fixed a typo in SUBSEQ. Fixed a bug in ENSURE-DIRECTORIES-EXIST. Fixed FILE-POSITION set option to work with string-streams. Fixed DESCRIBE for streams to look better. Incorporated JP Massar fix to WRITE-SYMBOL. Fixed ASSERT bug (JP Massar). Added support in DEFPACKAGE for :SHADOWING-IMPORT-FROM option (JP Massar). A package may now inherit the same symbol from two other packages without giving an error. Fixed some bugs in reader functions. Added LOCALLY, LOAD-TIME-VALUE special operators. Fixed a bug in DECLARE OPTIMIZE forms. Added JP Massar's RENAME-FILE implementation. Added DEFINE-SETF-EXPANDER macro. Made *STANDARD-INPUT* special. Fixed GET-OUTPUT-STREAM-STRING behavior. It now resets the output stream. Fixed a problem with TYPE-DESTRUCTURE-BIND and optional parameters (thanks, JP Massar). This affected type declarations. Fixed a problem with the read macro for characters. Added names for some more characters. Fixed MACRO-FUNCTION to take optional environment. Changed DOCUMENTATION to just return a string. Integrated generic functions with all lisp functions including FUNCALL, APPLY, FUNCTIONP, DISASSEMBLE, etc. Added error-checking to some symbol-manipulation functions. Modified TRACE to output to *trace-output*, added FORCE-OUTPUT calls. Corman Lisp Extensions Exported CCL:DIRECTORY-P function. Fixed CL::FUNCTION-REFERENCES for generic functions. Threading Issues Modified CL::WITH-SYNCHRONIZATION macro. Made some remaining hash-table functions synchronized. Added synchronization to some clos hash-tables. Assembler/Disassembler: Included Pavel Grozman's enhancements to the assembler and the assembly code. Enhanced disassembler--added more annotations. Both function calls and literal objects are now displayed whenever possible. Fixed a problem in assembler with JBE, JAE instructions. Fixed a problem in the kernel-asm functions related to the above. IDE Fixed a long-time system resource leak, that would cause the editor to become more sluggish the longer you edited a file. Cleaned up some memory usage in the IDE. Added Pretty Print Selection menu option. Added ReplaceSelection capability. This enables some nice interactive editor commands. Added a small left margin in text windows. Fixed UNDO so it works in all cases. Fixed tab settings. Libraries: Updated XP package (pretty printer) to work seamlessly with Corman Lisp. Helper applications: Updated console, boot apps. Fixed a problem in clconsole and clconsoleapp so that control-c or control-break do not cause the process to quit. Utilities: Added gzip.lisp. Kernel: Added lisp kernel functions: COMPRESS-FILE, UNCOMPRESS-FILE. Performance: Incorporated Pavel Grozman's speedup to string-streams (eliminates buffer).