Greetings,
Trying to load a package with ASDF I ran into the following error:
ASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {4BC78066}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: ...
I traced the problem to ASDF and not the package I was attempting to load.
Does anyone know anything about this? (I am running the latest SVN head of ABCL)
Thanks.
Blake McBride
On Nov 30, 2011, at 01:40 , Blake McBride wrote:
Greetings,
Trying to load a package with ASDF I ran into the following error:
ASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {4BC78066}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: ...
I traced the problem to ASDF and not the package I was attempting to load.
Does anyone know anything about this? (I am running the latest SVN head of ABCL)
I've never really understood our TRULY-THE implementation, but this is as good a time as ever.
Searching for the string "(currently)" doesn't seem to show that the error text is sourced anywhere within our source tree, so I would guess that something within the ASDF package you are attempting to load is doing something extra-ordinary.
Any chance you can give a recipe for reproducing this?
On Wed, Nov 30, 2011 at 3:25 AM, Mark Evenson evenson.not.org@gmail.com wrote:
On Nov 30, 2011, at 01:40 , Blake McBride wrote:
Greetings,
Trying to load a package with ASDF I ran into the following error:
ASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {4BC78066}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: ...
I traced the problem to ASDF and not the package I was attempting to load.
Does anyone know anything about this? (I am running the latest SVN head of ABCL)
I've never really understood our TRULY-THE implementation, but this is as good a time as ever.
Searching for the string "(currently)" doesn't seem to show that the error text is sourced anywhere within our source tree, so I would guess that something within the ASDF package you are attempting to load is doing something extra-ordinary.
Any chance you can give a recipe for reproducing this?
blakes-mac:ff blake$ git clone git://github.com/nikodemus/screamer.git Cloning into screamer... remote: Counting objects: 1094, done. remote: Compressing objects: 100% (436/436), done. remote: Total 1094 (delta 781), reused 959 (delta 650) Receiving objects: 100% (1094/1094), 8.22 MiB | 1.54 MiB/s, done. Resolving deltas: 100% (781/781), done. blakes-mac:ff blake$ cd screamer blakes-mac:screamer blake$ abcl Armed Bear Common Lisp 1.1.0-dev-svn-13699 Java 1.6.0_29 Apple Inc. Java HotSpot(TM) 64-Bit Server VM Low-level initialization completed in 0.644 seconds. Startup completed in 1.76 seconds. Type ":help" for a list of available commands. CL-USER(1): (require "asdf") ("MOP" "CLOS" "PRINT-OBJECT" "FORMAT" "ASDF") CL-USER(2): (require :screamer) ; Compiling /Users/blake/NetBeansProjects/Arahant-14497/dist/ff/screamer/package.lisp ... ; (DEFPACKAGE :SCREAMER ...) ; Wrote /Users/blake/.cache/common-lisp/abcl-1.1.0-dev-svn-13699-fasl38-macosx-java/Users/blake/NetBeansProjects/Arahant-14497/dist/ff/screamer/ASDF-TMP-package.abcl (0.295 seconds) ; Compiling /Users/blake/NetBeansProjects/Arahant-14497/dist/ff/screamer/screamer.lisp ... ; (IN-PACKAGE :SCREAMER) ; (DECLAIM (DECLARATION MAGIC)) ; (DEFMACRO DEFINE-SCREAMER-PACKAGE ...) ; (DEFINE-SCREAMER-PACKAGE :SCREAMER-USER) ; (DEFMACRO DEFSTRUCT-COMPILE-TIME ...) ; (DEFMACRO DEFVAR-COMPILE-TIME ...) ; (DEFMACRO DEFUN-COMPILE-TIME ...) ; (DEFMACRO DEFMACRO-COMPILE-TIME ...) ; (DEFPARAMETER *SCREAMER-VERSION* ...) ; (DEFVAR-COMPILE-TIME *DYNAMIC-EXTENT?* ...) ; (DEFVAR *ISCREAM?* ...) ; (DEFVAR *NONDETERMINISTIC?* ...) ; (DEFVAR-COMPILE-TIME *SCREAMER?* ...) ; (DEFVAR-COMPILE-TIME *NONDETERMINISTIC-CONTEXT?* ...) ; (DEFVAR-COMPILE-TIME *LOCAL?* ...) ; (DEFVAR-COMPILE-TIME *BLOCK-TAGS* ...) ; (DEFVAR-COMPILE-TIME *TAGBODY-TAGS* ...) ; (DEFVAR *TRAIL* ...) ; (DEFVAR-COMPILE-TIME *FUNCTION-RECORD-TABLE* ...) ; (DEFVAR-COMPILE-TIME *ORDERED-LAMBDA-LIST-KEYWORDS* ...) ; (DEFMACRO-COMPILE-TIME CHOICE-POINT-INTERNAL ...) ; (DEFMACRO-COMPILE-TIME CHOICE-POINT-EXTERNAL ...) ; (DEFMACRO-COMPILE-TIME CHOICE-POINT ...) ; (DEFSTRUCT-COMPILE-TIME FUNCTION-RECORD ...) ; (DEFSTRUCT-COMPILE-TIME (NONDETERMINISTIC-FUNCTION # ...) ...) ; (DEFUN-COMPILE-TIME SCREAMER-ERROR ...) ; (DEFUN-COMPILE-TIME GET-FUNCTION-RECORD ...) ; (DEFUN-COMPILE-TIME PEAL-OFF-DOCUMENTATION-STRING-AND-DECLARATIONS ...) ....... ; (DEFVAR *NAME* ...) ; (DEFVAR *MINIMUM-SHRINK-RATIO* ...) ; (DEFVAR *MAXIMUM-DISCRETIZATION-RANGE* ...) ; (DEFVAR *STRATEGY* ...) ; (DEFSTRUCT-COMPILE-TIME (VARIABLE # ...) ...) ; (DEFUN INTEGERS-BETWEEN ...) ; (DEFUN BOOLEANP ...) ; (DEFUN INFINITY-MIN ...) ; (DEFUN INFINITY-MAX ...) ; (DEFUN INFINITY-+ ...) ; (DEFUN INFINITY-- ...) ; (DEFUN INFINITY-* ...) ; (DEFUN CONTAINS-VARIABLES? ...) ; (DEFUN ELIMINATE-VARIABLES ...) ; (DEFUN PRINT-VARIABLE ...) ; (DEFUN MAKE-VARIABLE ...) ; (DEFUN VARIABLE-INTEGER? ...) ; (DEFUN VARIABLE-NONINTEGER? ...) ; (DEFUN VARIABLE-REAL? ...) ; (DEFUN VARIABLE-NONREAL? ...) ; (DEFUN VARIABLE-NUMBER? ...) ; (DEFUN VARIABLE-NONNUMBER? ...) ; (DEFUN VARIABLE-BOOLEAN? ...) ; (DEFUN VARIABLE-NONBOOLEAN? ...) ; (DEFUN VARIABLE-TRUE? ...) ; (DEFUN VARIABLE-FALSE? ...) ; (DEFUN VALUE-OF ...) ; (DEFUN VARIABLIZE ...) ; (DEFUN BOUND? ...) ; (DEFUN GROUND? ...) ; (DEFUN APPLY-SUBSTITUTION ...) ; (DEFUN OCCURS-IN? ...) ; (DEFUN ATTACH-NOTICER!-INTERNAL ...) ; (DEFUN ATTACH-NOTICER! ...) ; (DEFUN RUN-NOTICERS ...) screamerASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {284A85C5}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: 0: RETRY Retry compiling #<ASDF:CL-SOURCE-FILE "screamer" "screamer">. 1: ACCEPT Continue, treating compiling #<ASDF:CL-SOURCE-FILE "screamer" "screamer"> as having been successful. 2: TOP-LEVEL Return to top level. [1] SCREAMER(3):
BTW:
SBCL works CLISP fails with MACROLET error CMUCL works ECL works
On Wed, Nov 30, 2011 at 3:25 AM, Mark Evenson evenson.not.org@gmail.com wrote:
On Nov 30, 2011, at 01:40 , Blake McBride wrote:
Greetings,
Trying to load a package with ASDF I ran into the following error:
ASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {4BC78066}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: ...
I traced the problem to ASDF and not the package I was attempting to load.
Does anyone know anything about this? (I am running the latest SVN head of ABCL)
I've never really understood our TRULY-THE implementation, but this is as good a time as ever.
Searching for the string "(currently)" doesn't seem to show that the error text is sourced anywhere within our source tree, so I would guess that something within the ASDF package you are attempting to load is doing something extra-ordinary.
Any chance you can give a recipe for reproducing this?
On Wed, Nov 30, 2011 at 3:30 PM, Blake McBride blake@mcbride.name wrote:
BTW:
SBCL works CLISP fails with MACROLET error CMUCL works ECL works
To me it seems more like a Screamer error than an ASDF error. Probably Screamer's code walker cannot handle some ABCL-specific macroexpansion.
Alessio
On Wed, Nov 30, 2011 at 3:25 AM, Mark Evenson evenson.not.org@gmail.com wrote:
On Nov 30, 2011, at 01:40 , Blake McBride wrote:
Greetings,
Trying to load a package with ASDF I ran into the following error:
ASDF could not load because Cannot (currently) handle the special form EXTENSIONS:TRULY-THE. #<THREAD "interpreter" {4BC78066}>: Debugger invoked on condition of type SIMPLE-ERROR Cannot (currently) handle the special form TRULY-THE Restarts: ...
I traced the problem to ASDF and not the package I was attempting to load.
Does anyone know anything about this? (I am running the latest SVN head of ABCL)
I've never really understood our TRULY-THE implementation, but this is as good a time as ever.
Searching for the string "(currently)" doesn't seem to show that the error text is sourced anywhere within our source tree, so I would guess that something within the ASDF package you are attempting to load is doing something extra-ordinary.
Any chance you can give a recipe for reproducing this?
armedbear-devel mailing list armedbear-devel@common-lisp.net http://lists.common-lisp.net/cgi-bin/mailman/listinfo/armedbear-devel
On Wed, Nov 30, 2011 at 9:13 AM, Alessio Stalla alessiostalla@gmail.com wrote:
On Wed, Nov 30, 2011 at 3:30 PM, Blake McBride blake@mcbride.name wrote:
BTW:
SBCL works CLISP fails with MACROLET error CMUCL works ECL works
To me it seems more like a Screamer error than an ASDF error. Probably Screamer's code walker cannot handle some ABCL-specific macroexpansion.
Alessio
I don't agree.
blakes-mac:ff blake$ rm -rf screamer/ blakes-mac:ff blake$ !git git clone git://github.com/nikodemus/screamer.git Cloning into screamer... remote: Counting objects: 1094, done. remote: Compressing objects: 100% (436/436), done. remote: Total 1094 (delta 781), reused 959 (delta 650) Receiving objects: 100% (1094/1094), 8.22 MiB | 670 KiB/s, done. Resolving deltas: 100% (781/781), done. blakes-mac:ff blake$ cd screamer/ blakes-mac:screamer blake$ find . -type f -exec grep -Hi truly-the {} ; blakes-mac:screamer blake$ cd ~/Backup/abcl.svn blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi truly-the {} ; ./doc/manual/.svn/text-base/extensions.tex.svn-base:\label{EXTENSIONS:TRULY-THE} ./doc/manual/.svn/text-base/extensions.tex.svn-base:\index{TRULY-THE} ./doc/manual/.svn/text-base/extensions.tex.svn-base:--- Special Operator: \textbf{truly-the} [\textbf{extensions}] \textit{} ./doc/manual/extensions.tex:\label{EXTENSIONS:TRULY-THE} ./doc/manual/extensions.tex:\index{TRULY-THE} ./doc/manual/extensions.tex:--- Special Operator: \textbf{truly-the} [\textbf{extensions}] \textit{} ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base: (list 'car (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base: (list 'cdr (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:(defun p1-truly-the (form) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: 'TRULY-THE ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: (list 'TRULY-THE (%cadr form) (p1 (%caddr form)))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: (TRULY-THE p1-truly-the) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: ((memq op '(THE TRULY-THE)) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (cond ((and lambda-name (symbolp lambda-name) (symbol-package (truly-the symbol lambda-name))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (emit 'ldc (pool-string (symbol-name (truly-the symbol lambda-name)))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (emit 'ldc (pool-string (package-name (symbol-package (truly-the symbol lambda-name))))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (eq (symbol-package (truly-the symbol sym)) +cl-package+) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: ((THE TRULY-THE) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:(defun p2-truly-the (form target representation) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (install-p2-handler 'truly-the 'p2-truly-the) ./src/org/armedbear/lisp/.svn/text-base/concatenate.lisp.svn-base: (setf (schar result i) (char (truly-the string seq) j)) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values)))))))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values))))))))))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: `(aref (truly-the ,',*dd-type* ,instance) ,,index)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: `(aset (truly-the ,',*dd-type* ,instance) ,,index ,value)))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: (let ((,sequence (ext:truly-the list ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: (let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: `((let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base: // ### truly-the value-type form => result* ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base: super("truly-the", PACKAGE_EXT, true, "type value"); ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base: `(car (truly-the cons ,x))) ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base: `(cdr (truly-the cons ,x))) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (setf new-form (list 'TRULY-THE result-type new-form))))) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:(defun precompile-truly-the (form) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (list 'TRULY-THE ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (TRULY-THE precompile-truly-the) ./src/org/armedbear/lisp/boot.lisp: (list 'car (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/boot.lisp: (list 'cdr (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/compiler-pass1.lisp:(defun p1-truly-the (form) ./src/org/armedbear/lisp/compiler-pass1.lisp: 'TRULY-THE ./src/org/armedbear/lisp/compiler-pass1.lisp: (list 'TRULY-THE (%cadr form) (p1 (%caddr form)))) ./src/org/armedbear/lisp/compiler-pass1.lisp: (TRULY-THE p1-truly-the) ./src/org/armedbear/lisp/compiler-pass2.lisp: ((memq op '(THE TRULY-THE)) ./src/org/armedbear/lisp/compiler-pass2.lisp: (cond ((and lambda-name (symbolp lambda-name) (symbol-package (truly-the symbol lambda-name))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (emit 'ldc (pool-string (symbol-name (truly-the symbol lambda-name)))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (emit 'ldc (pool-string (package-name (symbol-package (truly-the symbol lambda-name))))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (eq (symbol-package (truly-the symbol sym)) +cl-package+) ./src/org/armedbear/lisp/compiler-pass2.lisp: ((THE TRULY-THE) ./src/org/armedbear/lisp/compiler-pass2.lisp:(defun p2-truly-the (form target representation) ./src/org/armedbear/lisp/compiler-pass2.lisp: (install-p2-handler 'truly-the 'p2-truly-the) ./src/org/armedbear/lisp/concatenate.lisp: (setf (schar result i) (char (truly-the string seq) j)) ./src/org/armedbear/lisp/defstruct.lisp: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/defstruct.lisp: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values)))))))) ./src/org/armedbear/lisp/defstruct.lisp: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/defstruct.lisp: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values))))))))))) ./src/org/armedbear/lisp/defstruct.lisp: `(aref (truly-the ,',*dd-type* ,instance) ,,index)))) ./src/org/armedbear/lisp/defstruct.lisp: `(aset (truly-the ,',*dd-type* ,instance) ,,index ,value)))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: (let ((,sequence (ext:truly-the list ,sequence))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: (let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: `((let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/Extensions.java: // ### truly-the value-type form => result* ./src/org/armedbear/lisp/Extensions.java: super("truly-the", PACKAGE_EXT, true, "type value"); ./src/org/armedbear/lisp/macros.lisp: `(car (truly-the cons ,x))) ./src/org/armedbear/lisp/macros.lisp: `(cdr (truly-the cons ,x))) ./src/org/armedbear/lisp/precompiler.lisp: (setf new-form (list 'TRULY-THE result-type new-form))))) ./src/org/armedbear/lisp/precompiler.lisp:(defun precompile-truly-the (form) ./src/org/armedbear/lisp/precompiler.lisp: (list 'TRULY-THE ./src/org/armedbear/lisp/precompiler.lisp: (TRULY-THE precompile-truly-the) blakes-mac:abcl.svn blake$
On Wed, Nov 30, 2011 at 4:34 PM, Blake McBride blake@mcbride.name wrote:
On Wed, Nov 30, 2011 at 9:13 AM, Alessio Stalla alessiostalla@gmail.com wrote:
On Wed, Nov 30, 2011 at 3:30 PM, Blake McBride blake@mcbride.name wrote:
BTW:
SBCL works CLISP fails with MACROLET error CMUCL works ECL works
To me it seems more like a Screamer error than an ASDF error. Probably Screamer's code walker cannot handle some ABCL-specific macroexpansion.
Alessio
I don't agree.
blakes-mac:ff blake$ rm -rf screamer/ blakes-mac:ff blake$ !git git clone git://github.com/nikodemus/screamer.git Cloning into screamer... remote: Counting objects: 1094, done. remote: Compressing objects: 100% (436/436), done. remote: Total 1094 (delta 781), reused 959 (delta 650) Receiving objects: 100% (1094/1094), 8.22 MiB | 670 KiB/s, done. Resolving deltas: 100% (781/781), done. blakes-mac:ff blake$ cd screamer/ blakes-mac:screamer blake$ find . -type f -exec grep -Hi truly-the {} ; blakes-mac:screamer blake$ cd ~/Backup/abcl.svn blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi truly-the {} ; ./doc/manual/.svn/text-base/extensions.tex.svn-base:\label{EXTENSIONS:TRULY-THE} ./doc/manual/.svn/text-base/extensions.tex.svn-base:\index{TRULY-THE} ./doc/manual/.svn/text-base/extensions.tex.svn-base:--- Special Operator: \textbf{truly-the} [\textbf{extensions}] \textit{} ./doc/manual/extensions.tex:\label{EXTENSIONS:TRULY-THE} ./doc/manual/extensions.tex:\index{TRULY-THE} ./doc/manual/extensions.tex:--- Special Operator: \textbf{truly-the} [\textbf{extensions}] \textit{} ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base: (list 'car (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/.svn/text-base/boot.lisp.svn-base: (list 'cdr (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base:(defun p1-truly-the (form) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: 'TRULY-THE ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: (list 'TRULY-THE (%cadr form) (p1 (%caddr form)))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass1.lisp.svn-base: (TRULY-THE p1-truly-the) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: ((memq op '(THE TRULY-THE)) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (cond ((and lambda-name (symbolp lambda-name) (symbol-package (truly-the symbol lambda-name))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (emit 'ldc (pool-string (symbol-name (truly-the symbol lambda-name)))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (emit 'ldc (pool-string (package-name (symbol-package (truly-the symbol lambda-name))))) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (eq (symbol-package (truly-the symbol sym)) +cl-package+) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: ((THE TRULY-THE) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base:(defun p2-truly-the (form target representation) ./src/org/armedbear/lisp/.svn/text-base/compiler-pass2.lisp.svn-base: (install-p2-handler 'truly-the 'p2-truly-the) ./src/org/armedbear/lisp/.svn/text-base/concatenate.lisp.svn-base: (setf (schar result i) (char (truly-the string seq) j)) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values)))))))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values))))))))))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: `(aref (truly-the ,',*dd-type* ,instance) ,,index)))) ./src/org/armedbear/lisp/.svn/text-base/defstruct.lisp.svn-base: `(aset (truly-the ,',*dd-type* ,instance) ,,index ,value)))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: (let ((,sequence (ext:truly-the list ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: (let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/extensible-sequences-base.lisp.svn-base: `((let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base: // ### truly-the value-type form => result* ./src/org/armedbear/lisp/.svn/text-base/Extensions.java.svn-base: super("truly-the", PACKAGE_EXT, true, "type value"); ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base: `(car (truly-the cons ,x))) ./src/org/armedbear/lisp/.svn/text-base/macros.lisp.svn-base: `(cdr (truly-the cons ,x))) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (setf new-form (list 'TRULY-THE result-type new-form))))) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base:(defun precompile-truly-the (form) ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (list 'TRULY-THE ./src/org/armedbear/lisp/.svn/text-base/precompiler.lisp.svn-base: (TRULY-THE precompile-truly-the) ./src/org/armedbear/lisp/boot.lisp: (list 'car (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/boot.lisp: (list 'cdr (list 'truly-the 'cons x))) ./src/org/armedbear/lisp/compiler-pass1.lisp:(defun p1-truly-the (form) ./src/org/armedbear/lisp/compiler-pass1.lisp: 'TRULY-THE ./src/org/armedbear/lisp/compiler-pass1.lisp: (list 'TRULY-THE (%cadr form) (p1 (%caddr form)))) ./src/org/armedbear/lisp/compiler-pass1.lisp: (TRULY-THE p1-truly-the) ./src/org/armedbear/lisp/compiler-pass2.lisp: ((memq op '(THE TRULY-THE)) ./src/org/armedbear/lisp/compiler-pass2.lisp: (cond ((and lambda-name (symbolp lambda-name) (symbol-package (truly-the symbol lambda-name))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (emit 'ldc (pool-string (symbol-name (truly-the symbol lambda-name)))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (emit 'ldc (pool-string (package-name (symbol-package (truly-the symbol lambda-name))))) ./src/org/armedbear/lisp/compiler-pass2.lisp: (eq (symbol-package (truly-the symbol sym)) +cl-package+) ./src/org/armedbear/lisp/compiler-pass2.lisp: ((THE TRULY-THE) ./src/org/armedbear/lisp/compiler-pass2.lisp:(defun p2-truly-the (form target representation) ./src/org/armedbear/lisp/compiler-pass2.lisp: (install-p2-handler 'truly-the 'p2-truly-the) ./src/org/armedbear/lisp/concatenate.lisp: (setf (schar result i) (char (truly-the string seq) j)) ./src/org/armedbear/lisp/defstruct.lisp: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/defstruct.lisp: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values)))))))) ./src/org/armedbear/lisp/defstruct.lisp: (make-structure (truly-the symbol ',*dd-name*) ,@values)))) ./src/org/armedbear/lisp/defstruct.lisp: (%make-structure (truly-the symbol ',*dd-name*) (list ,@values))))))))))) ./src/org/armedbear/lisp/defstruct.lisp: `(aref (truly-the ,',*dd-type* ,instance) ,,index)))) ./src/org/armedbear/lisp/defstruct.lisp: `(aset (truly-the ,',*dd-type* ,instance) ,,index ,value)))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: (let ((,sequence (ext:truly-the list ,sequence))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: (let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/extensible-sequences-base.lisp: `((let ((,sequence (ext:truly-the vector ,sequence))) ./src/org/armedbear/lisp/Extensions.java: // ### truly-the value-type form => result* ./src/org/armedbear/lisp/Extensions.java: super("truly-the", PACKAGE_EXT, true, "type value"); ./src/org/armedbear/lisp/macros.lisp: `(car (truly-the cons ,x))) ./src/org/armedbear/lisp/macros.lisp: `(cdr (truly-the cons ,x))) ./src/org/armedbear/lisp/precompiler.lisp: (setf new-form (list 'TRULY-THE result-type new-form))))) ./src/org/armedbear/lisp/precompiler.lisp:(defun precompile-truly-the (form) ./src/org/armedbear/lisp/precompiler.lisp: (list 'TRULY-THE ./src/org/armedbear/lisp/precompiler.lisp: (TRULY-THE precompile-truly-the) blakes-mac:abcl.svn blake$
I don't agree :) I believe your transcript justifies my claim: Screamer does not know about ABCL's truly-the. Somehow it gets in contact with one such form and barfs. Try grepping "Cannot (currently) handle the special form" in Screamer (I can't right now or I'd do it myself).
A.
On Wed, Nov 30, 2011 at 9:41 AM, Alessio Stalla alessiostalla@gmail.com wrote:
I don't agree :) I believe your transcript justifies my claim: Screamer does not know about ABCL's truly-the. Somehow it gets in contact with one such form and barfs. Try grepping "Cannot (currently) handle the special form" in Screamer (I can't right now or I'd do it myself).
A.
You might be right!
blakes-mac:screamer blake$ find . -type f -exec grep -Hi currently {} ; ./doc/screamer.texinfo:unfortunately currently support the full ANSI Common Lisp. ./README:Source files part of the distribution not currently referenced in the ./screamer.lisp: "The version of Screamer which is loaded. This is currently still 3.20, ./screamer.lisp: ;; currently uses, so setting dynamic-extent to T will only ./screamer.lisp: (error "Cannot (currently) handle the special form ~S" (first form))) ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: (error "Cannot (currently) handle a nondeterministic~%~ ./screamer.lisp: "Cannot (currently) handle the special form ~S inside a~%~ ./screamer.lisp:Currently, if FOO is a nondeterministic function defined using ./screamer.lisp: "Currently unsupported. ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./TODO:***** Support at least some of the currently missing special forms ./TODO: At least SBCL cannot currently stack-allocate a let-bound lambda, blakes-mac:screamer blake$
blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi (currently) {} ; ./src/org/armedbear/lisp/.svn/text-base/known-functions.lisp.svn-base:;; Boolean predicates that can not (currently) return unboxed Java booleans. ./src/org/armedbear/lisp/known-functions.lisp:;; Boolean predicates that can not (currently) return unboxed Java booleans. blakes-mac:abcl.svn blake$
On Wed, Nov 30, 2011 at 4:51 PM, Blake McBride blake@mcbride.name wrote:
On Wed, Nov 30, 2011 at 9:41 AM, Alessio Stalla alessiostalla@gmail.com wrote:
I don't agree :) I believe your transcript justifies my claim: Screamer does not know about ABCL's truly-the. Somehow it gets in contact with one such form and barfs. Try grepping "Cannot (currently) handle the special form" in Screamer (I can't right now or I'd do it myself).
A.
You might be right!
blakes-mac:screamer blake$ find . -type f -exec grep -Hi currently {} ; ./doc/screamer.texinfo:unfortunately currently support the full ANSI Common Lisp. ./README:Source files part of the distribution not currently referenced in the ./screamer.lisp: "The version of Screamer which is loaded. This is currently still 3.20, ./screamer.lisp: ;; currently uses, so setting dynamic-extent to T will only ./screamer.lisp: (error "Cannot (currently) handle the special form ~S" (first form))) ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: (error "Cannot (currently) handle a nondeterministic~%~ ./screamer.lisp: "Cannot (currently) handle the special form ~S inside a~%~ ./screamer.lisp:Currently, if FOO is a nondeterministic function defined using ./screamer.lisp: "Currently unsupported. ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./TODO:***** Support at least some of the currently missing special forms ./TODO: At least SBCL cannot currently stack-allocate a let-bound lambda, blakes-mac:screamer blake$
blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi (currently) {} ; ./src/org/armedbear/lisp/.svn/text-base/known-functions.lisp.svn-base:;; Boolean predicates that can not (currently) return unboxed Java booleans. ./src/org/armedbear/lisp/known-functions.lisp:;; Boolean predicates that can not (currently) return unboxed Java booleans. blakes-mac:abcl.svn blake$
Ok :) then the hard part becomes identifying which form expands into truly-the and change the expansion, or teaching Screamer about truly-the (and maybe other special operators in ABCL as well).
Later Alessio
I'm on it. Thanks!
On Wed, Nov 30, 2011 at 9:59 AM, Alessio Stalla alessiostalla@gmail.com wrote:
On Wed, Nov 30, 2011 at 4:51 PM, Blake McBride blake@mcbride.name wrote:
On Wed, Nov 30, 2011 at 9:41 AM, Alessio Stalla alessiostalla@gmail.com wrote:
I don't agree :) I believe your transcript justifies my claim: Screamer does not know about ABCL's truly-the. Somehow it gets in contact with one such form and barfs. Try grepping "Cannot (currently) handle the special form" in Screamer (I can't right now or I'd do it myself).
A.
You might be right!
blakes-mac:screamer blake$ find . -type f -exec grep -Hi currently {} ; ./doc/screamer.texinfo:unfortunately currently support the full ANSI Common Lisp. ./README:Source files part of the distribution not currently referenced in the ./screamer.lisp: "The version of Screamer which is loaded. This is currently still 3.20, ./screamer.lisp: ;; currently uses, so setting dynamic-extent to T will only ./screamer.lisp: (error "Cannot (currently) handle the special form ~S" (first form))) ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: (error "Cannot (currently) handle a nondeterministic~%~ ./screamer.lisp: "Cannot (currently) handle the special form ~S inside a~%~ ./screamer.lisp:Currently, if FOO is a nondeterministic function defined using ./screamer.lisp: "Currently unsupported. ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./TODO:***** Support at least some of the currently missing special forms ./TODO: At least SBCL cannot currently stack-allocate a let-bound lambda, blakes-mac:screamer blake$
blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi (currently) {} ; ./src/org/armedbear/lisp/.svn/text-base/known-functions.lisp.svn-base:;; Boolean predicates that can not (currently) return unboxed Java booleans. ./src/org/armedbear/lisp/known-functions.lisp:;; Boolean predicates that can not (currently) return unboxed Java booleans. blakes-mac:abcl.svn blake$
Ok :) then the hard part becomes identifying which form expands into truly-the and change the expansion, or teaching Screamer about truly-the (and maybe other special operators in ABCL as well).
Later Alessio
I think I may have to pass for now. That system redefines defun to do some major compile/load time conversions. A bit too much for me right now. The one thing to keep in mind is that it works under SBCL, CMUCL, and ECL.
Thanks.
Blake
On Wed, Nov 30, 2011 at 10:01 AM, Blake McBride blake@mcbride.name wrote:
I'm on it. Thanks!
On Wed, Nov 30, 2011 at 9:59 AM, Alessio Stalla alessiostalla@gmail.com wrote:
On Wed, Nov 30, 2011 at 4:51 PM, Blake McBride blake@mcbride.name wrote:
On Wed, Nov 30, 2011 at 9:41 AM, Alessio Stalla alessiostalla@gmail.com wrote:
I don't agree :) I believe your transcript justifies my claim: Screamer does not know about ABCL's truly-the. Somehow it gets in contact with one such form and barfs. Try grepping "Cannot (currently) handle the special form" in Screamer (I can't right now or I'd do it myself).
A.
You might be right!
blakes-mac:screamer blake$ find . -type f -exec grep -Hi currently {} ; ./doc/screamer.texinfo:unfortunately currently support the full ANSI Common Lisp. ./README:Source files part of the distribution not currently referenced in the ./screamer.lisp: "The version of Screamer which is loaded. This is currently still 3.20, ./screamer.lisp: ;; currently uses, so setting dynamic-extent to T will only ./screamer.lisp: (error "Cannot (currently) handle the special form ~S" (first form))) ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: "Cannot (currently) handle a LAMDBA expression with~%~ ./screamer.lisp: (error "Cannot (currently) handle a nondeterministic~%~ ./screamer.lisp: "Cannot (currently) handle the special form ~S inside a~%~ ./screamer.lisp:Currently, if FOO is a nondeterministic function defined using ./screamer.lisp: "Currently unsupported. ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./screamer.lisp:Screamer currently provides two convenient force-functions, namely ./TODO:***** Support at least some of the currently missing special forms ./TODO: At least SBCL cannot currently stack-allocate a let-bound lambda, blakes-mac:screamer blake$
blakes-mac:abcl.svn blake$ find . -type f -exec grep -Hi (currently) {} ; ./src/org/armedbear/lisp/.svn/text-base/known-functions.lisp.svn-base:;; Boolean predicates that can not (currently) return unboxed Java booleans. ./src/org/armedbear/lisp/known-functions.lisp:;; Boolean predicates that can not (currently) return unboxed Java booleans. blakes-mac:abcl.svn blake$
Ok :) then the hard part becomes identifying which form expands into truly-the and change the expansion, or teaching Screamer about truly-the (and maybe other special operators in ABCL as well).
Later Alessio
Hi,
What is the current status of this problem? (I think the ticket #230 might be relevant to this problem.) My current workaround is to make truly-the a macro.
CL-USER> (defmacro truly-the (type value) `(the ,type ,value)) TRULY-THE CL-USER> (ql:quickload 'screamer) To load "screamer": Load 1 ASDF system: screamer ; Loading "screamer" [package screamer]................................ [package screamer-user]............. (SCREAMER) CL-USER> (lisp-implementation-type) "Armed Bear Common Lisp" CL-USER> (lisp-implementation-version) "1.0.1-svn-13750-13751" CL-USER>
Thanks. -- Yasuo Uchida
Hi all,
What is the current status of this problem?
(I think the ticket #230 might be relevant to this problem.) My current workaround is to make truly-the a macro.
CL-USER> (defmacro truly-the (type value) `(the ,type ,value)) TRULY-THE CL-USER> (ql:quickload 'screamer) To load "screamer": Load 1 ASDF system: screamer ; Loading "screamer" [package screamer]................................ [package screamer-user]............. (SCREAMER) CL-USER> (lisp-implementation-type) "Armed Bear Common Lisp" CL-USER> (lisp-implementation-version) "1.0.1-svn-13750-13751" CL-USER>
To cut a long story short: the problem hasn't progressed.
However, your analysis is entirely correct: defining a macro for the TRULY-THE form would indeed by the short term solution. My thoughts would be to remove the special form longer term. Even though we have special-purpose compilation support for it, I don't see benefits in keeping it around. It's supposed to allow increased performance for compiled programs. So, upon removal, we probably need to verify that the performance degradation is small enough.
Bye,
Erik.
On Mar 24, 2013, at 13:55, Erik Huelsmann ehuels@gmail.com wrote:
Hi all,
What is the current status of this problem? (I think the ticket #230 might be relevant to this problem.) My current workaround is to make truly-the a macro.
CL-USER> (defmacro truly-the (type value) `(the ,type ,value)) TRULY-THE CL-USER> (ql:quickload 'screamer) To load "screamer": Load 1 ASDF system: screamer ; Loading "screamer" [package screamer]................................ [package screamer-user]............. (SCREAMER) CL-USER> (lisp-implementation-type) "Armed Bear Common Lisp" CL-USER> (lisp-implementation-version) "1.0.1-svn-13750-13751" CL-USER>
To cut a long story short: the problem hasn't progressed.
However, your analysis is entirely correct: defining a macro for the TRULY-THE form would indeed by the short term solution. My thoughts would be to remove the special form longer term. Even though we have special-purpose compilation support for it, I don't see benefits in keeping it around. It's supposed to allow increased performance for compiled programs. So, upon removal, we probably need to verify that the performance degradation is small enough.
Supplying a macro for a non-standard special form is the right solution, regardless of whether we keep TRULY-THE; sbcl does the same, and they won't ever eliminate TRULY-THE, I think.
Rudi
On Sun, Mar 24, 2013 at 7:19 PM, Rudolf Schlatte rudi@constantly.at wrote:
On Mar 24, 2013, at 13:55, Erik Huelsmann ehuels@gmail.com wrote:
Hi all,
What is the current status of this problem?
(I think the ticket #230 might be relevant to this problem.) My current workaround is to make truly-the a macro.
CL-USER> (defmacro truly-the (type value) `(the ,type ,value)) TRULY-THE CL-USER> (ql:quickload 'screamer) To load "screamer": Load 1 ASDF system: screamer ; Loading "screamer" [package screamer]................................ [package screamer-user]............. (SCREAMER) CL-USER> (lisp-implementation-type) "Armed Bear Common Lisp" CL-USER> (lisp-implementation-version) "1.0.1-svn-13750-13751" CL-USER>
To cut a long story short: the problem hasn't progressed.
However, your analysis is entirely correct: defining a macro for the TRULY-THE form would indeed by the short term solution. My thoughts would be to remove the special form longer term. Even though we have special-purpose compilation support for it, I don't see benefits in keeping it around. It's supposed to allow increased performance for compiled programs. So, upon removal, we probably need to verify that the performance degradation is small enough.
Supplying a macro for a non-standard special form is the right solution, regardless of whether we keep TRULY-THE; sbcl does the same, and they won't ever eliminate TRULY-THE, I think.
Added a macro expansion to macros.lisp for TRULY-THE in r14447. Now thinking where to do the same for THREADS:SYNCHRONIZED-ON and JVM:WITH-INLINE-CODE... (since macros.lisp only contains macros in the CL and SYS packages).
Bye,
Erik.
armedbear-devel@common-lisp.net