Release D 2.094.0

Meta jared771 at gmail.com
Thu Oct 1 18:29:14 UTC 2020


On Thursday, 1 October 2020 at 17:29:56 UTC, Mathias LANG wrote:
> On Thursday, 1 October 2020 at 16:47:37 UTC, Meta wrote:
>>
>> This seems ridiculous to me. We now have ANOTHER way of asking 
>> the compiler to choose for us whether to pass by ref or by 
>> value, completely mutually exclusive of auto ref. Where was 
>> the DIP (apologies if I just didn't see it)? Did Walter 
>> approve this? How do we explain the difference between in and 
>> auto ref with (as Andrei would say) a straight face?
>
> Yes we have a 3rd way. Because `auto ref` just doesn't cut it 
> for most usages, and `-preview=rvaluerefparam` never worked.
>
> You can have a look at the full discussion in the PR that 
> introduced it (dmd#11000).
> I try to summarize a few arguments in favor of it here: 
> https://github.com/dlang/dmd/pull/11000#issuecomment-674498704
>
> As you can see from the discussion, it's not really something 
> that was quickly merged, but the results of months of work. So 
> while it might seems "ridiculous" to you, I'd appreciate if you 
> could take the time to read through the discussion, as well as 
> taking a look at Herb Sutter's presentation which was linked.
>
> The key takeaway from that presentation is that instead of 
> having the users specify *how* to pass the parameter, they 
> should specify what is the parameter's semantic. In our case, 
> input (in), output (out), or input/output (ref).
>
> I'm not aware of a situation where you want to use `auto ref` 
> on a parameter without `const` (or `const` semantic), because 
> if you intend to modify the parameter, you need to be sure 
> whether it's `ref` or not. I'm aware some people use it for 
> forwarding but this has its own set of problem.

I've read the discussion but skipped the presentation. All I see 
is Atila expressing distaste for the compiler choosing how to 
pass values, and no explicit sign-off from either Walter or Atila 
before it was merged.

My objection is not to `in`'s new behaviour (although having 
something that functions similarly to auto ref but in subtly 
different ways is not good language design, IMO). My objection is 
that we have a major change to a language feature, that was 
merged without the apparent blessing of either of the two people 
who are supposed to be the gatekeepers for these decisions, and 
without a DIP (yes, it is behind -preview, but that implies that 
this will eventually make it into the language proper). That is 
what I am calling "ridiculous". If W or A did approve it and I 
just wasn't aware, then I apologize and retract my objection.


More information about the Digitalmars-d-announce mailing list