On Fri, 31 May 2013 10:49:21 -0400, Andrei Alexandrescu <[email protected]> wrote:

On 5/31/13 9:07 AM, finalpatch wrote:
D is very strong at TMP, it provides a lot more tools
specifically designed for TMP, that is vastly superior than C++
which relies on abusing the templates. This is actually the main
reason drawing me to D: TMP in a more pleasant way. IMO one thing
D needs to address is less surprises, eg. innocent looking code
like v[] = [x,x,x] shouldn't cause major performance hit. In c++
memory allocation is explicit, either operator new or malloc, or
indirectly through a method call, otherwise the language would
not do heap allocation for you.

It would be great if we addressed that in 2.064. I'm sure I've seen the report in bugzilla, but the closest I found were:

http://d.puremagic.com/issues/show_bug.cgi?id=9335
http://d.puremagic.com/issues/show_bug.cgi?id=8449

There was this:

http://d.puremagic.com/issues/show_bug.cgi?id=2356

I know Don has suggested in the past that all array literals be immutable, like strings, and I agree with that. But it would be a huge breaking change.

I agree with finalpatch that array literals allocating is not obvious or expected in many cases.

I wonder if the compiler can prove that an array literal isn't referenced outside the function (or statement at least), it can allocate it on the stack instead of the heap? That would be a huge improvement, and good middle ground.

-Steve

Reply via email to