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