2017-07-20 6 views
1

J'ai un mélange bizarre d'erreurs. J'utilisais CL21, j'étais dans mon paquet, et je voulais installer lparallel. Pas possible:Impossible d'installer lparallel en même temps que CL21 (?) Échec avec CL21.CORE.FUNCTION

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

Je peux le reproduire dans une nouvelle session, mais il est un peu bizarre: si je quickload lparallel dans cl-user, il se plaint de ne pas trouver le symbole CL21.CORE.FUNCTION, même si je ne le faisais pas rien avec CL21 encore:

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

Je ql: QuickLoad CL21 puis sur une nouvelle tentative pour charger lparallel. J'ai la première erreur. Mais, j'ai essayé dans Portacle pour une nouvelle image et ... je ne pouvais pas reproduire cela.

Une idée? Est-ce un problème avec cl21, lparallel, quicklisp ou asdf?

+0

On dirait que cl21 désactive la table de lecture standard en remplaçant «#» par sa propre version qui n'est pas compatible avec lparallel. Essayez '(ql: quickload: lparallel: force t)' dans une nouvelle image pour se débarrasser des fichiers compilés avec cl21 chargé. – jkiiski

+0

Pas de chance avec cette commande. En effet, cl21 remplace '# ''. – Ehvince

+1

J'ai également rempli un problème: https://github.com/cl21/cl21/issues/99 et une suggestion de travail est d'utiliser '(asdf: opérer 'asdf: load-op: lparallel: force t)' (ou supprimez les fichiers .fasd). Tu étais proche! – Ehvince

Répondre

2

cl21 semble remplacer la macro de lecteur standard #' avec sa propre version qui n'est pas compatible avec lparallel. Lorsque vous avez essayé de charger lparallel dans une nouvelle image, ASDF va charger des .fasl -files qui ont été compilés avec cl21 chargés, de sorte que vous devez supprimer ces fichiers ou la force recompilation avec

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

Chargement cl21 après lparallel est compilé avec la langue standard ne devrait pas causer le même problème.

+0

Très clair merci! (sauf "Lorsque vous avez essayé de charger" => "quand vous avez essayé de charger"?) – Ehvince