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:
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.
* 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.
I just added to CVS in build-aux/ and guile-readline/
autogen.sh: Copy versions of config.guess and config.sub from
Guile CVS to build-aux and guile-readline.
CVS, to ensure that Guile developers are using new enough versions
(in particular for AIX 6.1 support).
* HACKING: Note need for libtool >= 1.5.26.
* config.rpath, build-aux/config.rpath: Updated to latest upstream
version.
* build-aux/config.guess, build-aux/config.sub: Same as following.
* config.guess, config.sub: 2008-01-07 versions added to Guile
CVS, to ensure that Guile developers are using new enough versions
(in particular for AIX 6.1 support).
if HAVE_RL_GET_KEYMAP.
(init_bouncing_parens, find_matching_paren, match_paren): Compile
out if ! HAVE_RL_GET_KEYMAP.
* configure.in: Add check for rl_get_keymap.
documentation. Add AM_CONFIG_HEADER([guile-readline-config.h]) so
that guile-readline will have its own configure-based config.h
equivalent.
(HAVE_RL_PRE_INPUT_HOOK): Add documentation template.
(GUILE_SIGWINCH_SA_RESTART_CLEARED): Add documentation template.
Added LIBGUILEREADLINE_MAJOR variable for inclusion in the name of
the shared library.
* configure.in: AC_SUBST it.
* Makefile.am: Substitute it into name of library.
* ice-9/readline.scm: Use new name with load-extension.
Added LIBGUILEREADLINE_MAJOR variable for inclusion in the name of
the shared library.
* configure.in: AC_SUBST it.
* Makefile.am: Substitute it into name of library.
ETAGS_ARGS so that TAGS can be built using separate build
directory.
* Makefile.am (TAGS_FILES): Use this variable instead of
ETAGS_ARGS so that TAGS can be built using separate build
directory.
* debugger/breakpoints/Makefile.am (TAGS_FILES),
debugger/Makefile.am (TAGS_FILES), Makefile.am (TAGS_FILES): Use
this variable instead of ETAGS_ARGS so that TAGS can be built
using separate build directory.
* primitives/Makefile.am (TAGS_FILES), internals/Makefile.am
(TAGS_FILES), Makefile.am (TAGS_FILES): Use this variable instead
of ETAGS_ARGS so that TAGS can be built using separate build
directory.
* Makefile.am, goops/Makefile.am (TAGS_FILES): Use this variable
instead of ETAGS_ARGS so that TAGS can be built using separate
build directory.
* Makefile.am (TAGS_FILES): Use this variable instead of
ETAGS_ARGS so that TAGS can be built using separate build
directory.