Member since
This is the best of all worlds. Other generic approaches have been tried and never got too far.
Bound-Erased Generics gives us a chance to get a first-party syntax that will make developers happy, allow tooling like IDEs and static analysers to pick up on it, while still leaving the implementation open for another kind of runtime/compile time generic implementation later down the line if the other possible issues with those are solved.
There are so many other, more elegant solutions to this problem that could solve it; multi-class-inheritance, traits-implementing-interfaces, etc. all to solve a problem I haven't really found myself running into more than once or twice in a number of years.
Callbacks are the bread-and-butter of any modern PHP developer, so being able to trim down the cruft to make code more consise and readable is a no-brain win.
I've long been a fan of the pipeline operator, it is such a minor syntax change that gets in the way of nothing, but allows for, in my opinion, a much cleaner and more readable set of procedural code where you can read naturally from top-to-bottom instead of middle-out.