Elixir release

0.13.0

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

39 changes

Tool: Elixir Module: Base

Add Base module which does conversions to bases 16, 32, hex32, 64 and url64

Tool: Elixir Module: Code

Add Code.eval_file/2

Tool: Elixir Module: Collectable

Add the Collectable protocol that empowers Enum.into/2 and Stream.into/2 and the :into option in comprehensions

Tool: Elixir Module: Collectable

Implement Collectable for lists, dicts, bitstrings, functions and provide both File.Stream and IO.Stream

Tool: Elixir Module: EEx

Add handle_body/1 callback to EEx.Engine

Tool: Elixir Module: Enum

Add Enum.group_by/2, Enum.into/2, Enum.into/3, Enum.traverse/2 and Enum.sum/2

Tool: Elixir Module: ExUnit

Randomize cases and tests suite runs, allow seed configuration and the --seed flag via mix test

Tool: Elixir Module: ExUnit

Support --only for filtering when running tests with mix test

Tool: Elixir Module: ExUnit

Raise an error if another capture_io process already captured the device

Tool: Elixir Module: ExUnit

Improve formatter to show source code and rely on lhs and rhs (instead of expected and actual)

Tool: Elixir Module: IEx

Allow prompt configuration with the :prompt option

Tool: Elixir Module: IEx

Use werl on Windows

Tool: Elixir Module: Kernel

Support ERL_PATH in bin/elixir

Tool: Elixir Module: Kernel

Support interpolation in keyword syntax

Tool: Elixir Module: Map

Add a Map module and support 17.0 maps and structs

Tool: Elixir Module: Mix

Add dependency option :only to specify the dependency environment. mix deps.get and mix deps.update works accross all environment unless --only is specified

Tool: Elixir Module: Mix

Add Mix.Shell.prompt/1

Tool: Elixir Module: Mix

Ensure the project is compiled in case Mix' CLI cannot find a task

Tool: Elixir Module: Node

Add Node.ping/1

Tool: Elixir Module: Process

Include Process.send/3 and support the --gen-debug option

Tool: Elixir Module: Regex

Regexes no longer need the "g" option when there is a need to use named captures

Tool: Elixir Module: Stream

Add Stream.into/2 and Stream.into/3

Tool: Elixir Module: StringIO

Add a StringIO module that allows a String to be used as IO device

Tool: Elixir Module: System

Add System.delete_env/1 to remove a variable from the environment

Tool: Elixir Module: CLI

Ensure --app is handled as an atom before processing

Tool: Elixir Module: ExUnit

Ensure ExUnit.Assertions does not emit compiler warnings for assert_receive

Tool: Elixir Module: Kernel

Ensure the same pid is not queued twice in the parallel compiler

Tool: Elixir Module: Macro

Macro.to_string/2 considers proper precedence when translating !(foo > bar) into a string

Tool: Elixir Module: Mix

Automatically recompile on outdated Elixir version and show proper error messages

Tool: Elixir Module: Mix

Ensure generated .app file includes core dependencies

Tool: Elixir Module: Mix

Allow a dependency with no SCM to be overridden

Tool: Elixir Module: Mix

Allow queries in mix local.install URL

Tool: Elixir Module: OptionParser

Do not recognize undefined aliases as switches

Tool: Elixir Module: Dict

Dict.empty/1, Dict.new/1 and Dict.new/2 are deprecated

Tool: Elixir Module: Exception

Exception.normalize/1 is deprecated in favor of Exception.normalize/2

Tool: Elixir Module: Kernel

lc and bc comprehensions are deprecated in favor of for (this is a soft deprecation, no warning will be emitted)

Tool: Elixir Module: ListDict

ListDict is deprecated in favor of Map (this is a soft deprecation, no warning will be emitted)

Tool: Elixir Module: Record

defrecord/2, defrecordp/3, is_record/1 and is_record/2 macros in Kernel are deprecated. Instead, use the new macros and API defined in the Record module (this is a soft deprecation, no warnings will be emitted)

Tool: Elixir Module: ExUnit

Formatters are now required to be a GenEvent and ExUnit.run/2 returns a map with results