Arrays, garbage collection
bearophile via Digitalmars-d
digitalmars-d at puremagic.com
Fri Jan 30 01:07:41 PST 2015
deadalnix:
> - added optimization to promote them on heap. Thing like
> int[2] = [1, 2] can trivially avoid GC allocation.
See my usage examples (think of the examples as not having the
"s" suffix):
void main() {
// Some imports here.
foo([[1, 2]s, [3, 4]]s);
auto t1 = tuple([1, 2]s, "red");
auto aa1 = ["key": [1, 2]s];
auto pairs = 10.iota.map!(i => [i, i + 10]s);
}
A smart system can promote only the first one to value array. The
compiler has to leave the other cases to the judgement of the
programmer.
> - added some support for ownership/lifetime. This will allow
> the compiler to promote even more on heap.
This is what I too have said in my original post. For those
features to work well you need first a good static management of
memory ownership.
> If don't expect the new syntax to be that useful if these point
> are addressed. If I'm turn out to be wrong, we can reconsider
> at that point.
I can show code similar to the examples above where the []s
syntax is useful.
And using a function as Andrei suggests is not a good idea:
foo(staticArray(staticArray(1, 2), staticArray(3, 4)));
I don't think lot of people is going to write code like that.
And if you are about to suggest this:
alias S = staticArray;
Well, do you like to see aliases in your code?
Bye,
bearophile
More information about the Digitalmars-d
mailing list