ViewVC logotype

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

Parent Directory Parent Directory | Revision Log Revision Log

Revision - (show annotations)
Thu Jun 29 20:50:13 2006 UTC (7 years, 9 months ago) by rtoy
Branch: double-double-array-branch
CVS Tags: double-double-irrat-end
Changes since 1.17: +50 -0 lines
File MIME type: text/plain
Add info about double-double.
1 ========================== C M U C L 19 d =============================
5 The CMUCL project is pleased to announce the release of CMUCL 19d.
6 This is a major release which contains numerous enhancements and
7 bugfixes from the 19c release.
9 CMUCL is a free, high performance implementation of the Common Lisp
10 programming language which runs on most major Unix platforms. It
11 mainly conforms to the ANSI Common Lisp standard. CMUCL provides a
12 sophisticated native code compiler; a powerful foreign function
13 interface; an implementation of CLOS, the Common Lisp Object System,
14 which includes multimethods and a metaobject protocol; a source-level
15 debugger and code profiler; and an Emacs-like editor implemented in
16 Common Lisp. CMUCL is maintained by a team of volunteers collaborating
17 over the Internet, and is mostly in the public domain.
19 New in this release:
22 * Feature enhancements:
24 - Destructive functions like nreverse that modify constant args
25 will produce a warning.
26 - Destructive functions like nreverse whose results are not used
27 will produce a warning.
28 - Pathnames that cannot be printed readably using #p"..." will
29 now be printed using the CMUCL extension #P(...). However,
30 there are still cases where CMUCL cannot print pathnames
31 readably, but these involve search-lists and patterns.
32 - LONG-LONG and UNSIGNED-LONG-LONG are recognized types in the
33 C-CALL package for signed and unsigned 64-bit integers.
34 - A port of gencgc to Darwin/ppc has been made. This still
35 needs work, and is known to have some issues, but it compiles
36 CMUCL without problems and runs maxima just fine.
37 - TRACE supports tracing of FLET/LABELS functions. Use (trace
38 (labels foo bar)) to trace the labels function FOO in the
39 function BAR. This is currently experimental.
40 - DISASSEMBLE will disassemble flets/labels functions when
41 disassembling a function. Set disassem::*disassemble-flets*
42 to NIL to turn this off.
43 - Simple errors in socket handling code have been converted to
44 socket-error's to allow easier distinction of the errors.
45 - EXT:LOAD-FOREIGN will use dlopen to try to open a shared
46 library, so if dlopen searches in certain places, LOAD-FOREIGN
47 will find the shared object.
48 - A new search-list "ld-library-path:" has been created and
49 contains the value of the environment variable
50 LD_LIBRARY_PATH. This is analogous to the "path:"
51 search-list.
52 - When a core file is started, any shared libraries that were
53 loaded when the core was made will be reloaded on startup. If
54 the library cannot be found, several restarts are available.
55 - Support for the new float type EXT:DOUBLE-DOUBLE-FLOAT. This
56 includes support for complex numbers with this component type
57 and simple arrays for this type and complex numbers of this
58 type.
60 A DOUBLE-DOUBLE-FLOAT uses two DOUBLE-FLOAT's to represent a
61 number with >= 106 bits of precision (about 33 digits). Known
62 issues:
64 * If you are expecting IEEE-style behavior, you don't get it:
65 - signed zeroes aren't really available.
66 - overflows don't return infinity but return NaN instead.
67 - rounding might not be quite the same as IEEE
68 - SQRT is not accurate to the last bit, as required by IEEE.
69 * Multiplying by a number very close to
70 most-positive-double-float will produce an error even if the
71 result does not overflow. (This is an artifact of how
72 multiplication is done. I don't have a solution to this.)
73 * Read/write consistency is not working. (Because conversion
74 from a bignum to a double-double-float doesn't really
75 understand the internal double-double-float format.)
76 * INTEGER-DECODE-FLOAT and SCALE-FLOAT aren't "inverses".
77 That is, you can't take the result of integer-decode-float
78 and use scale-float to produce exactly the same number.
79 This is because of how bignums are converted to
80 double-doubles.
81 * FLOAT-DIGITS always returns 106 even though there could be
82 more bits. (Consider the double-double (1d0,1d-200)). This
83 will show up in PRINT where the printed result will have way
84 more than the normal 33 digits or so. But reading such a
85 number back won't give the same value.
86 * There is probably more consing than is necessary in many of
87 the standard Common Lisp functions like floor, ffloor, etc.
88 * The special functions are not fully tested. I did a few
89 random spot checks for each function and compared the
90 results with maxima to verify them.
91 * The branch cuts for the special functions very likely will
92 not match the double-float versions, mostly because we don't
93 have working signed zeroes.
94 * Type derivation for double-double-floats might not be
95 working quite right.
96 * PI is still a double-float. If you want a double-double
97 version of pi, it's KERNEL:DD-PI. (Soon to be EXT:DD-PI.)
98 * All double-double operations are inlined by default (unless
99 *INLINE-EXPANSION-LIMIT* is reached), so functions will tend
100 to be very large. (Each basic double-double operation takes
101 some 20 FP instructions).
102 * There are probably still many bugs where double-double-float
103 support was overlooked.
106 * Numerous ANSI compliance fixes:
108 - A reader-error is signaled if the number that is being read is
109 too small to be presented. We used to silently return 0.
110 - WITH-INPUT-FROM-STRING no longer modifies the index if
111 WITH-INPUT-FROM-STRING is not exited normally.
112 - An error is signaled if a declaration is used as the name of a
113 deftype, condition, or defstruct, and vice versa.
114 - An error is signaled when trying to generate a namestring from
115 a pathname with just a version component (other than nil,
116 :newest, or :unspecific). CMUCL cannot print that readably.
117 - FLET and LABELS functions will catch errors in keyword
118 parameters. Previously, a keyword of NIL was silently
119 accepted.
120 - Printing a zero using ~E will now include a trailing zero
121 after the decimal point, as required by CLHS,
123 structures of type list or vector.
124 - DOTIMES will execute the loop the specified number of times,
125 independent of what the loop might do to the loop counter.
126 - Printing of circular objects using logical-blocks is handled
127 better.
128 - SET-SYNTAX-FROM-CHAR copies the entire dispatch table of
129 reader macro functions if necessary.
130 - SET-SYNTAX-FROM-CHAR handles single-escape, multiple-escape
131 and # characters correctly now.
132 - When CLOSE'ing a file with :ABORT, don't delete the file,
133 unless we renamed it. This preserves any and all changes to
134 the file, instead of deleting it.
135 - As specified by CLHS, PRIN1 and friends now produce
136 a trailing zero if necessary.
137 - As specified by CLHS, ~E will produce a single zero
138 for the fractional part, if necessary.
139 - (FORMAT NIL "~,2F" 0.001) produces "0.00" instead of "0.001".
140 Thus, we actually honor the d field now.
142 * Numerous bugfixes:
144 - LISTEN on DUAL-CHANNEL-SIMPLE-STREAM should work now.
145 - Some numerical issues with the two-arg log function have been
146 fixed. (log 17 10f0), (log 17f0 10) and (log 17 10) all
147 return the same result now.
148 - DESTRUCTURING-BIND no longer causes an error when the list to
149 be destructured is circular.
150 - PEEK-CHAR for Gray streams handles end of file correctly now.
151 - For the ppc port, the alignment of objects in alien structures
152 now matches the PowerOpen ABI for Mac OS X.
153 - For Darwin/ppc, CMUCL was not following the ABI when calling
154 out to C varargs functions. Now we always copy any float args
155 to the corresponding int regs (or stack) as required by the
156 ABI. This isn't necessary for non-varargs functions, but
157 CMUCL doesn't know functions which are varargs functions.
158 - Callbacks with long-long args or results should work correctly
159 now for Darwin/ppc.
160 - DESCRIBE no longer depends on having PCL loaded.
161 - Tracing with no encapsulation appears to be working now for
162 ppc.
163 - A simple interface to sysinfo(2) has been added for sparc.
164 This is used to provide better values for MACHINE-TYPE and
166 - PARSE-TIME can parse times like "Tue Sep 7 18:56:57 UTC 2004"
167 again.
168 - The pretty-printer for MULTIPLE-VALUE-BIND can handle
169 malformed MULTIPLE-VALUE-BIND forms now, instead of producing
170 an error.
171 - Callbacks on Darwin/ppc with a large number of args (more than
172 8 integer args) should work correctly now. (Previous versions
173 would signal an error.)
174 - DESCRIBE no longer says arrays are adjustable when they are
175 not, and vice versa.
176 - Disassembly of some floating-point instructions on ppc has
177 been corrected to display floating-point registers instead of
178 integer registers.
179 - (read (make-array 5)) doesn't cause a segfault anymore on
180 x86/linux. An error is now signaled saying the object isn't
181 one of the possible stream types.
182 - The PPC port no longer runs very slowly on some tests on a G5.
183 This was caused by using an instruction (mcrxr) that is
184 emulated on a G5 but not earlier.
185 - The pretty printer no longer causes an error on badly formed
186 slots in defclass forms.
187 - Document LISP::*IGNORE-WILDCARDS*. When set, namestrings will
188 not have pathnames with wildcards escaped when parsing
189 namestrings or when creating namestrings.
190 - Fix PPC bug in fixnum arithmetic that caused overflow. A trap
191 would be triggered, but there's no C support for the trap.
192 - Some flet/labels functions were not disassembled at all.
193 - DEFMACRO within a WITHOUT-PACKAGE-LOCKS now actually disables
194 the package lock.
195 - (expt 1 <big number>) doesn't trigger a continuable error
196 anymore and returns 1 immediately.
197 - Disassembling methods doesn't produce a type error anymore.
198 - IGNOREing a symbol in a SYMBOL-MACROLET doesn't cause a type
199 error anymore.
201 * Other changes:
203 - CMUCL catches more cases where it cannot print a pathname
204 readably. In particular when the pathname name contains "/"
205 or ".", or when the pathname type contains a ".".
206 - WITH-SLOTS and WITH-ACCESSORS are now pprinted like
208 - LOOKUP-HOST-ENTRY now returns a second value. If
209 LOOKUP-HOST-ENTRY succeeds, the second value is T; otherwise,
210 the value of h_errno is returned.
212 * Improvements to the PCL implementation of CLOS:
214 * Changes to rebuilding procedure:
215 - Build scripts should recognize FreeBSD automatically.
216 - Should be able to build on either Mac OS X 10.2 or 10.4 using
217 the default version of gcc.
219 This release is not binary compatible with code compiled using CMUCL
220 19c; you will need to recompile FASL files.
222 See <URL:http://www.cons.org/cmucl/> for download information,
223 guidelines on reporting bugs, and mailing list details.
226 We hope you enjoy using this release of CMUCL!

  ViewVC Help
Powered by ViewVC 1.1.5