Andrew has discovered some problems (and even more than this message.)
I thought 4.0 was functional under ACL, but I would now have to say it is questionable.
Unfortunately, I am about to begin an weekend-long LAN party to rebuild the website of the Esperanto League of North America, so will not be able to incorprate Andrew's suggestions until next week.
Many thanks, Andrew for all your work. If everyone can continue to be patient with me, we will continue to have a better-and-better project.
On Fri, 2006-01-06 at 10:08 -0800, Andrew Philpot wrote:
In src/elephant.lisp, you need three more imports from CLOS (primary name is ACLMOP)
#+allegro (:import-from :clos compute-class-precedence-list validate-superclass standard-slot-definition standard-direct-slot-definition standard-effective-slot-definition direct-slot-definition-class effective-slot-definition-class slot-definition-name slot-definition-initform slot-definition-initfunction compute-effective-slot-definition class-slots slot-value-using-class slot-boundp-using-class slot-makunbound-using-class slot-definition-allocation slot-definition-initargs class-finalized-p finalize-inheritance compute-slots slot-definition-readers slot-definition-writers class-direct-slots)
In INSTALL and src/controller, there are stray references to '0.3.0' Maybe you could use logical pathnames?
I didn't notice this before, but DESERIALIZE-FROM-BASE64-STRING has arguments (x &keys sc) and is called incorrectly in SQL-DUMP-CLCN which should probably be something like
(defmethod sql-dump-clcn ((clcn integer) sc con) (let* ( (tuples (clsql::select [key] [value] :from [keyvalue] :where [and [= [clctn_id] clcn]] :database con ))) (mapcar #'(lambda (x) (mapcar #'(lambda (q) (deserialize-from-base64-string q :sc sc)) x)) tuples)))
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
elephant-announce@common-lisp.net