Earlier quoted context omitted.
I think you're ignoring the fact that there is lots of extra information available at runtime that isn't available from static analysis of languages even if they're very amenable to that, and that static analysis can actually give you worse information. For example a call site could be statically analysed to be bimoprhic, but then sometimes when you run it the second type is never actually used and the call site can…
> There is an implementation of the Ruby language called Rubinius that statically looks at the instance variables in a class that are visible in the source code, and optimises the objects for that many instance variables. If you start to set extra variables dynamically, and so upset this static analysis, performance drops by a half. You can implement an unsound static analysis for any language, and this in fact what…
That makes it sound like I implemented it - I didn't - I implemented the alternative mechanism which doesn't have the same problem.