The DIP Process
Olivier FAURE
couteaubleu at gmail.com
Fri Mar 1 00:27:23 UTC 2019
On Tuesday, 26 February 2019 at 22:16:09 UTC, Manu wrote:
> 4. Off the back of extensive discussion while trying to dig out
> details, while also being insulted, it was concluded that there
> are 2
> minor and self-contained issues.
We strongly disagree on this one.
Your opinion is, explicitly, that the only criticisms of the DIP
were about the lack of exception support and the "ref to implicit
cast" issue (your "bad choice of variable name"), and that the
DIP would have been accepted if not for them. You especially
insist on the "one word" part, and seem pretty confident that
this word completely changed the final result.
This is *not* what W&A have said. In that, they have said,
multiple times, that these problems were *symptoms* of the lack
of polish of the proposal, and that the DIP couldn't be accepted
until that lack of polish was corrected.
Notably, Andrei has said:
> So if we rejected the DIP, we didn't do so on account of one
> word that can be so easily changed; we did so on account of a
> DIP that as a whole failed to clarify what it purports to do
> (and equally importantly, to not do).
(https://forum.dlang.org/post/q2u429$1cmg$1@digitalmars.com)
in a post that you haven't answered.
Now, I agree with you that there were problems in the process,
and that the rejection rationale posted on Github was pretty
unhelpful, and just plain bad.
But that idea you have that "W&A stubbornly refuse to reconsider
their decision based on a few lines they misunderstood" is just
inaccurate.
> c. The second is that the formal review fell off the wagon on
> account of one variable name, and used that to build a large
> fantasy
> about what the text intended, which was in conflict to the
> heading
> *immediately above* (and the DIP title, and the brief, and
> plenty of
> points elsewhere)
> - Surely the reviewers must have found the conflict with
> the title
> immediately above odd, and perhaps might have considered seeking
> clarification rather than repeatedly insult me about it
During the whole process, you've insisted a lot that "we're
talking about r-values, so obviously [ref to cast of lvalue]
doesn't apply".
But there is no strict definition, as-is, of what is or isn't a
rvalue. In fact, Walter has said:
> That's why it's problematic to have a rule that rvalues can be
> implicitly converted, but not lvalues. There's not a hard line
> between lvalues and rvalues.
(https://forum.dlang.org/post/q2vr50$1lga$1@digitalmars.com)
The DIP as it stands doesn't address how to differentiate lvalues
from rvalues in cases like "symbol[expr]", "symbol.symbol",
"symbol.symbol[expr]", "cast(type)expr", etc.
Now, you might say (and have said in the past) "Well that's
obvious, you just need to do X, unless Y, in which case Z", but
the point is that all these considerations *need to be in the
proposal*.
As it is, the proposal doesn't have any negative space. That is,
it explains what the feature should look like, but it doesn't
define boundaries, where the feature is or isn't allowed to be
used.
Defining negative space is important because it's how you find
corner cases, cases where the correct behavior seems obvious, and
yet when you spell it out it turns out everyone disagrees on how
it should be handled.
Right now, the DIP doesn't address at all potential corner cases
like alias this, return ref, auto ref, refs in foreach, casts,
etc.
---
tl;dr: There were major problems in how W&A handled DIP 1016, but
saying it was rejected because of "a single world" is inacurate.
It had major structural problems that could not be fixed with a
few minor changes.
More information about the Digitalmars-d
mailing list