diff --git a/src/bootfiles/20e/boot-20f.lisp b/src/bootfiles/20e/boot-20f.lisp new file mode 100644 index 0000000000000000000000000000000000000000..62024bac5b0d58998fe02bda7b06a0ace4b61f57 --- /dev/null +++ b/src/bootfiles/20e/boot-20f.lisp @@ -0,0 +1,68 @@ +;;;; +;;;; Boot file for changing the fasl file version numbers to 20f. +;;;; + +(in-package :c) + +(setf lisp::*enable-package-locked-errors* nil) + +;;; +;;; Note that BYTE-FASL-FILE-VERSION is a constant. +;;; +;;; (Be sure to change BYTE-FASL-FILE-VERSION in +;;; compiler/byte-comp.lisp to the correct value too!) +;;; +#-cmu20f +(setf (symbol-value 'byte-fasl-file-version) #x20f) +#-cmu20f +(setf (backend-fasl-file-version *target-backend*) #x20f) + +;;; +;;; Don't check fasl versions in the compiling Lisp because we'll +;;; load files compiled with the new version numbers. +;;; +#-cmu20f +(setq lisp::*skip-fasl-file-version-check* t) + +;;; +;;; This is here because BYTE-FASL-FILE-VERSION is constant-folded in +;;; OPEN-FASL-FILE. To make the new version number take effect, we +;;; have to redefine the function. +;;; +#-cmu20f +(defun open-fasl-file (name where &optional byte-p) + (declare (type pathname name)) + (let* ((stream (open name :direction :output + :if-exists :new-version + :element-type '(unsigned-byte 8) + :class 'binary-text-stream)) + (res (make-fasl-file :stream stream))) + (multiple-value-bind + (version f-vers f-imp) + (if byte-p + (values "Byte code" + byte-fasl-file-version + (backend-byte-fasl-file-implementation *backend*)) + (values (backend-version *backend*) + (backend-fasl-file-version *backend*) + (backend-fasl-file-implementation *backend*))) + (format stream + "FASL FILE output from ~A.~@ + Compiled ~A on ~A~@ + Compiler ~A, Lisp ~A~@ + Targeted for ~A, FASL version ~X~%" + where + (ext:format-universal-time nil (get-universal-time)) + (machine-instance) compiler-version + (lisp-implementation-version) + version f-vers) + ;; + ;; Terminate header. + (dump-byte 255 res) + ;; + ;; Specify code format. + (dump-fop 'lisp::fop-long-code-format res) + (dump-byte f-imp res) + (dump-unsigned-32 f-vers res)) + res)) + diff --git a/src/compiler/byte-comp.lisp b/src/compiler/byte-comp.lisp index 49810d649f112759c6086d8e2b2ba8d880fdfd9e..2d2b3ac234bc70fe1dbff003d7f86be16eed466c 100644 --- a/src/compiler/byte-comp.lisp +++ b/src/compiler/byte-comp.lisp @@ -38,7 +38,7 @@ ;; 0-9 followed by a single hex digit in the range a-f. Then the ;; version looks like a decimal number followed by a minor release ;; letter of a to f. -(defconstant byte-fasl-file-version #x20e) +(defconstant byte-fasl-file-version #x20f) (let* ((version-string (format nil "~X" byte-fasl-file-version))) ;; Add :cmu<n> to *features* diff --git a/src/docs/cmu-user/cmu-user.tex b/src/docs/cmu-user/cmu-user.tex index ce459707bd7648257308e802dea9dcc6767f26bc..ee7eae031205c011626e274d04be70158b355a6c 100644 --- a/src/docs/cmu-user/cmu-user.tex +++ b/src/docs/cmu-user/cmu-user.tex @@ -48,7 +48,7 @@ \newcommand{\keywords}{lisp, Common Lisp, manual, compiler, programming language implementation, programming environment} -\date{October 2013 \\ 20e} +\date{October 2014 \\ 20f} \begin{document} diff --git a/src/general-info/release-20f.txt b/src/general-info/release-20f.txt index 2cdc46084dabd86fb3096a4902cb3c5c263deaab..1dc4fb1298358584e51352260c3fbb1db00448c2 100644 --- a/src/general-info/release-20f.txt +++ b/src/general-info/release-20f.txt @@ -1,10 +1,8 @@ ========================== C M U C L 20 f ============================= -[In Progress] - The CMUCL project is pleased to announce the release of CMUCL 20f. This is a major release which contains numerous enhancements and -bug fixes from the 20c release. +bug fixes from the 20e release. CMUCL is a free, high performance implementation of the Common Lisp programming language which runs on most major Unix platforms. It @@ -19,12 +17,12 @@ over the Internet, and is mostly in the public domain. New in this release: * Known issues: - * Support for x87 will be dropped after the 2014-04 snapshot. All - further snapshots will require an x86 chip that supports sse2. - SSE2 was introduced with the Pentium 4 in 2001. + * Support for x87 has been dropped (effective with the 2014-05 + snapshot). All further releases will require an x86 chip that + supports sse2. SSE2 was introduced with the Pentium 4 in 2001. * Feature enhancements - * Trig functions are signficantly faster. + * Trig functions are significantly faster. * Accuracy of trig functions improved. (Previously, they could be off by one or two ulp.) * RUN-PROGRAM accepts :ELEMENT-TYPE to allow specifying the @@ -49,14 +47,14 @@ New in this release: * Micro-optimization: (expt -1 power) just returns -1 or 1 without actually computing the power. * Run-time checks for zero pages on newly allocated pages has been - disabled now that the lazy zeroing of the heap pages has been - the default for several months now. + disabled. Lazy zeroing of the heap pages is the default + now. which can speed up GC and allocation. * Add lisp-unit as a contrib. Use (require :lisp-unit) to load it. Precompiled fasls are not included. * CMUCL now uses fdlibm C functions to implement the special functions. All platforms use this so they should produce identical results everywhere. - * Consing for the trig functions is removed now since we call out + * Consing for the trig functions is reduced now since we call out to fdlibm instead of implementing them in Lisp. * Source location information has been added for DEFINE-CONDITION. (From Helmut Eller.) @@ -79,12 +77,12 @@ New in this release: * On the ppc port, handle FP exceptions a bit better by not failing if cmucl is unable to interpret the instruction that caused the exception. - * Microoptimization for sparc in rounding a double-float to a + * Micro-optimization for sparc in rounding a double-float to a 32-bit signed integer. * The compiler can now derive the type of ROUND. (But more work is needed.) * Fix an issue with multi-processing destroy-process doesn't take - effect for a schedulable processbecause it has no run-reason + effect for a schedulable process because it has no run-reason and/or arrest-reason. * ANSI compliance fixes: @@ -120,7 +118,7 @@ New in this release: cleared. * In some situations KERNEL:DOUBLE-FLOAT-BITS on x86 would cause a segfault. This has been fixed. - * For linux, motifd is no longer a 64-bit app. + * For Linux, motifd is no longer a 64-bit app. * (exp 1d0) now returns the correctly rounded value of e. Previously, it was off by one bit. * INTEGER-DECODE-FLOAT returns the correct values for denormal