1

I have a weird mix of errors.

I was using CL21, I was in my package, and I wanted to install lparallel. Not possible:

(ql:quickload :lparallel)
To load "lparallel":
  Load 1 ASDF system:
    lparallel
; Loading "lparallel"
; 
; caught ERROR:
;   DYNAMIC-EXTENT on a weird thing: (CL21.CORE.FUNCTION:FUNCTION #:BODY-FN1)
; 
; compilation unit aborted
;   caught 2 fatal ERROR conditions
;   caught 1 ERROR condition
; Evaluation aborted on #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {1008956C13}>.

I can reproduce it in a new session but it's a bit weird: if I quickload lparallel in cl-user, it complains on not finding the symbol CL21.CORE.FUNCTION, even if I didn't do nothing with CL21 yet:

The name "CL21.CORE.FUNCTION" does not designate any package.

So I ql:quickload CL21 and then on retrying to load lparallel. I get the first error.

But, I tried in Portacle for a fresh image and… I couldn't reproduce this.

Any idea ? Is that an issue with cl21, lparallel, quicklisp or asdf??

sds
  • 58,617
  • 29
  • 161
  • 278
Ehvince
  • 17,274
  • 7
  • 58
  • 79
  • Looks like cl21 messes the standard readtable by replacing `#'` with its own version that isn't compatible with lparallel. Try `(ql:quickload :lparallel :force t)` in a fresh image to get rid of the files compiled with cl21 loaded. – jkiiski Jul 20 '17 at 15:26
  • No luck with this command. Indeed, cl21 replaces `#'`. – Ehvince Jul 20 '17 at 15:38
  • 1
    I also filled an issue: https://github.com/cl21/cl21/issues/99 and a working suggestion is to use `(asdf:operate 'asdf:load-op :lparallel :force t)` (or to delete the .fasd files). You were close ! – Ehvince Jul 20 '17 at 15:39
  • Oh right, `ql:quickload` apparently doesn't pass `:force t` to asdf as I thought. – jkiiski Jul 20 '17 at 15:47
  • If you want to explain the pb and the solution in an answer I will definitely accept it :) – Ehvince Jul 20 '17 at 15:49

1 Answers1

2

cl21 seems to replace the standard reader macro #' with its own version that isn't compatible with lparallel. When you tried to load lparallel in a fresh image, ASDF will load it from the .fasl-files that were compiled with cl21 loaded, so you must either delete those files or force recompilation with

(asdf:operate 'asdf:load-op :lparallel :force t)

Loading cl21 after lparallel is compiled with the standard language shouldn't cause the same problem.

jkiiski
  • 8,206
  • 2
  • 28
  • 44