Changelog for Elixir v1.12

v1.12.0-dev

1. Enhancements

EEx

  • [EEx.Engine] Add EEx.Engine.handle_text/3 callback that receives text metadata
  • [EEx.Engine] Emit warnings for unused "do" expression in EEx

Elixir

ExUnit

  • [ExUnit] Intercept SIGQUIT and show a list of all aborted tests as well as intermediate test results

IEx

  • [IEx] Make IEx' parser configurable to allow special commands
  • [IEx] Show function signature when pressing tab after the opening parens of a function

Mix

  • [Mix] Support :exit_code option in Mix.raise/2
  • [Mix] Discard MIX_ENV and MIX_TARGET values if they are empty strings

2. Bug fixes

Elixir

  • [CLI] Ensure -e "" (with an empty string) parses correctly on Windows
  • [Kernel] Preserve CRLF on heredocs
  • [Kernel] Public functions without documentation now appear as an empty map on Code.fetch_docs/1, unless they start with underscore, where they remain as :none. This aligns Elixir's implementation with EEP48
  • [Kernel] Do not crash when complex literals (binaries and maps) are used in guards
  • [Macro] Macro.decompose_call/1 now also consider tuples with more than 2 elements to not be valid calls
  • [OptionParser] Properly parse when numbers follow-up aliases, for example, -ab3 is now parsed as -a -b 3
  • [Path] Fix Path.relative_to/2 when referencing self

IEx

  • [IEx] Fix auto-completion inside remote shells

Mix

  • [mix compile.elixir] Ensure that a manifest is generated even with no source code
  • [mix compile.elixir] Make sure export dependencies trigger recompilation when removed

3. Soft-deprecations (no warnings emitted)

4. Hard-deprecations

EEx

  • [EEx.Engine] use EEx.Engine is deprecated in favor of explicit delegation

Elixir

  • [Kernel] Deprecate @foo() in favor of @foo
  • [System] Deprecate System.stacktrace/0 (it was already deprecated outside of catch/rescue and now it is deprecated everywhere)

Mix

  • [mix compile] The :xref compiler is deprecated and it has no effect. Please remove it from your mix.exs file.

v1.11

The CHANGELOG for v1.11 releases can be found in the v1.11 branch.