Ikarus Scheme (Bazaar checkout)
Go to file
Abdulaziz Ghuloum 372c3e369b Change of strategy in the garbage collector.
Previously: when a generation (say 2) is collected, 
  everything in gen 0 moves to gen 1
  everything in gen 1 moves to gen 2
  everything in gen 2 moves to gen 3

Now: when a generation (say 2 again) is collected
  everything in gen 0 moves to gen 3
  everything in gen 1 moves to gen 3
  everything in gen 2 moves to gen 3

So, some objects get a leap from young to old if they're lucky to be
in the right time.

Consequences: when an object is moved by the collector, we don't
need to track old->new pointers and masks because all moved objects
are clean now.  This both simplifies the collector and makes it more
efficient and might open the door for further optimization
opportunities.  For bootstrap time, we get about 5% overall 
saving and about 20% GC-time saving.  Not bad.

BEFORE:
running stats for macro expansion:
    45 collections
    2558 ms elapsed cpu time, including 212 ms collecting
    2576 ms elapsed real time, including 216 ms collecting
    186972152 bytes allocated
running stats for code generation and serialization:
    86 collections
    4365 ms elapsed cpu time, including 1444 ms collecting
    4374 ms elapsed real time, including 1449 ms collecting
    362819096 bytes allocated
running stats for the entire bootstrap process:
    131 collections
    6928 ms elapsed cpu time, including 1657 ms collecting
    6953 ms elapsed real time, including 1666 ms collecting
    549818232 bytes allocated

AFTER:
running stats for macro expansion:
    45 collections
    2506 ms elapsed cpu time, including 169 ms collecting
    2511 ms elapsed real time, including 171 ms collecting
    186968056 bytes allocated
running stats for code generation and serialization:
    86 collections
    4083 ms elapsed cpu time, including 1189 ms collecting
    4085 ms elapsed real time, including 1191 ms collecting
    362810904 bytes allocated
running stats for the entire bootstrap process:
    131 collections
    6591 ms elapsed cpu time, including 1359 ms collecting
    6599 ms elapsed real time, including 1362 ms collecting
    549805944 bytes allocated
Happy Happy Joy Joy
2007-12-15 10:43:29 -05:00
benchmarks Forgot to commit the 0.0.2 release. 2007-11-29 03:31:54 -05:00
benchmarks.larceny * libraries are now expanded to a special library-letrec* form. 2007-11-17 09:53:22 -05:00
doc Fixed typos in the user's guide (reported in bug 173535) 2007-12-11 03:14:07 -05:00
lab removed some junk files that were in the repository. 2007-12-10 12:00:12 -05:00
lib renamed the extras directory to be lib. 2007-12-01 01:21:18 -05:00
other-libs Couple of typos in match.ss (reported in bug 175811). 2007-12-12 06:49:57 -05:00
scheme Change of strategy in the garbage collector. 2007-12-15 10:43:29 -05:00
src Change of strategy in the garbage collector. 2007-12-15 10:43:29 -05:00
.bzrignore * Added char-downcase, char-upcase, char-titlecase, and char-foldcase 2007-06-17 17:20:19 +03:00
ACKNOWLEDGMENTS * Added a dedications file. 2007-11-19 19:04:10 -05:00
BUGS * improved performance for fl+, fl-, fl*, fl/, fl=?, fl<?, fl<=?, fl>? and fl>=? 2007-11-08 12:07:48 -05:00
COPYING * Fixed license issues in COPYING and GPL-3 files. 2007-10-25 17:56:49 -04:00
DEDICATIONS * Added a dedications file. 2007-11-19 19:04:10 -05:00
GPL-3 * Fixed license issues in COPYING and GPL-3 files. 2007-10-25 17:56:49 -04:00
HOWTO-Contribute added: HOWTO-Contribute 2007-12-01 21:38:16 -05:00
Makefile.am renamed the extras directory to be lib. 2007-12-01 01:21:18 -05:00
Makefile.in Weeded out gcc warnings and added -Wall as a configure flag. 2007-12-10 15:02:25 -05:00
README * Fixed a few typos in docs. 2007-10-31 04:43:22 -04:00
aclocal.m4 * upgrades to new(er) versions of automake and autoconf. 2007-11-10 23:50:54 -05:00
compile * Migrated to automake-1.9 2007-10-25 17:43:40 -04:00
config.guess * Migrated to automake-1.9 2007-10-25 17:43:40 -04:00
config.h.in Fixes bug 172894 by checking at configure-time whether the 2007-12-01 22:41:36 -05:00
config.sub major restructuring to support autotools 2007-10-17 19:59:37 -04:00
configure Weeded out gcc warnings and added -Wall as a configure flag. 2007-12-10 15:02:25 -05:00
configure.ac Weeded out gcc warnings and added -Wall as a configure flag. 2007-12-10 15:02:25 -05:00
depcomp major restructuring to support autotools 2007-10-17 19:59:37 -04:00
install-sh * Migrated to automake-1.9 2007-10-25 17:43:40 -04:00
missing * Migrated to automake-1.9 2007-10-25 17:43:40 -04:00
mkinstalldirs * Migrated to automake-1.9 2007-10-25 17:43:40 -04:00

README

Ikarus Scheme is an implementation of the Scheme programming
language.  The preliminary release of Ikarus implements the majority
of the features found in the current standard, the Revised 6 report
on the algorithmic language Scheme including full R6RS library and
script syntax, syntax-case, unicode strings, bytevectors,
user-defined record types, exception handling, conditions, and
enumerations.  Over 80% of the R6RS procedures and keywords are
currently implemented and subsequent releases will proceed towards
brining Ikarus to full R6RS conformance.

The main purpose behind releasing Ikarus early is to give Scheme
programmers the opportunity to experiment with the various new
features that were newly introduced in R6RS.  The most important of
such features is the ability to structure large programs into
libraries; where each library extends the language through
procedural and syntactic abstractions.  Many useful libraries can be
written using the currently supported set of R6RS features including
text processing tools, symbolic logic systems, interpreters and
compilers, and many mathematical and scientific packages.  It is my
hope that this release will encourage the Scheme community to write
and to share their most useful R6RS libraries.