I'm feeling inspired by instaparse. I'm looking into ways to throw every trick in the book regardless of performance at getting something to type check. And then, the type checker can tell you which parts are just too slow or difficult and then suggest ways to fix it.
I think it would be really nice for prototyping. My hope is that a lot of type information can come from tests which can be used to check functions using inlining. and then use caching to minimize the amount of rechecking needed.
The first concrete step in this direction is to inline private def's so they don't need annotations. then deal with the consequences as best as possible. A lot of the problems are similar to dealing with macros, except inlining can easily lead to infinite expansions.