Generally, several well-known OOP design patterns would naturally lead to instability. In turn, those patterns can be handy to solve certain typical problems. If you have such a problem at hand, you have a choice: either do a well-known thing and embrace instability (which is actually not always all that harmful for performance), or get out of your way and torture your code to make it stable…
btw rust-miniscript is a nice example of a type stable parser :)
Rust is an interesting example, maybe I should look into the library. But the compilation model is very different from probably any JIT, including Julia. Optimizations too. For one, unions (enums) in Rust would have much less profound impact on possible optimizations and therefore performance.
Calling code would, of course, have to destructure the return. But destructures of a return value can be very efficient using match (jump tables internally where possible).
i don't care about the performance as much the correctness :)