[gclist] [ANN] Qish rel. 0.5 (GPL) - runtime & garbage

Fergus Henderson fjh@cs.mu.OZ.AU
Wed, 4 Dec 2002 13:01:47 +1100

On 02-Dec-2002, Basile STARYNKEVITCH <basile@starynkevitch.net> wrote:
> I just released the release 0.5 -probably a beta quality release- of
> the qish runtime which contains a generational copying garbage
> collector (usable from C, in particular with some generated C code).
> See http://starynkevitch.net/Basile/qishintro.html and download
> http://starynkevitch.net/Basile/qish-0.5.tar.gz
> It could interest any people implementing a language in need of a
> Garbage Collector. Qish is probably a bit faster than Boehm's GC, but
> it is not multithreaded and requires carefully written (or machine
> generated) C code -respecting detailed (and documented) coding
> conventions.
> Comments are welcome. 

The C code in Qish does not conform to the C standard. 
As a result, Qish is not portable.  Also, you need to compile with
`-fvolatile -fvolatile-global', which will reduce performance even
for parts of the code which do not use pointers or GC at all.
You probably also need `-fno-strict-aliasing'.

IMHO this is a pity, since it is not necessary.  It is possible to write a
generational copying garbage collector with similar restrictions as Qish
(single-threaded, code using the collector needs to follow certain conventions)
in strictly conforming ANSI/ISO C code, without needing to use `volatile'.
For details, see my recent paper [1].

[1] Fergus Henderson,
    "Accurate garbage collection in an uncooperative environment".
    In Proceedings of the 2002 International Symposium on Memory
    Management, Berlin, Germany, June 2002, pages 150-156.

Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.