<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote">On Thu, Mar 13, 2014 at 9:40 PM, Zoltan Somogyi <span dir="ltr"><<a href="mailto:zoltan.somogyi@runbox.com" target="_blank">zoltan.somogyi@runbox.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><br>
<br>
On Thu, 13 Mar 2014 19:14:01 -0700, Haitao Zhang <<a href="mailto:zhtprog@gmail.com">zhtprog@gmail.com</a>> wrote:<br>
> If I use Mercury purely functionally/declaratively and store all states<br>
> through the FFI so that when control returns from Mercury there is no need<br>
> to preserve any Mercury data structures, could I disable GC and expect no<br>
> memory leak?<br>
<br>
</div>No, you cannot expect that.<br>
<div class=""><br>
>  I read that one can compile with no GC and Mercury heap will<br>
> be reclaimed on backtracking. Does that include returning from a<br>
> det/semidet predicate?<br>
<br>
</div>No. Returning from a det predicate, and returning from a semidet<br>
predicate with success, are not backtracking.<br>
<div class=""><br></div></blockquote><div><br>I see. Thanks for the tip. So what if one supplies a heap manager in 
place of Boehm GC? All this manager does is to track Mercury heap allocated 
structures as if Mercury uses a separate heap. Then when returning from 
Mercury the caller manually frees all Mercury structures. Anything that 
needs to be preserved is done through the CFFI using the regular heap. This is like a thread execution model with separate heap and shared memory for communication. Would this work?<br><br></div><div>Thanks,<br></div><div>
Haitao<br></div><div><br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="">
> There was a compile time GC branch with activity as recent as 2008, What<br>
> happened to that branch? What about the region based memory management<br>
> module?<br>
<br>
</div>Neither is ready for production use, and neither is actively maintained.<br>
They were built by graduate students who have since finished their studies<br>
and moved on to other things.<br>
<span class=""><font color="#888888"><br>
Zoltan.<br>
<br>
</font></span></blockquote></div><br></div></div>