* libguile/vm-i-system.c (variable-ref, variable-set, variable-bound?):
Check that the argument is actually a variable. Thanks to Kevin
Holmes for the report.
* libguile/vm-engine.c (vm_engine): Error handling down here.
* THANKS: Update.
* doc/ref/misc-modules.texi (Formatted Output): Adapt ~f documentation
to indicate that the output will always have a decimal point. Thanks
to Fu-gangqiang for the report.
* THANKS: Update.
Thanks to Mark Harig for pointing these out.
* doc/guile.1: Remove mention of the tutorial, since it no longer
exists (as a separate document). Document the -q option.
* THANKS: Add Mark Harig.
* libguile/numbers.c (scm_iuint2str): Add an assertion on the domain of
the radix. Use the number_chars table to write the string, instead of
doing strange math. Same effect, though.
(mem2uinteger, char_decimal_value): Change logic to allow all ascii
alphabetic chars as decimals, not just a-f. Thanks to Nils Gey for the
report.
* test-suite/tests/numbers.test ("number->string"): Add some tests.
Because that probably isn't where people will look for it.
Thanks to Noah Lavine for the idea.
* doc/ref/api-regex.texi (Regular Expressions): New file, containing
the regex doc (promoted one level) that used to be in api-data.texi.
* doc/ref/guile.texi (API Reference): Include new file, and add menu
entry for the new section.
* THANKS: Add Noah.
Reported by Göran Weinholt <goran@weinholt.se>.
* libguile/r6rs-ports.c (scm_lookahead_u8): Return an unsigned byte.
* test-suite/tests/r6rs-ports.test ("7.2.8 Binary Input")["lookahead-u8:
result is unsigned"]: New test.
* module/ice-9/buffered-input.scm (make-buffered-input-port): Instead of
always returning EOF once EOF is seen once, call the producer again.
Allows Ctrl-D to cause one EOF at the REPL, returning once from a
recursive edit, but input continues normally. Thanks to Andrew
Bagdanov for a clue that led to the fix.
* doc/tutorial/guile-tut.texi (c_builtins.c): Fix a typo with an
undeclared variable. Thanks to Raimon Grau for the pointer. This
tutorial is quite out of date, though...
* libguile/stackchk.h (SCM_STACK_OVERFLOW_P): Fix a potential overflow,
depending on the absolute values of the thread base and the stack
limit. Thanks to Ivan Shcherbakov for the report.
Derek Peschel provided this patch and described it as follows.
"Most of the time I use Terminal in OS X, rather than xterm. I also don't
bother with the GUI versions of Emacs. So unfortunately I have no mouse
support in Emacs. Also the system I'm testing Guile on thinks my terminal
doesn't support color and I haven't fixed it yet. The attached patch makes
GDS more usable for me.
"With no mouse, the "[click here to show error stack]" design is very
inconvenient. You added a C-M (return) binding at some point. I copied
that, but I also changed the message to show it. And I made the return
work when the cursor is after the right bracket."
* emacs/gds-scheme.el (gds-display-results): Make "click here" message
more helpful for people without mice. Also extend text properties
so that a RET key press works at the end of that line.
As the Autoconf documentation says, "These days portable programs
[...] should not rely on `HAVE_RESTARTABLE_SYSCALLS', since nowadays
whether a system call is restartable is a dynamic issue, not a
configuration-time issue."
In other words, if we ever rely on HAVE_RESTARTABLE_SYSCALLS, we are
at the mercy of any code that Guile happens to be linked with, because
that code could install a signal handler without the SA_RESTART flag,
and then a Guile system call could unexpectedly return EINTR.
The readline part of this goes back to this problem report:
http://sources.redhat.com/ml/guile/2000-05/msg00177.html; and is an
excellent example of the above paragraph. It was noted during the
discussion that undefining HAVE_RESTARTABLE_SYSCALLS would fix the
problem, but that solution wasn't adopted - I guess because Guile was
still using cooperative threads then (not pthreads) and so there was a
significant concern (whether founded or not) that not using
restartable syscalls (where available) could lead to a loss of
performance.
Now Guile's default mode of operation is with pthreads, where we
already don't assume that HAVE_RESTARTABLE_SYSCALLS is reliable, so
there is no possible further performance loss. And in any case we
really have no choice, if we want correct operation.
Thanks to Sylvain Beucler for reporting this and suggesting the fix.
* configure.in (AC_SYS_RESTARTABLE_SYSCALLS): Removed.
* doc/ref/posix.texi (Signals): Remove statement that Guile always
sets SA_RESTART flag.
* guile-readline/configure.in (GUILE_SIGWINCH_SA_RESTART_CLEARED):
Remove this setting, together with its test code.
(HAVE_RL_PRE_INPUT_HOOK): Remove this setting and its code, as no
longer needed.
* guile-readline/readline.c (sigwinch_enable_restart): Removed.
(scm_init_readline): Remove setting of rl_pre_input_hook.
* libguile/_scm.h (SCM_SYSCALL): Remove the definition that relies on
HAVE_RESTARTABLE_SYSCALLS.
* libguile/scmsigs.c (scm_sigaction_for_thread): Don't always set the
SA_RESTART flag if available. Update docstring accordingly.
(scm_init_scmsigs): Remove code that sets SA_RESTART flag for all
signals.
* THANKS: Add Sylvain.
* NEWS: Update, but only partially. I wanted to push out this
incomplete, not yet organized draft for review, if anyone had
comments. I'll pick it up tomorrow morning.
* THANKS: Add Juhani, whose last name changed?
* module/ice-9/boot-9.scm (define-option-interface): Fix (debug-options
'full), along with other options. Thanks to Mark Weaver for the tip.
* THANKS: Update, though many more names need to be added.
Thanks to Greg Troxel for reporting, and Barry Fishman for the
explanation and fix.
* test-suite/tests/popen.test ("open-input-pipe"): Use shell function
`read' with an explicit argument, as apparently not all shells
support read with no argument.
(Reported by Panicz Maciej Godek.)
* test-suite/tests/syncase.test ("@ works with syncase"): New test.
* ice-9/syncase.scm (guile-macro): When a Guile macro transformer
produces a variable, don't pass it through sc-expand.
Reported by Roland Haeder. The declaration and definition of
scm_pthread_cond_timedwait were using possibly different types for the
third arg.
* THANKS: Added Roland Haeder.
* libguile/threads.h (scm_pthread_cond_timedwait): Use scm_t_timespec
for third arg rather than struct timespec, for consistency with the
function implementation.