On Friday, 28 February 2014 at 10:44:22 UTC, Dicebot wrote:
On Thursday, 27 February 2014 at 18:29:57 UTC, Szymon Gatner wrote:
I dig flexibility, I really do, and I appreciate D's features that enable that, but in case of such basic thing as a resource management, I just want things to work without surprises by default.

Resource management (including memory management) is on of most complicated areas in programming. I can call it anything but basic.

I didn't mean "basic" in the sense of "easy" but in the sense of something that has to dealt with all the time / is common requirement.

"Programs == Algorithms + Data structures" great man once said. D is pretty damn good at algorithms part, better than C++ thanks to ranges (zero cost composability codegen issues aside) but data strucutres... I wish I felt the same way about them.

Is it really so much to ask for? That child's finalizers are called before parent finalizer (assuming no circular refs, then again there are no weak class refst in D right)? Parent holds references to them for crying out loud... Why is that not the default and obvious behaviour? Is that a limitation imposed by GC somehow? My understanding is that GC has to scan from root to leaves so it knows the structure exactly anyway, why not just generate finalizer call list when traversing?

Reply via email to