Dear Team,

    I was out of touch this weekend on another project.  Before the weekend I sent
a note questioning whether 4.0 really worked with ACL.  Andrew Philpot has
been doing a great job sending me suggestions, which I have not been able to
keep up with.  Based on what he is sent me, I think it is clear:

1)  4.0 does work with ACL-6.2
2)  4.0 does probably has a type-specific bug with ACL-7.0 (see below)
3) Andrew has pointed out a lot of mis-organization of the code in terms
of circular references and so forth that produce compiler warnings but
are not fatal.

I have not had time to digest his suggestions; I also am not really an expert
in this sort of thing although I am learning.  I will continue to work with him
and will study his suggestions later in the week. 

Basically, it seems like to clarify and improve the code quality, I need to
do some significant reorganization.  As far as I know, it remeains true that 0.4.0
is the best release so far.


Andrew Philpot wrote:




The type declarations in controller.lisp in the following

(defun add-index-from-index (iname v dstibt dstsc)
  (declare (type btree-index v)
           (type indexed-btree dstibt))
  (let ((kf (key-form v)))
    (format t " kf ~A ~%" kf)
    (let ((index
           (build-btree-index dstsc :primary dstibt
                              :key-form kf)))
      ;; Why do I have to do this here?
      (setf (indices dstibt) (make-hash-table))
      (setf (indices-cache dstibt) (make-hash-table))
      (setf (gethash iname (indices-cache dstibt)) index)
      (setf (gethash iname (indices dstibt)) index)
      )
    )
  )

apparently are seen before the type is visible in ACL:

; While compiling ADD-INDEX-FROM-INDEX:
Warning: Ignoring declaration of unrecognized type: BTREE-INDEX
Warning: Ignoring declaration of unrecognized type: INDEXED-BTREE


I still have migration/*test-path-secondary* turned off

In acl6.2

5 out of 106 total tests failed: ELEPHANT-TESTS::MIGRATE1,
   ELEPHANT-TESTS::MIGRATE2, ELEPHANT-TESTS::MIGRATE3,
   ELEPHANT-TESTS::MIGRATE4, ELEPHANT-TESTS::MIGRATE5.

In acl7.0

6 out of 106 total tests failed: ELEPHANT-TESTS::ARRAYS-1, ELEPHANT-TESTS::MIGRATE1,
   ELEPHANT-TESTS::MIGRATE2, ELEPHANT-TESTS::MIGRATE3, ELEPHANT-TESTS::MIGRATE4,
   ELEPHANT-TESTS::MIGRATE5.

The difference is in serializing that funny array with element-type
(UNSIGNED-BYTE 20)

    ELE-TESTS(30):           (in-out-value (make-array '(3 4 5)
                                           :element-type
                                           '(unsigned-byte 20)))
     0[1]: (SERIALIZE #<Array of rank 3 @ #x71e874c2>
                      #S(SLEEPYCAT:BUFFER-STREAM :BUFFER 2684465168 :SIZE 0 :POSITION 0 :LENGTH 5184))
    Error: #<unknown object of type number 56 @ #x71b0dc22> fell through a ETYPECASE form.  The valid
           cases were FIXNUM, NULL, SYMBOL, STRING, PERSISTENT, SINGLE-FLOAT, DOUBLE-FLOAT, CHARACTER,
           PATHNAME, INTEGER, RATIONAL, CONS, HASH-TABLE, STANDARD-OBJECT, and ARRAY.
      [condition type: CASE-FAILURE]

    Restart actions (select using :continue):
     0: Return to Top Level (an "abort" restart).
     1: Abort entirely from this (lisp) process.
    [1] ELE-TESTS(31): :reset
     0[1]: returned-by-throwing NIL
    ELE-TESTS(32):

#Andrew