Separate slices and dynamic arrays
    monkyyy 
    crazymonkyyy at gmail.com
       
    Wed Jul 31 23:07:14 UTC 2024
    
    
  
```d
int[3] foo;
int[] bar=foo[];
bar[1]=3;
assert(foo[1]==3);//works, bar is a reference to foo
bar~=5;//oh no
bar[2]=4;
assert(foo[2]==4);//failure, bar stopped being a reference to foo
```
slices are sometimes better pointer math or sometimes gc'ed 
managed memory. This is unsafe and lacks clear ownership.
So two parts:
Introduce `int[?]` as a dynamic array, it "owns" the memory and 
duplicates on assignment from slices.
Deprecate append to slices.
`auto bar=foo[];` would still be a slice
    
    
More information about the dip.ideas
mailing list