The default is "pthreads", unless your platform doesn't have pthreads,
in which case "null" threads are used.
+** There is the new notion of 'discouraged' features.
+
+This is a milder form of deprecation.
+
+Things that are discouraged should not be used in new code, but it is
+OK to leave them in old code for now. When a discouraged feature is
+used, no warning message is printed like there is for 'deprecated'
+features. Also, things that are merely discouraged are nevertheless
+implemented efficiently, while deprecated features can be very slow.
+
+You can omit discouraged features from libguile by configuring it with
+the '--disable-discouraged' option.
+
+** Deprecation warnings can be controlled at run-time.
+
+(debug-enable 'warn-deprecated) switches them on and (debug-disable
+'warn-deprecated) switches them off.
+
** New module (ice-9 serialize):
(serialize FORM1 ...) and (parallelize FORM1 ...) are useful when
Support for translating the documentation into HTML is now always
provided. Use 'make html'.
+** The configure option '--disable-arrays' has been removed.
+
+Support for arrays and uniform numeric arrays is now always included
+in Guile.
+
* Changes to the stand-alone interpreter
** New command line option `-L'.
Some non-compatible changes have been made:
- characters can no longer be stored into byte arrays.
- strings and bit vectors are no longer considered to be uniform vectors.
+ - array-rank throws an error for non-arrays instead of returning zero.
+ - array-ref does no longer accept non-arrays when no indices are given.
There is the new notion of 'generalized vectors' and corresponding
procedures like 'generalized-vector-ref'. Generalized vectors include
-strings bitvectors, ordinary vectors, and uniform numeric vectors.
+strings, bitvectors, ordinary vectors, and uniform numeric vectors.
Arrays use generalized vectors their storage, so that you still have
-arrays of characters, bits, etc.
+arrays of characters, bits, etc. However, uniform-array-read! and
+uniform-array-write can no longer read/write strings and bitvectors.
** There is now support for copy-on-write substrings, mutation-sharing
substrings and read-only strings.
* Changes to the C interface
-** There is the new notion of 'discouraged' features.
-
-This is a milder form of deprecation.
-
-Things that are discouraged should not be used in new code, but it is
-OK to leave them in old code for now. When a discouraged feature is
-used, no warning message is printed like there is for 'deprecated'
-features. Also, things that are merely discouraged are nevertheless
-implemented efficiently, while deprecated features can be very slow.
-
-You can omit discouraged features from libguile by configuring it with
-the '--disable-discouraged' option.
-
** A new family of functions for converting between C values and
Scheme values has been added.
the latter returns the true name of the keyword, not the 'dash name',
as SCM_KEYWORDSYM used to do.
-** The old uniform vector implementation has been unceremoniously
- removed.
+** A new way to access arrays in a thread-safe and efficient way has
+ been added.
+
+See the manual, node "Accessing Arrays From C".
+
+** The old uniform vector and bitvector implementations have been
+ unceremoniously removed.
This implementation exposed the detailes of the tagging system of
Guile. Use the new C API explained in the manual in node "Uniform
-Vectors".
+Numeric Vectors" and "Bit Vectors", respectively.
The following macros are gone: SCM_UVECTOR_BASE, SCM_SET_UVECTOR_BASE,
SCM_UVECTOR_MAXLENGTH, SCM_UVECTOR_LENGTH, SCM_MAKE_UVECTOR_TAG,
-SCM_SET_UVECTOR_LENGTH.
+SCM_SET_UVECTOR_LENGTH, SCM_BITVECTOR_P, SCM_BITVECTOR_BASE,
+SCM_SET_BITVECTOR_BASE, SCM_BITVECTOR_MAX_LENGTH,
+SCM_BITVECTOR_LENGTH, SCM_MAKE_BITVECTOR_TAG,
+SCM_SET_BITVECTOR_LENGTH, SCM_BITVEC_REF, SCM_BITVEC_SET,
+SCM_BITVEC_CLR.
+
+** The macros dealing with vectors have been deprecated.
+
+Use the new functions scm_is_vector, scm_vector_elements,
+scm_vector_writable_elements, etc, or scm_is_simple_vector,
+SCM_SIMPLE_VECTOR_REF, SCM_SIMPLE_VECTOR_SET, etc instead. See the
+manual for more details.
+
+Deprecated are SCM_VECTORP, SCM_VELTS, SCM_VECTOR_MAX_LENGTH,
+SCM_VECTOR_LENGTH, SCM_VECTOR_REF, SCM_VECTOR_SET, SCM_WRITABLE_VELTS.
+
+The following macros have been removed: SCM_VECTOR_BASE,
+SCM_SET_VECTOR_BASE, SCM_MAKE_VECTOR_TAG, SCM_SET_VECTOR_LENGTH,
+SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS, SCM_GC_WRITABLE_VELTS.
+
+** Some C functions and macros related to arrays have been deprecated.
+
+Migrate according to the following table:
+
+ scm_make_uve -> scm_make_typed_aray, scm_make_u8vector etc.
+ scm_make_ra -> scm_make_array
+ scm_shap2ra -> scm_make_array
+ scm_cvref -> scm_c_generalized_vector_ref
+ scm_ra_set_contp -> do not use
+ scm_aind -> scm_array_handle_pos
+ scm_raprin1 -> scm_display or scm_write
+
+ SCM_ARRAYP -> scm_is_array
+ SCM_ARRAY_NDIM -> scm_c_array_rank
+ SCM_ARRAY_DIMS -> scm_array_handle_dims
+ SCM_ARRAY_CONTP -> do not use
+ SCM_ARRAY_MEM -> do not use
+ SCM_ARRAY_V -> scm_array_handle_elements or similar
+ SCM_ARRAY_BASE -> do not use
** SCM_CELL_WORD_LOC has been deprecated.