Commit 3ccd76ad authored by rtoy's avatar rtoy
Browse files

Merge changes from RELEASE_19f.

parent e18d5af9
;;;; 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)))
(version f-vers f-imp)
(if byte-p
(values "Byte code"
(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~%"
(ext:format-universal-time nil (get-universal-time))
(machine-instance) compiler-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))
......@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
"$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
;; Currently, only encapsulation works on x86/darwin,
(defvar *trace-encapsulate-default* :default
"The default value for the :ENCAPSULATE option to trace.")
......@@ -5,7 +5,7 @@
;;; Carnegie Mellon University, and has been placed in the public domain.
"$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))
......@@ -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}
......@@ -3253,8 +3253,10 @@ bit
(complex single-float)
(complex double-float)
(complex ext:double-double-float)
Although a \code{simple-vector} can hold any type of object, \true{}
......@@ -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} \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.
The return values are as per the proposed X3J13 cleanup
......@@ -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.
Reinitializes the database of cross-references. This can be used to
reclaim the space occupied by the database contents, or to discard
......@@ -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}).
......@@ -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 "") \result "foo", "bar", :NEWEST
(parse ".foo") \result ".foo", NIL, :NEWEST
(parse "") \result ".foo", "bar", :NEWEST
(parse "..") \result ".", "", :NEWEST
(parse "foo.") \result "foo", "", :NEWEST
(parse "") \result "foo", "bar", 1
(parse "") \result "", "baz", :NEWEST
(parse "foo") \result "foo", NIL, NIL
(parse "") \result "foo", "bar", NIL
(parse ".foo") \result ".foo", NIL, NIL
(parse "") \result ".foo", "bar", NIL
(parse "..") \result NIL, NIL, NIL
(parse "foo.") \result "foo", "", NIL
(parse "") \result "foo", "bar", 1
(parse "") \result "", "baz", NIL
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
z[i] = z[i - 24] - z[i - 55] \bmod 536870908
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
z[i] = z[i + 20] - z[i + 5] - b
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
To increase the randomness of this generator, this generator is
combined with a Weyl generator defined by
x[i] = x[i - 1] - y \bmod 1,
where $y = 7097293079245107 \times 2^{-53}$. Thus, the resulting
random number $r[i]$ is
r[i] = (z[i] - x[i]) \bmod 1
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.
\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
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}
......@@ -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:
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
\item[\code{--}] indicates that everything after ``\code{--}'' is not
subject to \cmucl's command line parsing. Everything after
``\code{--}'' is placed in the variable
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:
\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
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
......@@ -6,12 +6,12 @@
.\" If you want to use this code or any part of CMU Common Lisp, please contact
.\" Scott Fahlman or
.\"$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
lisp \- CMU Common Lisp programming environment
========================== C M U C L 19 f =============================
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.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment