On Sunday, 1 March 2015 at 15:28:56 UTC, Jakob Ovrum wrote:
On Sunday, 1 March 2015 at 01:40:40 UTC, Andrei Alexandrescu wrote:
We have a few candidates for solutions, but wanted to open with a good discussion first. So, how do you envision a way to define and access mutable metadata for objects (including immutable ones)?


Andrei

I don't think const or immutable intrusive-reference-counted classes is a feasible idea.

I understand the motivation: we want to dynamically allocate a class instance, initialize it and never mutate it again, and pass it around freely; *without* using tracing GC. Having it typed as immutable helps code readability and whatnot.

However, AFAICS, it comes with a serious problem. Immutable objects are freely passable between threads, so surely an immutable RC object would need atomic counting just like a shared RC object, but unlike shared, immutable does not necessarily express the intent of sharing between threads; the immutable RC object could easily be counting atomically for nothing.

Argh! I didn't think about this. Any chance we can deprecate this behaviour? It's also an obstacle for the implementation of thread-local heaps.


There might be other problems, such as problems regarding ROM.

Not if the RC wrapper allocated the memory in the first place. It knows that it can't be in ROM.

Reply via email to