bug#16362: compiler disrespects referential integrity

2014-01-05 Thread Zefram
The guile-2.0.9 compiler doesn't preserve the distinctness of mutable objects that are referenced in code via the read-eval (#.) facility. (I'm not mutating the code itself, only quoted objects.) The interpreter, and for comparison guile-1.8, do preserve object identity, allowing read-eval to be u

bug#16359: "guild list" lists nothing

2014-01-05 Thread Zefram
"guild list" is meant to list the available subcommands within guild. It actually shows an empty list: $ GUILE=/usr/bin/guile-2.0 guild list Usage: guild COMMAND [ARGS] Run command-line scripts provided by GNU Guile and related programs. Commands: For help on a specific command, try "guild help

bug#16361: compile cache confused about file identity

2014-01-05 Thread Zefram
The automatic cache of compiled versions of scripts in guile-2.0.9 identifies scripts mainly by name, and partially by mtime. This is not actually sufficient: it is easily misled by a pathname that refers to different files at different times. Test case: $ echo '(display "aaa\n")' >t13 $ echo '(

bug#16357: insufficient print abbreviation in error messages

2014-01-05 Thread Zefram
When guile is constructing error messages that display offending objects, in version 2.0.9 it never abbreviates long or deep structures. This can easily lead to pathologically-long messages that take stupid amounts of time and memory to construct and to display. By contrast, guile-1.8 applies abb

bug#16358: combinatorial explosion in elided stack trace

2014-01-05 Thread Zefram
In guile 2.0.9, if an error is signalled in the interpreter, and the stack contains in a certain position an object whose unabbreviated print representation is very large, then the process of displaying the stack trace will take a huge amount of time and memory, pausing in the middle of output, eve

bug#16356: doc out of date about (integer? +inf.0)

2014-01-05 Thread Zefram
The "Integers" node of the guile info document contains this gem (source in doc/ref/api-data.texi): (integer? +inf.0) => #t Actual guile-2.0.9 behaviour: scheme@(guile-user)> (integer? +inf.0) $16 = #f The doc example matches the behaviour of guile-1.8, which classifies +inf

bug#16360: "guild help COMMAND" crashes

2014-01-05 Thread Zefram
"guild help COMMAND" crashes for most existing guild subcommands. For example: $ GUILE=/usr/bin/guile-2.0 guild help frisk Usage: guild frisk OPTION... Show dependency information for a module. Backtrace: In ice-9/boot-9.scm: 157: 8 [catch #t # ...] In unknown file: ?: 7 [apply-smob/1 #] In i

bug#16365: (* 0 +inf.0) rationale is flawed

2014-01-05 Thread Zefram
Commit 5e7918077a4015768a352ab19e4a8e94531bc8aa says A note on the rationale for (* 0 +inf.0) being a NaN and not exact 0: The R6RS requires that (/ 0 0.0) return a NaN value, and that (/ 0.0) return +inf.0. We would like (/ x y) to be the same as (* x (/ y)), This identity doe

bug#16364: auto-compile noise can't be avoided by script

2014-01-05 Thread Zefram
Guile 2.0.9 has a facility to automatically cache a compiled version of any Scheme source file that it loads, and it wants the world to know about it! If auto-compilation is enabled, which it is by default, then when guile loads a file (that was not already compiled) it emits a banner describing t

bug#16363: interactive use subject to compiler limitations

2014-01-05 Thread Zefram
guile-2.0.9's compiler has some inconvenient restrictions, relative to its interpreter. Where the compiler is automatically applied to scripts, the restrictions aren't a serious problem, because if compilation fails then guile falls back to interpreting the script. But in an interactive REPL sess