On 10/29/21 8:49 PM, Stanislav Blinov wrote:
On Friday, 29 October 2021 at 21:00:48 UTC, Steven Schveighoffer wrote:
This is incorrect, the buckets are each heap allocated. Just the array
of bucket pointers would change.
In addition, AAs do not deallocate the key/value pairs ever. You are
safe to obtain a pointer to a value and it will stay there, even if
you remove the key.
Who's going to document these implementation details? ;) I mean, if no
one, then the above shouldn't be stated. Wouldn't you agree?
It should be documented. There isn't a valid way to remove these
requirements, even if they are currently just an implementation detail
-- code already depends on these properties. And D is a GC-based
language, especially when using AAs. There is no reason to introduce
undefined behavior for existing usage.
Given the premise of the question at hand, it does seem useful to know
these. But at least one should stress what is and isn't subject to
change (even if unlikely).
The whole AA documentation probably needs some attention.
-Steve