summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>2000-06-20 02:38:36 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>2000-06-20 02:38:36 +0000
commitb5074b2374047d35d62881960262e4a798d46472 (patch)
tree4f0e1f48c975a503aa6a4da556d46233fd3dcabc
parent5b99c4a9e7ee5ea9ebbd0fcbd2a2f5e1c25625d0 (diff)
downloadguile-b5074b2374047d35d62881960262e4a798d46472.tar.gz
*** empty log message ***
-rw-r--r--ChangeLog7
-rw-r--r--NEWS84
-rw-r--r--README26
-rw-r--r--RELEASE4
-rw-r--r--THANKS3
-rw-r--r--ice-9/ChangeLog5
-rw-r--r--libguile/ChangeLog17
7 files changed, 134 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 35cd52193..4007a3208 100644
--- 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 564ad9113..fc5c21dc5 100644
--- 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 13aa6178c..9b60ceafa 100644
--- 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 700566d23..dfd225518 100644
--- 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 cf841b976..bc1b731f9 100644
--- 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
diff --git a/ice-9/ChangeLog b/ice-9/ChangeLog
index cf2eb837c..0b20e4b26 100644
--- a/ice-9/ChangeLog
+++ b/ice-9/ChangeLog
@@ -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
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index bcd775f6c..57450f9c9 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -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