3 ms·
>making it so every application and its dependencies have to be compiled twice in development: once for Mix and once for the Language Server. Wouldn’t it be nic
by high_na_euv 2y ago
>making it so every application and its dependencies have to be compiled twice in development: once for Mix and once for the Language Server. Wouldn’t it be nice if Elixir and the Language Servers could all rely on the same compilation artifacts?
>This is not news to the Elixir team either: almost every Elixir release within the last 3 years has shipped new code analysis APIs, such as Code.Fragment, with the goal of removing duplication across Language Servers, IEx, and Livebook, as well as reduce their reliance on internal Elixir modules. Most recently, Elixir v1.17 shipped with new APIs to help developers emulate the compiler behaviour.
It is crazy how many things MS/Roslyn team got right.
They were like decade ahead about their red-green trees, compiler as a service/library instead of .exe
Exposing compiler level things which enabled IDE makers or 3rd party ppl who wanted to create tools
https://ericlippert.com/2012/06/08/red-green-trees/ https://ericlippert.com/2012/06/08/red-green-trees/
https://github.com/rust-lang/rust-analyzer/blob/master/docs/dev/syntax.md https://github.com/rust-lang/rust-analyzer/blob/master/docs/...
https://stackoverflow.com/questions/8921782/what-are-the-benefits-of-using-roslyn-compiler-as-a-service https://stackoverflow.com/questions/8921782/what-are-the-ben...
- eclark 2y agoMicrosoft has learned a ton from Visual Studio, not just in the IDE teams but also in the language teams. The Server and Tools team contains the .net, c++, and Visual Studio teams in one division. That division is laser-focused on the sales of its products. Combined with a considerable amount of dogfooding, it has built a sizeable institutional knowledge base. There are so many intelligent people there who have been building code tools for so long that the hallway discussions are bound to include an expert who has tried to solve the problem before.