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.+/2will now expand to:erlang.+/2and so on - [Mix] Do not fail if a Mix dependency relies on an outdated Elixir version
- [Process] Add
Process.send/2andProcess.send_after/3 - [Version] Add
Version.compare/2
Bug fixes
- [Atom] Inspect
:...and:foo@barwithout quoting - [Keyword] The list
[1, 2, three: :four]now correctly expands to[1, 2, {:three, :four}] - [Kernel] Ensure undefined
@attributesshows 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/0has 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/1andterm_to_binary/2are deprecated in favor of their counterparts in the:erlangmodule - [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
@behaviorin favor of@behaviour - [Record]
to_keywords,getterandlist getterfunctionalities indefrecordpare deprecated - [Record]
Record.import/2is deprecated
Backwards incompatible changes
- [Dict] Implementations of
equal?/2andmerge/2inHashDictandListDictare no longer polymorphic. To get polymorphism, use the functions inDictinstead - [File]
File.cp/3andFile.cp_r/3no 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.exsfile instead of.iex - [Kernel] Remove
**from the list of allowed operators - [Kernel] Limit sigils delimiters to one of the following:
<>,{},[],(),||,//,"and' - [Range]
Rangeis no longer a record, instead usefirst .. lastif you need pattern matching - [Set] Implementations of
difference/2,disjoint?/2,equal?/2,intersection/2,subset?/2andunion/2inHashSetare no longer polymorphic. To get polymorphism, use the functions inSetinstead