v0.12.3
Pre-release
Pre-release
Enhancements
- [Kernel] Warnings now are explicitly tagged with "warning:" in messages
- [Kernel] Explicit functions inlined by the compiler, including operators. This means that
Kernel.+/2
will now expand to:erlang.+/2
and so on - [Mix] Do not fail if a Mix dependency relies on an outdated Elixir version
- [Process] Add
Process.send/2
andProcess.send_after/3
- [Version] Add
Version.compare/2
Bug fixes
- [Atom] Inspect
:...
and:foo@bar
without quoting - [Keyword] The list
[1, 2, three: :four]
now correctly expands to[1, 2, {:three, :four}]
- [Kernel] Ensure undefined
@attributes
shows proper stacktrace in warnings - [Kernel] Guarantee nullary funs/macros are allowed in guards
- [Process] Ensure monitoring functions are inlined by the compiler
Deprecations
- [IEx] The helper
m/0
has been deprecated. The goal is to group all runtime statistic related helpers into a single module - [Kernel]
binary_to_term/1
,binary_to_term/2
,term_to_binary/1
andterm_to_binary/2
are deprecated in favor of their counterparts in the:erlang
module - [Kernel]
//
for default arguments is deprecated in favor of\\
. This is a soft deprecation, no warnings will be emitted for it in this release - [Kernel] Deprecated
@behavior
in favor of@behaviour
- [Record]
to_keywords
,getter
andlist getter
functionalities indefrecordp
are deprecated - [Record]
Record.import/2
is deprecated
Backwards incompatible changes
- [Dict] Implementations of
equal?/2
andmerge/2
inHashDict
andListDict
are no longer polymorphic. To get polymorphism, use the functions inDict
instead - [File]
File.cp/3
andFile.cp_r/3
no longer carry Unix semantics where the function behaves differently if the destination is an existing previous directory or not. It now always copies source to destination, doing it recursively in the latter - [IEx] IEx now loads the
.iex.exs
file instead of.iex
- [Kernel] Remove
**
from the list of allowed operators - [Kernel] Limit sigils delimiters to one of the following:
<>
,{}
,[]
,()
,||
,//
,"
and'
- [Range]
Range
is no longer a record, instead usefirst .. last
if you need pattern matching - [Set] Implementations of
difference/2
,disjoint?/2
,equal?/2
,intersection/2
,subset?/2
andunion/2
inHashSet
are no longer polymorphic. To get polymorphism, use the functions inSet
instead