Package: guile-2.0
Version: 2.0.9+1-1
Severity: normal

guile-2.0's compiler can't handle code that directly references
procedures, GOOPS objects, or various other object types.  The
interpreter, and for comparison guile-1.8, accept such references
just fine, allowing read-eval to be used to incorporate direct object
references into code.  Test case:

$ cat t8
(cond-expand
  (guile-2 (defmacro compile-time f `(eval-when (compile eval) ,@f)))
  (else (defmacro compile-time f `(begin ,@f))))
(compile-time (fluid-set! read-eval? #t))
(write (#.+ 2 3))
(newline)
$ guile-1.8 t8
5
$ guile-2.0 --no-auto-compile t8
5
$ guile-2.0 t8                  
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /home/zefram/usr/guile/t8
;;; WARNING: compilation of /home/zefram/usr/guile/t8 failed:
;;; ERROR: build-constant-store: unrecognized object #<procedure + (#:optional 
_ _ . _)>
5

This breaks most of the interesting uses for read-eval, albeit only when
attempting to compile the code.  That it produces an actual error, and can
fall back to interpretation, limits the seriousness.  However, there are
several related problems that exacerbate it, which I've recently reported:
auto-compilation is difficult to portably disable and the failure is
noisy (Bug#734009), silent failure when the object is a mutable pair
rather than a procedure (Bug#734157), and the limitation applies in the
REPL which doesn't fall back to the interpreter (Bug#734108).

This problem is described upstream at
<http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11198>.  I'm reporting it
in the Debian system so that it is properly tracked from a Debian point
of view.

-zefram


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to