forcing weak purity

Steven Schveighoffer schveiguy at yahoo.com
Wed May 23 06:52:22 PDT 2012


On Wed, 23 May 2012 09:17:43 -0400, Don Clugston <dac at nospam.com> wrote:

> On 23/05/12 05:22, Steven Schveighoffer wrote:
>> I have come across a dilemma.
>>
>> Alex Rønne Petersen has a pull request changing some things in the GC to
>> pure. I think gc_collect() should be weak-pure, because it could
>> technically run on any memory allocation (which is already allowed in
>> pure functions), and it runs in a context that doesn't really affect
>> execution of the pure function.
>>
>> So I think it should be able to be run inside a strong pure function.
>
> I am almost certain it should not.
>
> And I think this is quite important. A strongly pure function should be  
> considered to have its own gc, and should not be able to collect any  
> memory it did not allocate itself.

Well, given that the above is not implemented, what do you propose for the  
meantime?

>
> Memory allocation from a pure function might trigger a gc cycle, but it  
> would ONLY look at the memory allocated inside that pure function.
>

What if memory is tight, and the only way to get memory for this new  
allocation is to collect from the main heap?  This seems an odd  
limitation, since strong-pure functions would not be affected by  
collecting in the main heap *at all*.

-Steve


More information about the Digitalmars-d mailing list