diff --git a/bootfiles/19e/boot-19f.lisp b/bootfiles/19e/boot-19f.lisp new file mode 100644 index 0000000000000000000000000000000000000000..90c5d5234995e506d2bbd653a8674d4626cb39dd --- /dev/null +++ b/bootfiles/19e/boot-19f.lisp @@ -0,0 +1,63 @@ +;;;; +;;;; Boot file for changing the fasl file version numbers to 19e. +;;;; + +(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!) +;;; +(setf (symbol-value 'byte-fasl-file-version) #x19f) +(setf (backend-fasl-file-version *target-backend*) #x19f) + +;;; +;;; Don't check fasl versions in the compiling Lisp because we'll +;;; load files compiled with the new version numbers. +;;; +(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. +;;; +(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))) + (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/code/ntrace.lisp b/code/ntrace.lisp index 0ee37a935dd956457ae6f0af60e6460cb9322fe1..32fe7a235b522bc54074c05c887ddb45cf7ce9fc 100644 --- a/code/ntrace.lisp +++ b/code/ntrace.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/ntrace.lisp,v 1.42 2007/12/15 14:47:28 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/ntrace.lisp,v 1.43 2009/03/11 01:19:27 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; @@ -34,7 +34,6 @@ "If the trace indentation exceeds this value, then indentation restarts at 0.") -;; Currently, only encapsulation works on x86/darwin, (defvar *trace-encapsulate-default* :default "The default value for the :ENCAPSULATE option to trace.") diff --git a/compiler/byte-comp.lisp b/compiler/byte-comp.lisp index dc816a8bc228328f61ce5e5326d7f84c10c582c9..ed8166bd100c2e2eb164e234a6d3c3459ee9c083 100644 --- a/compiler/byte-comp.lisp +++ b/compiler/byte-comp.lisp @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.46 2008/01/30 18:16:20 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/byte-comp.lisp,v 1.47 2009/03/11 01:19:27 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -32,7 +32,7 @@ ;;;; Fasl file format: -(defconstant byte-fasl-file-version #x19e) +(defconstant byte-fasl-file-version #x19f) (let* ((version-string (format nil "~X" byte-fasl-file-version))) (sys:register-lisp-feature (intern (concatenate 'string "CMU" version-string) :keyword)) diff --git a/docs/cmu-user/cmu-user.tex b/docs/cmu-user/cmu-user.tex index 52a610a62a724e700be591b778c2ae61139ae1ad..04dae647c1bddb0f87db7766fae8448aea10eafa 100644 --- a/docs/cmu-user/cmu-user.tex +++ b/docs/cmu-user/cmu-user.tex @@ -47,7 +47,7 @@ \newcommand{\keywords}{lisp, Common Lisp, manual, compiler, programming language implementation, programming environment} -\date{Mar 2008 \\ Release 19e} +\date{Mar 2009 \\ Release 19f} \begin{document} diff --git a/docs/cmu-user/compiler-hint.tex b/docs/cmu-user/compiler-hint.tex index beac6ff0083936f394d565d9741f674fbb5fe6d7..2e68a37fb3e4a66fd4b56a0d334fc78414ad9f15 100644 --- a/docs/cmu-user/compiler-hint.tex +++ b/docs/cmu-user/compiler-hint.tex @@ -3253,8 +3253,10 @@ bit base-character single-float double-float +ext:double-double-float (complex single-float) (complex double-float) +(complex ext:double-double-float) \end{lisp} Although a \code{simple-vector} can hold any type of object, \true{} diff --git a/docs/cmu-user/compiler.tex b/docs/cmu-user/compiler.tex index ea21e9db80e207c9faddd97f953f5f15d5794830..2d84164dc0fc8eda68d58cf9cce8e14b7ec145b9 100644 --- a/docs/cmu-user/compiler.tex +++ b/docs/cmu-user/compiler.tex @@ -66,7 +66,7 @@ Functions may be compiled using \code{compile}, \code{compile-file}, or \keys{\kwd{output-file} \kwd{error-file} \kwd{trace-file}} \morekeys{\kwd{error-output} \kwd{verbose} \kwd{print} \kwd{progress}} \yetmorekeys{\kwd{load} \kwd{block-compile} \kwd{entry-points}} - \yetmorekeys{\kwd{byte-compile}}}} + \yetmorekeys{\kwd{byte-compile} \kwd{xref}}}} The \cmucl{} \code{compile-file} is extended through the addition of several new keywords and an additional interpretation of @@ -122,7 +122,7 @@ Functions may be compiled using \code{compile}, \code{compile-file}, or resolved, unless an \code{ext:block-start} declaration appears in the source file. \xlref{compile-file-block}. - \item[\kwd{entry-points}] If non-null, then this is a list of the + \item[\kwd{entry-points}] If non-\nil, then this is a list of the names of all functions in the file that should have global definitions installed (because they are referenced in other files.) \xlref{compile-file-block}. @@ -130,7 +130,13 @@ Functions may be compiled using \code{compile}, \code{compile-file}, or \item[\kwd{byte-compile}] If \true{}, compiling to a compact interpreted byte code is enabled. Possible values are \true{}, \false{}, and \kwd{maybe} (the default.) See - \varref{byte-compile-default} and \xlref{byte-compile}. + \varref{byte-compile-default} and \pxlref{byte-compile}. + + \item[\kwd{xref}] If non-\nil, enable recording of cross-reference + information. The default is the value of + \code{c:*record-xref-info*}. \xlref{xref}. Note that the + compiled fasl file will also contain cross-reference information + and loading the fasl later will populate the cross-reference database. \end{Lentry} The return values are as per the proposed X3J13 cleanup diff --git a/docs/cmu-user/cross-referencing.tex b/docs/cmu-user/cross-referencing.tex index af31430d38c070ae0d939d68df8d927998107ca3..c7bb399ca09872ee80a3399193cc289fef5cdaa0 100644 --- a/docs/cmu-user/cross-referencing.tex +++ b/docs/cmu-user/cross-referencing.tex @@ -49,6 +49,11 @@ analysis is independent of whether the compiler is generating native code or byte code, and of whether it is compiling from a file, from a stream, or is invoked interactively from the listener. +Alternatively, the \kwd{:xref} option to \code{compile-file} may be +specified to populate the cross-reference database when compiling a +file. In this case, loading the generated fasl file in a fresh lisp +will also populate the cross-reference database. + \begin{defun}{xref:}{init-xref-database}{} Reinitializes the database of cross-references. This can be used to reclaim the space occupied by the database contents, or to discard diff --git a/docs/cmu-user/extensions.tex b/docs/cmu-user/extensions.tex index 78f380b39347fd8e83a993cfa4ae4c91c79db8ce..fac064e2702ae89c200be1352fb7351fcfe69a59 100644 --- a/docs/cmu-user/extensions.tex +++ b/docs/cmu-user/extensions.tex @@ -588,6 +588,10 @@ Package nicknames are in parenthesis after the full name. \item[\code{stream}] The \code{stream} package exports the public interface to the simple-streams implementation (\pxlref{simple-streams}). + +\item[\code{xref}] The \code{xref} package exports the public + interface to the cross-referencing utility (\pxlref{xref}). + \end{Lentry} @@ -1441,14 +1445,14 @@ defaults to \kwd{newest}. (defun parse (x) (values (pathname-name x) (pathname-type x) (pathname-version x))) -(parse "foo") \result "foo", NIL, :NEWEST -(parse "foo.bar") \result "foo", "bar", :NEWEST -(parse ".foo") \result ".foo", NIL, :NEWEST -(parse ".foo.bar") \result ".foo", "bar", :NEWEST -(parse "..") \result ".", "", :NEWEST -(parse "foo.") \result "foo", "", :NEWEST -(parse "foo.bar.1") \result "foo", "bar", 1 -(parse "foo.bar.baz") \result "foo.bar", "baz", :NEWEST +(parse "foo") \result "foo", NIL, NIL +(parse "foo.bar") \result "foo", "bar", NIL +(parse ".foo") \result ".foo", NIL, NIL +(parse ".foo.bar") \result ".foo", "bar", NIL +(parse "..") \result NIL, NIL, NIL +(parse "foo.") \result "foo", "", NIL +(parse "foo.bar.~1~") \result "foo", "bar", 1 +(parse "foo.bar.baz") \result "foo.bar", "baz", NIL \end{example} The directory of pathnames beginning with a slash (or a search-list, @@ -1853,74 +1857,11 @@ and printing time in various formats are available. \clisp{} includes a random number generator as a standard part of the language; however, the implementation of the generator is not -specified. Two random number generators are available in \cmucl{}, -depending on the version. - -\subsection{Original Generator} - -\cpsubindex{random number generation}{original generator} -The default random number generator uses a lagged Fibonacci generator -given by - -\begin{displaymath} - z[i] = z[i - 24] - z[i - 55] \bmod 536870908 -\end{displaymath} - -where $z[i]$ is the $i$'th random number. This generator produces -small integer-valued numbers. For larger integer, the small random -integers are concatenated to produce larger integers. For -floating-point numbers, the bits from this generator are used as the -bits of the floating-point significand. - -\subsection{New Generator} -\cpsubindex{random number generation}{new generator} - -In some versions of \cmucl{}, the original generator above has been -replaced with a subtract-with-borrow generator -combined with a Weyl generator.\footnote{The generator described here - is available if the feature \kwd{new-random} is available.} The -reason for the change was to use a documented generator which has -passed tests for randomness. - -The subtract-with-borrow generator is described by the following -equation -\begin{displaymath} - z[i] = z[i + 20] - z[i + 5] - b -\end{displaymath} -where $z[i]$ is the $i$'th random number, which is a -\code{double-float}. All of the indices in this equation are -interpreted modulo 32. The quantity $b$ is carried over from the -previous iteration and is either 0 or \code{double-float-epsilon}. If -$z[i]$ is positive, $b$ is set to zero. Otherwise, $b$ is set to -\code{double-float-epsilon}. - -To increase the randomness of this generator, this generator is -combined with a Weyl generator defined by -\begin{displaymath} - x[i] = x[i - 1] - y \bmod 1, -\end{displaymath} -where $y = 7097293079245107 \times 2^{-53}$. Thus, the resulting -random number $r[i]$ is -\begin{displaymath} - r[i] = (z[i] - x[i]) \bmod 1 -\end{displaymath} - -This generator has been tested by Peter VanEynde using Marsaglia's -diehard test suite for random number generators; this generator -passes the test suite. - -This generator is designed for generating floating-point random -numbers. To obtain integers, the bits from the significand of the -floating-point number are used as the bits of the integer. As many -floating-point numbers as needed are generated to obtain the desired -number of bits in the random integer. - -For floating-point numbers, this generator can by significantly faster -than the original generator. +specified. \subsection{MT-19937 Generator} -\cpsubindex{random number generation}{MT-19987 generator} -On all platforms, this is the preferred generator as indicated by +\cpsubindex{random number generation}{MT-19937 generator} +On all platforms, the random number is \code{MT-19937} generator as indicated by \kwd{rand-mt19937} being in \code{*features*}. This is a Lisp implementation of the MT-19937 generator of Makoto Matsumoto and T. Nishimura. We refer the reader to their paper\footnote{``Mersenne @@ -1935,6 +1876,12 @@ website at \href{http://www.math.keio.ac.jp/~matumoto/emt.html}{\texttt{http://www.math.keio.ac.jp/~matsumoto/emt.html}}. \fi +When \cmucl{} starts up, \code{*random-state*} is initialized by +reading 627 words from \code{/dev/urandom}, when available. If +\code{/dev/urandom} is not available, the universal time is used to +initialize \code{*random-state*}. The initialization is done as given +in Matsumoto's paper. + \section{Lisp Threads} \cindex{lisp threads} diff --git a/docs/cmu-user/introduction.tex b/docs/cmu-user/introduction.tex index 6121261900d2cfc00ad8868041ef909bf7108f50..3db34fe5a2d34aa59666ce40175b01d95d03a9f5 100644 --- a/docs/cmu-user/introduction.tex +++ b/docs/cmu-user/introduction.tex @@ -129,8 +129,11 @@ switches: \item[\code{-init}] accepts an argument that should be the name of an init file to load during the normal start up sequence. The default is to load \file{init.\var{object-type}} or, if that does not exist, - \file{init.lisp} from the user's home directory. If the file is not - in the user's home directory, the full path must be specified. + \file{init.lisp} from the user's home directory. If neither exists, + \cmucl tries \file{.cmucl-init.\var{object-type}} and then + \file{.cmucl-init.lisp}. If the file is not + in the user's home directory, the full path must be specified. If + the file does not exist, \cmucl silently ignores it. \item[\code{-noinit}] accepts no arguments and specifies that an init file should not be loaded during the normal start up sequence. @@ -155,6 +158,20 @@ switches: \end{example} where \var{machine-name} is the internet host name for the machine and \var{socket} is the decimal number of the socket to connect to. + +\item[\code{-fpu}] specifies what fpu should be used for x87 machines. + The possible values are ``\code{x87}'', ``\code{sse2}'', or + ``\code{auto}'', which is the default. By default, \cmucl will + detect if the chip supports the SSE2 instruction set or not. If so + or if \code{-fpu sse2} is specified, the SSE2 core will be loaded + that uses SSE2 for floating-point arithmetic. If SSE2 is not + available or if \code{-fpu x87} is given, the legacy x87 core is + loaded. + +\item[\code{--}] indicates that everything after ``\code{--}'' is not + subject to \cmucl's command line parsing. Everything after + ``\code{--}'' is placed in the variable + \code{ext:*command-line-application-arguments*}. \end{Lentry} For more details on the use of the \code{-edit} and \code{-slave} @@ -273,16 +290,20 @@ The project funding stopped in 1994, so support at Carnegie Mellon University has been discontinued. All code and documentation developed at CMU was released into the public domain. The project continues as a group of users and developers collaborating over the Internet. The -currently active maintainers are: +current and previous maintainers include: \begin{itemize} \item Marco Antoniotti \item Martin Cracauer +\item Fred Gilham +\item Alex Goncharov \item Rob MacLachlan \item Pierre Mai \item Eric Marsden \item Gerd Moellman \item Tim Moore +\item Carl Shapiro +\item Robert Swindells \item Raymond Toy \item Peter Van Eynde \item Paul Werkowski @@ -316,10 +337,13 @@ the development of \cmucl{} since 1981 are \item Dave McDonald \item Tim Moore \item Skef Wholey +\item Paul Foley +\item Helmut Eller +\item Jan Rychter \end{itemize} Countless others have contributed to the project by sending in bug -reports, bug fixes, new features. +reports, bug fixes, and new features. This manual is based on CMU Technical Report CMU-CS-92-161, edited by Robert A. MacLachlan, dated July 1992. Other contributors include diff --git a/general-info/lisp.1 b/general-info/lisp.1 index 6e508d2466582bfb0a8320c60a7fc8221e3ba7b2..5c2e65256d09eb92f82de8b653df22b645df1ad5 100644 --- a/general-info/lisp.1 +++ b/general-info/lisp.1 @@ -6,12 +6,12 @@ .\" If you want to use this code or any part of CMU Common Lisp, please contact .\" Scott Fahlman or slisp-group@cs.cmu.edu. .\" -.\"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/general-info/lisp.1,v 1.13 2009/01/10 03:16:54 rtoy Exp $ +.\"$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/general-info/lisp.1,v 1.14 2009/03/11 01:19:27 rtoy Rel $ .\" .\" ********************************************************************** .\" .\" Man page for CMU CL. -.TH LISP 1 "July, 2005" +.TH LISP 1 "Mar, 2009" .AT 3 .SH NAME lisp \- CMU Common Lisp programming environment diff --git a/general-info/release-19f.txt b/general-info/release-19f.txt index 472d550912c1ff5579e8f101e46bf72cf39a1d86..a6cda6fd9418af4dc10c95510102e38f4a53a5b4 100644 --- a/general-info/release-19f.txt +++ b/general-info/release-19f.txt @@ -1,7 +1,5 @@ ========================== C M U C L 19 f ============================= -[--- WORK IN PROGRESS ---] - The CMUCL project is pleased to announce the release of CMUCL 19f. This is a major release which contains numerous enhancements and bugfixes from the 19e release. @@ -110,7 +108,8 @@ New in this release: - FLOAT-PRECISION supports double-double floats. - Tracing should now be working on Darwin/x86. Previously, certain cases would cause Lisp to segfault in bad ways where you - could not return to the repl. + could not return to the repl. Do not need to do encapsulation + by default anymore. - The bounds for type (REAL lo hi) are computed better now. The REAL type is a union of SINGLE-FLOAT, DOUBLE-FLOAT, and DOUBLE-DOUBLE-FLOAT. The computed bounds for @@ -188,6 +187,11 @@ New in this release: - The Linux config file is now named Config.x86_linux, which is the equivalent to Config.linux_gencgc, which is deprecated. + * Known issues: + - Executables (via save-lisp) on recent FreeBSD versions are + currently not working. The executable is created, but the + resulting executable doesn't work correctly. + This release is not binary compatible with code compiled using CMUCL 19e; you will need to recompile FASL files.