Changelog for Elixir v1.21

Copy Markdown View Source

v1.21.0-dev

1. Enhancements

EEx

  • [EEx] Support splitting middle expressions across EEx clauses

Elixir

ExUnit

  • [ExUnit.Assertions] Add trace/3 helper

2. Bug fixes

Elixir

  • [Code.Fragment] Fix cursor completion when operator keywords such as in, when, and, or, and not follow another operator
  • [Date.Range] Fix slicing date ranges with stepped ranges
  • [Duration] Reject duplicate seconds in Duration.from_iso8601/1
  • [Enum] Fix Enum.min/2,3 and Enum.max/2,3 with custom sorters on ranges
  • [IO.ANSI.Docs] Recognize additional punctuation delimiters when rendering Markdown
  • [Kernel] Fix expansion of rebound variables in bitstring size expressions
  • [Kernel] Expand defguard macros separately in guard and body contexts, preserving and/or error semantics outside guards
  • [Kernel] Fix variables defined in one default argument leaking into subsequent default arguments
  • [Kernel.Typespec] Preserve metadata when proxying to Elixir typespecs
  • [Keyword] Delete duplicate keys when Keyword.get_and_update/3 and Keyword.get_and_update!/3 return :pop
  • [NaiveDateTime] Fix NaiveDateTime.diff/3 over-counting incomplete units
  • [Range] Fix Range.disjoint?/2 for single-element ranges with a negative step
  • [String] Return 1.0 from String.bag_distance/2 for two empty strings

ExUnit

  • [ExUnit.Assertions] Fix refute_in_delta/4 at the delta boundary and with negative deltas
  • [ExUnit.CaptureIO] Stop StringIO processes when capturing a named device fails

IEx

  • [IEx.Autocomplete] Fix completion crashes on maps with non-atom keys
  • [IEx.Evaluator] Recognize ** as a continuation operator
  • [IEx.Helpers] Fix r/1 when multiple modules are defined in the same file
  • [IEx.Helpers] Fix heap and stack memory calculations in process_info/1

Mix

  • [Mix.Release] Accept chardata paths in Mix.Release.make_boot_script/4
  • [Mix.SCM.Git] Raise if Git refspecs start with -
  • [mix deps] Recompile path and fetchable dependencies when one of the dependencies they were compiled with is removed
  • [mix deps] Mark fetchable dependencies for compilation when their build exists but their SCM manifest is missing
  • [mix deps.compile] Preserve code paths and compiler options across OS partitions

3. Hard deprecations

Elixir

  • [Macro.Env] Macro.Env.fetch_alias/2 and Macro.Env.fetch_macro_alias/2 are deprecated, use Macro.Env.expand_alias/4 instead

4. Soft deprecations

Elixir

v1.20

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