Safety, undefined behavior, @safe, @trusted

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Nov 5 14:13:42 PST 2009


dsimcha wrote:
> == Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
>> dsimcha wrote:
>>> == Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
>>>> Steven Schveighoffer wrote:
>>>>> On Thu, 05 Nov 2009 16:30:42 -0500, Andrei Alexandrescu
>>>>> <SeeWebsiteForEmail at erdani.org> wrote:
>>>>>
>>>>>>>  Most of the usages are like this:
>>>>>>>  ubyte[1024] buffer;
>>>>>>> functionThatNeedsBufferSpace(buffer);
>>>>>>>  where functionThatNeedsBufferSpace takes a ubyte[], thereby taking
>>>>>>> an address of the local data.
>>>>>>>  So it's not explicit address taking, but it's the same thing under
>>>>>>> the hood.  There always exists the potential for the stack reference
>>>>>>> to escape.
>>>>>> I see, thank you. I am confident that a trusted reap could be
>>>>>> implemented in the standard library. (google reap)
>>>>> I did.  Couldn't find anything.
>>>> Damn acronyms, sorry. Better results: reap memory allocation
>>>> ftp://ftp.cs.utexas.edu/pub/emery/papers/reconsidering-custom.pdf
>>>> Andrei
>>> Ok, I understand the basic principle of a reap, but if it's going to convert to a
>>> heap when you try to delete something, why not just improve the standard GC heap,
>>> i.e. by making per-thread heaps?  If you're not going to delete stuff, why not
>>> just use a regular old region or stack (not necessarily the call stack, but a
>>> stack of some kind)?
>> Perhaps a region could also be defined as a @trusted facility! So much
>> good stuff to do, so little time...
>> Andrei
> 
> I have my doubts only b/c I've worked on similar things before and the thing that
> keeps biting me in the @$$ is how to handle the GC.  If you allocate some huge
> block of memory to parcel out and have it all be scanned by the GC, you're asking
> for slow scan times and lots of false pointers, thus largely defeating the purpose
> of the region scheme.

Well I'm thinking that often when you use a region, the memory 
consumption is not really large. If it's really large, then you may be 
better off just using the GC because it means you do a lot of stuff. But 
I'm sure I'm ignoring a few important applications.


Andrei



More information about the Digitalmars-d mailing list