Returning variable-sized stack data
Quirin Schroll
qs.il.paperinik at gmail.com
Mon Aug 12 10:37:21 UTC 2024
On Wednesday, 17 July 2024 at 08:23:45 UTC, IchorDev wrote:
> On Monday, 15 July 2024 at 17:20:57 UTC, monkyyy wrote:
>> I think you should also preemptively handle runtime stack
>> allocated arrays inside the function
>>
>> ```d
>> int[$] foo(size_t i){
>> int[i] output;
>> foreach(...){
>> ...
>> }
>> return output;
>> }
>> ```
>
> Oh yes, that would be fantastic!
> It'd be lowered to something like this, right?
> ```d
> int[] output = (cast(int*)alloca(i * int.sizeof))[0..i];
> ```
Why not this:
```d
scope xs = new int[](n);
```
With the same guarantees of allocation elision as `scope xs = [
1, 2, 3 ];`?
More information about the dip.ideas
mailing list