ViewVC logotype

Contents of /src/general-info/release-19a.txt

Parent Directory Parent Directory | Revision Log Revision Log

Revision - (show annotations)
Wed Jul 28 12:58:43 2004 UTC (9 years, 8 months ago) by rtoy
Branch: release-19a-branch
CVS Tags: release-19a
Changes since +0 -2 lines
File MIME type: text/plain
Merge changes from HEAD.  (To remove "work in progress".)
1 ========================== C M U C L 19 a =============================
3 The CMUCL project is pleased to announce the release of CMUCL 19a.
4 This is a major release which contains numerous enhancements and
5 bugfixes from the 18e release.
7 CMUCL is a free, high performance implementation of the Common Lisp
8 programming language which runs on most major Unix platforms. It
9 mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
10 sophisticated native code compiler; a powerful foreign function
11 interface; an implementation of CLOS, the Common Lisp Object System,
12 which includes multimethods and a metaobject protocol; a source-level
13 debugger and code profiler; and an Emacs-like editor implemented in
14 Common Lisp. CMUCL is maintained by a team of volunteers collaborating
15 over the Internet, and is mostly in the public domain.
17 New in this release:
19 * Feature enhancements:
20 - Stack overflow checking added for FreeBSD/x86, Linux/x86 and
21 Solaris. Code that makes the control stack overflow (for
22 example due to unbounded recursion) will lead to a
23 STORAGE-ERROR being signaled, instead of making CMUCL crash.
24 - LISP:FIND-CLASS and LISP:CLASS-OF now return CLOS classes. The
26 LISP:STRUCTURE-CLASS name CLOS classes. It is no longer
27 necessary to SHADOWING-IMPORT these from PCL when doing MOP
28 programming, and it fixes some non-compliances as well.
29 - Package locks: a package whose EXT:PACKAGE-LOCK is enabled
30 non-NIL is protected against changes in its structure (list of
31 exported symbols, use-list etc). Symbols in a package whose
32 EXT:PACKAGE-DEFINITION-LOCK is enabled are protected against
33 redefinition.
34 - Weak hash tables have been added for x86 systems.
35 - Local functions are now named (FLET <name> ...) or
36 (LABELS <name> ...).
37 - Compiler checking control string and number of args to FORMAT,
38 ERROR and WARN.
39 - TRACE automatically using encapsulation when function-end
40 breakpoints cannot be used.
41 - INSPECT working on CLOS instances.
42 - Callbacks from foreign code to Lisp. Implemented for x86 and
43 sparc.
44 - Functions like GETHASH that are used in the implementation of
45 TRACE can now be traced. See also
47 - New facility for encapsulating functions, FWRAPPERS;
48 see also the CMUCL User Manual.
49 - TRACE and PROFILE have been reimplemented using fwrappers,
50 with the effect of tracing and profiling now working more
51 nicely together.
52 - When a profiled function is redefined, it is re-profiled.
53 - A basic implementation of simple-streams added. Some
54 functionality may be missing.
55 - UNIX:UNIX-LSEEK working with files > 2G on BSDs.
56 - Type declarations on local bindings of special variables no
57 longer being ignored.
58 - DISASSEMBLE disassembling closure/funcallable instance
59 functions.
60 - (SETF EXT:WEAK-POINTER-VALUE) has been added.
61 - CMUCL no longer entering an infinite loop when dumping
62 circular constant lists to fasl files.
63 - COMPILE-FILE-PATHNAME's BYTE-COMPILE keyword arg defaulting
65 - Added VOPs for CHAR=, CHAR<, and CHAR> when the second arg is a
66 constant character.
67 - Added missing VOPs for Sparc for array refs with a constant
68 index.
69 - Lisp binary will also look at the PATH envvar to find out it's
70 own location which is used to find other needed files.
71 - Byte-compiled code being executed ca. 1/3 faster.
72 - Heap overflow checking for x86 and solaris with gencgc. When
73 the heap is close to overflowing, a heap-overflow condition is
74 signaled. If an overflow happens again while debugging the
75 condition, the user is returned to top-level without warning.
76 Use lisp::*reserved-heap-pages* to set the number of pages to
77 reserve.
78 - C functions are displayed in backtraces now for x86/linux and
79 sparc. Previously, it just said "Foreign function call land".
80 (From Helmut Eller.)
81 - Source location recording is done better and handles macros
82 including things defined by defclass, defvar, and defgeneric.
83 From Helmut Eller.
84 - Modular arithmetic implemented for x86 and sparc. So
86 (ldb (byte 32 0) (+ x y))
88 is a simple machine add instruction if x and y are
89 (unsigned-byte 32).
91 * Numerous ANSI compliance fixes:
92 - Many bugs in CMUCL's type system detected by Paul Dietz'
93 ANSI test suite have been fixed.
94 - Non-keyword keyword names in lambda lists are now accepted.
95 - Condition slot initialization fixed for the case that two
96 or more slots have the same :INITARG.
97 - Initforms are now evaluated once only during condition slot
98 initialization.
99 - USE-VALUE, STORE-VALUE, CONTINUE behavior corrected in presence
100 of multiple restarts having the same name.
101 - RESTART-CASE's interaction with local macros fixed.
102 - Interaction of COMPUTE-RESTARTS and RESTART-CASE fixed in
103 presence of multiple restarts having the same name.
104 - Condition slot readers/writers are generic functions.
105 - &WHOLE, &REST, &BODY in macro lambda lists can be followed
106 by destructuring patterns. The previous behavior of &BODY
107 when followed by (<body> <declarations> <doc>) is available
108 through the new lambda-list keyword EXT:&PARSE-BODY.
109 - ELT now signals an error in safe code when used on lists
110 with an out-of-bounds index.
111 - Accessing arrays in compiled code with out-of-bounds indices
112 now signals a TYPE-ERROR.
113 - DECLARE no longer being a special operator.
114 - DEFINE-CONDITION accepts slot option :DOCUMENTATION.
115 - Behavior of (... &KEY &ALLOW-OTHER-KEYS) fixed for
116 DESTRUCTURING-BIND and macros.
117 - Stricter checking of keyword argument list in CLOS methods.
118 - &ENVIRONMENT variable bound bound before other vars, regardless
119 of where it appears in a lambda-list.
120 - VALUES types no longer accepting &KEY or &ALLOW-OTHER-KEYS.
121 - THE conforming to ANSI.
122 - SLOT-EXISTS-P can be used with conditions.
123 - REMOVE-METHOD always returning the generic function passed to it.
124 - Standard methods for STANDARD-OBJECT and STRUCTURE-OBJECT
125 defined on MAKE-LOAD-FORM.
127 - DEFSTRUCT recording slot-names as specified by users.
128 - Generic function call keyword argument checking according to
129 ANSI 7.6.5.
130 - CALL-NEXT-METHOD without arguments being called with original
131 arguments when method parameters are changed with SETQ.
132 - When CALL-NEXT-METHOD is called with arguments, an error is
133 signaled in safe code when the set of methods applicable to
134 CALL-NEXT-METHOD's arguments is different from the set of
135 methods applicable to the original method arguments.
136 - FIND-METHOD signaling an error when called with specializers
137 not corresponding to the number of required arguments of the
138 supplied generic function.
139 - TYPE-OF returning KEYWORD for keywords, STANDARD-CHAR for
140 standard characters, BOOLEAN for T, (INTEGER <N> <N>) for
141 integers N, non-list types for functions, and CLOS classes for
142 instances whose class doesn't have a proper name.
143 - Class precedence list of NULL not having SYMBOL before LIST,
144 precedence list of STANDARD-METHOD not having METHOD before
146 - ADD-METHOD returning its first argument, the generic function.
147 - DEFCLASS redefining a class with the given name only if the
148 name is the proper name of an existing class.
149 - KEYWORD package no longer having nickname "".
150 - COMMON-LISP-USER package no longer having nickname USER.
151 - COMMON-LISP package no longer having nickname LISP; LISP
152 and COMMON-LISP are now separate packages.
154 returning values specified by the standard when SLOT-UNBOUND
155 or SLOT-MISSING are called and return.
156 - NTH and NTHCDR accepting bignums as first argument.
157 - First arg of CERROR may be a function.
158 - Lambda-lists of the form (X . Y) in DESTRUCTURING-BIND and macros
159 are now equivalent to (X &REST Y).
160 - LAST, BUTLAST, NBUTLAST accepting bignum counts.
162 - FIXNUM no longer naming a function.
164 - Numerous LOOP fixes.
165 - On FreeBSD, CLtS-required floating-point conditions are signaled.
166 - The minimum rehash-threshold is 0.1, and is enforced silently.
167 This is to prevent overflows and divide-by-zero errors when
168 creating a hash-table with a too-small rehash-threshold.
169 - MACROLET now accepts declarations, as prescribed by ANSI CL.
170 - MAKE-PATHNAME signals an error on invalid combinations
171 (:absolute or :wild-inferiors followed by :back or :up).
172 - PEEK-CHAR skips whitespace based on the readtable instead of
173 using hard-wired values.
174 - PEEK-CHAR signals an end-of-file error if necessary when
175 RECURSIVE-P is true.
176 - FILE-LENGTH now signals a TYPE-ERROR when the stream is not a
177 stream associated with a file.
178 - Floats are now printed and read accurately, preserving
179 read/print consistency. (Was sometimes off by a bit in the
180 least significant bit.)
181 - Printing of rationals should generate correct results now for
182 all cases of *print-base* and *print-radix*.
183 - Symbol printer should print better with unusual settings of
184 *print-case* and friends.
185 - Stream element-type can go up to 1024 bits.
187 * Numerous bugfixes:
188 - NSET-EXCLUSIVE-OR returns the same results as SET-EXCLUSIVE-OR
189 wrt to duplicate elements.
190 - Forms like (MULTIPLE-VALUE-BIND 'LIST) no longer trapping
191 an internal compiler error when compiled.
193 - Compiler eliminating some type checks in safe code.
194 - Byte-compiler and -interpreter not handling C:&MORE.
195 - Some TYPE-ERRORs being signaled with unbound slots, which
196 made them undisplayable.
197 - Structure predicates no longer signaling an error when applied
198 to obsolete instances.
199 - A DEFTRANSFORM for array bounds checking had an off-by-1 error.
200 - Compiler was not properly deriving the type of FTRUNCATE in all
201 cases.
202 - Fixed error wherein certain uses of 2 arg ATAN caused a
203 compiler error on x86.
204 - Compiler wrongly signaling a type error in VOLATILE-INFO-LOOKUP or
205 COMPACT-INFO-LOOKUP for hash values equal to MOST-POSITIVE-FIXNUM.
206 - FFLOOR and FCEILING return types sometimes being inferred as
207 being the nil type.
208 - PARSE-TIME accepting GMT offsets with a leading plus sign.
209 - UNIX-MMAP not accepting a null fd, preventing anonymous
210 mappings.
211 - SIGPROF having the wrong value on GNU/Linux.
212 - Wrong byte-code being generated for (APPLY #'+ <X> <Y>) and
213 similar cases.
214 - GCD sometimes returning a negative value.
215 - LCM sometimes returning a negative value, or signaling division-by-zero.
216 - FLOAT sometimes returning a float of the wrong type.
217 - ROOM should handle the large heaps now without overflowing
218 internal counters or signaling type errors. Columns should
219 line up better too.
220 - READ-SEQUENCE was returning too soon when reading from files
221 into simple-strings even though there were data available.
222 - READ-SEQUENCE was returning the wrong value when reading into
223 simple-strings and when the :START value was not zero.
224 - CMUCL was computing the wrong value for some special functions
225 when the argument was on the branch cut for the function.
226 - MULTIPLE-VALUE-BIND accepts &REST and friends in the var list.
227 - When constructing logical pathnames, all components will be
228 automatically upcased. Needed for print/read consistency, and
229 fixes an issue with ASDF and logical pathnames.
230 - Handle things like [abc] in namestrings better to match
231 Unix-style usage.
232 - ATANH was incorrectly computing the value of 1+i*y.
233 - SOFTWARE-VERSION would hang on some Linux 2.6 kernels because
234 it was waiting forever reading /proc files. Hopefully fixed
235 for all kernels.
236 - Reloading of shared libraries happened in the wrong order.
238 * Other changes:
239 - CREATE-REQUEST-SERVER has an additional :reuse-address keyword
240 argument.
241 - Removed obsolete alias from MAKE-VECTOR to MAKE-ARRAY
242 - the signature of *COMPILER-NOTIFICATION-FUNCTION* has changed;
243 it now has an extra argument that describes the nature of the
244 error or warning.
245 - File versioning occurs when the version component is :NEWEST,
246 and Emacs style file versions are created: foo.bar.~N~, where
247 the larger N is newer. foo.bar is the newest version.
248 - Converting namestrings to pathnames now get a version component
249 of NIL instead of :NEWEST.
250 - *DEFAULT-PATHNAME-DEFAULTS* has a version component of
251 :UNSPECIFIC instead of :NEWEST so versioning is disabled by
252 default to preserve current behavior. Set the version to
253 :NEWEST to create versions.
254 - LDB backtrace on x86.
255 - DYNAMIC-EXTENT support on x86 and sparc. Stack-allocation can
256 be controlled by the setting of
258 Manual. Be warned that all bets are off if a stack-allocated
259 object or parts of it escape; CMUCL might crash or format your
260 hard disk.
261 - Generational GC (gencgc) available for Sparc/Solaris on an
262 experimental basis. Despite the name and feature, it is not
263 conservative.
264 - Search in /usr/lib/cmucl for the lisp core file as well, to
265 support x86/Linux
266 - The trap for floating-point underflow is turned off by default
267 for all platforms now.
268 - A continuable error is signaled when defining a logical
269 pathname host that has the same name as a search-list host.
270 - A better sxhash function for string is implemented on sparc.
271 This is based on the one-at-a-time hash from
272 http://burtleburtle.net/bob/hash/doobs.html.
274 * Numerous improvements to the PCL implementation of CLOS:
275 - Gerd's PCL has been added, which fixes numerous bugs and ANSI/
276 AMOP non-compliances, and adds various new optimizations (also
277 see the CMU User Manual).
278 - PCL's class hierarchy has been changed to conform to AMOP, for
279 instance, GENERIC-FUNCTION is now a subclass of
281 - ENSURE-CLASS-USING-CLASS's argument list has been changed
282 to conform to AMOP.
283 - COMPUTE-EFFECTIVE-SLOT-DEFINITION now takes a slot name as
284 argument, for AMOP compliance.
285 - SUBTYPEP works in presence of forward-referenced classes.
286 - Accessing slots of specialized parameters in (SETF
287 SLOT-VALUE-USING-CLASS) methods works.
289 AMOP compliant.
290 - ALLOCATE-INSTANCE working with structures defined with DEFSTRUCT.
292 (FOO 1) now signals an error.
293 - Methods with &OPTIONAL arguments detecting too many args.
294 - DEFMETHOD and DEFGENERIC detecting doubled lambda variables.
296 - SLOT-VALUE, (SETF SLOT-VALUE), SLOT-BOUNDP working with conditions.
297 - (SETF SLOT-VALUE) working on read-only structure slots like
298 in other implementations.
299 - The declaration identifiers SLOTS, AUTO-COMPILE,
300 NOT-AUTO-COMPILE have been moved from PCL to EXT.
301 - Support for inlineing methods in effective methods; see the
302 CMU User Manual.
303 - Wrong results could be returned from generic functions when
304 all methods returned constant values, and some methods were
305 qualified, or the generic function didn't use the standard
306 method combination.
307 - For standard method combination and method combinations defined
308 with the short form of DEFINE-METHOD-COMBINATION: If there are
309 no applicable primary methods when a generic function is
310 called, the generic function PCL:NO-PRIMARY-METHOD is called.
311 The default method of this generic function signals a
312 continuable error of type PCL:NO-PRIMARY-METHOD-ERROR.
313 - Effective methods are no longer precomputed at method load
314 time, if the generic function has more than
315 PCL:*MAX-EMF-PRECOMPUTATION-METHODS* methods (default 100).
316 - The loading of methods with invalid qualifiers no longer
317 signals an error, for standard's conformance. Instead, a
318 warning is printed at method load time. An error is
319 signaled if the generic function is called with arguments such
320 that the method is used.
321 - Redefining a generic function with a different method
322 combination now recomputes effective methods.
323 - Slot access and gf-call optimizations are no longer performed
324 for method parameters being assigned to in a method body, because
325 we can't tell what type of object the method parameter actually
326 contains.
328 * Improvements to Hemlock, the Emacs-like editor:
330 * Changes to rebuilding procedure:
331 - When rebuilding CMUCL, *features* do not need to be set by
332 hand. As files are loaded, the appropriate *features* are set
333 so that the resulting build has the same set of *features*.
334 There should also be fewer warnings about internals.h changing,
335 since that now just contains things in sys:*runtime-features*.
336 Use sys:register-lisp-feature and
337 sys:register-lisp-runtime-feature to set *features* and
338 sys:*runtime-features*, respectively.
339 - Pierre Mai's build-tools have been incorporated. The scripts
340 are in the src/tools directory. These are slightly modified
341 versions of his scripts. Should make building CMUCL easier.
343 * Deprecated features:
344 - EXT:ENCAPSULATE and associated functions; use fwrappers instead.
345 - The sparc port with the Cheney stop-and-copy garbage collector
346 will no longer be supported after this release. The supported
347 GC will be gencgc.
348 - The sparc port will only be supported on Ultrasparc machines
349 (Sparc V9).
351 This release is not binary compatible with code compiled using CMUCL
352 18e; you will need to recompile FASL files.
354 See <URL:http://www.cons.org/cmucl/> for download information,
355 guidelines on reporting bugs, and mailing list details.
358 We hope you enjoy using this release of CMUCL!

  ViewVC Help
Powered by ViewVC 1.1.5