+2000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * GUILE-VERSION: Changed to work also when included by a Makefile
+ (e.g. debian/rules). (Thanks to Karl M. Hegbloom.)
+ (LIBGUILE_MAJOR_VERSION): Bumped to 9.
+ (GUILE_MINOR_VERSION): Bumped to 4.
+
2000-06-12 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
* libguile.h: Removed #include "libguile/kw.h".
C programmers: Note the new C level hooks scm_before_gc_c_hook,
scm_before_sweep_c_hook, scm_after_gc_c_hook.
+** Improvements to garbage collector
+
+Guile 1.4 has a new policy for triggering heap allocation and
+determining the sizes of heap segments. It fixes a number of problems
+in the old GC.
+
+1. The new policy can handle two separate pools of cells
+ (2-word/4-word) better. (The old policy would run wild, allocating
+ more and more memory for certain programs.)
+
+2. The old code would sometimes allocate far too much heap so that the
+ Guile process became gigantic. The new code avoids this.
+
+3. The old code would sometimes allocate too little so that few cells
+ were freed at GC so that, in turn, too much time was spent in GC.
+
+4. The old code would often trigger heap allocation several times in a
+ row. (The new scheme predicts how large the segments needs to be
+ in order not to need further allocation.)
+
+The new GC scheme also is prepared for POSIX threading. Threads can
+allocate private pools of cells ("clusters") with just a single
+function call. Allocation of single cells from such a cluster can
+then proceed without any need of inter-thread synchronization.
+
+** New environment variables controlling GC parameters
+
+GUILE_MAX_SEGMENT_SIZE Maximal segment size
+ (default = 2097000)
+
+Allocation of 2-word cell heaps:
+
+GUILE_INIT_SEGMENT_SIZE_1 Size of initial heap segment in bytes
+ (default = 360000)
+
+GUILE_MIN_YIELD_1 Minimum number of freed cells at each
+ GC in percent of total heap size
+ (default = 40)
+
+Allocation of 4-word cell heaps
+(used for real numbers and misc other objects):
+
+GUILE_INIT_SEGMENT_SIZE_2, GUILE_MIN_YIELD_2
+
+(See entry "Way for application to customize GC parameters" under
+ section "Changes to the scm_ interface" below.)
+
* Changes to Scheme functions and syntax
** close-input-port and close-output-port are now R5RS
The list* functionality is now provided by cons* (SRFI-1 compliant)
+** New procedure: cons* ARG1 ARG2 ... ARGn
+
+Like `list', but the last arg provides the tail of the constructed list,
+returning (cons ARG1 (cons ARG2 (cons ... ARGn))).
+
+Requires at least one argument. If given one argument, that argument
+is returned as result.
+
+This function is called `list*' in some other Schemes and in Common LISP.
+
** Removed deprecated: serial-map, serial-array-copy!, serial-array-map!
* Changes to the gh_ interface
the GC in a modular fashion. Examples are the weaks and guardians
modules.
+** Way for application to customize GC parameters
+
+The application can set up other default values for the GC heap
+allocation parameters
+
+ GUILE_INIT_HEAP_SIZE_1, GUILE_MIN_YIELD_1,
+ GUILE_INIT_HEAP_SIZE_2, GUILE_MIN_YIELD_2,
+ GUILE_MAX_SEGMENT_SIZE,
+
+by setting
+
+ scm_default_init_heap_size_1, scm_default_min_yield_1,
+ scm_default_init_heap_size_2, scm_default_min_yield_2,
+ scm_default_max_segment_size
+
+respectively before callong scm_boot_guile.
+
+(See entry "New environment variables ..." in section
+"Changes to the stand-alone interpreter" above.)
+
** Deprecated type tags: scm_tc16_flo, scm_tc_flo, scm_tc_dblr, scm_tc_dblc
Guile does not provide the float representation for inexact real numbers any
** Removed deprecated function scm_newsmob
+** Warning: scm_make_smob_type_mfpe might become deprecated in a future release
+
+There is an ongoing discussion among the developers whether to
+deprecate `scm_make_smob_type_mfpe' or not. Please use the current
+standard interface (scm_make_smob_type, scm_set_smob_XXX) in new code
+until this issue has been settled.
+
** Removed deprecated type tag scm_tc16_kw
** Added type tag scm_tc16_keyword
-This is not a Guile release; it is a source tree retrieved via
-anonymous CVS or as a nightly snapshot at some random time after the
-Guile 1.3.4 release.
-
-This is version 1.3.5 of Guile, Project GNU's extension language
+This is version 1.4 of Guile, Project GNU's extension language
library. Guile is an interpreter for Scheme, packaged as a library
that you can link into your applications to give them their own
scripting language. Guile will eventually support other languages as
contains example source code for the "Defining New Types (Smobs)" chapter.
The incomplete Guile reference manual is available at
-ftp://ftp.red-bean.com/pub/guile/snapshots/guile-doc-snap.tar.gz
-There is a plan to distribute the reference manual with guile-core,
-with much of the text generated from the docstrings in the sources.
-The docstrings are likely to be more up-to-date than the reference
-manual at present (see libguile/guile-procedures.txt which is
+ ftp://ftp.red-bean.com/pub/guile/snapshots/guile-doc-snap.tar.gz
+
+Neil Jerram is working on the new reference manual, which will be
+distributed with guile-core. The new manual will be synchronized with
+the docstrings in the sources. Until then, please be aware that the
+docstrings are likely to be more up-to-date than the old reference
+manual (use `(help)' or see libguile/guile-procedures.txt which is
generated by the build process).
+The Guile WWW page is at
+
+ http://www.gnu.org/software/guile/guile.html
+
+It contains a link to the Guile FAQ.
+
Guile License ==================================================
The license of Guile consists of the GNU GPL plus a special statement
The latest official Guile release is available via anonymous FTP from
-ftp://ftp.gnu.org/pub/gnu/guile/guile-1.3.4.tar.gz
+ftp://ftp.gnu.org/pub/gnu/guile/guile-1.4.tar.gz
The mailing list `guile@sourceware.cygnus.com' carries discussions,
questions, and often answers, about Guile. To subscribe, send mail to
(If the above steps are not done, the dependencies won't be properly
included in the generated Makefile.in files.)
+ Then do 'make dist'.
+ + Check that the dependencies in guile-readline/Makefile look OK.
+ (We currently use a kludge which edits the dependencies generated
+ by automake so that Guile can be built in a directory separate
+ from the source tree also with non-GNU make programs.)
* Give the test disty to various people to try. Here's what you should do:
+ Unset GUILE_LOAD_PATH.
+ Remove automake and autoconf from your path, or turn off their
Mark Galassi
Ian Grant
Greg Harvey
- Jon Hellan
+ Karl M. Hegbloom
+ Jon Hellan
Richard Kim
Brad Knotwell
Tim Mooney
+2000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * session.scm: Use module (ice-9 regex).
+ (help): Regexp-quote a name given as a symbol.
+
2000-06-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
* common-list.scm (list*): Removed, since this function is
+2000-06-20 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * gc.c, gc.h (scm_default_init_heap_size_1,
+ scm_default_min_yield_1, scm_default_init_heap_size_2,
+ scm_default_min_yield_2, scm_default_max_segment_size): New global
+ variables. Can be customized by the application before booting
+ Guile. (We might want to be able to control these parameters
+ dynamically through the "options interface" in the future, but
+ note that that is additional functionality. Here we're giving
+ default values which the environment variables can override.)
+
+ * list.c (scm_cons_star): Updated comment.
+
+ * smob.h: Changed comments for scm_make_smob_type and
+ scm_make_smob_type_mfpe, warning that the latter might be
+ deprecated in a future release.
+
2000-06-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
* list.[ch] (scm_cons_star/cons*): Renamed from