[Gc] GC7.0

Boehm, Hans hans.boehm at hp.com
Mon Jul 2 16:23:44 PDT 2007


I finally made gc version 7.0 available as

http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.0.tar.gz

(Note the hyphen; the naming convention changed slightly.)

The CVS tree is now labelled as 7.1alpha1.

I tested this on some of the most common platforms (various Linux,
Windows versions, Solaris, HP/UX, MacOS X).  I did not get a chance to
test on AIX or Irix.

There has been a report that this does not build on MacOS 10.3.9, but it
seems to work on most other MacOS X versions.

The Cygwin port does not support dynamic libraries.  (Neither did 6.8,
but the documentation is now more clear about that.  I suspect this
actually isn't hard to fix.)

Changes relative to 6.8 include, in no particular order:

 - Change C code to require at least C89.  Clean up code in various
outher
   respects.
 - Win64 port.
 - Always count how much live data there is in the heap.  Add more
   robust heap expansion heuristic which relies on this.
 - Remove old-style Solaris threads support and some other obsolete
   platform support.
 - Restructure mark code, hopefull resulting in some performance
improvements.
 - Change the GC code to traffic mostly in either bytes or allocation
   granules, not words, internally.
 - Provide for fast inline allocation that requires less frequent client
   recompilations.  (Needs more testing.)
 - Removed SILENT configuration macro and PRINTSTATS and GATHERSTATS
   macros.  Control is now via GC_PRINT_STATS and GC_PRINT_VERBOSE_STATS
   encironment variables.
 - Thread local allocation is now performed without needing to call
   special allocation functions.  The configuration macro
THREAD_LOCAL_ALLOC
   continues to determine whether this is supported.
 - Thread local allocation is supported on more platforms.
 - Win32 threads code was rewritten and is hopefully more sane.
 - Allocation routines now decide whether to lock dynamically, based on
   whether a second thread has been created.
 - Mostly untested support for a compiler write barrier.
 - Use libatomic_ops for atomic operations.
 - Limited support for malloc redirection with Linux threads (& NPTL ).
 - Various bug fixes and some new platform support.

Hans



More information about the Gc mailing list