diff --git a/general-info/omega-release-notes.txt b/general-info/omega-release-notes.txt new file mode 100644 index 0000000000000000000000000000000000000000..7058742cec070e5c751efa6b8387634d34660469 --- /dev/null +++ b/general-info/omega-release-notes.txt @@ -0,0 +1,777 @@ + Release notes for CMU Common Lisp 15e, 25 February 92 + + +15e is mainly a bug-fix release; it will probably be the last version 15 +release, and is thus the most stable system you're going to see for a while. +We're reluctant to call it a "default" release because some things are stably +broken: + -- There still isn't any good stack overflow detection. Probably stack + overflow detection won't appear until the C code rewrite associated with + generational GC comes out (version 17 or later.) + -- The Alien/foreign function call mechanism is fairly broken. It doesn't + work at all in interpreted code, and DEF-C-ROUTINE doesn't work properly + for many argument type signatures. We've redesigned and reimplemented + our foreign interface for version 16. + +We are now distributing the CMU CL user manual in Gnu Info format (in +doc/cmu-user.info.) You can either have your EMACS maintainer install this in +the info root, or you can use the info "g(<cmucl root dir>/doc/cmu-user.info)" +command. Many thanks to Mike Clarkson (the LaTeXinfo maintainer) who +volunteered to convert our Scribe documents. + +Changes: + -- Improved recursive error handling. Errors during reporting of errors are + detected and suppressed. Other recursive errors are eventually detected, + and hopefully recovered from. This should eliminate some "recursive map + failure (stack overflow?)" errors. + -- Fixed a bad declaration in CLX which caused an array index error on + font attribute queries (such as CHAR-WIDTH.) + -- Fixed interpreted (typep x '(and ...)) to not always return NIL. + -- Fixed interpreted CLOS methods to work once again. + -- Fixed PROFILE to work again, now that argument count information may be + missing. + -- Changed NCONC to signal an error if a non-null ATOM appears other than + as the last argument. + -- Changed FEATUREP to signal an error if it is passed a list form with a + strange CAR. + -- Do type checking on the arguments to %PUTHASH so that + (setf (gethash foo 'bar) x) doesn't get a bus error. + -- Changed LET* and &AUX to allow duplicate variable names. + -- Fixed DEFTYPE to properly invalidate type system caches so that type + redefinitions predictably take effect. + -- Improvements to MIPS disassembler database. + + + Release notes for CMU Common Lisp 15d, 2 February 92 + +These release notes cover changes since the beta release of version 15b on 6 +June 91. Execpt for Miles Bader's portable disassembler and a few minor +performance enhancements, this is mostly a bug-fix release. We've been +working on ANSI complaince, foreign function interface and more advanced +compiler optimizations, but we're not going to inflict that on the general +public just yet. + + + GENERAL SYSTEM CODE + +Bug fixes: + -- (SETF AREF) now checks to make sure that the new value is of the correct + type. + -- Improved checking for invalid syntax in DEFSTRUCT. In some cases, syntax + errors would cause cryptic internal errors due to inadequate type + checking. + -- DRIBBLE now monitors *ERROR-OUTPUT* (in addition to *STANDARD-OUTPUT*). + -- Bignum printing now works correctly in base 36. + -- Fixed EXPT to deal with SINGLE-FLOAT x SINGLE-FLOAT arg type combination. + -- Fixed TRUNCATE to handle the SINGLE-FLOAT/DOUBLE-FLOAT case. + -- The PROFILE package works once again. + +Enhancements: + -- A new retargetable disassembler provides DISASSEMBLE support on the SPARC, + and also greatly improved disassembly on the MIPS. The output is + annotated with source-code correspondences if debug-info permits. + -- Added INLINE MEMBER declarations in definitions of the set functions + (UNION, etc.) so that when the set functions are inlined, the MEMBER calls + will also. + -- Merged Lange's improved type declarations for nthcdr/butlast/nbutlast. + Also, NTH-VALUE now doesn't cons for non-constant N less than 3. + -- The loader now supports appending fasl files. You can: + cat a.fasl b.fasl c.fasl >all.fasl + -- Added :UNIX to the features list. + +The new variable EXT:*TOP-LEVEL-AUTO-DECLARE* controls whether assignments to +unknown variables at top-level (or in any other call to EVAL of SETQ) will +implicitly declare the variable SPECIAL. These values are meaningful: + :WARN -- Print a warning, but declare the variable special (the default.) + T -- Quietly declare the variable special. + NIL -- Never declare the variable, giving warnings on each use. (The + old behavior.) + +The reader now ignores undefined read macro errors when *read-suppress* is T. +All reader character lookup tables are now CHAR-CODE-LIMIT in size. Formerly, +some where only 128. In the standard readtable, these additional characters +are all undefined. + +There are various changes in the DEBUG-INTERNALS interface related to +breakpoint support, but we haven't yet implemented a satisfactory user +interface to breakpoints. Changed name of DI:DO-BLOCKS to +DI:DO-DEBUG-FUNCTION-BLOCKS. Added DI:FUNCTION-END-COOKIE-VALID-P and +DI:DEBUG-FUNCTION-START-LOCATION. + +This release fixes a few problems with Aliens, but they are still pretty +broken. In particular, Alien and C interface operations don't work at all in +interpreted code. We are in the process of integrating a new-and-improved +implementation of Aliens that works much more smoothly with C. + + + COMPILER + +Enhancements: + -- Various SPARC-specific reductions in spurious type checks and coercions. + -- FTYPE declarations on local functions are now propagated to the variables + of the local definition. + -- Improved representation selection by not totally ignoring references by + move VOPs. This is particularly useful for avoiding spurious number + consing of float arguments that are passed on as arguments. + -- The warning about assignments to the arguments of functions having FTYPE + declarations is now suppressed when the FTYPE declaration gives no useful + information. + -- Improved readability of *COMPILE-PROGRESS* output. + -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely + intersect with anything (including unknown or not-yet-defined types.) + +Bug fixes: + -- Fixed some bugs in dead code deletion. + -- Lambdas with &KEY and no specified keywords are now compiled correctly + (instead of the &KEY being ignored.) + -- The compiler now knows that INTERN can return NIL as its second value. + -- Global FTYPE declarations on DEFSTRUCT slot accessors are now quietly + ignored, instead of causing the structure definition to be removed. + -- Fixed a problem with resulting from an interaction between block + compilation and global FTYPE declarations. + -- Fixed TAGBODY not to consider NIL to be a tag. + -- Fixed an internal error during register allocation which could happen when + compilation-speed > speed. + -- If we undefine a structure type, unfreeze it also. + -- Fixed TYPEP SATISFIES to always return T-or-NIL, regardless of what the + predicate returns. + +PCL/CLOS: + -- Added generalized source context parsing with EXT:DEF-SOURCE-CONTEXT. + Added a parser for DEFMETHOD that gets qualifiers and specializers. + -- FUNCALLABLE-INSTANCE-P is now compiled much more efficiently. + -- Fixed SET-FUNCTION-NAME to correctly set the name of interpreted methods, + instead of clobbering the name of an internal interpreter function. + + + HEMLOCK + +Bug fixes: + -- Changed X font specs in the generic site-init file to use point size + instead of pixel size so that they work on 100dpi devices. + -- Added :INPUT :ON wm-hints to Hemlock windows, which is necessary to + receive input in OpenLook windowing systems. + -- Fixed Lisp mode indentation for FLET&c to check that we are actually in + the first arg form before doing funny indentation. Generalized to + reference the variable "Lisp Indentation Local Definers", and also to + recognize LABELS (as well as MACROLET and FLET.) + -- When we reallocate string-table vectors to grow them, clear the old vector + so that it won't hold onto garbage (in case the vector was in static + space, but pointed to dynamic values.) This was a major cause of memory + leakage in Hemlock. + -- Fixed sentence motion to work at the end of the buffer. + +Enhancements: + -- The site file now contains a template for file directory translation (for + "Edit Definition"), and some of the comments have been improved. + -- There's a new "Buffer Modified Hook" function that raises the "Echo Area" + window when it becomes modified. You can control this with the Hemlock + variable: "Raise Echo Area When Modified". + -- In "Edit Definition" and related commands, before doing directory + translations, try a probe-file of the source file first. This can reduce + the number of translations needed. + -- Added DEFINDENT's for the "WIRE" package. + -- Made the X visual bell look less spastic by adding a finish-output. + -- The termcap parser now recognizes entries for things like begin/end bold, + underline, etc. Fixed a problem with font halding in TTY redisplay. + -- The MH interface now uses the correct name for the MailDrop profile + component. + -- The netnews interface has been improved in various ways, including the + addition of server timeouts, but should still be considered experimental. + + + Release notes for CMU Common Lisp 15b, 19 October 91 + +These release notes cover changes since the beta release of version 14c on 6 +June 91. SPARCstations and Sun4's are now supported under SunOS (as well as +Mach), which makes CMU CL more usable outside of the CMU environment. CMU CL +also runs on Mach (or OSF/1) DECstations, and IBM RT support is coming real +soon now. + + + GENERAL SYSTEM CODE + +Bug fixes: + -- MAKE-ARRAY now to allows :INITIAL-CONTENTS any kind of of sequence, not + just a list. + -- VECTOR-PUSH and VECTOR-PUSH-EXTEND now return the original fill + pointer, not the new fill pointer. + -- VECTOR-POP now returns the value indexed by the new fill pointer, not + the original fill pointer. + -- Fixed two bugs in bignum division. + -- FORMAT-PRINT-NUMBER now correctly inserts commas for negative numbers + (don't print -,123). + -- Fixed GET-SETF-METHOD to only inhibit setf macros when there is a local + function, not also when there is a local macro. + -- Changed the debugger to use *READ-SUPPRESS* when skipping over top-level + forms in the source file to prevent spurious read errors. + -- In the printer, deleted an incorrect and questionably optimal + optimization of symbol package qualification. + -- When printing characters, prefer the semi-standard character-names + NEWLINE, ESCAPE and DELETE to the old LINEFEED, ALTMODE and RUBOUT. + -- Fixed one-off error in list REMOVE-DUPLICATES :FROM-END. Fixed + SUBSTITUTE & friends to pass arguments to the TEST in the right order. + Fixed SUBSTITUTE not to randomly apply the KEY to the OLD value. Changed + LIST NSUBSTITUTE & friends to work in the :FROM-END case. + -- Several bug-fixes to RUN-PROGRAM and subprocess I/O. + -- Fixed all recursive READ calls in sharp-macros to specify eof-error-p T, so + that EOF errors are signalled when appropriate. + -- The REMOTE RPC protocol (used for slave control) can now send bignums. + -- Passing of unused arguments to interpreted functions now works. Previously + the variables would be bound to the wrong arguments. + -- Many fixes to the time parsing and printing extensions. + +X3J13 cleanups: + -- Added #P pathname read syntax, and changed the pathname printer to use it. + -- Added :KEY argument to REDUCE. + +Enhancements: + -- Added code to compile the argument to TIME when possible, and print a + warning when it isn't. Optimized the TIME macro to keep the consing + overhead of using it zero. + -- Changed all places absolute pathnames were used to indirect search-lists, + mostly library:. "lisp" must now be findable on your PATH for Hemlock to + be able to start slaves. + -- Increased readability of DESCRIBE function output by printing function and + macro doc strings before arg and result info. + -- The CMUCLLIB search path environment variable is now used to find lisp.core + and other library files, instead of always assuming the path + /usr/misc/.cmucl/lib. + + + COMPILER + +Bug fixes: + -- EVAL now uses the constant value recorded in the compiler environment + that compile-time references to constants works better. Now + (defconstant a 3) (defconstant b (+ a 4)) works again. + -- Don't try to infer the bounds of non-simple arrays, since they can change. + -- Fixed some problems with block compilation, maybe-inline functions and + unused function deletion. + -- DEFMETHODs can now use &ALLOW-OTHER-KEYS without killing the compiler. + -- Fixed VALUES declaration to work correctly when zero values are specified. + -- The FORMAT transform now warns if there are to many or too few args. + -- Changed SYMBOL-MACRO-LET to SYMBOL-MACROLET. + +X3J13 cleanups: + -- Make all non-symbol atoms self-evaluate. + +Enhancements: + -- Made the default for COMPILE-FILE's :error-file argument be nil. + -- Changed notes about incompatible changes in function arguments lists to be + a warning rather than a note. + -- Source-level optimization efficiency notes now print out a + transform-specific string to describe what the transform was trying to do, + instead of just saying "unable to optimize." + + + HEMLOCK + +This is version 3.5. + +Note: The default value of "Slave Utility" is now just "lisp" which hopefully +will be found on path:. If you don't have lisp on your path, you need to set +"Slave Utility" to the full pathname of lisp, /usr/misc/.cmucl/bin/lisp on CMU +machines. + +Bug fixes: + -- Under TTY screen management, a MAKE-WINDOW - DELETE-WINDOW sequence now + leaves the screen unchanged. + -- Fixed some character attribute constants to make 8-bit chars work. + -- "Center Line" now works when invoked on the last line of the buffer. + -- Fixed "Move Over )" to use a permanent mark instead of a temporary mark + because it deletes text. + -- Fixed sentence motion to be able to move to the end of the buffer. + -- Fixed the hemlock banner in the status line to not have "!" after + the date. + +Enhancements: + -- Removed the definitions of the obsolete COMMAND-CHAR-BITS-LIMIT and + COMMAND-CHAR-CODE-LIMIT. + -- Modified "Visit File" to issue a loud message whenever another buffer + already contains the file visited. The quiet message often went unnoticed, + defeating its purpose. + -- The definitions in FLET, LABELS and MACROLET are now indented correctly. + -- Added DEFINDENT's for the "DEBUG-INTERNALS" interface. + -- Modified Lisp indentation to check if the mark in was in a string context. + If it is, then we go to the column after the opening double quote. + Otherwise, we use the first preceding non-blank line's indentation. This + fixes the problem with doc strings and ERROR strings which got indented + respectively at the beginning of the line and under the paren for the ERROR + call. + -- Added some prototype netnews support. Details to be anounced later. + -- Added font support for the TTY. Allow active region highlighting and open + paren highlighting when on the TTY, as they now work. + -- Changed the compile-in-slave utilities to count notes and display in + completion message. Also fixed not to print echo area messages "Error in + NIL ..." + +New commands: + +"Fill Lisp Comment Paragraph" Lisp: M-q + Fills a flushleft or indented Lisp comment, or lines all beginning with the + same initial, non-empty blankspace. When filling a comment, the current + line is used to determine a fill prefix by scanning for the first semicolon, + skipping any others, and finding the first non-whitespace character; + otherwise, the initial whitespace is used. + +"Shell Complete Filename" Process: M-Escape + In a shell buffer, attempts to complete the filename immediately before + point. The commands that start "Process" buffers with shells establish a + stream with the shell that tries to track the current working directory of + the shell. It uses the variable "Current Working Directory" to do this. + For it to work, you should add the following to your .cshrc file: + if ($term == emacs) then + alias cd 'cd \!* ; echo ""`pwd`"/"' + alias popd 'popd \!* ; echo ""`pwd`"/"' + alias pushd 'pushd \!* ; echo ""`pwd`"/"' + endif + +"Manual Page" + Runs man(1) in a scratch buffer and displays it in the current window. + +"Typescript Slave Status" Typescript: H-s + Interrupt the slave and cause it to print status information. + + +Hemlock-internals changes: + -- CREATE-WINDOW-FROM-CURRENT now creates a window according to its new + proportion argument instead of simply splitting the current window in two. + It returns nil without doing anything if either window is too small. + -- WINDOW-GROUP-CHANGED no longer unifies the sizes of window when the + user resizes a group. It now tries to distribute the new size of the group + according to the proportions of the old size consumed by the windows. + -- Changed ARRAY-ELEMENT-FROM-MARK to use AREF for the Netnews stuff. I + documented this to be an internal interface since a few other modes use it. + -- WRITE-FILE now takes an :append argument. + -- Modified %SET-MODELINE-FIELD-FUNCTION to allow its function argument to be + a symbol or function since the purpose is to FUNCALL the thing. Since the + new system is up to spec on the disjointedness of functions, this needed to + be fixed for usefulness. + + + Release notes for CMU Common Lisp 14c, 6 June 91 + + ** The FASL file format has changed, so all files must be recompiled. ** + +These notes describe changes since the beta release of 3 February 91. This is +the first CMU CL release to run on Mach SPARCs as well as on PMAXen (DECstation +3100 or 5000). Version 14c will go out to both beta and default, since there +is currently no default release. + +This release has a substantial space reduction due to compiling with debug-info +1 and reduced safety. The core is currently 19.2 meg, which is 7 meg smaller +than the last beta release (despite added functionality.) + +Major parts of the system are now compiled with no error checking. Users +should not notice any reduction in safety, since user visible interfaces are +supposed to be fully checked. Standard functions that users can cause to get +unbound symbol or array index errors needed to be changed to either do explicit +error checks or locally use a safe policy. Some of these cases may have been +missed. Let us know if you get any less-than-informative error messages +(segmentation violation) inside standard functions. + + +New packages: + +The X based graphical inspector is now available. It now uses standard +fonts (courier) and has a bigger help window. + +An improved version of the profile package (previously in the library) is now +in the core. It now compensates for recursive calls or nested calls, and +interacts better with TRACE and function redefinition. The old profile +documentation is in: + /afs/cs/project/clisp/library/profile/profile.doc + + +Code: + +Argument type checking for Common Lisp functions is now driven by the +compiler's function type database (the types reported by DESCRIBE.) This means +that some type errors might be detected that were previously unnoticed. + +Changed the internal WITH-ARRAY-DATA macro to do bounds checking. This causes +various string functions to give better error messages when an :END arg is out +of bounds or :START is greater than :END. + +Tuning: + Some tuning in SYSTEM:SERVE-EVENT which reduces consing and speeds up + Hemlock and terminal I/O. + + Changed GET-INTERNAL-REAL-TIME to subtract out the time of the first + call to minimize the probability of bignum results. Also some other tuning + that reduced the consing of this function to 0. + + Tuned bignum code and added declarations to reduce number consing. + + +DEFSTRUCT: + Fixed default-structure-print to work when *print-circle* is T. + Merged fix to DEFSTRUCT constructor parsing that allows multiple default + constructors, or none at all. + +Merged bug fixes from old RT system: + STANDARD-CHAR-P no longer returns T for #\return. + + Fixed a bug in format regarding ~@*. + + Fixed the read-eval-print loop to frob +, ++, +++ correctly. + + Fixed a bug in Y-OR-N-P. It was calling WHITESPACEP on a symbol. + + Fixed READ-QUOTE to call READ with t for eof-errorp which it previously + failed to do. fixed READ-PRESERVING-WHITESPACE to no longer screw with + eof-errorp based on recursivep + +Package system: + Changed DEFPACKAGE to expand into stuff that will have the package effect + at compile time as well as at load time. + + Fixed DEFPACKAGE to deal more correctly with finding symbols that must + exist. + + Fixed package system code to not destructively modify the USE, USED-BY and + SHADOWING-SYMBOLS lists so that they don't get retroactively modified when + we hand them off to the user. + + Also, in SHADOW, when symbols is NIL, shadow no symbols, not NIL. + + Fixed a bug in RENAME-PACKAGE that happened when the new name was one of + the old nicknames. + +Streams: + Tweaked handling of LISTEN a bit to allow READ-CHAR-NO-HANG to work + correctly. Fixed the listen method for concatenated streams. It failed to + step to the next stream when the current one hit eof. + + Make two-way streams force-output on the output side before passing any + input requests on to the input side. Made *standard-output* a two-way + stream so that reading *standard-input* will force output on standard + output. This eliminates the need for explicit calls for FORCE-OUTPUT when + prompting. + + Some tuning and bug fixes to FD-STREAMS (file descriptor streams) which are + used for file I/O (and now for communication with the X server.) Also, now + OPEN complains if you try to open a non-writable file for output with + :RENAME or :RENAME-AND-DELETE. Previously this would succeed as long as + the directory was writable. SYSTEM:READ-N-BYTES on FD streams is now more + efficient, but does *not* wait using SERVE-EVENT; it blocks instead. + +TRACE: + Use FORCE-OUTPUT instead of FINISH-OUTPUT to prevent gratuitous slowdowns + when running in a slave. + + If we enter trace recursively (due to the printer calling the traced + function), then just quietly call the function, instead of signalling an + annoying "unable to trace" error. + +LOAD: + Changed load to look at the file contents for the "FASL FILE" header to + determine whether to fasload or slow load, instead of forcing use of a + single fasl file type. Also, when the given filename doesn't exist and + doesn't have a type, try ``fasl'' in addition to the machine specific fasl + file type. Eliminated the "feature" whereby zero-length fasl files were + considered to be valid (doing nothing). Now if you try to load a file with + a fasl file type, but that doesn't have a valid fasl header, then you will + get an error (proceeding loads as a source file.) + + When the loader prints comments about loading progress, the number of + leading semicolons is now the depth of recursive loading. + + Added a CONTINUE restart in LOAD that returns NIL. + +GC: + Fixed some bugs in control of garbage collection that should solve some + problems with GC failing to be triggered automatically. Also, GC no longer + implicitly reenables automatic GC if it has been disabled with GC-OFF. + + Changed the default GC notify function to not beep. The old behavior can + still be obtained by setting *GC-VERBOSE* to :BEEP. Note that this only + affects use on TTYs, since slave GC notification works differently. + + Wrapped a without-interrupts around the guts of maybe-gc so that the notify + messages and state updates don't get seperated from the actual gc. + + Removed the icache flushing stuff from GC, because it was unneeded (and + sometimes printed annoying messages that it didn't work). + +X3J13 cleanups: + The non-destructive string functions now accept characters as well as + strings and symbols. + + MACROEXPAND now expands symbol macros. + + Now almost all Common Lisp functions which are SETFable have a (SETF name) + function. The exceptions are functions where it makes no sense (LDB, + GETF), and a few other functions (GET, GETHASH.) Now SETF of APPLY works + for any function which has a setf function. + + Changed GET-SETF-METHOD to ignore setf macros (always global) when there is + a local macro or function of the place function. [An x3j13 cleanup] + + Fixed the LOOP THEREIS keyword. Changed a null test in LOOP into an endp + test. + +Other bug fixes: + Fixed sequence functions with output type specifiers to handle DEFTYPE'ed + types and other complex types correctly. (COERCE still can't hack + DEFTYPEs, though.) + + Fixed typep of (satisfies (lambda (obj) ...)) to coerce the form into a + function so that "object not function" errors don't result. + + Fixed DOCUMENTATION to return only one value. + +Enhancements: + ROOM is now much more verbose, displaying a breakdown of memory usage by + object type. + + Changed the printer to print the name of code objects and the value of + value cells. + + +CLX: + +Modified EXT:OPEN-CLX-DISPLAY to set XLIB:DISPLAY-DEFAULT-SCREEN to the +screen specified by the user before returning the display. + +Merged in a bug-fix to EVENT-LISTEN to make it return the right number of +events when called when there is a current event (i.e. in an EVENT-CASE.) + +Fixed the CLX X interface to be much more efficient, as well as fixing some +bugs. The low-level I/O to the server is now faster and conses much less. +Enabled some code speeds up pixarray read/write (though it could still be much +better.) Also, eliminated redundant type checking and fixed some broken +declarations. This fixes problems with CLX sometimes not working with some X +servers (like the RT server.) + + +Compiler: + +Bug fixes: + Fixed incorrect argument type information for some standard Common Lisp + functions. + + Fixed PROCLAIM to work correctly when the argument isn't a constant. + + Fixed the DEBUG optimize quality to be called DEBUG instead of DEBUG-INFO. + + Fixed the compiler to not flame out if it sees a SATISFIES type specifier + where the predicate function is undefined, and generally to deal better + with testing whether a compile-time constant is of some type that may not + be properly defined yet. + + Fixed a number of bugs in the handling of closures over top-level + variables. + + Fixed a problem with semi-inline functions. + + The compiler note count is no longer incremented when notes are suppressed + by INHIBIT-WARNINGS 3. + + Some fixes that should eliminate spurious undefined-function warnings. In + particular, definitions of functions in non-null lexical environments will + be noticed. + + Also, now if a function is defined incompatibly with previous calls, the + warning will have proper source context. + + Fixed a bug in accessors for 1,2, and 4 bit arrays that was causing #* to + generate incorrect bit vectors. + + Changed the type system to consider #(:foo :bar) to be a subtype of + (vector keyword). In other words, array subtype relations are determined + according to the specialized element types actually present in this + implementation, rather than assuming that all element types can be + discriminated. + + Fixed a problem that could cause type checks to be spuriously deleted in + some contexts where there is a local change in the SAFETY optimization + policy. + +DECStation (PMAX) specific changes: + + Representation conversion of a SAP (system area pointer) to a pointer + representation now results in an efficiency note. + + Fixed EQL (and =) on integers to not unnecessarily cons a word-integer + argument just because one argument is known to be a fixnum. + + New version of the assembler with instruction scheduling (no-op deletion) + support. This reduced the size of the core by 1.3 meg, and makes + everything run faster too. + + Fixed TRUNCATE on floats to truncate instead of rounding. + +SPARC notes: + The SPARC port is not yet as highly tuned as the PMAX port. In particular, + no instruction scheduling is done yet. This is probably a 10% performance + penalty. + +Enhancements: + Made forms within a LOCALLY be recognized as "top-level" so that subforms + can be compiled separately. + + The compiler now ignores assignments to special variables when determining + which representation to use for a variable. Also, we don't print + representation selection efficiency notes about coercion that are due to + error checking code. + + Added support for the EXT:CONSTANT-FUNCTION declaration (already in the + documentation.) + + When a DEFUN is compiled and the name has a FTYPE declaration, then a note + is printed if any arguments to the function are assigned to (i.e. SETQ) in + the body, as this inhibits application of the FTYPE declaration to the + argument variables. + + (<mumble>-P x) structure predicates are now just as efficient as + (TYPEP x '<mumble>). + + Added type inference methods for sequence functions, and various functions + that return an argument as their result value. + + A number of improvements to register allocation. + + Added a new optimization of MULTIPLE-VALUE-CALL which converts MV calls + having a known number of arguments into MULTIPLE-VALUE-BIND/FUNCALL. + Combined with some other existing optimizations, this allows functions like + to be efficiently inline expanded (i.e. the APPLY turns to a FUNCALL): + (defun foo (&rest x) + (apply #'glorp x)) + + Reduced the size of debug information for OPTIMIZE DEBUG <= to 1. + If debug-info is < 1, then don't dump debug-args or function type. + + Disabled the compiler's internal consistency checking by default. These + phases are only useful for locating compiler bugs. + +X3J13 cleanups: + The :VERBOSE and :PRINT keyword arguments are now supported by + COMPILE-FILE. The :PROGRESS keyword is a CMU extension that provides an + even higher level of verbosity. The *COMPILE-VERBOSE*, etc., variables are + also now supported. + + Changed declaration processing to treat FUNCTION declarations as ordinary + variably type declarations. The old semantics is still obtained when the + second arg to the declaration is a list (as it always would be in the old + usage.) + +Block compilation: + Added new START-BLOCK and END-BLOCK declarations to allow portions of a + file to be block compiled (instead of only entire files.) This mechanism + also allows the entry points to a block to be specified, allowing improved + compilation of non-entry-point functions. Fixed many bugs that appeared + once block compilation was actually used. + + COMPILE-FILE now has :ENTRY-POINTS and :BLOCK-COMPILE keywords. + :BLOCK-COMPILE NIL will totally inhibit compile-time resolution of function + names (including self-calls.) The default (:SPECIFIED) allows compile time + resolution, but still compiles one top-level form at a time, preventing + local calls between top-level forms. In this mode, a + (BLOCK-START Entry-Point*) + declaration will start block compilation. Block compilation is terminated + by BLOCK-END, or the BLOCK-START of the next block. + + See also the COMPILE-FILE doc string. + + +Context sensitive declarations: + Added the OPTIMIZE-INTERFACE declaration, which is just like OPTIMIZE, but + specifies the policy for function argument syntax checking and checking of + any declared argument types, allowing it to be distinct from the general + compilation policy. This allows debugged code to be compiled with lowered + safety in its "guts", while still doing checking on the arguments that + users may supply (incorrectly.) Any quality not separately specified + defaults to the normal OPTIMIZE quality. + + Fixed WITH-COMPILATION-UNIT keyword to be :OVERRIDE instead of :FORCE. + Also, added :OPTIMIZE and :OPTIMIZE-INTERFACE for changing the "global" + compilation policy within the dynamic extent. + + Added :CONTEXT-DECLARATIONS, which provides a way to insert declarations + conditional on pattern matching of the context in which the definition + appears. So you can compile all external functions safe, or whatever. See + the doc string for WITH-COMPILATION-UNIT. + + +Hemlock: + +Tuning: + Changed typescript streams to cache the line length. This greatly speeds + up slave output. + + Several changes to allow redisplay to be delayed until process output (i.e. + in a shell buffer) is complete. This allows the editor to catch up with + output by only displaying the final state of the shell buffer, instead of + forcing every line of output to be displayed. This is very nice with slow + terminals or large outputs. + +TTY redisplay: + Changed TTY redisplay to get the terminal size and speed from Unix using + the appropriate "ioctl" calls. The speed of a PTY (and hence any telnet or + MCN connection) is infinite by default. For best results with TTY + redisplay, it is crucial to set the terminal speed with the Unix "stty" + command: + stty 2400 + stty 9600 etc. + + Setting the speed allows the editor to keep in synch with the terminal so + that typing a command will temporarily abort redisplay until until there is + no typeahead. This way, if you type C-v C-v in succession, output of the + first screen will stop when you type the second C-v. + + Fixed several bugs in TTY redisplay. "Unexpected zero transition delta" is + gone. Also, fixed some problems with the screen not being updated properly + after redisplay has been aborted. (When you type several commands in quick + succession.) + + REDISPLAY now returns T, NIL or :EDITOR-INPUT. T is returned when + redisplay changed the screen. NIL is returned when there was no change. + :EDITOR-INPUT is returned when redisplay tried to update the screen, but + was aborted due to pending editor input. + + Fixed REDISPLAY-WINDOWS-FROM-MARK so that process output won't cause + redisplay when we aren't in Hemlock. + +Bug fixes: + Modified MAKE-BUFFERS-FOR-TYPESCRIPT to make sure the user supplied + slave-name is free for use, so we don't clobber currently existing slaves. + + Fixed a bug in completion mode (didn't previously work in the new-compiler + system.) + +Enhancements: + There is a new command "Set Buffer Writable", and the obsolete + command "Connect to Registered Eval Server" has been removed. + + Added "Slave GC Alarm" variable (default :MESSAGE) which controls how + obnoxious the slave GC notification is. Other values are like for "Input + Wait Alarm", :LOUD-MESSAGE and NIL. + + Made the slave switch demon set debug:*help-line-scroll-count* to + most-positive-fixnum, since the editor can do the scrolling for us. + + +SYSTEM, EXTENSIONS: + +Made SYSTEM:BITS, BYTES, etc., be defined in the null environment so that they +can be inline expanded. This was causing spurious consing in various system +code. + +Fixed EXT:CONNECT-TO-INET-SOCKET to check that we successfully looked up the +name so that we don't get segment violations on unknown hosts. + +Fixed DI:FUNCTION-DEBUG-FUNCTION (though it still returns the XEP.) +Some fixes to DI: condition report methods + +Added support for the MACH:TIOCGWINSZ and MACH:TIOCSWINSZ ioctls. +In the Unix interface, extended the length of pathnames from 64 to 1024. + +EXT:ONCE-ONLY now does sequential variable binding. This can't cause any +problems, since all names are gensyms, and is often useful. + +Added :TIMEOUT argument to SYSTEM:MAKE-FD-STREAM. The SYSTEM:IO-TIMEOUT +condition is signalled if a timeout is specified and exceeded. + +----------