Elixir release

0.12.3

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

23 changes

Tool: Elixir Module: Kernel

Warnings now are explicitly tagged with "warning:" in messages

Tool: Elixir Module: Kernel

Explicit functions inlined by the compiler, including operators. This means that Kernel.+/2 will now expand to :erlang.+/2 and so on

Tool: Elixir Module: Mix

Do not fail if a Mix dependency relies on an outdated Elixir version

Tool: Elixir Module: Process

Add Process.send/2 and Process.send_after/3

Tool: Elixir Module: Version

Add Version.compare/2

Tool: Elixir Module: Atom

Inspect :... and :foo@bar without quoting

Tool: Elixir Module: Keyword

The list [1, 2, three: :four] now correctly expands to [1, 2, {:three, :four}]

Tool: Elixir Module: Kernel

Ensure undefined @attributes shows proper stacktrace in warnings

Tool: Elixir Module: Kernel

Guarantee nullary funs/macros are allowed in guards

Tool: Elixir Module: Process

Ensure monitoring functions are inlined by the compiler

Tool: Elixir Module: IEx

The helper m/0 has been deprecated. The goal is to group all runtime statistic related helpers into a single module

Tool: Elixir Module: Kernel

binary_to_term/1, binary_to_term/2, term_to_binary/1 and term_to_binary/2 are deprecated in favor of their counterparts in the :erlang module

Tool: Elixir 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

Tool: Elixir Module: Kernel

Deprecated @behavior in favor of @behaviour

Tool: Elixir Module: Record

to_keywords, getter and list getter functionalities in defrecordp are deprecated

Tool: Elixir Module: Record

Record.import/2 is deprecated

Tool: Elixir Module: Dict

Implementations of equal?/2 and merge/2 in HashDict and ListDict are no longer polymorphic. To get polymorphism, use the functions in Dict instead

Tool: Elixir Module: File

File.cp/3 and File.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

Tool: Elixir Module: IEx

IEx now loads the .iex.exs file instead of .iex

Tool: Elixir Module: Kernel

Remove ** from the list of allowed operators

Tool: Elixir Module: Kernel

Limit sigils delimiters to one of the following: <>, {}, [], (), ||, //, " and '

Tool: Elixir Module: Range

Range is no longer a record, instead use first .. last if you need pattern matching

Tool: Elixir Module: Set

Implementations of difference/2, disjoint?/2, equal?/2, intersection/2, subset?/2 and union/2 in HashSet are no longer polymorphic. To get polymorphism, use the functions in Set instead