On Wednesday, 12 November 2014 at 12:57:58 UTC, Marc Schütz wrote:
On Wednesday, 12 November 2014 at 06:48:47 UTC, deadalnix wrote:
On Wednesday, 12 November 2014 at 03:13:20 UTC, Rikki Cattermole wrote:
[...]

yes and no. The ideas is similar, but it is not doable at library level if we want to get safety and the full benefit out of it, as it would require for the compiler to introduce some call to the runtime at strategic places and it does interact with @nogc.

I'm not sure. A library implementation may be feasible. For invalidation, the objects can be returned to their init state. This is "safe", but maybe not ideal, as a compiler error might indeed be better. Even implicit conversion to shared & immutable will be possible with multiple alias this, though it's worth discussing whether an explicit conversion isn't preferable.

As for @nogc, I see it as a clutch that's needed while no "real" solution is available, and as a tool for aiding transition once we have one.

That said, some compiler support will definitely be necessary.

I now remember that I played around with a related idea when Andrei suggested his template solution (but without the islands part):

http://wiki.dlang.org/User:Schuetzm/RC,_Owned_and_allocators

The important part is that owning, RC and GC types all need to know the allocators they belong to. In my example I need that to allow Owned types to be converted to RC types. In your proposal, something similar will ultimately be needed for merging the islands into specific heaps. The nice thing is that this scheme also allows for switching allocators on the fly at runtime, without template bloat, at the cost of virtual calls for using the allocators (which is probably an acceptable compromise for an inherently expensive thing like allocation).

Reply via email to