<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Oct 10, 2016 at 12:40 PM, Paul Bone <span dir="ltr"><<a href="mailto:paul@bone.id.au" target="_blank">paul@bone.id.au</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Sat, Oct 08, 2016 at 10:32:33PM +1100, Paul Bone wrote:<br>
><br>
> I investigated an issue with memory fragmentation in BDW GC and Mercury and<br>
> it proved to be quite interesting, so I wrote it up as a blog post.<br>
><br>
<br>
</span>I received some feedback via twitter regarding the Memory Pool System (MPS),<br>
another GC for uncooperative environments.<br>
<br>
<a href="https://twitter.com/glaebhoerl/status/784737682706538496" rel="noreferrer" target="_blank">https://twitter.com/<wbr>glaebhoerl/status/<wbr>784737682706538496</a><br>
<br>
IIRC we've tried this in the past and found that it didn't perform as well<br>
as BDWGC.  But I wasn't involved with Mercury at the time and things may<br>
have changed.  @glaebhoerl provided this link<br>
<a href="https://gitlab.com/embeddable-common-lisp/ecl/issues/126" rel="noreferrer" target="_blank">https://gitlab.com/embeddable-<wbr>common-lisp/ecl/issues/126</a> suggesting that it<br>
might be worth a look as ti may perform better.  I know very little about<br>
MPS so there's not much I can say about this.  But I said I'd pass the<br>
information on to the other Mercury devs.<br>
<div class="HOEnZb"><div class="h5"><br></div></div></blockquote><div><br></div><div>The Dylan programming language has had several implementations, using a variety of GCs:</div><div><br></div><div>Gwydion Dylan, originally at CMU on HP/UX, subsequently on probably every popular Unix-like, has always used BDWGC.</div><div><br></div><div>Open Dylan, nee Functional Developer, nee Harlequin Dylan was developed at Harlequin, who also developed the Memory Pool System. Open Dylan started on Windows as a native compiler, and has been ported to 32 bit x86 Linux, also as a native compiler. These versions use MPS. It has also been ported to other platforms/CPUs and to 64 bit using a C back end. This uses BDWGC.</div><div><br></div><div>MPS was said to have 30 man-years of development work in it at the point that Harlequin spun it off. The overall Dylan enviroment was over 100 man years. (MPS was also used in Harlequin's ML and Lisp products, and maybe others)</div><div><br></div><div>There is no doubt that MPS is very flexible, and can use a variety of different allocation and collection techniques, both precise and conservative.</div><div><br></div><div>I don't recall MPS benchmarking any better than BDWGC with Open Dylan. Maybe the memory use is lower, but I'm not sure about that. There's probably some data in the Dylan newsgroup or mailing list somewhere, but it's a few years now since I've been actively involved.</div><div><br></div></div></div></div>