DIP 1021--Argument Ownership and Function Calls--Final Review

Olivier FAURE couteaubleu at gmail.com
Thu Sep 19 08:31:44 UTC 2019


On Thursday, 19 September 2019 at 02:59:22 UTC, Walter Bright 
wrote:
> On 9/16/2019 9:34 AM, Olivier FAURE wrote:
>> More importantly, I've already gone on at length about why 
>> Rust isn't directly comparable to D, and why this proposal in 
>> particular is very different from Rust's memory model, and as 
>> such needs a deeper analysis than "we'll do it like Rust".
>
> The point that matters here is the idea of having only one 
> mutable pointer to a memory object at a time, or having many 
> const pointers to a memory object. But not both.
>
> The details of how one achieves that can vary from language to 
> language, but I believe as long as that principle is followed, 
> it will be sound.

Leaving aside my other gripes with this DIP, I think that broader 
vision is debatable.

It's how Rust does it, but I would argue [1] that the Rust model 
is way too restrictive. Its cuts off a lot of designs that are 
provably safe, and it basically forces you to rework your design 
from the ground up, which is kind of a problem for a language 
with existing codebases.

Your solution to that problem is to have a @live function, with 
the idea that users can upgrade their code incrementally and 
avoid a complete refactor. I'm extremely skeptical that idea can 
work, because @live functions will make assumptions about the 
pointer graph passed to them (no duplicate mutable pointers) that 
non- at live functions calling them won't be obligated to uphold. So 
calling a @live function from a non- at live function won't be safe.

[1] 
https://gist.github.com/PoignardAzur/9896ddb17b9f6d6f3d0fa5e6fe1a7088


More information about the Digitalmars-d mailing list