/[cmucl]/src/general-info/beta-release-notes.txt
ViewVC logotype

Contents of /src/general-info/beta-release-notes.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.16 - (show annotations)
Fri Mar 11 14:25:22 1994 UTC (20 years, 1 month ago) by ram
Branch: MAIN
Changes since 1.15: +20 -2 lines
File MIME type: text/plain
Lock status: Locked ram
Update for 17e
1 Release notes for CMU Common Lisp 17e, 19 September 93
2
3 17e is primarily a bug-fix release. This release is also available on
4 Hewlett-Packard 700-series workstations running HP/UX version 9.x.
5 The main missing feature on HP/UX is LOAD-FOREIGN.
6
7
8 BASIC COMMON LISP SUPPORT CODE:
9
10 Enhancements:
11 -- The function EXT:PURIFY is now exported. This was formerly only
12 documented as usable via the :PURIFY argument to SAVE-LISP. Great
13 improvements in GC runtime and memory use can be obtained when PURIFY is
14 called after loading in large amounts of code or creating large
15 datastructures that are unlikely to become garbage.
16 -- EXT:PURIFY (and thus (EXT:SAVE-LISP ... :PURIFY T) now compact the
17 hashtables representing the global namespace. Formerly this feature was
18 undocumented and only used during the initial system build.
19 -- There is now a "runtime" version of the Lisp image which omits the
20 compiler and loads some other code byte compiled, giving a 60% size
21 reduction. See README file, "Runtime distribution" section.
22 -- Changed the byte-function and byte-closure funcallable-instances to use
23 &more args instead of a &rest arg (eliminating the main source of
24 grautitous consing in byte code.)
25 -- Allow pretty-printer to work without compiler loaded.
26 -- Improved (and thus changed) the SXHASH of lists and other composite
27 objects.
28 -- Added to *FEATURES* all of the ANSI CL features that seemed plausible.
29 Any non-ANSI compliance is now a bug, not a feature...
30 -- Picked up Miles' changes to apropos and apropos-list that allows one to
31 supply NIL for the package, meaning all packages.
32
33 Bug fixes:
34 -- In SIGNAL, bind *break-on-signals* to NIL even before doing the type test
35 so that we don't wedge the error system if the type is malformed or
36 undefined.
37 -- Fix arg ordering for GETF in new condition support. Default the name
38 slot in DEFMACRO-LAMBDA-LIST-BIND-ERRORS to NIL (instead of leaving it
39 unbound.)
40 -- In READ-N-BYTES, only signal EOF when we read and got 0 bytes, not
41 whenever read returns less than we wanted. Also, fix the case of small
42 reads with an empty buffer not to leave garbled buffer pointers if we have
43 to do more than one read. These bugs mostly affect the X interface and
44 its users (Garnet was having problems.)
45 -- Changed YES-OR-NO-P and Y-OR-N-P to force output.
46 -- Fixed COUNT :TEST-NOT to actually negate the test.
47 -- Fixed COERCE to call type-expand so that people can coerce to deftypes.
48 -- Rename STEP to DEBUG::SET-STEP-BREAKPOINT because step is supposed to be
49 the exported step macro, not some internal routine.
50 -- Fixed DEFPACKAGE to combine multiple use, export, and import options
51 correctly. Fixed the warning about no longer using some packages to
52 actually work.
53 -- Fixed GCD to correctly handle MOST-NEGATIVE-FIXNUM.
54 -- Flush Hemlock font change hack in default site-init.lisp, since it was
55 causing problems.
56
57 CLOS (PCL):
58 -- Add some hacks for coercing lisp:class objects to pcl:class.
59 -- Export MAKE-LOAD-FORM-SAVING-SLOTS, not MAKE-LOAD-FORM-DUMPING-SLOTS.
60 -- Fix some problems with the LISP:CLASS class-precedence-list suddenly
61 becoming empty when a class is redefined.
62 -- Fixed SIMPLE-STRING to list STRING in the inherits list.
63 -- Fix to update-instance-for-different-class.
64
65
66 COMPILER:
67
68 Enhancements:
69 -- Added a type inference method for LOG's result type.
70 -- Added support for "more args" which are like rest args, but don't cons.
71 This is used for calling into annd out of byte-compiled core and in the
72 PROFILE package.
73 -- Increase *inline-expansion-limit* from 50 to 200. Change "inline
74 expansion count exceeded" warning to be a note. Don't inline expand in
75 interpreted code.
76
77 Bug fixes:
78 -- Allow stream arg to compile-file.
79 -- Changed assert-definition-type to quietly ignore non function-types.
80 -- Allow stream arg to compile-file.
81 -- Deleted incorrect type declaration in process-1-ftype-proclamation.
82 Deleted test for function-type-p around call to assert-definition-type,
83 since this is now folded into the function. Previously several calls
84 weren't doing this necessary check.
85 -- Fix a problem where spurious argument types could be inferred for optional
86 arguments in byte-compiled code (caused yes-or-no-p to fail.)
87 -- Fixed an internal error related to tail local calls.
88 -- Fixed assertion failure about COMPONENT-NEW-FUNCTIONS with some inline
89 expansions.
90 -- Fixed (TYPEP X '(REAL ...)) to actually test against REAL, not NUMBER.
91 -- Fixed a problem where top-level MULTIPLE-VALUE-CALL forms could cause an
92 assertion falure.
93 -- Don't try to compile flow-graph components that are unreachable. This
94 avoids some internal errors when unreachable local functions are
95 deleted.
96 -- Fix problem with byte-compiling PROGV getting an internal compiler error.
97
98
99 EXTENSIONS:
100
101 Misc extensions:
102 -- Added an executable-only optional to EXT:UNIX-NAMESTRING so that we can
103 expand path:foo into the first executable in the path named foo, not just
104 the first file
105 -- Changed RUN-PROGRAM to only try to run executables, and to flame out if it
106 can't be found in path:.
107 -- Profile: use &more instead of &rest to avoid consing the &rest arg list.
108 Fixed PROFILE:REPORT-TIME to not choke if any of the function names are
109 not symbols (e.g. setf functions).
110
111 [NOTE: Motif server doesn't work on HP yet.]
112 Motif interface:
113 -- Added an optional STYLE arg to the graphical inspector to make the
114 function consistent with its doc string (as well as the old inspector).
115 -- Tried to make starting the Motif server more robust, or at least give some
116 intelligible error message.
117 -- Added some extra protection against recursive invocation of the windowing
118 debugger.
119 -- Don't try to invoke motif debugger if we didn't succeed in opening a
120 connection.
121 -- Print warning in status hook when server dies.
122 -- Made server fflush after all output so that we see output when it is run
123 on a pipe.
124
125 Hemlock:
126 -- Add window-buffer-hook for echo area buffer to make absolutely sure we
127 can't change the eacho area window to point to another buffer.
128 -- Give a sensible error message if we can't find the slave utility (e.g.
129 lisp) to run.
130 -- Restored the behavior of scribe-file to cd to the directory of the .mss
131 file before running scribe.
132 -- Change default fonts to be courier, flushing all mention of 8x13.
133 Remove font-setting in default site-init file, since it was causing
134 problems.
135 -- Add FILE-POSITION method for region streams so that the compiler's read
136 error recovery works for "Editor Compile Defun", etc.
137 -- When reading a file, set BUFFER-WRITABLE to T before doing anything so
138 that we don't get spurious read-only errors.
139
140
141 Release notes for CMU Common Lisp 17c, 19 September 93
142
143 17c is a new major release of CMU Common Lisp. An overview of changes:
144 -- New structure object representation and class support in the type system.
145 -- PCL better integrated with CMU type system.
146 -- New CLX, PCL.
147 -- Numerous ANSI changes.
148 -- Byte-code compilation option offers more compact code.
149 -- Improvements in compiler source-level optimization, inline expansion and
150 instruction scheduling.
151 -- New fasl file format (you must recompile.)
152 -- Calling of SETF functions is now efficient.
153 -- Speed and space tuning in the compiler and runtime system.
154 -- New TTY debugger commands support stepping compiled code.
155 -- A graphical debugger and inspector based on a Motif interface.
156 -- Changes in the startup code and SAVE-LISP increase portability.
157 -- Preliminary support for the HP Precision Architecture under HP-UX 9.0
158 (i.e. for HP 700 series.)
159 -- New User's manual. Note that the online Info document has not been
160 updated yet.
161
162 And of course, bug fixes...
163
164 Basic runtime code changes:
165
166 ANSI cleanups:
167 -- These functions are now defined:
168 ARRAY-DISPLACEMENT CELL-ERROR-NAME COMPILE-FILE-PATHNAME
169 COPY-STRUCTURE DELETE-PACKAGE INTERACTIVE-STREAM-P
170 LOAD-LOGICAL-PATHNAME-TRANSLATIONS LOGICAL-PATHNAME LOGICAL-PATHNAME-P
171 LOGICAL-PATHNAME-TRANSLATIONS MAKE-LOAD-FORM MAKE-LOAD-FORM-SAVING-SLOTS
172 MAP-INTO OPEN-STREAM-P TRANSLATE-LOGICAL-PATHNAME
173 -- The conditions FLOATING-POINT-INEXACT,
174 FLOATING-POINT-INVALID-OPERATION, and the type FILE-STREAM are now
175 defined.
176 -- Logical pathnames are now implemented. (See "pathnames" below and the
177 user's manual.)
178 -- Allow :UNSPECIFIC and :WILD in all pathname slots where they should be
179 legal; don't always use a :MULTI-CHAR-WILD pattern.
180 -- Support for :COMPILE-TOP-LEVEL, :LOAD-TOP-LEVEL and :EXECUTE keywords to
181 EVAL-WHEN.
182 -- #S readed no longer forces keywords into the keyword package.
183 -- Various changes to DEFSTRUCT described below.
184 -- IN-PACKAGE now prints a warning if any arguments other than the package
185 name are supplied and signals a correctable error if the package doesn't
186 exist yet.
187 -- DEFPACKAGE now tells you about inconsistencies between any existing package
188 and the DEFPACKAGE form.
189 -- Packages:
190 - DELETE-PACKAGE function added according to X3J13/92 specification.
191 Most operations on deleted packages signal an error.
192 - Changed IN-PACKAGE to conform to the new definition. But if you use an
193 old-style IN-PACKAGE, it will use the old behavior.
194 - Rewrote DEFPACKAGE to tell you about inconsistencies between the
195 package and the DEFPACKAGE form.
196 -- Conditions:
197 - Changed conditions to be non-structure (but also non-PCL) instances
198 that support multiple inheritance and the other required CLOS
199 operations. Removed SIMPLE-CONDITION hacks for simulating multiple
200 inheritance.
201 - DEFINE-CONDITION now corresponds to proposed ANSI CL, which is a subset
202 of DEFINE-CLASS syntax and is incompatible with the earlier KMP syntax.
203 Note that in particular, :INITARG and :READER options are now
204 effectively required on every slot.
205 - SIMPLE-CONDITION-FORMAT-STRING renamed to
206 SIMPLE-CONDITION-FORMAT-CONTROL.
207 - Implemented CONDITION-RESTARTS ANSI cleanup & WITH-CONDITION-RESTARTS
208 macro. This provides a way to say that restarts are relevant only to a
209 certain condition.
210 - Added STYLE-WARNING and PARSE-ERROR conditions.
211 - Added report method for END-OF-FILE and changed system code to signal
212 it.
213 - Added PRINT-NOT-READABLE condition and made people use it.
214 -- Remove some spurious LISP package exports, and add missing ones.
215 Delete package setup for optional subsystems (hemlock, etc.)
216 -- Renamed SPECIAL-FORM-P to SPECIAL-OPERATOR-P.
217 -- Renamed GET-SETF-METHOD-MULTIPLE-VALUE to GET-SETF-EXPANSION and
218 DEFINE-SETF-METHOD to DEFINE-SETF-EXPANDER. The old names are still
219 defined for CLtL1 compatability.
220 -- Added degenerate versions of STREAM-EXTERNAL-FORMAT,
221 FILE-STRING-LENGTH and the :EXTERNAL-FORMAT argument to OPEN.
222 -- Hash-table code largely rewritten. MAKE-HASH-TABLE now conforms to
223 the X3J13 spec. Hash-tables can now be dumped as constants in fasl files.
224
225 Bug fixes:
226 -- Made the "modules:" search-list (used by REQUIRE) default to the current
227 directory.
228 -- Do a BOUNDP check so that references to undefined types inside of a
229 WITH-COMPILATION-UNIT but outside of the compiler won't cause
230 undefined-variable errors.
231 -- Set up a default for modules: search-list.
232 -- Changed BACKQ-UNPARSE to check for improper lists instead of getting an
233 internal error. Some meaningless backq forms will now pprint as:
234 "### illegal dotted backquote form ###".
235 -- Added SIMPLE-STYLE-WARNING, and spiffed up the simple-condition hacks so
236 that (typep x 'simple-condition) works.
237 -- In LOAD-FOREIGN, use unix-namestring on each file before passing it to the
238 linker to get rid of search lists.
239 -- Fixed the printer to stop at the fill pointer for strings with fill
240 pointers.
241 -- Fixed PPRINT-DO to not flame out if one of the binding lists is NIL.
242 -- Fixed load to not always consider files with NIL type to be source files.
243 If the file exists as specified, then look at the header instead of trying
244 to default the type. If :CONTENTS is specified, then don't try defaulting
245 types.
246 -- Fixed FORMAT-EXP-AUX to correctly handle variable width fields when the
247 argument is negative.
248 -- Use ~C instead of ~A when printing float exponent marker so that
249 *PRINT-READABLY* doesn't mess things up.
250 -- Fixed CLEAR-INPUT on file descriptor streams to flush any unread chars.
251 -- Now that +0.0 and -0.0 are no longer EQL, fixed ATAN to deal with them
252 correctly.
253 -- Changed SAVE-LISP to pad the core file out to CORE_PAGESIZE bytes, so that
254 when we mmap it back it, we won't get bus errors if the real page size is
255 less then the CORE_PAGESIZE.
256 -- Really really fixed GET-SETF-METHOD-MULTIPLE-VALUE for local macros. Also,
257 in the recursive calls, people were not propagating the environment
258 through, and in some places were not recursing with the multiple-value
259 version.
260 -- Fixed FLOAT to float ratios precisely by using integer division instead of
261 float division. This fixes a problem where a bit or two was lost on
262 READing floats.
263 -- In the Alien type= method for FUNCTION, call ALIEN-TYPE-= instead of
264 calling ALIEN-TYPE-P with two args. [Fix from Mike Clarkson.]
265
266 Compiler changes:
267
268 Enhancements:
269 -- If the argument to compile-file is already absolute, then don't bother
270 expanding it into the TRUENAME. This allows search-lists or logical
271 pathnames to be preserved in the defined-from info (for DESCRIBE, "Edit
272 Definition", etc.)
273 -- Signal a compile-time error for division by constant 0.
274 -- Replaced the FORMAT transform with one that uses FORMATTER for more
275 complete handling of format directives. This is only enabled when
276 speed > space.
277 -- Compilation to a dense byte-code is now supported, see below.
278 -- Semantic analysis/optimization of function calls has been revamped so that
279 optimizations are done more consistently, especially when the call is a
280 funcall.
281 -- A new approach is now taken to inline expansion, allowing inlining to be
282 done in more cases. In particular:
283 - local functions from LABELS or block compilation can now be inlined,
284 - global function definitions made inside of a local macro or special
285 declaration can now be inlined.
286 Inline expansion is now divided into two separate parts:
287 - Semi-inline expansion introduces a local definition of a global
288 function that has an expansion available. This is now exactly
289 equivalent to block-compiling together with that DEFUN.
290 - Local call analysis introduces new copies of locally defined INLINE
291 functions. This duplication is limited by EXT:*INLINE-EXPANSION-LIMIT*
292 (default 50) to prevent indefinite expansion of recursive functions.
293 This limit may need to be increased for compilations containing many
294 legit inline expansions in order for all calls to be inlined.
295 -- SETF functions are now better supported. Calling a compile-time constant
296 SETF function is now just as efficient as calling a function named by a
297 symbol. This is done by resolving function names to "fdefinition objects"
298 at load time. SYMBOL-FUNCTION of a non-constant symbol is now somewhat
299 slower, since the fdefinition must be located by a table lookup.
300 -- Assembler and disassembler have been reimplemented yet again, giving
301 improved portability and scheduling.
302 -- Assembly optimization is now enabled, giving large speed/space improvements
303 on MIPS and some on SPARC. This optimization is done when speed >
304 compilation-speed (i.e. not by default) since it significantly slows
305 compilation.
306 -- [mips] Lots of tweeks in order to use NIL and 0 directly from the
307 registers holding them instead of copying them into a new register and
308 then using it.
309 -- New funcallable-instance support (for PCL, etc.) Now funcallable instance
310 functions must be specially compiled, which is indicated by creating them
311 with KERNEL:INSTANCE-LAMBDA.
312 -- Moved assumed-type recording of unknown function calls from the beginning
313 of IR1 to the end so that we have the best type information about the
314 arguments.
315 -- Generalized the static-mumble-offset routines to also consider nil a
316 static symbol at offset 0.
317
318 ANSI changes:
319 -- Make compiler error functions use the condition system. This ANSI cleanup
320 has two advantages:
321 1] compiler-warning and warn are now equivalent, so uses of WARN will be
322 counted in the warning total and given source context.
323 2] user handlers can be defined to notice or suppress output.
324 -- Made DYNAMIC-EXTENT declaration recognized & ignored.
325 -- Allow non-keyword keyword names when the &key keyword is specified
326 separately. In FUNCTION and VALUES types, allow non-keyword symbols; you
327 must now explicitly the ":" in order to get the usual keyword naming.
328 -- Compiler-macros are now supported. See DEFINE-COMPILER-MACRO.
329 -- Minor tweeks to conform to X3J13 cleanup MACRO-DECLARATIONS:MAKE-EXPLICIT.
330 -- Fixed SYMBOL-MACROLET to allow declarations as per X3J13 cleanup SYMBOL-
331 MACROLET-DECLARE:ALLOW. When declaring things about symbol macros, type
332 declarations just wrap (the type ...) around the expansion, special
333 declarations signal an error, and ignore/ignorable declarations are
334 ignored.
335
336 Tuning:
337 -- Tuning based on instruction-counting profiling of the compiler --- added
338 missing declarations, etc. This also motivated some general
339 array/sequence optimizations (see below.)
340 -- Added block compilation declarations. Moved some stuff around to get
341 better locality.
342 -- Changed IR1-ERROR-BAILOUT to do fewer special bindings.
343 -- Inline expand some simple utility functions.
344 -- Some changes to increase the sharing among some of the automatically
345 generated functions in the compiler backend.
346
347 Bug fixes:
348 -- [sparc,mips] Fixed a bug in default-unknown-values where it wouldn't
349 default the first unsupplied value to nil if more then 6 values where
350 supplied.
351 -- Structure slot accessors are no longer constant-folded, because that was
352 causing problems with some MAKE-LOAD-FORM hacks.
353 -- Fixed numeric type inference to realize that contagion causes the result
354 of SINGLE-FLOAT & REAL to be FLOAT, not SINGLE-FLOAT.
355 -- In FINALIZE-XEP-DEFINITION, if not the current global definition, just
356 leave the defined type alone, instead of clobbering it with FUNCTION. A
357 benefit of this is that COMPILE doesn't trash the function type.
358 -- Don't run the back-end(s) on components with no code.
359 -- Don't compile load-time-value lambdas if they've already been compiled
360 because they ended up in a non-top-level component. Also, the function
361 holding a load-time-value form also has a more sensible debug name.
362 -- Fixed a problem with ASSERT-DEFINITION-TYPE when we have a keyword arg
363 with a non-constant default.
364 -- Fixed several uses of FIND to use EQUAL instead of EQL to compare function
365 names, because (SETF mumble) is now a valid function name, and isn't
366 necessarily EQL.
367 -- Bind *GENSYM-COUNTER* around compilation that it doesn't get side
368 effected.
369 -- Fixed a bug in type inference which seems to have generally prevented
370 anything from being inferred about function result types.
371 -- Fixed several bugs related to the handling of "assignment" local functions
372 (that correspond to a tail-recursive loop.)
373 -- Added a hack to IF-IF optimization to hopefully prevent some spurious
374 unreachable code notes.
375 -- Fixed call to CONTINUATION-DERIVED-TYPE to be CONTINUATION-TYPE so that we
376 don't choke on values types in the functional position.
377 -- Fixed the handling of +/- 0.0:
378 - = is no longer converted to EQL, but is directly handled by the backend.
379 - EQL is converted into a raw comparison of the bits.
380 -- Fixed several bugs which caused fatal compile-time errors.
381 -- Fixed LET* to correctly use the internal policy (not the interface policy)
382 for all bindings, not just the first.
383 -- In local call VOPs, must load CALLEE-NFP with MAYBE-LOAD-STACK-TN, since it
384 might not be in a register.
385 -- When iterating over the lamdba-calls in unconverting tail calls, have
386 to ignore any deleted lambda.
387 -- Fixed listify-rest-arg. It was leaving a tagged pointer to unallocated
388 memory in a descriptor register, which would confuse the garbage collector
389 if this value was still around.
390 -- Compile and dump package manipulation forms before evaluating them, so
391 they are dumped with respect to the state of the package system before the
392 form was read, not after.
393
394 Sparc:
395 -- New pseudo-atomic speeds allocation.
396 -- Added checking for integer division by zero.
397
398 Mips:
399 -- Changed generic-= and generic-/= to not assume that EQ implies =,
400 because it doesn't in the case of NaNs.
401 -- Major rewrite of many things. Merged mumble-immediate SCs into the
402 immediate SC. Wrote several vops to use :constant arg types better.
403 Rewrote all the type testing stuff. New pseudo-atomic, allocators now
404 inline.
405 -- Fixed UNBIND-TO-HERE to not dereference past the end of the binding stack.
406 -- Changed to load the function from static-function-offset relative to NIL
407 instead of computing the symbol and then loading the function.
408 -- Added Miles' change to use JALI instead of LI/JR now that it exists.
409 -- Fixed a lifetime bug in full call. This only showed up if there were
410 either a variable number or > 6 arguments and the caller was large enough
411 that the compute-lra-from-code couldn't be done in one instruction.
412
413 Byte compilation:
414
415 Byte compilation reduces the size of the Lisp process by allowing rarely used
416 functions to be compiled more compactly. In comparison with 16f, the basic
417 system image is about 20% smaller. The full system with Hemlock CLX, etc., is
418 also 19% smaller even though it contains new code (the Motif interface) because
419 a larger fraction of the extra systems are byte compiled.
420
421
422 Byte compilation overview:
423
424 The decision to byte-compile or native compile can be done on a per-file or
425 per-code-object basis. COMPILE-FILE now has a :BYTE-COMPILE argument. If T,
426 we byte-compile everything and create a machine-independent fasl file
427 (dependent only on byte order, file type "bytef" or "lbytef".)
428 If :MAYBE (the default, from EXT:*BYTE-COMPILE-DEFAULT*), things are
429 byte-compiled when speed = 0 and debug <= 1. Top-level forms are byte-compiled
430 by default (controlled by ext:*byte-compile-top-level*.)
431
432 Byte compilation is roughly twice as fast native compilation. Byte compiled
433 code runs 50x--200x slower than native code, and is 6x more dense. This is
434 about 10x faster than the IR1 interpreter, which is itself considered fast in
435 comparison to other Common Lisp interpreters. Historical perspective: this is
436 about as fast as Spice Lisp on a PERQ.
437
438 Tuning:
439 -- Tweaked GENSYM so that the CONCATENTATE is open-coded.
440 -- Tweaked WITH-ARRAY-DATA to test for (not (array-header-p )) instead of
441 (simple-array * (*)), since that's much faster. This helps all functions
442 that accept non-simple arrays.
443 -- Transform MEMBER, DELETE and ASSOC to MEMQ, ASSQ and DELQ when possible.
444 Inline expand vector & list POSITION, vector FILL and list DELETE-IF.
445 -- Add some INDEX declarations in simple-string concatenate/replace
446 transforms.
447 -- made DIGIT-CHAR-P and DIGIT-WEIGHT maybe-inline.
448 -- Added declarations from efficiency notes in fd-stream, load, package,
449 reader, char and hash.
450 -- Revived the support for FAST-READ-CHAR and the STREAM-IN-BUFFER, which
451 allows READ-CHAR and READ-BYTE to be done with 0 function calls rather than
452 2.
453 -- Because of above two changes, both the reader and the fasloader are now
454 significantly faster (reader 2x.)
455 -- Default (non-frozen) structure type tests are now significantly faster (no
456 function calls), and somewhat smaller. This and the reader improvement
457 have sped up the compiler somewhat.
458 -- Many debug-info and compiler data structures are now annotated as pure,
459 alloing them to be put in read-only space. This reduces the amound of
460 stuff in static space, speeding GC.
461 -- Real-valued hash-table parameters (rehash-threshold etc.) are
462 canonicalized to single-floats.
463 -- Replaced ISQRT with a much faster version off the net.
464 -- serve-event now uses UNIX-FAST-SELECT, so it can can handle >32 file
465 descriptors and is more efficient.
466 -- Changed UNIX-FAST-SELECT to a macro so that it can be efficient. Changed
467 FD-SET stuff to be efficiently compilable.
468 -- Use an auxiliary function to make the condition for macro arg count
469 errors to save space in macro definitions.
470 -- Byte compile the expander functions for all macros except those in the
471 cold load. Byte-compile various user-interface stuff like the debugger,
472 disassemble and structure print functions. Byte-compile most Hemlock
473 commands.
474 -- Compile PCL's guts unsafe when #+SMALL.
475 -- Some gratuitous RANDOM tuning. Random double floats are now much, much
476 faster. Added transforms for RANDOM to type-specific functions (which can
477 then be inline-expanded).
478
479 DEFSTRUCT and classes:
480
481 The structure representation has been changed to point directly to a type
482 descriptor rather than to the symbol type name. This allows faster type tests
483 and better GC support. Also, structure redefinition is now much more
484 conservative; formerly, many cases where code was compiled using differing
485 versions of the same structure were quietly ignored or resulted in strange
486 behavior. Raw allocation of typed slots dramatically increase the efficiency
487 of float-valued slots. Much of DEFSTRUCT has been rewritten, and is now
488 believed to be ANSI complaint.
489
490 ANSI changes:
491 -- Default defstruct keyword constructors can no longer reference argument
492 values in slot init forms. BOA constructors can still do this, so defining
493 a BOA constructor with all keyword args will have the old effect.
494 -- Class objects are now implemented, see FIND-CLASS, CLASS-NAME, TYPEP,
495 CLASS-OF. TYPE-OF is now based on CLASS-OF, and returns slightly different
496 results than before.
497 -- STRUCTURE-CLASSes now exist. See also the STRUCTURE-OBJECT type.
498 -- BUILT-IN-CLASSes also exist. In some cases CLASS-OF (legally) returns
499 non-standard subclasses of the standard class, e.g. for a float vector, the
500 result is KERNEL::SIMPLE-ARRAY-SINGLE-FLOAT. STANDARD-CHAR and KEYWORD are
501 now DEFTYPEs.
502
503 Bug fix:
504 -- Typed structures now have the correct (though rather odd) semantics of
505 :offset and :named when inclusion is done.
506
507 Raw slots:
508 -- Structure slots of subtypes of SINGLE-FLOAT, DOUBLE-FLOAT and
509 (UNSIGNED-BYTE 32) are now allocated in non-descriptor storage, and can be
510 read/written without number-consing overhead.
511
512 Type tests:
513 -- The default (non-frozen) structure type predicate is now significantly
514 faster (no function call) in the case where the argument is a structure
515 of another type or the type is a supertype of the object's type. The code
516 is also somewhat smaller.
517
518 Structure Redefinition:
519 -- Handing of structure redefinition is now much more comprehensive.
520 -- Definitions are only considered incompatible when slots have moved or been
521 added, slot types are changed to a type that is not a subtype of the old
522 type, or the inheritance structure has changed. Previously any change at
523 all would produce a warning.
524 -- When a change is incompatible, the default restart (CONTINUE) invalidates
525 old instances, constructors and predicate uses. When speed <= safety, a
526 LAYOUT-INVALID error will be signalled when obsolete instances are passed
527 to a type test (e.g. for type checking.) Use of old code on new instances
528 or old instances when speed > safety > 0 will result in type errors.
529 Other restarts allow you to ignore the redefinition or to clobber the
530 existing information, preserving the old code (in case the change is
531 actually compatible.)
532 -- If the structure length or inheritance structure has changed, an error
533 is signalled when you load code that was compiled with a different
534 structure definition than the one currently in effect.
535
536 Structure Internals:
537 -- VM:STRUCTURE-USAGE renamed to VM:INSTANCE-USAGE. Internally, the structure
538 type and accessors have also been renamed, e.g.
539 STRUCTURE-REF => %INSTANCE-REF.
540 -- The non-standard STRUCTURE type has become has become EXT:INSTANCE. To
541 (portably) test whether something is really a structure object, do
542 (TYPEP X 'STRUCTURE-OBJECT)
543
544 PCL:
545 The largest changes are:
546 -- PCL port revamped to re-integrate PCL classes with the type system and to
547 more efficiently dispatch on structure and built-in types. Some
548 miscellaneous tuning. CLOS symbols are now exported from the LISP package,
549 so you don't need to USE-PACKAGE PCL anymore.
550
551 PCL notes:
552
553 The integration of PCL with the CMU CL type system has been substantially
554 improved. There are significant improvements in the speed of PCL generic
555 function dispatch of built-in and structure classes and TYPEP of PCL classes.
556 There should also be reduced run-time compilation (e.g. in the Motif
557 inspector) due to less use of non-precompiled dispatch functions.
558
559 The compiler now recognizes the PCL::CLASS declaration. This clues the
560 compiler in on PCL's knowledge of types (due to being a specialized argument
561 to a method.) CLOS class names are recognized as "real" types by the
562 compiler, not SATISFIES DEFTYPES. Note that LISP:CLASS is still not a PCL
563 class, so PCL needs to shadow CLASS and STANDARD-CLASS.
564
565 Fixed the #< print function to flame out if *PRINT-READABLY* is true.
566
567 Supply missing :INITIAL-ELEMENT NIL in MAKE-ARRAY call which can result in a
568 "0 is not a list" or "segment violation" error on redefining a class.
569
570 September-16-92-PCL-e has been incorporated into the CMU CL sources thanks
571 to Rick Harris. Merge fix to pessimization of GFs with many standard class
572 specializers but also some EQL or built-in class specializers.
573
574 Graphical debugger/Motif toolkit:
575
576 We have implemented a new interface to Motif which is functionally similar to
577 CLM, but works better in CMU CL. See:
578 doc/motif-toolkit.doc
579 doc/motif-internals.doc
580
581 This motif interface has been used to write a new inspector and graphical
582 debugger. There is also a Lisp control panel with a simple file management
583 facility, apropos and inspector dialogs, and controls for setting global
584 options.
585
586 Call INTERFACE:LISP-CONTROL-PANEL to create the control panel. When
587 INTERFACE:*INTERFACE-STYLE* is :GRAPHICS (the default) and the DISPLAY
588 environment variable is defined, the graphical inspector and debugger will be
589 invoked by INSPECT or when an error is signalled. Possible values are
590 :GRAPHICS and :TTY. If the value is :GRAPHICS, but there is no X display,
591 then we quietly use the TTY interface.
592
593 Debugger:
594
595 The command-line debugger now implements the breakpoint and step commands
596 described in the manual:
597 LIST-LOCATIONS [{function | :c}] list the locations for breakpoints.
598 Specify :c for the current frame. Abbreviation: LL
599 LIST-BREAKPOINTS list the active breakpoints.
600 Abbreviations: LB, LBP
601 DELETE-BREAKPOINT [n] remove breakpoint n or all breakpoints.
602 Abbreviations: DEL, DBP
603 BREAKPOINT {n | :end | :start} [:break form] [:function function]
604 [{:print form}*] [:condition form] set a breakpoint.
605 Abbreviations: BR, BP
606 STEP [n] step to the next location or step n times.
607
608 These commands provide a degree of support for stepping and setting
609 breakpoints inside compiled functions. The variables
610 DEBUG:*USE-BLOCK-STARTS-ONLY* and DEBUG:*PRINT-CODE-LOCATION-KIND* control the
611 verbosity of LIST-LOCATIONS.
612
613 Enhancements:
614 -- Changed PRINT-FRAME-CALL to print the source if verbosity >= 2 and
615 the source is available.
616 -- Changed source location printing to cache information so that it is much
617 faster when many locations in the same function are printed. The source
618 file is now only printed when the file changes from one printing to the
619 next.
620
621 Bug fixes:
622 -- Added explicit error checking to the debugger so that we don't get an
623 internal error (bus error in unsafe code, etc.) when attempting to display
624 source from a file that has been excessively modified.
625 -- Bind *BREAK-ON-SIGNALS* to NIL when we call BREAK in SIGNAL so that the
626 debugger doesn't recurse on itself.
627 -- Changed HANDLE-BREAKPOINT in the debugger to allow breakpoints that nobody
628 wants. This can happen if a function-end breakpoint was deactivated while
629 the function was on the stack, because there is no way to convert the
630 bogus-lra back into the real lra.
631 -- Fixed COMPUTE-CALLING-FRAME to not try using %CODE-DEBUG-INFO on
632 things that arn't code components.
633 -- Instead of doing after breakpoints in Lisp, use the new C function
634 breakpoint_do_displaced_inst. That way the C code can do different things
635 on different machines (like use single stepping if available).
636
637
638 Misc changes:
639
640 CLX:
641 We are now distributing version R5.01 of the CLX X library. Among other
642 changes, this is supposed to support the cookie-based host authentication
643 used by OpenWindows. Now compiled with the :CLX-ANSI-COMMON-LISP feature.
644
645 Pathnames:
646 -- Logical pathnames are now implemented and wildcard matching has been
647 generalized to make them useful. Any namestring beginning with HOST:
648 (where HOST is a defined logical host) will be parsed as a logical
649 pathname. If the prefix is not a defined logical host, it will be still
650 be parsed as a CMU CL "search list."
651 -- Pattern-matching on :WILD-INFERIORS is now implemented, but the
652 Unix code treats it pretty much like :WILD.
653 -- More error cases are detected in TRANSLATE-PATHNAME.
654 -- See new user's manual for CMU CL specific documentation.
655
656 Stream internals:
657 -- Deleted read-line methods. For simplicity, this rather unimportant
658 operation is now implemented using read-char.
659 -- READ-N-BYTES eof-error-p nil is now mostly non-blocking (it only reads what
660 is in the buffer, or what unix-read returns if the buffer is empty.) To be
661 sure it won't block, you must guard it with a LISTEN.
662
663 Extensions:
664 -- Changed the stream arg to DISASSEMBLE to be a keyword to avoid optional &
665 keyword lossage.
666 -- Changed PROFILE:PROFILE argument count determination to parse the function
667 type and look at it, instead of trying to fake it. Among other things,
668 this allows efficient profiling of functions with FTYPE declarations even
669 when compilation policy has caused the function-object's type to be
670 dropped.
671 -- Add :CALLERS option to PROFILE which records the most common callers
672 of each profiled function.
673 -- Add new "CPROFILE" package which does instruction-counting profiling with
674 the compiler's assistance.
675 -- Fixed DI:FUNCTION-DEBUG-FUNCTION to work on closures.
676 -- Added EXT:DO-HASH.
677 -- User-defined hashtable tests are now supported. There is a function
678 DEFINE-HASH-TABLE-TEST that takes three arguments: the symbol name of the
679 hash table test, the test function, and the hash function. It updates
680 *hash-table-tests*, which is now internal. The test function takes two
681 objects and returns true iff they are the same. The hash function takes
682 one object and returns two values: the (positive fixnum) hash value and
683 true if the hashing depends on pointer values and will have to be redone if
684 the object moves.
685 -- Added weak hash-table support.
686 - Removed (setf weak-pointer-value) and made make-weak-pointer itself the
687 compiler primitive in order to simplify the gengc port.
688 - Added stuff to fake scavenger hooks in the non-gengc system.
689 -- Moved the RUN-PROGRAM fork/exec stuff into C, for ease in porting.
690
691 Hemlock:
692 -- In DELETE-BREAKPOINTS-BUFFER-HOOK, if no wire (server died), then
693 don't do anything.
694 -- Changed BEEP flashing to use SLEEP 0.1 instead of DISPLAY-FINISH-OUTPUT
695 because this was causing recursive entry of CLX.
696 -- Fixed from debugger edit command "can't edit source" message not
697 spuriously reinvoke the debugger when invoked from the command line.
698 -- Fix initialization of print-representation attribute so that characters
699 >127 don't cause text to mysteriously disappear.
700 -- Flush carefully-add-font-path call. If people want library:fonts/ in
701 their font-path, they can put it there. This should eliminate the Hemlock
702 initialization error which would happen when using X remotely.
703
704
705 Changed SAVE-LISP to no longer save the stacks. Instead, when the core is
706 restored, a (supplied) initial function is invoked which can do whatever kind
707 of setup it wants. This makes a saved lisp totally independent of the
708 location of the C stack, and eliminates the "environment too big" error that
709 happened in some SUNOS environments. A consequence of this is that calling
710 SAVE-LISP terminates the currently running Lisp.
711
712 SunOS/SPARC:
713 Changed software-version to use /usr/bin/uname instead of stringing the
714 kernel.
715
716 Removed the load of bit-bash, because we don't want to have to support the
717 assemble routine versions.
718
719 Significant revamping of startup code (lisp now, not ldb.) The new startup
720 code has better breakpoint support and improved portability.
721
722 Added :CMU17 to the features list so that PCL can tell if it is in a
723 version 16 or a version 17 series core.
724
725
726 Release notes for CMU Common Lisp 16f, 11 December 92
727
728 The changes between 16e and 16f are almost exclusively bug-fixes. When we
729 announce a version 17 beta, 16f will probably become the default release
730 (replacing 15e). The PCL has been upgraded from "March 92 (2a)" to
731 "March 92 (2c)", which provides some bug-fixes; also, all of the patches in
732 the March-92-PCL-bugs file have been applied.
733
734 Enhancements:
735 -- PROVIDE & REQUIRE are now back in the system, since proposed ANSI CL has
736 reinstated them as deprecated features. See the doc strings for these
737 functions and EXT:DEFMODULE.
738 -- The SPARC dynamic heap size limit has been doubled from 64meg to 128meg.
739
740 Pretty printer:
741 -- Fixed a bug in pprint-let that caused to to barf on (let (nil) ...).
742 -- Fixed pprint-lambda-list to print a space before the dot when the tail of
743 the lambda list is shared. In other words, print (foo . #1=(bar baz))
744 instead of (foo. #1=(bar baz)).
745 -- Added an additional use of ~^ in pprint-flet so that (flet (nil) ...)
746 doesn't flame out.
747 -- Make pretty printer properly process pprint tabs when output is forced.
748 -- In format pprint logical blocks, fixed ~^ to act like
749 PPRINT-EXIT-IF-LIST-EXHAUSTED instead of blowing out to some containing
750 directive.
751
752 Compiler:
753 -- Fixed compiler internal error with dead-code deletion of top-level code.
754 -- Bind *gensym-counter* instead of setting it so that compiling doesn't
755 globally reset the gensym counter.
756 -- Fixed problem with interpreted LOAD-TIME-VALUE causing undefined function
757 VALUE-CELL-REF errors.
758 -- Preserve the arglist in interpreted functions for DESCRIBE, etc.
759 -- Gag bound-but-not-referenced warnings when the EXT:INHIBIT-WARNINGS
760 optimize quality is 3.
761 -- Fixed a problem with register allocation conflict analysis which appeared
762 when a function was called with ~>= 50 arguments.
763 -- Fixed bug with optimization of tail local calls.
764 -- Fixed interpreted PROCLAIM/DECLAIM to ignore
765 START-BLOCK, END-BLOCK and declared DECLARATION declarations.
766 Changed the unrecognized proclamation error to be a warning.
767 -- Fixed float heap allocation to not wedge when the store causes a trap
768 (SPARC only.)
769
770 Trace:
771 -- Added pretty-printer directives so that arg lists and results print better.
772 -- Fixed UNTRACE not to flame out when untracing untraced functions.
773 -- Fixed bug with redefining function traced with encapsulation (e.g.
774 interpreted functions.
775
776 Misc bug fixes:
777 -- Fixed I/O timeout handling (e.g. for CLX) to correctly borrow from the
778 timeout seconds when computing the new value for the timeout microseconds.
779 -- Restored proper (prompt) handling of queued CLX events in SERVE-EVENT
780 -- Alien enums always take up an int to be compatable with C. Also,
781 sort the from-alist so that enum aliens are unparsed in a canonical
782 format.
783 -- When doing macro destructuring, check to see if some part of a lambda-list
784 is a LIST before checking to see if it is a SYMBOL, because we want NIL to
785 act like the empty list, and not an attempt to bind NIL.
786 -- Fixed PACKAGE-ERROR to have a PACKAGE slot instead of a PATHNAME slot.
787 -- Changed DOLIST not to introduce the spurious let around the result form
788 when there is no result form. Also, just read the var in the spurious
789 let, instead of using IGNORABLE, since the var might be special.
790 -- In complex DEFSETF, don't bother creating temp vars for constants. This
791 is necessary so that keywords stay keywords, and are not changed to
792 gensyms.
793
794 Enhancements:
795 -- Changed the backquote expanded functions (backq-list, ...) from being
796 inline functions to compiler-macros, since although the optimizer does
797 eventually get the right code, it has to work awful hard. Changed BREAK
798 to accept a condition as well as a format string.
799 -- Exported EXT:CONNECT-TO-UNIX-SOCKET and EXT:CREATE-UNIX-SOCKET, which had
800 been forgotten before. Added code to CONNECT-TO-UNIX-SOCKET so that Unix
801 domain sockets are available for connecting to other processes.
802 -- Removed sys:*task-data* and sys:*task-notify* because they aren't used
803 even under Mach.
804
805
806
807 Release notes for CMU Common Lisp 16e, 5 August 92
808
809 16e is primarily a bug-fix release. The main changes from 16d are:
810 -- CLOS support is from March 92 PCL (2a). This is a new version of PCL
811 developed by Richard Harris which incorporates many bug-fixes and ANSI
812 compliance cleanups. He has also back-merged the CMU changes into his
813 sources so that we can release future PCLs without time-consuming merging.
814 On the downside, there are a couple of new bugs (discrimination on
815 pcl::structure-object doesn't always work; generic functions which contain
816 methods which discriminate on both null and list sometimes do not work).
817 Patches for these bugs are available in March-92-PCL-bugs in the CMU CL
818 release area and by anonymous ftp from host parcftp.xerox.com
819 (13.1.64.94), in the directory pub/pcl/.
820 -- TRACE has been reimplemented, has a new syntax and new features.
821 -- The hardcopy and info documentation has been updated. Note that it
822 describes some debugger capabilities (breakpoints) which won't appear
823 until version 17.
824
825 The fasl file format is the same as for 16d, but some code may need to be
826 recompiled. In particular, the expansion of PPRINT-LOGICAL-BLOCK has changed.
827
828
829 March 92 PCL highlights: (see notes.text in the sources for details)
830 -- This version of PCL is much closer than previous versions of PCL to the
831 metaobject protocol specified in "The Art of the Metaobject Protocol",
832 chapters 5 and 6, by Gregor Kiczales, Jim des Riveres, and Daniel G.
833 Bobrow.
834 -- You can use structure-class as a metaclass to create new classes.
835 Classes created this way create and evaluate defstruct forms which
836 have generated symbols for the structure accessors and constructor.
837 -- Various optimization of instance variable access, both inside and outside
838 of methods.
839 -- More work (lookups and precompilation) is done at compile and load time,
840 rather than run-time.
841
842
843 New TRACE:
844
845 Trace has been substantially rewritten, and has a new syntax as well as new
846 functionality:
847 -- Tracing of compiled functions is now implemented using breakpoints.
848 Breakpoints destructively modify the code object, causing all calls to the
849 function to be trapped, instead of only those calls that indirect through
850 the symbol. This makes TRACE more useful for debugging programs that use
851 data structures containing function values, since you can now trace
852 anonymous functions and macros. Also, the breakpoint stops the function
853 after the arguments have been parsed, so arguments can accessed by name in
854 the debugger or in TRACE options.
855 -- Depending on the ENCAPSULATE option and DEBUG:*TRACE-ENCAPSULATE-DEFAULT*,
856 encapsulation may be used instead. This is the default for closures,
857 generic functions and interpreted functions.
858 -- TRACE options are no longer set off by extra parens, and you can specify
859 global trace options which affect all functions traced by a particular
860 call to TRACE.
861 -- Conditional breakpoints now work much better than before.
862 -- *DEBUG-PRINT-LEVEL*, -LENGTH* are used instead of a separate
863 *TRACE-PRINT-LEVEL*, etc.
864
865 Here is the documentation string (see also the hardcopy/info documentation):
866 TRACE {Option Global-Value}* {Name {Option Value}*}*
867 TRACE is a debugging tool that prints information when specified functions
868 are called. In its simplest form:
869 (trace Name-1 Name-2 ...)
870
871 TRACE causes a printout on *TRACE-OUTPUT* each time that one of the named
872 functions is entered or returns (the Names are not evaluated.) The output
873 is indented according to the number of pending traced calls, and this trace
874 depth is printed at the beginning of each line of output.
875
876 Options allow modification of the default behavior. Each option is a pair
877 of an option keyword and a value form. Options may be interspersed with
878 function names. Options only affect tracing of the function whose name they
879 appear immediately after. Global options are specified before the first
880 name, and affect all functions traced by a given use of TRACE.
881
882 The following options are defined:
883
884 :CONDITION Form
885 :CONDITION-AFTER Form
886 :CONDITION-ALL Form
887 If :CONDITION is specified, then TRACE does nothing unless Form
888 evaluates to true at the time of the call. :CONDITION-AFTER is
889 similar, but suppresses the initial printout, and is tested when the
890 function returns. :CONDITION-ALL tries both before and after.
891
892 :WHEREIN Names
893 If specified, Names is a function name or list of names. TRACE does
894 nothing unless a call to one of those functions encloses the call to
895 this function (i.e. it would appear in a backtrace.) Anonymous
896 functions have string names like "DEFUN FOO".
897
898 :BREAK Form
899 :BREAK-AFTER Form
900 :BREAK-ALL Form
901 If specified, and Form evaluates to true, then the debugger is invoked
902 at the start of the function, at the end of the function, or both,
903 according to the respective option.
904
905 :PRINT Form
906 :PRINT-AFTER Form
907 :PRINT-ALL Form
908 In addition to the usual prinout, he result of evaluating Form is
909 printed at the start of the function, at the end of the function, or
910 both, according to the respective option. Multiple print options cause
911 multiple values to be printed.
912
913 :FUNCTION Function-Form
914 This is a not really an option, but rather another way of specifying
915 what function to trace. The Function-Form is evaluated immediately,
916 and the resulting function is traced.
917
918 :ENCAPSULATE {:DEFAULT | T | NIL}
919 If T, the tracing is done via encapsulation (redefining the function
920 name) rather than by modifying the function. :DEFAULT is the default,
921 and means to use encapsulation for interpreted functions and funcallable
922 instances, breakpoints otherwise. When encapsulation is used, forms are
923 *not* evaluated in the function's lexical environment, but DEBUG:ARG can
924 still be used.
925
926 :CONDITION, :BREAK and :PRINT forms are evaluated in the lexical environment
927 of the called function; DEBUG:VAR and DEBUG:ARG can be used. The -AFTER and
928 -ALL forms are evaluated in the null environment.
929
930
931 Assorted bug fixes and enhancements:
932
933 System code:
934 -- Changed default base file name for LOAD-FOREIGN to be argv[0] rather than
935 being hard-wired to "lisp".
936 -- Fixed a bad declaration which caused garbage collection to fail if more
937 than MOST-POSITIVE-FIXNUM bytes had been consed since process creation.
938 -- Changed GET-INTERNAL-RUN-TIME to use UNIX-FAST-GETRUSAGE to avoid
939 number-consing and generic arithmetic. Also, rearranged the computation
940 so that the time is correctly computed for up to 457 days, instead of only
941 71 minutes.
942 -- Merged Miles' fix to MAKE-PATHNAME so that it knows the difference between
943 an arg being NIL and being unsupplied.
944 -- Some partial fixes to circular printing (the #1=#1# bug).
945 PPRINT-LOGICAL-BLOCK no longer checks the list argument for CAR
946 circularity, now that OUTPUT-OBJECT does it for us.
947 -- Fixed reader dispatch macro characters to be case-insensitive, and to
948 disallow digits as sub-characters.
949 -- Changed #A reader to allow arbitrary sequences instead of just lists.
950 -- RUN-PROGRAM now gives a proper error message when "fork" fails (i.e. too
951 many processes.)
952 -- Fixed a bug in initialization of saved cores which caused the old
953 environment to be left on the end of EXT:*ENVIRONMENT-LIST*. One symptom
954 was that RUN-PROGRAM would run programs with strange environment values
955 based on those in effect at the time the core was saved. In particular,
956 Lisp subprocesses (i.e. Hemlock slaves) might get the wrong value of
957 CMUCLLIB, which caused the slave to die before connecting.
958 -- SYSTEM:SERVE-EVENT (and XLIB:EVENT-CASE, etc.) now correctly handle
959 non-integer timeouts. Added declarations to improve the efficiency of
960 event handling.
961 -- Fixed some bugs in UNIX-SELECT which could cause Lisp to hang when more
962 than 32 files were open. Also, improved efficiency in this case.
963 -- Merged Olssons fix to WITH-ENABLED-INTERRUPTS to not try to change
964 interrupt characters anymore.
965 -- A number of bug-fixes for breakpoint support in compiled code (but there
966 are still problems with arbitrary breakpoints.)
967 -- Fixed DI:FRAME-CATCHES
968
969 CLX:
970 -- Fixed the implementation-dependent pixarray copying routines (for
971 GET-IMAGE, etc.) so that they don't occasionally trash memory, and are
972 actually faster.
973 -- Fixed the definition of the ANGLE type (used by DRAW-ARC, etc.) to work
974 regardless of the kind of real number (single or double float, rational,
975 etc.)
976 -- Fixed several places in image operations where values that could really
977 be negative were declared to be non-negative.
978
979 Compiler:
980 -- Fixed a bug which caused an internal error whenever a call to random
981 was compiled and the argument type wasn't known to be either a float or
982 an integer.
983 -- Fixed a bug which caused an internal compiler error when a value that
984 wasn't used had an unproven type assertion.
985 -- Fixed some more dead-code deletion bugs.
986 -- Fixed a problem with the new "assignment" optimization of local function
987 call where the compiler could get assertion failures such as tail-sets not
988 being equal.
989 -- Fixed a few places where reoptimization wasn't being triggered when it
990 should have been.
991 -- You can now have a TAGBODY with more than one tag that is non-locally
992 exited to. Evidently this never worked...
993 -- Some changes in debug-info format related to breakpoint support.
994
995 Misc:
996 -- Fixed some Hemlock Dired commands to know that PATHNAME-DIRECTORY is
997 now a list, not a vector.
998 -- Fixed the bin/sample-wrapper script to use "$@" instead of $* so that
999 arguments are properly passed through.
1000
1001
1002 Release notes for CMU Common Lisp 16d, 30 May 92
1003
1004 16d is our first version 16 general release, and incorporates many changes not
1005 present in the 15 series. It is currently fairly close to our current
1006 internal development (alpha) systems, and is thus less stable. The major
1007 changes are:
1008 New Aliens
1009 New pathnames
1010 New pretty printer
1011 New format
1012 R5.0 CLX.
1013 5/1/90 May Day PCL (REV 4b)
1014 Revised manual
1015
1016 The fasl file format is nominally compatible with version 15, but the pathname
1017 change affects any pathname constants in fasl files, which includes the
1018 defined-from information present in every fasl file. It is probably a good
1019 idea to recompile everything.
1020
1021 CLX and Hemlock are now optional. When CMU CL is installed, the maintainer can
1022 elect not to load CLX and Hemlock -- this saves 7 megabytes of disk and
1023 improves memory usage somewhat. See the installation section of the README
1024 file for details.
1025
1026 The ``CMU Common Lisp User's Manual'' has been updated to be more helpful for
1027 non-CMU users. The new manual also documents the new Alien facility for
1028 foreign function calls and data structure access. The manual is now formatted
1029 with Mike Clarkson's LaTeXinfo package, so a consistent version of the
1030 documentation is available online in Gnu info format. See `doc/cmu-user.ps'
1031 and `doc/cmu-user.info'.
1032
1033
1034 General system code:
1035
1036 ANSI cleanups:
1037 -- ANSI Compiler macros are now implemented: see COMPILER-MACRO-FUNCTION,
1038 COMPILER-MACROEXPAND, COMPILER-MACROEXPAND-1 and DEFINE-COMPILER-MACRO.
1039 -- Fixed things that invoke *MACROEXPAND-HOOK* to coerce it to a function
1040 before calling it.
1041 -- Fixed MACRO-FUNCTION to take an environment argument.
1042 -- SYMBOL-MACROLET now accepts declarations.
1043 -- SHADOW now accepts strings in addition to symbols.
1044 -- Added UPGRADED-ARRAY-ELEMENT-TYPE and UPGRADED-COMPLEX-PART-TYPE.
1045 -- IGNORABLE is now in the LISP package instead of the EXT package.
1046 -- ADJUST-ARRAY has been updated to allow adjusting of arrays which were
1047 not created with :adjustable non-nil to be adjusted to new dimensions.
1048 -- ADJUSTABLE-ARRAY-P has been updated correspondingly. It returns T if
1049 adjust ADJUST-ARRAY would return an EQ array.
1050 -- The BASE-CHARACTER type has been renamed to BASE-CHAR.
1051 -- The REAL type and REALP function are now implemented.
1052 -- Changed the default structure printer to print slot names as keywords
1053 instead of unqualified symbols.
1054
1055 Enhancements:
1056 -- Added MAYBE-INLINE declaration for GET, PUT, etc., so that these
1057 functions can be inline expanded according to the compilation policy.
1058 -- Added some type declarations so that GET-INTERNAL-REAL-TIME doesn't cons.
1059 -- Process the command line before printing the herald so that we can eval
1060 some form and quit without printing anything.
1061 -- SET now protects against setting T, NIL, and keywords. (SETF
1062 SYMBOL-FUNCTION) now expands into FSET, which protects against defining
1063 NIL.
1064 -- Substantially rearranged function describing to make it more consistent,
1065 and added support for describing interpreted functions.
1066 -- PURIFY is now called multiple times during system building to improve
1067 locality.
1068 -- (EVAL-WHEN (EVAL) ...) is now actually eval'ed.
1069
1070 Bug fixes:
1071 -- Fixed bug in NTH-VALUE where it expanded into bogus code unless ``n'' was
1072 a constant integer.
1073 -- Fixed FMAKUNBOUND to return the symbol instead of T.
1074 -- Allocate memory as executable so that the OS knows to maintain cache
1075 consistency.
1076 -- Changed DESCRIBE to allow T or NIL as the stream argument.
1077
1078 Load enhancements and cleanups:
1079 -- The initial value of *LOAD-VERBOSE* is now T. Additionally, LOAD no
1080 longer always binds *LOAD-VERBOSE* and *LOAD-PRINT*. Now it only
1081 binds them when :VERBOSE or :PRINT are explicity supplied. Therefore, you
1082 can set either of these in your init file and it will take effect.
1083 -- Normally when *LOAD-VERBOSE* is T, only the file name is printed.
1084 Formerly, the loaded stream was always printed, whereas now a stream is
1085 printed only when the stream is not a file stream.
1086 -- Added ANSI features *LOAD-TRUENAME*, *LOAD-PATHNAME* and *LOAD-PRINT*.
1087 -- As per ANSI, bind *READTABLE* to itself to make assignments file-local.
1088 -- Added new variables EXT:*SOURCE-FILE-TYPES* and EXT:*OBJECT-FILE-TYPES*.
1089 When no file type is specified, LOAD tries the types in these lists to
1090 locate the source and object files. LOAD now recognizes source types "l",
1091 "cl" and "lsp" in addition to "lisp".
1092 -- The compiler OPTIMIZE policy is now bound during load, so proclamations in
1093 a file don't leave the global policy clobbered when the load is finished.
1094 -- Changed the :IF-SOURCE-NEWER option to signal an error and use restarts,
1095 rather than PROMPT-FOR-Y-OR-N. Fixed the load source case to actually
1096 load the source, rather than loading the object as a source file...
1097 -- Changed load to deal with source files having NIL type more reasonably.
1098 -- If a wild pathname is given to LOAD, all files matched will be loaded.
1099 -- Proceeding from nonexistent file errors has been improved. It is no longer
1100 assumed that missing files are always source files. Added condition
1101 restarts for missing files.
1102 -- Improved formatting of error and warning messages.
1103
1104
1105 Garbage collection:
1106 -- Changed the minimal ROOM output to include all easily computed information
1107 including whether GC is disabled. The verbose ROOM now conses less.
1108 -- Removed the :ENABLE-GC SAVE-LISP option, as it's no longer needed.
1109 Garbage collection is now correctly enabled in cores which have been saved
1110 and then restarted.
1111 -- Added EXT:BYTES-CONSED-BETWEEN-GCS, a function that returns (and sets when
1112 used with setf) *BYTES-CONSED-BETWEEN-GCS*. Additionally, it changes
1113 *GC-TRIGGER* immediately to reflect the new values of *bytes-consed...*.
1114 -- TIME now displays the GC run-time.
1115 -- Added EXT:*GC-RUN-TIME* with accumulates the INTERNAL-RUN-TIME spent doing
1116 garbage collection. Added declarations to make EXT:GET-BYTES-CONSED more
1117 efficient.
1118 -- The top-level REP loop now zeros the unused non-zero portion of the
1119 control stack to discourage spurious garbage retention.
1120 -- The garbage collector now closes open file streams when it reclaims them.
1121
1122
1123 Packages:
1124 -- The LISP and USER packages have been renamed to COMMON-LISP and
1125 COMMON-LISP-USER. LISP and USER are nicknames, so they can still be used.
1126 -- The LISP package namespace has been cleaned up somewhat. For example,
1127 *DESCRIBE-PRINT-LEVEL* is no longer exported from LISP.
1128 -- The Mach/Unix division in the package system has been clarified a great
1129 deal. Unix specific features have been moved from the MACH package to the
1130 UNIX package. Mach specific features have been left in (or moved to) the
1131 MACH package. For example, all standard Unix syscalls are related
1132 definitions are un UNIX, whereas vm_statistics remains in MACH and GR-CALL
1133 has been moved to MACH.
1134
1135 SETF cleanups:
1136 -- Changed GET-SETF-METHOD-MULTIPLE-VALUE to try to macroexpand-1 the form
1137 when it's an atom in case it's a symbol-macro as per the X3J13 cleanup
1138 SYMBOL-MACROLET-SEMANTICS:SPECIAL-FORM. Now you can safely INCF, etc.
1139 symbol macros where the macroexpansion has side effects.
1140 -- Fixed SETF of GETF to evaluate the various parts in the correct order as
1141 per X3J13 cleanup SETF-SUB-METHODS:DELAYED-ACCESS-STORES.
1142 -- X3J13 cleanup SETF-MULTIPLE-STORE-VARIABLES:
1143 Extend the semantics of the macros SETF, PSETF, SHIFTF, ROTATEF, and
1144 ASSERT to allow "places" whose SETF methods have more than one "store
1145 variable". In such cases, the macros accept as many values from the
1146 newvalue form as there are store variables. As usual, extra values
1147 are ignored and missing values default to NIL.
1148 -- Extended the long form of DEFSETF to allow the specification of more
1149 than one "store variable", with the obvious semantics.
1150 -- GET-SETF-METHOD signals an error if there would be more than one
1151 store-variable.
1152
1153
1154 Printer:
1155
1156 Almost all of the printing code has been rewritten/restructured to support
1157 all of the printing features added to the language. Some highlights:
1158 -- *PRINT-READABLY* is now supported.
1159 -- *PRINT-CIRCLE* works irrespective of *PRINT-PRETTY*. Note: the default
1160 structure printer currently does not work when *PRINT-CIRCLE* is true: you
1161 get #1=#1#.
1162 -- *PRINT-LEVEL* abbreviation now works automatically inside structure
1163 printers.
1164 -- XP has been replaced with a native pretty printer that is fully
1165 integrated with the rest of the system. This Supports the ANSI
1166 pretty-printing interface instead of the old Waters XP interface. Existing
1167 uses of the old interface will need to be updated to use the new names.
1168 -- The pretty-printer now unparses backquote forms on printing. To retain
1169 this information, the backqoute read macro no longer expands into LIST,
1170 CONS, etc. Internal functions are used instead.
1171 -- The macros WITH-STANDARD-IO-SYNTAX and PRINT-UNREADABLE-OBJECT have
1172 been added.
1173 -- All new format. Supports the FORMATTER macro and all the pretty-printing
1174 directives. FORMAT has extended to accept a function as the format control
1175 (as an alternative to a string.)
1176 -- Added support for READTABLE-CASE in symbol printing. Printing when
1177 *PRINT-CASE* is :CAPITALIZE and *PRINT-ESCAPE* is NIL is now slightly
1178 different than before. Added some missing array type declarations in
1179 symbol printing.
1180
1181 Bug fixes:
1182 -- Fixed a bug which caused some float printing format directives to
1183 infinitely loop when a fixed-width field overflowed.
1184 -- Specify stream when printing unbound marker.
1185 -- Fixed FORMAT to override printer control variables when printing float
1186 exponents so that they are always printed in decimal, etc.
1187
1188
1189 Reader:
1190
1191 ANSI Cleanups:
1192 -- *READ-EVAL* is now supported. If a #. is encountered while *READ-EVAL*
1193 is NIL (default T), an error is signaled. This intended to allow
1194 ``secure'' READ-based command interfaces to be written.
1195 -- READTABLE-CASE is now supported.
1196 -- The reader now signals the correct type of error when things go wrong
1197 instead of always signaling a simple-error.
1198 -- Changed the return value of SET-SYNTAX-FROM-CHAR from NIL to T as per X3J13
1199 cleanup RETURN-VALUES-UNSPECIFIED:SPECIFY. [Hard to believe nobody has
1200 complained about not conforming to this one.]
1201
1202 Bug fixes:
1203 -- Fixes to several bugs with respect to #+, #-. In particular, stacked
1204 conditionals like "#+foo #-bar baz" now work
1205 -- #n= and #n# now detect more error conditions and work on structures.
1206 -- # is now a non-terminating macro character, so foo#bar is read as a
1207 symbol.
1208 -- Added Ted's changes to make INTERNAL-READ-EXTENDED-TOKEN work when there
1209 are `|' escapes. The main significance of this is that #+nil '|foo;bar|
1210 and #:|foobar| now work properly. Also changed this function to recognize
1211 unquoted colons so that #:foo:bar will error, but not #:foo\:bar.
1212
1213 Enhancement:
1214 -- Export new variable *ignore-extra-close-parentheses* if true (the default),
1215 extra close parens are only a warning, not an error. Previously unmatched
1216 close parens were quietly ignored.
1217
1218
1219 Pathnames:
1220
1221 This release supports all the new CltL2 pathname features except for logical
1222 pathnames. Following is an overview of the new pathname support.
1223
1224 Programs that actually conform to the CLtL1 pathname spec will have very few
1225 problems. However, the CLtL1 spec was extremely vague, and CMU CL did not
1226 make use of much of the allowed flexibility, so many technically non-portable
1227 programs previously worked under CMU CL.
1228
1229 The main incompatible changes from CLtL1 to CLtL2:
1230 -- Symbols are no longer acceptable filenames.
1231 -- PATHNAME-HOST may be any object.
1232 -- :UNSPECIFIC is now a legal pathname component.
1233 -- MERGE-PATHNAMES now recognizes relative pathnames and treats them
1234 specially.
1235
1236 The format of directories is now specified (to be a list in a certain format.)
1237 This required an incompatible change from the previous practice of using a
1238 vector PATHNAME-DIRECTORY and using "DEFAULT" or :ABSOLUTE in the
1239 PATHNAME-DEVICE to indicate relative and absolute pathnames.
1240
1241 In a related change, the CMU SEARCH-LIST extension was changed so that the
1242 search-list now appears in the PATHNAME-DIRECTORY as:
1243 (:ABSOLUTE #<Search-list "name"> ...)
1244
1245 Other changes to search-lists:
1246 -- (SETF SEARCH-LIST) now accepts a string or pathname, and converts it into
1247 a one-element list.
1248 -- Search-list elements are now canonicalized to pathnames rather than to
1249 strings.
1250 -- Instead of returning NIL, SEARCH-LIST now signals an error when it is
1251 called on an undefined search list.
1252 -- SEARCH-LIST-DEFINED-P is a predicate that tells if the search list is
1253 currently defined.
1254
1255 New features which are now supported:
1256 -- Wildcard pathnames are now fully supported. In addition to allowing :WILD
1257 in any pathname component, "extended wildcards" such as "foo*.*" are also
1258 supported. A consequence of this is that PATTERN objects may appear in
1259 wildcard pathname components instead of strings. See PATHNAME-MATCH-P and
1260 TRANSLATE-PATHNAME.
1261 -- As a CMU CL extension, a wildcard pathname may be used as the argument to
1262 any filesystem interface (like OPEN) as long as it matches only one file.
1263 -- The pathname :COMMON case mechanism provides a way around the problems of
1264 portably specifying string pathname components in the presence of operating
1265 systems with differing preferred case in their filesystem. An uppercase
1266 string "LISP" is mapped to the "customary case" (lowercase on unix.)
1267 Lowercase is also inverted: "readme" becomes "README". Mixed case is left
1268 alone. Note that this mechanism is explicitly enabled by supplying :CASE
1269 :COMMON to functions such as MAKE-PATHNAME. The default is the old
1270 behavior (:CASE :LOCAL).
1271
1272 Also, DIRECTORY now actually returns the TRUENAME of each file (as it was
1273 always supposed to do.) If a matched file is a symbolic link, the truename may
1274 be a file in some other directory that doesn't even match the pattern. The old
1275 behavior can be obtained by specifying :FOLLOW-LINKS NIL.
1276
1277 The new wildcard pathname mechanism has not yet been used to replace the old
1278 single-wildcard matching in Hemlock DIRED, etc.
1279
1280
1281 Debugger:
1282 -- Added Miles' changes to keep errors and warnings on one line if they fit.
1283 -- The debugger now starts up with the error frame as the current frame, so
1284 it is no longer necessary to manually skip over internal frames resulting
1285 from the error system invocation.
1286 -- Fixed some debugger bugs that appeared when debugging interpreted code.
1287 -- Added ``DESCRIBE'' debugger command.
1288 -- Merged Miles' changes that allow the use of restart names as debugger
1289 commands.
1290 -- Changed SHOW-RESTARTS to also display the restart name (but only if it's
1291 not shadowed by a higher priority restart). Changed the restart command
1292 to look for restarts by name if a symbol is typed.
1293 -- Bind *CURRENT-LEVEL* to 0, *PRINT-READABLY* to nil, and *READ-EVAL* to T
1294 when entering the debugger to make sure things print as expected.
1295
1296 The debugger programmer (DEBUG-INTERNALS) interface is now documented in the
1297 User's Manual. This interface allows the coding of debuggers and debugger
1298 extensions without requiring an intimate understanding of the compiler and
1299 run-time system. Be warned that DI features (such as breakpoints) not used by
1300 the current debugger may not work very well (wait for version 17.)
1301
1302 Debug internals changes:
1303 -- DI:DEBUG-FUNCTION-FUNCTION is now implemented.
1304 -- Added DI:FLUSH-FRAMES-ABOVE for cleaning up frames to be bound to
1305 DEBUG:*STACK-TOP-HINT*.
1306
1307
1308 Defstruct:
1309
1310 Various fixes and enhancements to defstruct slot parsing and inclusion.
1311 It now works to define structures such as:
1312 (defstruct super a)
1313 (defstruct (sub1 (:conc-name super)) one)
1314 (defstruct (sub2 (:conc-name super)) two)
1315 (super-a (make-sub1))
1316
1317 previously, a definition such as for SUB2 would define SUPER-A to be a
1318 SUB2-specific function, which could then no longer be used on other types. The
1319 spec doesn't clearly say that such a construct is legal, but its use seems
1320 fairly common.
1321
1322 Also, slot parsing is now more rigorous. Unrecognized slot options cause an
1323 error, as does a slot spec like: (defstruct foo (a :type t))
1324
1325 Fasl dumping of constant structures has been fixed to conform to X3J13. The
1326 main significance of this is that DEFSTRUCT structures are no longer dumpable
1327 by default. However, the generic function MAKE-LOAD-FORM isn't really used.
1328 Instead, a new defstruct option, :MAKE-LOAD-FORM-FUN, has been added that can
1329 be used to specify a function that acts like a MAKE-LOAD-FORM method. When we
1330 have a CLOS that supports STRUCTURE-CLASS, the default method for
1331 MAKE-LOAD-FORM will use this information instead of having the compiler use it
1332 directly. The old behavior can be enabled on a structure by structure basis by
1333 using the :MAKE-LOAD-FORM-FUN defstruct option:
1334 (defstruct (foo (:make-load-form-fun :just-dump-it-normally))
1335 ...)
1336
1337
1338 Compiler:
1339
1340 Cleanups:
1341 -- Added the LOAD-TIME-VALUE support special form.
1342 -- Displaced or adjustable arrays and vectors with fill pointers can now be
1343 dumped in fasl files, but are converted to simple array with the same
1344 elements.
1345 -- Arrays of floats are left as arrays of floats instead of being
1346 converted into arrays of element-type T that just so happen to hold a
1347 bunch of floats.
1348 -- Changed IGNORE and IGNORABLE to recognize #'fn-name for declaring that
1349 local functions are not used. Exported IGNORABLE from LISP.
1350
1351 New optimizations:
1352 -- Iterations written using tail recursion are now optimized through a
1353 special-casing of local functions where all calls but one are
1354 tail-recursive self-calls. Such functions are compiled with no
1355 environment manipulation, resulting in the same code as explicit
1356 iteration.
1357 -- Loop rotation (Knuth "while" loop optimization) been added. This is the
1358 optimization that negates the loop exit test and places it at the end of
1359 the loop, and then jumps there at loop entry. Note that this is part of
1360 control optimization, and not simply a recoding of certain iteration
1361 macros. In fact, for historical reasons DO, etc. already had the exit
1362 test negated, but the compiler was cleverly un-negating the test.
1363 -- Flow analysis now recognizes function calls and special forms which do
1364 not yield any value because they unwind or signal an error. This results
1365 in improved code for error checks, since the compiler can get by with
1366 fewer unconditional branches. A function can be declared not to return by
1367 declaring its result type to be NIL (not to be confused with NULL). If a
1368 function declared NIL does return, an error will be signalled.
1369 -- Added derive-type methods for ASIN, ACOS, ACOSH, ATANH and SQRT which
1370 figure out whether the result type is real on the basis of the argument
1371 range. Also, the result of ATAN is always real, so we don't need a result
1372 type assertion.
1373 -- Added optimization which deletes MULTIPLE-VALUE-BINDs when all
1374 variables have been deleted.
1375 -- Eliminated some spurious checking of the result types of safe VOPs (such
1376 as the SPARC tadd for fixnum arithmetic.)
1377 -- Transform uses of the SEARCH generic sequence function on simple strings
1378 into a call to a more efficient string-specific function.
1379 -- Added multiplier recoding of (UNSIGNED-BYTE 32) multiplication. This
1380 converts 32 bit (or smaller) unsigned multiplication by any compile-time
1381 constant into a shift-add sequence. This is much faster when the constant
1382 is a near power of two or when general multiplication is slow (as on the
1383 SPARC.)
1384 -- Added comprehensive handling of arithmetic and logical identities when
1385 an arg is -1, 0 or +1.
1386 -- Added a RANDOM derive-type method: (random 13) is (integer 0 12).
1387
1388
1389 Enhancements:
1390 -- Changed the compiler to temporarily increase *BYTES-CONSED-
1391 BETWEEN-GCS* by a factor of 4 during compilation of each top-level form,
1392 instead of turning off all garbage collection.
1393 -- Bind *PRINT-LINES* around compiler error output to
1394 *ERROR-PRINT-LINES*.
1395 -- Do not warn about undefined variables, functions or types when the
1396 INHIBIT-WARNINGS OPTIMIZE quality is 3.
1397 -- Some optimizations are now considered "important"; failure of important
1398 optimizations causes an efficiency note even when speed=inhibit-warnings
1399 (i.e. by default.)
1400 -- Print a error summary even when *COMPILE-VERBOSE* is false. (This is only
1401 printed when there are errors, so this doesn't seem a violation of the
1402 spirit of the spec.)
1403
1404 Bug fixes:
1405 -- Merged Miles' fix to disassembly of the MIPS coprocessor move instructions.
1406 -- Fixed spelling of "efficency" in exported variables such as
1407 *EFFICIENCY-NOTE-COST-THRESHOLD*
1408 -- Fixed some cases where incomplete optimization could happen.
1409 -- Fixed some arithmetic "identities" that failed to preserve the sign of
1410 -0.0.
1411 -- Fixed TYPES-INTERSECT to consider any supertype of T to definitely
1412 intersect with anything (even an unknown type.)
1413 -- Fixed a problem where inconsistent declarations could fail to be detected
1414 at compile time.
1415 -- Fixed the VALUES transform (which discards unused subforms) to work
1416 on (VALUES).
1417 -- More bug fixes to dead code deletion.
1418 -- Fixed a problem where a special binding would not be removed on exit from
1419 the scope if there was no code in the scope (e.g. it had all been
1420 deleted.)
1421 -- Fixed handling of named (DEFCONSTANT) constants so that EQ
1422 relationships are properly preserved.
1423
1424
1425 Extensions:
1426
1427 -- Export FEATUREP from EXT. This takes a feature expression and tests it
1428 against the value of *FEATURES*. Allow LISP:AND, LISP:OR, and LISP:NOT in
1429 features lists in addition to :AND, :OR, and :NOT. This makes featurep
1430 useful outside of #+ and #-.
1431 -- The encapsulation mechanism (similar to advise facilities) has been
1432 revamped to work on SETF function names as well as symbols.
1433 EXT:ENCAPSULATED-DEFINITION
1434 Returns whatever definition is stored for name, regardless of whether
1435 it is encapsulated. Unlike FDEFINITION, this does not strip off the
1436 encapsulation. This is SETF'able.
1437 EXT:ENCAPSULATE
1438 Replaces the definition of name with a function that binds name's
1439 arguments a variable named argument-list, binds name's definition to a
1440 variable named basic-definition, and EVAL's body in that context. Type
1441 is whatever you would like to associate with this encapsulation for
1442 identification in case you need multiple encapsuations of the same
1443 name.
1444 EXT:UNENCAPSULATE
1445 Removes name's most recent encapsulation of the specified type.
1446 EXT:ENCAPSULATED-P
1447 Returns t if name has an encapsulation of the given type, otherwise
1448 nil.
1449 EXT:*SETF-FDEFINITION-HOOK*
1450 A list of functions invoked by (SETF FDEFINITION) before storing the
1451 new value. Each hook function must take the function name and the
1452 new-value.
1453
1454 Hemlock:
1455 -- Fixed the :FILE branch of "Help on Parse" to trim leading directory
1456 components off the pathname if it wouldn't otherwise fit on the screen.
1457 -- Fixed GET-EDITOR-TTY-INPUT to not assume that UNIX-READ will always work.
1458 -- When we reallocate string table vectors to grow them, clear the old vector
1459 so that it won't hold onto garbage (in case the vector was in static space,
1460 but pointed to dynamic values.) This was a major cause of memory leakage
1461 in Hemlock.
1462 -- Added a (setf (ts-stream-char-pos stream) 0) to the accept-input function
1463 so that char-pos will be reset to zero whenever the user presses enter.
1464
1465 PCL:
1466 -- The version has been updated to "5/1/90 May Day PCL (REV 4b)".
1467 -- The Code walker now understands the real SYMBOL-MACROLET, and the PCL macro
1468 definition is no longer used.
1469 -- Fixed a bug in WALK-ARGLIST where it would ignore the rest of the current
1470 arglist if the current arg destructured. This was causing it to compile
1471 forms like:
1472 (macrolet ((foo ((a b) c) ...)) ...)
1473 as:
1474 (macrolet ((foo ((a b)) ...)) ...)
1475 note the loss of the arg c.
1476
1477
1478 System:
1479
1480 -- All the SAP-REF-<n> functions now take byte offsets. Previously, the
1481 16 and 32bit versions were scaled by the element size.
1482 -- Fixed UNIX-IOCTL to not flame out of the cmd is a ub-32 instead of a sb-32.
1483 -- Added Miles' TCSETPGRP, TCGETPGRP, and TTY-PROCESS-GROUP.
1484 -- Unix syscalls are now more restrictive in the kind of arguments that they
1485 accept. In particular, UNIX:UNIX-READ, etc., no longer automatically
1486 accept a vector (or string) argument. You must use VECTOR-SAP to convert
1487 the vector to a system area pointer. Note that WITHOUT-GCING should be
1488 wrapped around any syscall which is passed a pointer to the Lisp heap,
1489 since the object might otherwise move doing the syscall.
1490 -- Changed LOAD-FOREIGN to be exported from ALIEN. Changed it have keyword
1491 args instead of optionals. Deleted obsolete linker argument.

  ViewVC Help
Powered by ViewVC 1.1.5