- [EEx.Engine] Support an
init/1
function in engines that will return the initial buffer (defaults to an empty string)
- [File] Support IO devices in
File.copy/3
- [Compiler] Emit a summary of compilation errors when modules are missing
- [Regex] Support
:include_captures
inRegex.split/3
- [ExUnit] Show pinned variables on failed
assert ^left = right
andassert match?(^left, right)
assertions
- [IEx.Autocomplete] Improve IEx expand to handle functions after
&
- [Logger] Introduce
Logger.reset_metadata/0,1
- [Application] Ensure
Application.spec/2
returns nil for unknown applications - [Inspect] Ensure binaries break into new lines when inspected
- [Kernel] Do not choke on capture operator with argument above
&191
- [Kernel] Raise if
defstruct
is called multiple times - [Macro] Fix
Macro.to_string/1
on a call of a capture argument, for example&(&1).(:x)
- [Mix] Improve task not found message when Mix would include the not found task as a suggestion due to different casing
This release deprecates many APIs that have been soft-deprecated in previous Elixir versions.
- [Dict]
Dict
is no longer a behaviour and its functions will be deprecated in upcoming releases - [Enum] Passing a non-map to
Enum.group_by/3
is deprecated - [Kernel]
\x{H*}
in strings/sigils/char lists is deprecated - [Kernel] Add deprecation for
defdelegate
list arguments and:append_first
option - [Keyword]
Keyword.size/1
is deprecated in favor ofKernel.length/1
- [Map]
Map.size/1
is deprecated in favor ofKernel.map_size/1
- [Regex] The option
/r
(for ungreedy) has been deprecated in favor of/U
- [Set]
Set
is no longer a behaviour and its functions will be deprecated in upcoming releases - [String]
String.valid_character?/1
is deprecated in favor ofString.valid?/1
with pattern matching - [Task]
Task.find/2
is deprecated in favor of explicit message matching - [URI] Passing a non-map to
URI.decode_query/3
is deprecated