The runtime cost of type checking is highly dependent on the type system / meta-programming complexity of your language.
For simple languages (Golang?) with a pretty well designed module system: it should be doable to reach ~500KLOC/sec (probably even 1MLOC/s in some case) so more than enough for an interactive usage.
And for complex languages with meta-programming capabilities: they are indeed slow to type check.
But are also a giant pain in the butt to cache without side effects for incremental parsing. It is 2025 and clangd / intellisense still fail to do that reliably for C++ codebases that rely heavily on template usage.
So it does not seem a so-crazy approach to me: It is trading a complexity problem for a performance one.
The runtime cost of type checking is highly dependent on the type system / meta-programming complexity of your language.
For simple languages (Golang?) with a pretty well designed module system: it should be doable to reach ~500KLOC/sec (probably even 1MLOC/s in some case) so more than enough for an interactive usage.
And for complex languages with meta-programming capabilities: they are indeed slow to type check. But are also a giant pain in the butt to cache without side effects for incremental parsing. It is 2025 and clangd / intellisense still fail to do that reliably for C++ codebases that rely heavily on template usage.
So it does not seem a so-crazy approach to me: It is trading a complexity problem for a performance one.