From: Mikael Djurfeldt Date: Tue, 20 Jun 2000 02:38:36 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: https://git.hcoop.net/bpt/guile.git/commitdiff_plain/b5074b2374047d35d62881960262e4a798d46472?pf=bpt *** empty log message *** --- diff --git a/ChangeLog b/ChangeLog index 35cd52193..4007a3208 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2000-06-20 Mikael Djurfeldt + + * 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 * 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 + + * session.scm: Use module (ice-9 regex). + (help): Regexp-quote a name given as a symbol. + 2000-06-16 Dirk Herrmann * 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 + + * 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 * list.[ch] (scm_cons_star/cons*): Renamed from