On Sun, Sep 1, 2024, at 14:39, Rowan Tommins [IMSoP] wrote:
> On 29/08/2024 22:52, Bilge wrote:
> > On 24/08/2024 17:49, Bilge wrote:
> >>
> >> New RFC just dropped: https://wiki.php.net/rfc/default_expression.
> >> I
> >> think some of you might enjoy this one. Hit me with any feedback.
> >>
> > Now the dust has settled, I've updated the RFC to version 1.1. The
> > premise of the RFC is unchanged, but the proposal has been expanded
> > and a discussion section added to summarise the ~100 message thread to
> > capture the major concerns raised in a condensed format. I hope I've
> > done a good job of fairly and accurately representing your concerns,
> > but if not please correct me.
>
>
> As promised, I have written up a full explanation of the type safety
> issues here: https://wiki.php.net/rfc/default_expression/type_safety
>
> I have tried to write this as a neutral description of the problem and
> the possible approaches we could take, to be inserted directly into the
> current RFC, rather than as a counter-opinion or a narrative of who said
> what.
>
> I have included the 4 options which I believe are the only ones we have;
> it is then a matter of opinion which we think is best. For the record,
> my opinion remains that option 3 (limit to conditional expressions) is
> preferable, but I have assumed the RFC will continue to advocate for
> option 1 (allow any expression and assume problems will be rare).
>
> I hope I have explained it clearly enough this time to overcome the
> previous misunderstandings of where the issue lies.
>
> Regards,
>
> --
> Rowan Tommins
> [IMSoP]
>
Thank you Rowan,
I wasn't following the discussion closely and didn't realize this was the issue. Thank you
for taking the time to describe it.
For option 1:
Is manually copying the default also not type-safe? Is php a type-safe language? I think a lot of
the arguments I saw suggested that people don't review libraries and their implementations when
upgrading or installing them. This is just a shorthand for manually copy-pasting the default from
other code, and this argument really only makes sense to me if there are no reviews before
upgrading/using a library.
For option 3:
That being said, this is obviously playing with fire, and there will be people who (ab)use this and
get burned; especially if they don't do due-diligence before using libraries. Thus a
restriction may make a lot of sense; at least keeping it to the most obvious use cases should
prevent the worst case scenarios imagined in this thread.
Realistically, I think we should only consider option (1) or (3). Option (3) -- if it can be done --
is the more conservative approach, and we can observe how it is used. We can always relax the
feature in the future, based on feedback.
— Rob