Re: [ANN] Qish rel. 0.5 (GPL) - runtime & garbage
Fergus Henderson <[email protected]>
| Newsgroups | gmane.comp.programming.garbage-collection.general |
|---|---|
| Message-ID | <[email protected]> |
On 02-Dec-2002, Basile STARYNKEVITCH <[email protected]> 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]. References [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. <http://www.cs.mu.oz.au/research/mercury/information/papers.html#high_level_gc> -- Fergus Henderson <[email protected]> | "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.