A minor modification has been made to defstobj that can have a
positive impact on performance in Allegro Common Lisp. (For Lisp
hackers: the stobj name was formerly declared special, and that was
disabling Allegro's tail-merging routing for compilation of some
recursive functions using stobjs.) The downside is that stobj names
can no longer be evaluated in raw Lisp. However, raw Lisp is not
the right place to be evaluating ACL2 forms anyhow;
see set-raw-mode. We thank Rob Sumners for bringing this issue
to our attention.

Before Version 2.6, there has been the following problem with
defstub and encapsulate in the case that the current package is not
the ACL2 package. If a signature was specified using the symbol =>,
then that symbol had have been imported into the current package
from the ACL2 package when the current package was defined. There
are no longer any package restrictions on the use of =>. Thanks to
John Cowles for bringing this problem to our attention.

Bugs in defun-sk have been fixed. Defun-sk forms introducing
functions of no arguments were failing to be admitted, for example:
(defun-sk always-p1 () (forall (x) (p1 x))).
Thanks to John Cowles for bringing this problem to our attention.
Also, defun-sk failed on an example in the documentation
(see tutorial4-defun-sk-example), as pointed out by Matyas
Sustik; this bug has been fixed as well.

The trace mechanism has been fixed to handle stobjs, and to
avoid the printing of so-called enabled structures.

We have eliminated the use of a low-level raw Lisp constant,
*most-recent-multiplicity*. Our test suite saw a speed-up
of approximately 2% as a result for an ACL2 image built on GCL
(but no significant speed-up for an ACL2 image built on Allegro
Common Lisp). We thank Rob Sumners for suggesting this improvement.

Fixnum declarations are now realized as (signed-byte 29) instead of
(signed-byte 27). We check that the underlying Common Lisp
recognizes objects of type (signed-byte 29) as fixnums, with
the exception of CLISP, which is said to have an efficient bignum
implementation.

A bug has been fixed in the monitoring of runes (see monitor).
Thanks to Dave Greve for sending an example that clearly showed
the problem.

A warning is now issued when it is detected that a
:type-prescription rule may not be as strong as it appears because
it is not sufficient to prove itself by type reasoning.

An error is caused for rules of class :meta when the function symbol
IF is among the :trigger-fns. (IF was ignored anyhow; the point of
this change is to avoid misleading the user.)

A minor bug has been fixed in :pr, evident for example if this
command was applied to IF.

A minor hole in :set-bogus-mutual-recursion-ok did not permit the
acceptance of mutual-recursion forms that include constant function
definitions. This has been fixed. Thanks to Eric Smith for coming
up with a simple example illustrating the problem.

The temporary files "TMP.lisp" and "TMP1.lisp" written out by :comp
are now written to the connected book directory (see cbd).

Previously, the Allegro compiler was not eliminating tail recursion
for executable counterparts of functions, because of the way one of
its flags had been set. As a result, calls of functions whose
guards had not been verified could run out of stack space when this
was not necessary. This situation has been fixed.

Executable counterparts could have slow array accesses. This has
been fixed (specifically, constants are no longer replaced with
their values in the definitions of executable counterparts).

Various improvements have been made to the documentation. Thanks in
particular to Eric Smith for pointing out a numbers of places where
fixes were in order.

File "mcl-acl2-startup.lisp" has been updated, thanks to feedback
from Philippe Georgelin.

Inefficiencies in GCL fixnum computations were remedied for macros +f and
*f. Thanks to Rob Sumners for pointing out this issue.