* libguile/read.c (scm_t_read_context): Add 'datum_label_table' and
'datum_label_tag' members.
(scm_datum_label_definition, scm_datum_label_reference)
(datum_is_placeholder, resolve_placeholder)
resolve_datum_labels, scm_resolve_datum_labels): New static functions.
(scm_read_array): Handle datum labels.
(scm_read): Call 'scm_resolve_datum_labels'.
(init_read_context): Initialize 'datum_label_table', and
'datum_label_tag'.
* module/srfi/srfi-38.scm (read-with-shared-structure): Make this an
alias for Guile's core 'read'. Remove the old implementation.
* module/ice-9/boot-9.scm (%cond-expand-features): Remove redundant list
of feature identifiers in the comment. Explain more clearly what
belongs in this list. Remove srfi-6.
* module/srfi/srfi-4.scm, module/srfi/srfi-27.scm,
module/srfi/srfi-31.scm, module/srfi/srfi-38.scm,
module/srfi/srfi-39.scm, module/srfi/srfi-42.scm,
module/srfi/srfi-45.scm, module/srfi/srfi-67.scm: Add missing
'cond-expand-provide'.
* module/srfi/srfi-69.scm: Fix erroneous 'cond-expand-provide'.
* doc/ref/srfi-modules.texi (SRFI-0): Update the list of features in
Guile core.
* module/srfi/srfi-38.scm: New file, partly based on the reference
implementation and on Alex Shinn's public-domain implementation for
Chicken.
* module/Makefile.am (SRFI_SOURCES): Add srfi/srfi-38.scm.
* test-suite/tests/srfi-38.test: New file, minimal test suite for SRFI
38.
* test-suite/Makefile.am (SCM_TESTS): Added tests/srfi-38.test.
* doc/ref/srfi-modules.texi: Add a node for SRFI 38.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>