On Wed, Jul 12, 2023, at 4:00 AM, G. P. B. wrote: > On Mon, 3 Jul 2023 at 01:11, Levi Morrison <morrison.l...@gmail.com> wrote: > >> Chatter on the [Interface Default Methods RFC][1] has been quiet for >> the past 6 days, and the feature freeze deadline is fast approaching >> for PHP 8.3, so I'm moving this to vote. It'll be open for two weeks >> as usual. >> >> Thanks to everyone who discussed weaknesses in the RFC during the >> discussion phase. >> >> [1]: https://wiki.php.net/rfc/interface-default-methods >> > > Although I like the idea, I think the main reason for the pushback is how > close this is being voted on before feature freeze when the RFC + > implementation was updated very recently before. > And personally I think, considering this, I would also delay implementing > this. > We have at least 2 other major RFCs that are being pushed back (Property > Hooks and Function autoloading) due to time constraints. > > Maybe it's time for a more meta discussion about the absurdly long release > process PHP has of releasing many intermediate versions that seem to get no > testing from userland. > > For everyone against this feature, I would urge you to understand the > distinction between "type classes" and Java-like "interfaces" (which is > effectively what PHP interfaces are). > A good article is the following one: > https://diogocastro.com/blog/2018/06/17/typeclasses-in-perspective/ > > I also find it baffling the lack of understanding around this feature. > Generic programming exists, and it operates on a level where a method can > have a "concrete" default representation and still represent the genericity > to its fullest. > Examples have already been given, such as the Comparable, Equatable, or > Iterator type classes. > Considering, Haskell, Rust, Scala, and modern PL theory sees no issue with > that, I struggle to understand the resistance here.
If I could play armchair shrink for a moment, I suspect a lot of people come from a background where "interface is just the behavior definition, not implementation" was drilled into them. Which... is the case in older Java when most of us went through school using older Java. So it's natural to think that is just a rule of how languages work, and so default methods in interfaces is just some weird nonsense from people who don't understand language theory because you didn't learn it in school. At least, I know that description applies to me, so I'm assuming it applies to at least some other folks around here. :-) Realizing "oh, wait, I was wrong about the theory of how things work" is uncomfortable, and hard for a lot of people. I was initially luke-warm on it for that reason. But seeing how many languages have adopted some form of default methods and lived to tell the tale is convincing for me that it actually is a viable "build up a class from separate pieces without having to manually write 50 proxy methods" solution. There may be smaller issues with it that need to be ironed out (enforcing methods being defined, it working better with interface properties, etc.), but the core idea seems to be sound. It's taken me a while to get used to going through that "oh wait, I was wrong" process, so at this point it's not an ego-hit. But that's not a process everyone has gone through. In short, I suspect at least much of the pushback is "that is weird and not normal, according to the normal I first learned, so it must be a bad idea," and people just stop there. (If you voted no and the above description doesn't apply to you, please do explain what your alternate reasoning is, because RFC authors desperately need more feedback than we get right now.) --Larry Garfield -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php