Query-Based Compiler Architectures
I have some negative feelings about this trend (of increased integration in compilers), but I can&#x27;t quite put my finger on the reason.<p>Before the language server idea came along all compilers were pure functions. Dependency management and caching were the responsibility of the build system. A flexible build system could handle things that the language designers haven&#x27;t though of, like code generation, mixed language projects, linking between different languages etc. Things are very composable and extendable and everything can be modeled as a DAG.<p>With language servers and incremental compilation becoming part of some long running compiler process the responsibilities are blurred, it all leads to increased integration, less flexibility and when things break, you will not be able to tell why.<p>Aren&#x27;t we giving up too much to get faster recommendations in IDEs?