ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log

Revision - (show annotations)
Mon Oct 2 18:38:54 2006 UTC (7 years, 6 months ago) by rtoy
Branch: release-19d-branch
CVS Tags: release-19d-pre1
Changes since 1.24: +4 -6 lines
File MIME type: text/plain
Update for 19d.
1 ========================== C M U C L 19 d =============================
3 The CMUCL project is pleased to announce the release of CMUCL 19d.
4 This is a major release which contains numerous enhancements and
5 bugfixes from the 19c 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:
20 * Feature enhancements:
22 - Destructive functions like NREVERSE that modify constant args
23 will produce a compile-time warning.
24 - Destructive functions like NREVERSE whose results are not used
25 will produce a compile-time warning.
26 - Pathnames that cannot be printed readably using #p"..." will
27 now be printed using the CMUCL extension #P(...). However,
28 there are still cases where CMUCL cannot print pathnames
29 readably, but these involve search-lists and patterns.
30 - LONG-LONG and UNSIGNED-LONG-LONG are recognized types in the
31 C-CALL package for signed and unsigned 64-bit integers.
32 - A port of gencgc to Darwin/ppc has been made. This still
33 needs work, and is known to have some issues, but it compiles
34 CMUCL without problems and runs maxima just fine.
35 - TRACE supports tracing of FLET/LABELS functions. Use (trace
36 (labels foo bar)) to trace the labels function FOO in the
37 function BAR. This is currently experimental.
38 - DISASSEMBLE will disassemble flets/labels functions when
39 disassembling a function. Set disassem::*disassemble-flets*
40 to NIL to turn this off.
41 - Simple errors in socket handling code have been converted to
42 socket-error's to allow easier distinction of the errors.
43 - EXT:LOAD-FOREIGN will use dlopen to try to open a shared
44 library, so if dlopen searches in certain places, LOAD-FOREIGN
45 will find the shared object.
46 - A new search-list "ld-library-path:" has been created and
47 contains the value of the environment variable
48 LD_LIBRARY_PATH. This is analogous to the "path:"
49 search-list.
50 - When a core file is started, any shared libraries that were
51 loaded when the core was made will be reloaded on startup. If
52 the library cannot be found, several restarts are available.
53 - Support for the new float type EXT:DOUBLE-DOUBLE-FLOAT. This
54 includes support for complex numbers with this component type
55 and simple arrays for this type and complex numbers of this
56 type.
58 A DOUBLE-DOUBLE-FLOAT uses two DOUBLE-FLOAT's to represent a
59 number with >= 106 bits of precision (about 33 digits). Known
60 issues:
62 * If you are expecting IEEE-style behavior, you don't get it:
63 - signed zeroes aren't really available.
64 - overflows don't return infinity but return NaN instead.
65 - rounding might not be quite the same as IEEE
66 - SQRT is not accurate to the last bit, as required by IEEE.
67 * Multiplying by a number very close to
68 most-positive-double-float will produce an error even if the
69 result does not overflow. (This is an artifact of how
70 multiplication is done. I don't have a solution to this.)
71 * Read/write consistency is not working. (Because conversion
72 from a bignum to a double-double-float doesn't really
73 understand the internal double-double-float format.)
74 * INTEGER-DECODE-FLOAT and SCALE-FLOAT aren't "inverses".
75 That is, you can't take the result of integer-decode-float
76 and use scale-float to produce exactly the same number.
77 This is because of how bignums are converted to
78 double-doubles.
79 * FLOAT-DIGITS always returns 106 even though there could be
80 more bits. (Consider the double-double (1d0,1d-200)). This
81 will show up in PRINT where the printed result will have way
82 more than the normal 33 digits or so. But reading such a
83 number back won't give the same value.
84 * There is probably more consing than is necessary in many of
85 the standard Common Lisp functions like floor, ffloor, etc.
86 * The special functions are not fully tested. I did a few
87 random spot checks for each function and compared the
88 results with maxima to verify them.
89 * The branch cuts for the special functions very likely will
90 not match the double-float versions, mostly because we don't
91 have working signed zeroes.
92 * Type derivation for double-double-floats might not be
93 working quite right.
94 * PI is still a double-float. If you want a double-double
95 version of pi, it's KERNEL:DD-PI. (Soon to be EXT:DD-PI.)
96 * There are probably still many bugs where double-double-float
97 support was overlooked.
98 * The double-double arithmetic operations can be inlined by
99 specifying (SPACE 0). Otherwise, they are not inlined.
100 (Each double-double operation is about 20 FP instructions.)
101 - Hash tables now support weak value, weak key-and-value, and
102 weak key-or-value tables. The :WEAK-P keyword argument can
103 take the following values with the given meanings:
105 T
106 For backward compatibility. It is the same as :KEY.
107 :KEY
108 The entry exists as long as the key is not
109 garbage-collected.
110 :VALUE
111 The entry exists as long as the value is not
112 garbage-collected.
114 The entry exists as long as the key and the value are
115 alive.
117 The entry exists as long as the key or the value are alive.
119 These tables are currently experimental, but appear to work.
120 - TRACE supports an extra option, :WHEREIN-ONLY. This is
121 similar to the :WHEREIN option, except :WHEREIN-ONLY only
122 traces the function if the immediate caller is the specified
123 function(s).
125 * Numerous ANSI compliance fixes:
127 - A reader-error is signaled if the number that is being read is
128 too small to be presented. We used to silently return 0.
129 - WITH-INPUT-FROM-STRING no longer modifies the index if
130 WITH-INPUT-FROM-STRING is not exited normally.
131 - An error is signaled if a declaration is used as the name of a
132 deftype, condition, or defstruct, and vice versa.
133 - An error is signaled when trying to generate a namestring from
134 a pathname with just a version component (other than nil,
135 :newest, or :unspecific). CMUCL cannot print that readably.
136 - FLET and LABELS functions will catch errors in keyword
137 parameters. Previously, a keyword of NIL was silently
138 accepted.
139 - Printing a zero using ~E will now include a trailing zero
140 after the decimal point, as required by CLHS,
142 structures of type list or vector.
143 - DOTIMES will execute the loop the specified number of times,
144 independent of what the loop might do to the loop counter.
145 - Printing of circular objects using logical-blocks is handled
146 better.
147 - SET-SYNTAX-FROM-CHAR copies the entire dispatch table of
148 reader macro functions if necessary.
149 - SET-SYNTAX-FROM-CHAR handles single-escape, multiple-escape
150 and # characters correctly now.
151 - When CLOSE'ing a file with :ABORT, don't delete the file,
152 unless we renamed it. This preserves any and all changes to
153 the file, instead of deleting it.
154 - As specified by CLHS, PRIN1 and friends now produce
155 a trailing zero if necessary.
156 - As specified by CLHS, ~E will produce a single zero
157 for the fractional part, if necessary.
158 - (FORMAT NIL "~,2F" 0.001) produces "0.00" instead of "0.001".
159 Thus, we actually honor the d field now.
161 * Numerous bugfixes:
163 - LISTEN on DUAL-CHANNEL-SIMPLE-STREAM should work now.
164 - Some numerical issues with the two-arg log function have been
165 fixed. (log 17 10f0), (log 17f0 10) and (log 17 10) all
166 return the same result now.
167 - DESTRUCTURING-BIND no longer causes an error when the list to
168 be destructured is circular.
169 - PEEK-CHAR for Gray streams handles end of file correctly now.
170 - For the ppc port, the alignment of objects in alien structures
171 now matches the PowerOpen ABI for Mac OS X.
172 - For Darwin/ppc, CMUCL was not following the ABI when calling
173 out to C varargs functions. Now we always copy any float args
174 to the corresponding int regs (or stack) as required by the
175 ABI. This isn't necessary for non-varargs functions, but
176 CMUCL doesn't know functions which are varargs functions.
177 - Callbacks with long-long args or results should work correctly
178 now for Darwin/ppc.
179 - DESCRIBE no longer depends on having PCL loaded.
180 - Tracing with no encapsulation appears to be working now for
181 ppc.
182 - A simple interface to sysinfo(2) has been added for sparc.
183 This is used to provide better values for MACHINE-TYPE and
185 - PARSE-TIME can parse times like "Tue Sep 7 18:56:57 UTC 2004"
186 again.
187 - The pretty-printer for MULTIPLE-VALUE-BIND can handle
188 malformed MULTIPLE-VALUE-BIND forms now, instead of producing
189 an error.
190 - Callbacks on Darwin/ppc with a large number of args (more than
191 8 integer args) should work correctly now. (Previous versions
192 would signal an error.)
193 - DESCRIBE no longer says arrays are adjustable when they are
194 not, and vice versa.
195 - Disassembly of some floating-point instructions on ppc has
196 been corrected to display floating-point registers instead of
197 integer registers.
198 - (read (make-array 5)) doesn't cause a segfault anymore on
199 x86/linux. An error is now signaled saying the object isn't
200 one of the possible stream types.
201 - The PPC port no longer runs very slowly on some tests on a G5.
202 This was caused by using an instruction (mcrxr) that is
203 emulated on a G5 but not earlier.
204 - The pretty printer no longer causes an error on badly formed
205 slots in defclass forms.
206 - Document LISP::*IGNORE-WILDCARDS*. When set, namestrings will
207 not have pathnames with wildcards escaped when parsing
208 namestrings or when creating namestrings.
209 - Fix PPC bug in fixnum arithmetic that caused overflow. A trap
210 would be triggered, but there's no C support for the trap.
211 - Some flet/labels functions were not disassembled at all.
212 - (expt 1 <big number>) doesn't trigger a continuable error
213 anymore and returns 1 immediately.
214 - Disassembling methods doesn't produce a type error anymore.
215 - The unknown condition type 'LISP:SOCKET-ERROR has been fixed.
216 It properly signals the EXT:SOCKET-ERROR condition now.
217 - The accuracy of the trig functions (sin, cos, tan) for large
218 arguments has been improved for x86 and ppc. Sparc already
219 had accurate versions. Thus, (cos 1d120) is
220 -0.8278608682708728d0.
221 - ROOM works a bit better with GENCGC's allocation because
222 unallocated pages ended up looking like pages of conses.
223 - DESCRIBE will indicate if a hash-table is a weak (key)
224 hash-table or not.
225 - Some issues with GC of weak pointers and weak hash-tables have
226 been fixed. (CMUCL would sometimes crash to ldb about weird,
227 invalid objects.) There are, however, still issues with weak
228 pointers.
229 - Hash table entries with a key and value of :EMTPY now work as
230 expected.
231 - EXT:READ-VECTOR can read binary data from streams with element
234 * Trac Tickets
235 3. without-package-locks doesn't work with defmacro
236 - DEFMACRO within a WITHOUT-PACKAGE-LOCKS now actually
237 disables the package lock.
238 4. symbol-macrolet + ignorable causes internal compiler error
239 - IGNOREing a symbol in a SYMBOL-MACROLET doesn't cause a
240 type error anymore.
241 5. Hash table entry with key and value of :EMPTY is treated as
242 an empty entry.
243 - :EMPTY is allowed now and works as expected.
244 6. GCed items in weak hash tables are still accessible (with
245 random junk)
246 - When an entry is freed in a weak hash-table, the entry is
247 actually marked as free now. Previously, MAPHASH and
248 WITH-HASH-TABLE-ITERATOR would still display (potentially
249 incorrect) entry for it.
250 7. Bug in ext:read-vector
251 - Fixed so that EXT:READ-VECTOR can read binary data from
252 streams with element type BASE-CHAR and CHARACTER. This
253 matches the behavior of STREAMS:READ-VECTOR.
255 * Other changes:
257 - CMUCL catches more cases where it cannot print a pathname
258 readably. In particular when the pathname name contains "/"
259 or ".", or when the pathname type contains a ".".
260 - WITH-SLOTS and WITH-ACCESSORS are now pprinted like
262 - LOOKUP-HOST-ENTRY now returns a second value. If
263 LOOKUP-HOST-ENTRY succeeds, the second value is T; otherwise,
264 the value of h_errno is returned.
265 - A warning is printed when creating a weak key hash table with
266 a test different from EQ.
268 * Improvements to the PCL implementation of CLOS:
270 * Changes to rebuilding procedure:
271 - Build scripts should recognize FreeBSD automatically.
272 - Should be able to build on either Mac OS X 10.2 or 10.4 using
273 the default version of gcc.
275 This release is not binary compatible with code compiled using CMUCL
276 19c; you will need to recompile FASL files.
278 See <URL:http://www.cons.org/cmucl/> for download information,
279 guidelines on reporting bugs, and mailing list details.
282 We hope you enjoy using this release of CMUCL!

  ViewVC Help
Powered by ViewVC 1.1.5