OK, so I've investigated the errors some more, and after many GCL-inspired improvements, I'm down to 9 failing scripts. These remarks complement, but do not always override those in my previous email.
Pathnames: * GCL BUG: pathname parsing sometimes goes nuts. (pathname-directory #p"foo/") ;==> ("foo") This is wrong, it should be (:relative "foo"). GCL itself complains about that later on. * GCL BUG: this causes a segfault rather than an error (setf (logical-pathname-translations "TMP") '("**;*.*.*" #p"/tmp/**/*.*")) * GCL BUG: logical pathnames don't parse into the correct type. (setf (logical-pathname-translations "TMP") '(("**;*.*.*" #p"/tmp/**/*.*"))) (translate-logical-pathname #p"TMP:FOO.LISP") ;==> #P"/tmp/foo.lisp" ;; correct (typep #p"TMP:FOO.LISP" 'logical-pathname) ;==> NIL ;; WRONG! * This causes the 6 remaining failures in asdf-pathname-test, because the test will then try combinations that are invalid for logical-pathnames, that it would have avoided had it detected that the pathnames were "logical" (I prefer the word "lovecraftian" to describe them). Other: * GCL BUG: (random (expt 36 8)) fails. Apparently, you can only yield random numbers of size < 32 bits? I can work around that, but it's a bug. * GCL BUG: compile-file fails to return failure when there are full warnings during the compilation. More errors: * After enabling simple-backtrace, I get a lot of this general kind of error, with different conditions: TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a callee]: INTERNAL-SIMPLE-TYPE-ERROR: CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type: CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR Backtrace: error > system::error-in-error > system::process-error > CONDITIONS::COERCE-TO-CONDITION * Backtrace: > asdf-test::call-with-test > system:lambda-closure > block > let > catch > let > asdf/cache:call-wi th-asdf-cache > load > conditions::old-load > system:load1 > progn > asdf-test::assert-compare-helper > multiple -value-call > uiop/run-program:run-program > uiop/run-program::%use-system > uiop/run-program::%call-with-progra m-io > uiop/stream:call-with-temporary-file > uiop/utility:call-function > #:before1062526 > lambda > uiop/run-p rogram::%call-with-program-io > uiop/stream:call-with-temporary-file > uiop/utility:call-function > #:before1062 926 > lambda > uiop/run-program::%call-with-program-io > uiop/stream:call-with-temporary-file > uiop/utility:cal l-function > #:before1062926 > uiop/stream:call-with-output-file > lambda > uiop/run-program::call-stream-proces sor > setf::|ASDF/BACKWARD-INTERFACE::COMPONENT-PROPERTY| > pcl::initial-dfun > pcl::make-checking-dfun > pcl::m ake-dispatch-dfun > pcl::get-dispatch-function > pcl::get-secondary-dispatch-function1 > pcl::get-secondary-disp atch-function2 > pcl::compute-secondary-dispatch-function1 > pcl::get-function1 > pcl::get-function-generator > pcl::get-new-function-generator > pcl::compile-lambda > compiler::compile-file1 > compiler::t1expr > compiler::t 1defun > compiler::make-inline-string > compiler::make-inline-arg-str > SYSTEM:STRCAT Above backtrace due to this condition: Condition in SYSTEM:STRCAT [or a callee]: INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee] requi res less than sixty-seven arguments. * Caught error #<CONDITIONS::INTERNAL-SIMPLE-TYPE-ERROR.0> trlc1 5 TEST ABORTED: SIMPLE-ERROR: The assertion RESTART failed. Backtrace: error > system::error-in-error > system:lambda-closure > let* > let > block > let > tagbody > if > pr ogn > tagbody > CERROR Above backtrace due to this condition: SIMPLE-ERROR: The assertion RESTART failed. Script failed Using gcl, test-retry-loading-component-1.script failed Question: is there a better way to get to getcwd() than as follows? (let ((*default-pathname-defaults* #p"")) (truename #p"")) PS: you didn't address my previous remark regarding APROPOS returning the same symbol multiple times (because it's inherited by many packages), and not doing case-insensitive comparison like on other lisps (which might be deliberate, but please confirm, then). —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org I have never let my schooling interfere with my education. — Mark Twain On Fri, Nov 15, 2013 at 8:43 PM, Faré <fah...@gmail.com> wrote: > Dear Camm, > > thanks again for your responsiveness. I'm hoping the next release of > ASDF can support GCL, > and the next release of GCL can sport ASDF. > >>> One function that fails to return the same thing when compiled vs >>> interpreted is REDUCE/STRCAT from uiop/utility.lisp. >> >> Thanks! Should be fixed now. >> > Great. I'll look into further bugs. > >>> Another function that behaves in a weird way is configure-asdf from >>> test/script-support.lisp, >> >> Thanks! No longer the case, perhaps resolved when the above was fixed. >> > Indeed, the same bug fix must have worked. > >>> Can you look into it? There are other failures, but these are show stoppers. >> >> A few more tests pass now. Thanks for your reports! >> > Excellent. > >> It would still be >> a bit easier if you could give me step by step instructions to reproduce >> a failure -- I don't know where any of these functions are, or what has >> to be loaded, etc. >> > Every test, when it fails, prints some instructions on how to reproduce it. > Just look at the logs. If the instructions are not correct, it's a bug > that we can fix. > I see it incorrectly specifies -batch, and I'll remove that. > > So I see several kinds of failures. > > Those I have investigated: > > * a bug in handling directories in uiop:probe-file*; > I think I have a fix for that, > but direct support in GCL for the probe-file* interface would be great: > a function that given a pathname designator returns the pathname > to either the file or directory if it exists, and > only optionally resolve symlinks, and return NIL otherwise. > > Also, GCL BUG: TRUENAME should return a FILE-ERROR, not just an ERROR. > Same for DELETE-FILE and probably a lot more other functions. > > * In test1, test2, test3, test-around-compile, test-asdf, > test-builtin-source-file-type, test-compile-file-failure, > test-concatenate-source, test-deferred-warnings, test-force, > test-inline-methods, test-logical-pathname, test-missing-lisp-file, > test-module-depend, test-module-excessive-depend, > test-module-pathnames, test-multiple, test-redundant-recompile, > test-samedir-modules, test-source-file-type, test-stamp-propagation, > test-static-and-serial > TEST ABORTED: Condition in COMPILER::COMPILE-FILE1 [or a callee]: > INTERNAL-SIMPLE-PROGRAM-ERROR: Key :EXTERNAL-FORMAT :DEFAULT not > permitted > > GCL BUG: compile-file fails to accept :EXTERNAL-FORMAT argument. > I'll be working around it in uiop/lisp-build for now. > > > I have not investigated these yet: > > * test-run-program.script > TEST ABORTED: Condition in SYSTEM:STRCAT [or a callee]: > INTERNAL-SIMPLE-PROGRAM-ERROR: MULTIPLE-VALUE-CALL [or a callee] > requires less than sixty-seven arguments. > > GCL BUG? > This looks like a GCL bug, since STRCAT and its callees > don't do anything magical with multiple values. > Is some optimization or rewrite causing an argument list > to expand beyond the limit? > > * In duplicate-components-test, test8, test9, test-system-pathnames > TEST ABORTED: Condition in CONDITIONS::COERCE-TO-CONDITION [or a > callee]: INTERNAL-SIMPLE-TYPE-ERROR: > CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR is not of > type (SATISFIES CONDITIONS::CONDITION-CLASS-P): Not a condition type: > CONDITIONS::INTERNAL-SIMPLE-LOAD-SYSTEM-DEFINITION-ERROR > > GCL BUG? I'm not sure what triggers the initial condition yet, but > it looks like GCL has an error in error handling and/or reporting. > > * In test-retry-loading-component-1.script > SIMPLE-ERROR: The assertion RESTART failed. > > GCL BUG? It looks like find-restart fails here. Does GCL support restarts? > > * test-touch-system-1.script > INTERNAL-SIMPLE-TYPE-ERROR: NIL is not of type REAL: > > Now, I've tried to add in script-support a #+gcl 0 for speed, > to speed up the compilation, and I find what I believe to be a bug in GCL, > whereby the form > (remove-if #'(lambda (x) (member x '("" ".") :test #'equal)) > components) > from uiop/pathname is compiled with an error, with bogus complaint at runtime: > Error: > Signalled by COMMON-LISP:MEMBER. > Condition in COMMON-LISP:MEMBER [or a callee]: > INTERNAL-SIMPLE-PROGRAM-ERROR: Key COMMON-LISP:NIL #<function > 00000000011dd250> not permitted > > I put #+gcl 1 instead, hoping that this will improve things. > > More to come, but that will give you stuff to work on already. > > —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org > If it's not worth doing, it's not worth doing well — Donald Hebb _______________________________________________ Gcl-devel mailing list Gcl-devel@gnu.org https://lists.gnu.org/mailman/listinfo/gcl-devel