Memory safety depends entirely on GC ?
deadalnix via Digitalmars-d
digitalmars-d at puremagic.com
Sun Feb 22 10:26:11 PST 2015
On Sunday, 22 February 2015 at 17:01:45 UTC, Andrei Alexandrescu
wrote:
> Consider
>
> class C { ... client code ... }
> alias T = RefCounted!C;
> ... more client code ...
>
> For reference counting to work transparently, access to the
> symbol "C" must be restricted. RefCounted obviously needs
> access to it. Client code should never have access to it, even
> in the definition of C.
>
What ??? That mean writing all library code twice, for client
that want GC and for these who don't. That is a looser strategy.
> That means:
>
> 1. client code must not be able to declare variables of type C
> or issue calls like "new C" etc.
>
> 2. The type of "this" in methods of C must be RefCounted!C, not
> C.
>
> 3. Conversions of C to bases of C and interfaces must be
> forbidden; only their RefCounted!Base versions must be allowed.
>
> 4. Returning references to direct members of C must be
> restricted the same way they are for structs (see
> http://wiki.dlang.org/DIP25). A GC class object does not have
> that restriction.
>
> I think reference counting is an important component of a
> complete solution to resource management. D should implement
> world-class reference counting for safe code.
>
Sounds like a world class RC would not force all the code to be
written twice.
> For 1-4 above, although I am a staunch supporter of
> library-exclusive abstractions, I have reached the conclusion
> there is no way to implement RC in safe code for D classes
> without changes to the language. The more we realize that as a
> community the quicker we can move to effect it.
>
I don't think we want to implement RC in the language, but
implement what would allow to have safe RC as library.
More information about the Digitalmars-d
mailing list