Andrei Alexandrescu wrote:
The possibility of using D without a garbage collector was always
looming and has been used to placate naysayers ("you can call malloc if
you want" etc.) but that opportunity has not been realized in a seamless
manner. As soon as you concatenate arrays, add to a hash, or create an
object, you will call into the GC.

No printable comment on that one...

So I'm thinking there should be a flag -nogc that enables a different
model of memory allocation. Here's the steps we need to take:

Today really seems to be the lucky day of D!
So many pieces are clicking together!!
Oh, my!

7. Add a -nogc option to the compiler. In that mode, the compiler
replaces automatically "T" -> "Ref!(T)" and "new T(args)" ->
"Ref!(T)(args)" for all classes T except inside
object_nogc.d.

Of course.

The exception, as Walter pointed out, is to avoid
infinite regression (how do you implement Ref if the reference you hold
inside will also be wrapped in Ref???)

I wish you'd elaborate.

A disadvantage is that -nogc must be global - you can't link a program
that's partially built with gc and partially without. This was a major
counter-argument to adding optional gc to C++.

Well, IMHO, that's life. Can't win them all, all of the time. So let's live with it.

One might of course try to figure out a way to have the linker recognize this, or even *simpler*, the runtime might barf on it!!

Reply via email to