- [EEx.Engine] Support an
init/1function in engines that will return the initial buffer (defaults to an empty string)
- [Compiler] Emit a summary of compilation errors when modules are missing
- [Exception] Suggest possible functions on
UndefinedFunctionErrorfor existing modules - [File] Support IO devices in
File.copy/3 - [Inspect] Support
:baseoption when inspecting binaries - [Kernel] Support
generated: truein quote - [Kernel] Support
Kernel.pop_in/1andKernel.pop_in/2for yanking a value from a nested data structure - [Kernel] Allow variable struct names when matching, for example,
%module{key: "value"} = struct - [Kernel] Allow guards on the left side of
<-inforandwithspecial forms - [Kernel] Support
elsechunks inwith - [Process] Add
Process.sleep/1 - [Regex] Support
:include_capturesinRegex.split/3
- [ExUnit] Show pinned variables on failed
assert ^left = rightandassert match?(^left, right)assertions - [ExUnit] Add
ExUnit.Case.register_attributewhich allow attributes to be cleaned up whenever a test is defined
- [IEx.Autocomplete] Improve IEx expand to handle functions after
&
- [Logger] Introduce
Logger.reset_metadata/0,1
- [Mix] Add
mix app.treeandmix deps.tree - [Mix] Support
@preferred_cli_envattribute when defining tasks - [Mix] Support
mix test --raisethat will raise when a test suite fails (instead of setting the exit code to 1)
- [Application] Ensure
Application.spec/2returns nil for unknown applications - [GenServer] Ensures
cast/2returns:okif locally registered process is not found - [Inspect] Ensure binaries break into new lines when inspected
- [Kernel] Do not choke on capture operator with argument above
&191 - [Kernel] Raise if
defstructis called multiple times - [Kernel] Ensure
Module.create/3respects var/alias hygiene - [Macro] Fix
Macro.to_string/1on 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]
Dictis no longer a behaviour and its functions will be deprecated in upcoming releases - [Enum] Passing a non-map to
Enum.group_by/3is deprecated - [Kernel]
\x{H*}in strings/sigils/char lists is deprecated - [Kernel] Add deprecation for
defdelegatelist arguments and:append_firstoption - [Kernel] Warn if a variable is assigned inside
case/if/etc and used outside the block - [Keyword]
Keyword.size/1is deprecated in favor ofKernel.length/1 - [Map]
Map.size/1is deprecated in favor ofKernel.map_size/1 - [Regex] The option
/r(for ungreedy) has been deprecated in favor of/U - [Set]
Setis no longer a behaviour and its functions will be deprecated in upcoming releases - [String]
String.valid_character?/1is deprecated in favor ofString.valid?/1with pattern matching - [Task]
Task.find/2is deprecated in favor of explicit message matching - [URI] Passing a non-map to
URI.decode_query/3is deprecated