Skip to content

Releases: elixir-lsp/elixir-ls

ElixirLS 0.31.1

10 Jun 22:14

Choose a tag to compare

v0.31.1: 11 June 2026

Fixes

  • Fixed regression in installer script on elixir 1.16 - 1.18 Kevin Mathew

ElixirLS 0.31.0

09 Jun 15:12

Choose a tag to compare

v0.31.0: 9 June 2026

Highlights

  • Added support for Elixir 1.20 (and OTP 29 on 1.20)

Improvements

  • Completion subsystem ported wholesale onto the 1.20 engine with more accurate block keyword (do, else, rescue, catch, after, end) completions
  • Go to definition now resolves functions and macros defined inside __using__ macros Paweł Świątkowski
  • Added OTP 28 nominal types support
  • Code.ensure_compiled calls eradicated from the codebase and from elixir_sense module store building, reducing compilation-related hangs and improving startup performance Steve Cohen
  • Ecto query completion now includes bindings from join associations
  • required is preserved in typespec suggestions

Fixes

  • Fixed call hierarchy ranges for calls in the current file
  • Match arity when naming call hierarchy items
  • Parse Erlang module names in call hierarchy
  • Only rewrite the diagnostic module's call in the "replace remote function" code action
  • Fixed struct field completion in record update syntax
  • Fixed keyword option completion text edit position
  • Guard against unknown association in Ecto query completion
  • Pass binding to scope resolution for route action completion
  • Do not get stuck when build is skipped on cwd change
  • Do not transfer nil PLT after failed dialyzer analysis
  • Fixed whitespace regex in function_def_on_line?
  • Do not treat # inside literals as a trailing comment
  • Fixed path_in_dir? for filesystem root
  • Handle error responses to server-initiated requests
  • Fixed mise shell detection when using nushell Bryan Iotti
  • Debug adapter: fixed off-by-one in hit count breakpoints
  • Debug adapter: plain breakpoints no longer consume conditional breakpoint slots
  • Debug adapter: fixed breakpoint condition unregister on removal
  • Debug adapter: fixed off-by-one in stackTrace levels paging
  • Debug adapter: fixed inverted singleThread handling in continue/step
  • MCP: fixed invalid response to the initialized notification
  • MCP: fixed location key for file:line:column in get_environment
  • Do not overwrite target dir on release

Breaking changes

  • Elixir 1.15 reached end of life and is no longer supported. Consider updating to 1.16+
  • OTP versions below 26 are no longer supported. Consider updating to OTP 26+
  • Legacy dialyzer support dropped — OTP's incremental Dialyzer is now the only engine, so the elixirLS.incrementalDialyzer setting has been removed

ElixirLS 0.30.0

17 Nov 13:54

Choose a tag to compare

v0.30.0: 17 November 2025

Highlights

  • Added support for elixir 1.19 (and OTP 28 on 1.19)

Improvements

  • Code.ensure_compiled calls removed from the codebase. There should be less hangs related to compilation and code server congestion on elixir 1.18+
  • Mix installer fixes ported from upstream. This should resolve issue with too long paths on Windows
  • Added support for excludes in .formatter.exs
  • ElixirLS startup script now unsets MIX_OS_DEPS_COMPILE_PARTITION_COUNT as a workaround for mix polluting stdout and breaking JasonRPC communication
  • Added support for stream_data property tests in test tracer James E. A.
  • Added workaround for elixir crash when formatting test failure in debug adapter
  • Added support for elixir 1.19 not in token format
  • Ported upstream improvements to dbg macro support in debug adapter
  • Dialyxir dependency updated to 1.4.7

Fixes

  • Resolved infinite loop in fish shell launch script
  • Fixed crash in call hierarchy provider on anonymous calls

Breaking changes

  • elixir 1.14 reached end of life and is no longer supported. Consider updating to 1.15+

ElixirLS 0.29.3

21 Aug 06:45

Choose a tag to compare

v0.29.3: 20 August 2025

Fixes

  • Fixed crash in LLM docs tool
  • Removed Code.ensure_compiled calls as they often lead to locks

