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