*** empty log message ***
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Tue, 20 Jun 2000 02:38:36 +0000 (02:38 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Tue, 20 Jun 2000 02:38:36 +0000 (02:38 +0000)
ChangeLog
NEWS
README
RELEASE
THANKS
ice-9/ChangeLog
libguile/ChangeLog

index 35cd521..4007a32 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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".
diff --git a/NEWS b/NEWS
index 564ad91..fc5c21d 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -183,6 +183,53 @@ when this hook is run in the future.
 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
@@ -215,6 +262,16 @@ Returns #t if PORT is closed or #f if it is open.
 
 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
@@ -464,6 +521,26 @@ are run when the heap is locked.  These are intended for extension of
 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
@@ -475,6 +552,13 @@ and scm_tc16_complex, respectively.
 
 ** 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
diff --git a/README b/README
index 13aa617..9b60cea 100644 (file)
--- a/README
+++ b/README
@@ -1,8 +1,4 @@
-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
@@ -18,14 +14,22 @@ representation of data types in Guile.  The example-smob directory
 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
@@ -164,7 +168,7 @@ Obtaining Guile ======================================================
 
 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
diff --git a/RELEASE b/RELEASE
index 700566d..dfd2255 100644 (file)
--- a/RELEASE
+++ b/RELEASE
@@ -121,6 +121,10 @@ Spiffing checklist:
     (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
diff --git a/THANKS b/THANKS
index cf841b9..bc1b731 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -24,7 +24,8 @@ For fixes or providing information which led to a fix:
        Mark Galassi
         Ian Grant
        Greg Harvey
-       Jon Hellan      
+    Karl M. Hegbloom
+       Jon Hellan      
     Richard Kim
        Brad Knotwell
        Tim Mooney
index cf2eb83..0b20e4b 100644 (file)
@@ -1,3 +1,8 @@
+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
index bcd775f..57450f9 100644 (file)
@@ -1,3 +1,20 @@
+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