D without a GC

Christopher Bergqvist quasiconscious at gmail.com
Mon Jan 3 19:42:21 PST 2011


Would std.typecons.scoped!(T) fit?

http://svn.dsource.org/projects/phobos/trunk/phobos/std/typecons.d

I can't figure out why it's not in the generated reference docs, but exists in the source. Maybe it hasn't been tested enough yet.

On 3 Jan 2011, at 15:33, Ulrik Mikaelsson <ulrik.mikaelsson at gmail.com> wrote:

> 2011/1/3 Iain Buclaw <ibuclaw at ubuntu.com>:
>> == Quote from bearophile (bearophileHUGS at lycos.com)'s article
>>> Dmitry Olshansky:
>>>> As stated in this proposal they are quite useless, e.g. they are easily
>>>> implemented via mixin with alloca.
>>> Thank you for your comments. Here I have added some answers to your comments:
>>> http://d.puremagic.com/issues/show_bug.cgi?id=5348
>>> Bye,
>>> bearophile
>> 
>> Some thoughts to your proposal:
>> 
>>> void bar(int len) {
>>>     Foo* ptr = cast(Foo*)alloca(len * Foo.sizeof);
>>>     if (ptr == null)
>>>         throw new Exception("alloca failed");
>>>     Foo[] arr = ptr[0 .. len];
>>>     foreach (ref item; arr)
>>>         item = Foo.init;
>>> 
>>>     // some code here
>>>     writeln(arr);
>>> 
>>>     foreach (ref item; arr)
>>>         item.__dtor();
>>> }
>> 
>> 1) Why call the dtors manually? Forgive me if I'm wrong, but iirc, alloca will
>> free the memory when the stack exits from the current frame level. :)
> The dtor doesn't free memory, it allows the class to perform cleanup
> on destruction, such as close():ing any native FD:s etc.
> 
> Actually, AFAICT, the above code should also after "item=Foo.init"
> call item.__ctor(), to allow the constructor to run.
> 
> IMHO, stdlibs should provide wrappers for this type of functionality.
> An application-writer should not have to know the intricate details of
> __ctor and __dtor as opposed to memory-mangement etc. A template
> "stackAllocate!(T)" would be nice.


More information about the Digitalmars-d mailing list