On Thursday, 13 November 2014 at 10:24:44 UTC, Marc Schütz wrote:
On Thursday, 13 November 2014 at 10:00:10 UTC, Ola Fosheim Grøstad wrote:
It is better solved using static analysis

You mean without additional hints by the programmer? That's not going to happen, realistically, for many reasons, separate compilation being one of them.

I think it can happen. D needs a new intermediate layer where you can do global flow analysis.

compile src -> ast -> partial evaluation -> high level IR -> disk

instantiate high level IR -> intermediate IR -> disk

global analysis over  intermediate IR

intermediate IR -> LLVM -> asm

Huh? That's exactly what _borrowing_ does. Ref-counting OTOH adds yet another reference type and thereby makes the situation worse.

I don't like explicit ref counting, but it is sometimes useful and I think Rust-style ownership is pretty close to unique_ptr which is ref-counting with a max count of 1… You can also view GC as being implicitly ref counted too (it is "counted" during collection).

What does "shared" tell the compiler?

I guess you mean "scope"?

:)

It tells it "retain no references after completion of this function". Like with "pure", it should be opposite. You should tell the compiler "I transfer ownership of this parameter". Then have a generic concept "owned" for parameters that is resolved using templates.

That's what deadalnix's proposal does. Though I don't quite see what templates have to do with it.

My understanding of Deadalnix' proposal is that "owned" objects can only reference other "owned" objects. I think region allocators do better if you start constraining relations by ownership.

For a new language built from scratch, this might make sense. D is already existing, and needs to work with what it has.

D need to appropriate what C++ has and do it better. Basically it means integrating GC pointers with unique_ptr and shared_ptr.

If D is going to be stuck on what it has and "fix" it with addig crutches it will go nowhere, and C++ will start to look like a better option…

Reply via email to