Hey all, Thanks for the feedback and the engagement on this RFC. I'll be withdrawing this RFC as it's clear that its drawbacks are too large for the benefits it does provide from internals' perspective. Essentially, I saw a very small and safe change that could be made to the engine that would instantly provide covariant parametric polymorphism, and I wanted to explore if it was an option. Instead, I'll probably take the feedback on this RFC and roll it into a much more comprehensive approach to that particular feature, perhaps centered around something like abstract interfaces or templates.
The engine-hook scenarios that this particular RFC would serve have other ways of being addressed, one of which I utilize in the operator overload RFC by forcing explicit typing and then providing no interfaces at all. I do not know if I'll try and approach the more comprehensive approach to LSP preserving covariant parametric polymorphism for 8.2, but it'll be something I work on here and there. If anyone else wants to pick that up sooner contact me directly and I'll hand over my research and work to date. In any case, thank you all for the feedback! Jordan