无法与 CL21 一起安装 lparallel(?)失败 CL21.CORE.FUNCTION

Cannot install lparallel alongside CL21 (?) Failing with CL21.CORE.FUNCTION

我有一个奇怪的错误组合。

我正在使用 CL21,我在我的包中,我想安装 lparallel。不可能:

(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}>.

我可以在新会话中重现它,但它有点奇怪:如果我 quickload lparallel in cl-user,它会抱怨找不到符号 CL21.CORE.FUNCTION,即使我还没有对 CL21 做任何事情:

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

所以我 ql:quickload CL21 然后重新尝试加载 lparallel。我得到第一个错误。

但是,我在 Portacle 中尝试了一个新图像,但是……我无法重现它。

有什么想法吗? cl21lparallelquicklispasdf 有问题吗?

cl21 似乎将标准 reader 宏 #' 替换为与 lparallel 不兼容的自己的版本。当您尝试在新图像中加载 lparallel 时,ASDF 将从 .fasl 加载它的文件加载 cl21,因此您必须删除这些文件或强制重新编译

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

lparallel 使用标准语言编译后加载 cl21 应该不会导致同样的问题。