<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.3.2">
</HEAD>
<BODY>
Dear Team,<BR>
<BR>
    I was out of touch this weekend on another project.  Before the weekend I sent <BR>
a note questioning whether 4.0 really worked with ACL.  Andrew Philpot has <BR>
been doing a great job sending me suggestions, which I have not been able to <BR>
keep up with.  Based on what he is sent me, I think it is clear:<BR>
<BR>
1)  4.0 does work with ACL-6.2<BR>
2)  4.0 does probably has a type-specific bug with ACL-7.0 (see below)<BR>
3) Andrew has pointed out a lot of mis-organization of the code in terms<BR>
of circular references and so forth that produce compiler warnings but <BR>
are not fatal.<BR>
<BR>
I have not had time to digest his suggestions; I also am not really an expert<BR>
in this sort of thing although I am learning.  I will continue to work with him<BR>
and will study his suggestions later in the week.  <BR>
<BR>
Basically, it seems like to clarify and improve the code quality, I need to <BR>
do some significant reorganization.  As far as I know, it remeains true that 0.4.0<BR>
is the best release so far.<BR>
<BR>
<BR>
Andrew Philpot wrote:<BR>
<BR>
<BR>
<BR>
<TABLE BGCOLOR="#adadad" CELLSPACING="0" WIDTH="100%">
<TR>
<TD>
<TABLE BGCOLOR="#ffffff" CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<TABLE CELLSPACING="0" CELLPADDING="10">
<TR>
<TD>
<BR>
<TT>The type declarations in controller.lisp in the following</TT><BR>
<BR>
<TT>(defun add-index-from-index (iname v dstibt dstsc)</TT><BR>
<TT>  (declare (type btree-index v)</TT><BR>
<TT>           (type indexed-btree dstibt))</TT><BR>
<TT>  (let ((kf (key-form v)))</TT><BR>
<TT>    (format t " kf ~A ~%" kf)</TT><BR>
<TT>    (let ((index</TT><BR>
<TT>           (build-btree-index dstsc :primary dstibt</TT><BR>
<TT>                              :key-form kf)))</TT><BR>
<TT>      ;; Why do I have to do this here?</TT><BR>
<TT>      (setf (indices dstibt) (make-hash-table))</TT><BR>
<TT>      (setf (indices-cache dstibt) (make-hash-table))</TT><BR>
<TT>      (setf (gethash iname (indices-cache dstibt)) index)</TT><BR>
<TT>      (setf (gethash iname (indices dstibt)) index)</TT><BR>
<TT>      )</TT><BR>
<TT>    )</TT><BR>
<TT>  )</TT><BR>
<BR>
<TT>apparently are seen before the type is visible in ACL:</TT><BR>
<BR>
<TT>; While compiling ADD-INDEX-FROM-INDEX:</TT><BR>
<TT>Warning: Ignoring declaration of unrecognized type: BTREE-INDEX</TT><BR>
<TT>Warning: Ignoring declaration of unrecognized type: INDEXED-BTREE</TT><BR>
<BR>
<BR>
<TT>I still have migration/*test-path-secondary* turned off</TT><BR>
<BR>
<TT>In acl6.2</TT><BR>
<BR>
<TT>5 out of 106 total tests failed: ELEPHANT-TESTS::MIGRATE1, </TT><BR>
<TT>   ELEPHANT-TESTS::MIGRATE2, ELEPHANT-TESTS::MIGRATE3, </TT><BR>
<TT>   ELEPHANT-TESTS::MIGRATE4, ELEPHANT-TESTS::MIGRATE5.</TT><BR>
<BR>
<TT>In acl7.0</TT><BR>
<BR>
<TT>6 out of 106 total tests failed: ELEPHANT-TESTS::ARRAYS-1, ELEPHANT-TESTS::MIGRATE1, </TT><BR>
<TT>   ELEPHANT-TESTS::MIGRATE2, ELEPHANT-TESTS::MIGRATE3, ELEPHANT-TESTS::MIGRATE4, </TT><BR>
<TT>   ELEPHANT-TESTS::MIGRATE5.</TT><BR>
<BR>
<TT>The difference is in serializing that funny array with element-type</TT><BR>
<TT>(UNSIGNED-BYTE 20)</TT><BR>
<BR>
<TT>    ELE-TESTS(30):           (in-out-value (make-array '(3 4 5) </TT><BR>
<TT>                                           :element-type </TT><BR>
<TT>                                           '(unsigned-byte 20)))</TT><BR>
<TT>     0[1]: (SERIALIZE #<Array of rank 3 @ #x71e874c2></TT><BR>
<TT>                      #S(SLEEPYCAT:BUFFER-STREAM :BUFFER 2684465168 :SIZE 0 :POSITION 0 :LENGTH 5184))</TT><BR>
<TT>    Error: #<unknown object of type number 56 @ #x71b0dc22> fell through a ETYPECASE form.  The valid</TT><BR>
<TT>           cases were FIXNUM, NULL, SYMBOL, STRING, PERSISTENT, SINGLE-FLOAT, DOUBLE-FLOAT, CHARACTER,</TT><BR>
<TT>           PATHNAME, INTEGER, RATIONAL, CONS, HASH-TABLE, STANDARD-OBJECT, and ARRAY.</TT><BR>
<TT>      [condition type: CASE-FAILURE]</TT><BR>
<BR>
<TT>    Restart actions (select using :continue):</TT><BR>
<TT>     0: Return to Top Level (an "abort" restart).</TT><BR>
<TT>     1: Abort entirely from this (lisp) process.</TT><BR>
<TT>    [1] ELE-TESTS(31): :reset</TT><BR>
<TT>     0[1]: returned-by-throwing NIL</TT><BR>
<TT>    ELE-TESTS(32): </TT><BR>
<BR>
<TT>#Andrew</TT><BR>
<BR>
<BR>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>