More radical ideas about gc and reference counting
ponce via Digitalmars-d
digitalmars-d at puremagic.com
Sun May 11 04:42:35 PDT 2014
On Sunday, 11 May 2014 at 08:59:42 UTC, Walter Bright wrote:
>
> D also cannot be performance competitive with C++ if pervasive
> ARC is used and memory safety is retained. Rust is attempting
> to solve this problem by using 'borrowed' pointers, but this is
> unproven technology, see my reply to Manu about it.
I work in a C++ shop and as I see it, resource management is
becoming a solved problem:
- resource owners holds a std::unique_ptr<T> on them. Resource
release is taken care by C++ destructors normally. That means to
be exception-safe, each resource type must better have its class.
- resource users eventually "borrow" the resource by taking a raw
pointer out of the unique pointer. What Rust would do with
lifetimes here is ensure that the resource is still there since
move semantics seems pervasive in this language. In C++ we ensure
the resource holder outlive the users.
- std::shared_ptr is not needed with such constraints. This means
no cycles in the object graph. TBH I have yet to find a
dependency scheme that can't be done that way.
When I use D I can't help but think that releasing resources
feels more manual and error-prone ("oops that resource should
have been a struct not a class" and such traps).
I do not have huge concerns about D GC, but I would be glad to
have more support for owned pointers (ie. Unique!T in Phobos or
better). I have no idea how to make it safe ie. ensure the
resource outlive its users.
More information about the Digitalmars-d
mailing list