Elixir v1.20.0-rc.4 released

This release requires Erlang/OTP 27+ and is compatible with Erlang/OTP 29.

1. Enhancements

Elixir

  • [Code] Add :dbg_callback option to eval functions
  • [Code.Fragment] Allow preserving sigil metadata in container_cursor_to_quoted
  • [File] Add support for [:raw] opts in File.read/2
  • [Kernel] Show undefined function errors even when missing variables (this helps debug errors caused when the developer forgets to require a macro)
  • [Module] Purge and delete modules if after_verify/2 callback fails
  • [PartitionSupervisor] Support via tuples in count_children/1 and stop/3
  • [Process] Add Process.get_label/1

Mix

  • [mix deps] Allow overriding specific dependencies in :override

2. Bug fixes

Elixir

  • [Integer] Fix Integer.extended_gcd/2 returning negative GCD for zero base cases
  • [Integer] Raise when negative out-of-range digits are given to Integer.undigits/2
  • [Kernel] Protocols should not add compile-time dependencies on Any implementation
  • [Kernel] Ensure structs trigger recompilation for type checking purposes (regression)
  • [Kernel] Ensure type information propagate across hd/tl in guards (regression)
  • [Keyword] Raise ArgumentError in Keyword.from_keys/2 for non-atom keys
  • [URI] Fix URI.merge leaking :+ marker when base path is empty string

ExUnit

  • [ExUnit.Diff] Avoid false positives when diffing bitstrings

Mix

  • [mix deps] Use config files to pass project state to avoid argv limits on Windows when using MIX_OS_DEPS_COMPILE_PARTITION_COUNT
  • [mix compile] Fix compile env change triggering full recompilation of path dependencies
  • [mix compile] Add a build lock around protocol consolidation in umbrellas
  • [mix compile] Ensure compilation of sibling deps do not mark path deps as changed
  • [mix test] Fix --warnings-as-errors not catching misnamed test file warnings
26 Likes

Hi everyone, here is another release candidate with should improve performance and fix all regressions from the previous release candidates. It also bumps the minimum Erlang/OTP requirement to 27. Please give it a try and keep the feedback coming!

26 Likes

Add Process.get_label/1

:tada: One more piece of the puzzle to make using labels easy. Label all those processes for better debugging, folks!

10 Likes