1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-04 22:40:25 +02:00
guile/doc
Neil Jerram 5e9dc714ca Remove AC_SYS_RESTARTABLE_SYSCALLS and related code
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.
2009-06-18 20:35:45 +01:00
..
example-smob Rename ChangeLog' files to ChangeLog-2008'. 2008-09-12 21:42:26 +02:00
goops Fix compilation of the hard copy of the R5RS, tutorial and GOOPS manual. 2008-10-09 23:24:09 +02:00
maint Fix explicitely' typos, should be explicitly' 2009-05-20 18:54:23 +01:00
r5rs Fix compilation of the hard copy of the R5RS, tutorial and GOOPS manual. 2008-10-09 23:24:09 +02:00
ref Remove AC_SYS_RESTARTABLE_SYSCALLS and related code 2009-06-18 20:35:45 +01:00
sources Add `ChangeLog-2008' files to the distribution. 2008-09-12 21:46:32 +02:00
tutorial Fix compilation of the hard copy of the R5RS, tutorial and GOOPS manual. 2008-10-09 23:24:09 +02:00
.gitignore More `.gitignore'. 2008-04-07 23:48:08 +02:00
BUGS Move doc files into guile-core distribution (6) 2001-03-09 09:20:46 +00:00
ChangeLog-2008 Rename ChangeLog' files to ChangeLog-2008'. 2008-09-12 21:42:26 +02:00
ChangeLog-guile-doc Move doc files into guile-core distribution (6) 2001-03-09 09:20:46 +00:00
groupings.alist Added 2006 to copyright years in every file, as per the new rules. 2006-02-12 13:42:52 +00:00
guile-api.alist Update. 2002-05-12 05:29:39 +00:00
guile.1 Update "guile(1)" man page. 2008-11-13 23:33:40 +01:00
hacks.el * hacks.el: Some handy helper functions for working on the manual. 1998-10-15 21:48:23 +00:00
Makefile.am Add "guile(1)" man page. 2008-11-13 23:33:39 +01:00
mbapi.texi Move doc files into guile-core distribution (1) 2001-03-09 08:22:00 +00:00
mltext.texi * Fix doc snapshot build problems by avoiding use of ../AUTHORS file. 2001-08-27 21:25:44 +00:00
NEWS Added 2006 to copyright years in every file, as per the new rules. 2006-02-12 13:42:52 +00:00
oldfmt.c * libguile.h: Update copyright statement to LGPL. 2008-01-22 21:12:07 +00:00
README * Remove r4rs from distribution. 2001-04-22 13:22:51 +00:00
recipe-guidelines.txt * Added recipe-guidelines.txt. 2001-04-20 11:20:06 +00:00
THANKS * Grammar fix. 2001-06-27 18:12:46 +00:00
use-cases.fig Created a usecase diagram for Guile. 2001-05-24 08:46:50 +00:00
use-cases.txt Created a usecase diagram for Guile. 2001-05-24 08:46:50 +00:00

This directory contains documentation on the Guile core.         -*-text-*-

The documentation consists of the following manuals.

- The Guile Tutorial (guile-tut.texi) contains a tutorial introduction
  to using Guile.

- The Guile Reference Manual (guile.texi) contains (or is intended to
  contain) reference documentation on all aspects of Guile.

- The GOOPS Manual (goops.texi) contains both tutorial-style and
  reference documentation for using GOOPS, Guile's Object Oriented
  Programming System.

- The Revised^5 Report on the Algorithmic Language Scheme (r5rs.texi).

Please be aware that this is all very much work in progress (apart
from the Revised^5 Report).  Bug reports and contributions are
welcome!

The file `oldfmt.c' contains a function which can be used by
application writers to support both old-style and new-style error
format strings.

The `sources' directory includes some stuff relevant to the Guile
reference manual, and which may eventually be folded in to it.  It's
not immediately relevant, however, which is why it's not in this
directory.

The Revised^4 Report (r4rs.texi) is no longer in this distribution, as
it is completely superseded by the Revised^5 Report.  If you need to
consult R4RS, it is still widely available, for example at
http://www-swiss.ai.mit.edu/projects/info/SchemeDocs/r4rs/.