Returning variable-sized stack data
ryuukk_
ryuukk.dev at gmail.com
Mon Aug 12 17:42:11 UTC 2024
On Monday, 12 August 2024 at 10:37:21 UTC, Quirin Schroll wrote:
> 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);
> ```
`new` = GC heap allocation
So it doesn't make sense to read that line
A value is a value, no `new` keyword, please, besides, in my
custom runtime, there is no `class`, no `new`, no `GC` and more
importantly, no `TypeInfo`
> With the same guarantees of allocation elision as `scope xs = [
> 1, 2, 3 ];`?
D's biggest mistake was to make this GC allocated without
requiring `new`
I hope this gets fixed with an Edition, because it is cringe
More information about the dip.ideas
mailing list