v0.24.0: 6 October 2024
Highlights
- Local file code intelligence engine provided by
elixir_sense
library has been rewritten from scratch using new elixir 1.17Macro.Env
APIs. The new APIs has been backported to earlier elixir versions 1.13 - 1.16. The new engine expands and traverses elixir AST in a way that mirrors the elixir compiler behavior. As a result, ElixirLS is able to more accurately infer aliases/imports/requires, track variable/attribute definitions and usage, track calls, defined functions, modules and typespecs. It is now also able to expand some macros. All that information is used for completions, navigation to definition, finding references and other LSP operations requiring understanding of elixir code.
Limitations: The new engine does not expand local macros, and support for dynamically defined functions, modules, and typespecs (including those with unquote fragments) is partial.
Improvements
- vendored dialyxir updated to v1.4.4
- vendored jason updated to v1.4.4
- guard type inference is now smarter and better handle various guard expressions
Fixes
- fixed crash when analyzing types in guard with map
Breaking changes
- elixir 1.12 reached end of life and is no longer supported. ElixirLS will fail to start on versions lower than 1.13. Consider updating to 1.13+ or use v0.23
- Deprecated ez archives release mode is no longer supported. It never worked with elixir 1.16+