upvote
The top level arrays all are owned by a local variable. An array of arrays is just allocated to a single stack.
reply
I'm sorry if I'm being dense here but I can't see how that would work?

The spec on your GitHub says: "Two simultaneously-live resizable values never share a stack."

So I surely can't have a dynamic array of dynamic arrays share a single stack? That's an unbounded number of resizeable values sharing a stack?

You could make it work on a single stack but that would involve having non-contiguous memory for each inner array since you can add to any array in any order.

The spec implies that we need one stack per element of the outer dynamic array which would let you have contiguous memory for each inner array, but you wouldn't know how many stacks you needed at compile time.

reply
The language has different levels of solutions for the inner arrays being dynamic, for example a) only dynamic upon construction, b) fixed size, c) fixed size with cap, or d) allocated in a pool in a different array.

Depending on your needs you use one of these solutions.

reply