ElixirLS 0.29.2

07 Aug 08:29

Choose a tag to compare

v0.29.2: 07 August 2025

Improvements

  • MCP server disabled by default

Fixes

  • MCP bridge script now accepts port parameter
  • Rescue serialization errors

ElixirLS 0.29.1

05 Aug 12:39

Choose a tag to compare

v0.29.1: 5 August 2025

Improvements

  • Added config options for disabling MCP and setting MCP port

Fixes

  • Reverted release artefact name change
  • Fixed issue when the server would not start if MCP port was used
  • Fixed crash when reading docs fail
  • Normalize empty string in dotFormatter setting to nil
  • Fixed crashes on invalid multialias
  • Plugins that fail to compile are now skipped
  • Test code lens do not crash if unable to find scope
  • Suggest contract code lens do not crash if unable to translate erlang contract

ElixirLS 0.29.0

04 Aug 10:40

Choose a tag to compare

v0.29.0: 4 August 2025

Highlights

  • Added Call hierarchy provider implementing LSP textDocument/prepareCallHierarchy, callHierarchy/incomingCalls and callHierarchy/outgoingCalls
  • ElixirLS now bundles a number of experimental LLM oriented tools exposed as custom commands and a builtin MCP server. The tools focus on model friendly text interface instead of typical IDE oriented LSP API methods. Refer to README.md on how to connect to the MCP server. The tools include:
    • find_definition - Find and retrieve the source code of symbols.
    • get_environment - Retrieve environment at location with aliases, imports, requires and more.
    • get_docs - Aggregate and return comprehensive documentation
    • get_type_info - Extract typespecs and contracts.
    • find_implementations - Find all implementations of behaviours and protocols.
    • get_module_dependencies - Analyze module dependency relationships
  • Unofficial support for elixir 1.19

Improvements

  • Added option elixirLS.dotFormatter to specify path to custom .formatter.exs
  • Added elixir_check mode to launch script
  • Respect :* in locals_without_parens
  • Language Server Protocol implementation refactored to use typed structs from gen_lsp library by Mitchell Hanberg
  • Debug Adapter Protocol implementation refactored to use typed structs from gen_dap library by Łukasz Samson
  • Debug Adapter Protocol spec compliance - introduced error codes
  • Added support for includeDeclaration parameter in references provider
  • Improved * wildcard handling in debug adapter launch config

Fixes

  • Fixed crashes related to invalid iodata handling
  • Fixed unicode handling in refactoring functions
  • Fixed debug adapter crash when getting info on no longer alive processes
  • Forkaround Exception.blame crash
  • Fixed crash on invalid locals_without_parens
  • Fixed crash on invalid dialyzer settings
  • Fixed crash in markdown generation
  • Fixed crash during launch on deterministic elixir builds Sofie

Breaking changes

  • support for rtx in launch script dropped. Upgrade to mise

Release v0.28.0

24 May 10:49

Choose a tag to compare

v0.28.1: 24 May 2025

Fixes

  • Added missing CI permissions on release publish

v0.28.0: 24 May 2025

Highlights

  • Added support for OTP 28 on elixir 1.18.4
  • Support for go to definition and find references in multialias directives
  • ElixirLS will now try to autodetect path to elixir standard library Gilbert

Improvements

  • Documentation on struct and record field completion items
  • Added support for OTP 28 dialyzer options
  • Signature help now renders metadata entries
  • Improvements to references provider. It now can find references to aliases in current file

Release v0.27.2

24 Mar 20:11

Choose a tag to compare

v0.27.2: 24 March 2025

Fixes

  • Improved asdf v0.16+ handling in launch script. ElixirLS will no longer overwrite ASDF_* environment variables
  • Fixed selection ranges crash with empty do end blocks
  • Fixed declaration provider when multiple locations are returned
  • Avoid emitting events from debug adapter after disconnect request

Release v0.27.1

27 Feb 22:24

Choose a tag to compare

v0.27.1: 27 February 2025

Fixes

  • Fixed regression in legacy asdf handling