Possible change to array runtime?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Thu Mar 13 09:29:59 PDT 2014


On 3/13/14, 8:24 AM, Steven Schveighoffer wrote:
> Proposal: iff you are setting the length of an array via the length
> property AND you are setting the length to 0 AND the array starts at the
> beginning of the block AND the array is mutable (not const or
> immutable), THEN assumeSafeAppend is called on that array AUTOMATICALLY.

I think this is a sensible proposal, and well argued. However it may 
break code (even code that arguably wasn't really nicely thought 
through), and in subtle ways. "We upgraded the compiler, and our 50KLOC 
app now produces invalid results." Very hard to get working on that, in 
particular since it's unclear whether this particular matter was the 
actual culprit.

I think there's a much simpler approach that could help. Define and 
document a function clearForAppend that resets the length to 0 and puts 
the array in gear for appending. Maybe an optional parameter indicates a 
minimum desired capacity.

Then people who want to migrate from D1 to D2 or generally consider 
using this idiom can grep their source code for "length *= *0" and make 
the change on their own pace and with appropriate testing.


Andrei



More information about the Digitalmars-d mailing list