Elixir release

0.13.3

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

34 changes

Tool: Elixir Module: OptionParser

Add :strict option that only parses known switches

Tool: Elixir Module: OptionParser

Add next/2 useful for manual parsing of options

Tool: Elixir Module: Macro

Add Macro.prewalk/2/3 and Macro.postwalk/2/3

Tool: Elixir Module: Kernel

GenEvent, GenServer, Supervisor, Agent and Task modules added

Tool: Elixir Module: Kernel

Make deprecations compiler warnings to avoid the same deprecation being printed multiple times

Tool: Elixir Module: Enum

Fix Enum.join/2 and Enum.map_join/3 for empty binaries at the beginning of the collection

Tool: Elixir Module: ExUnit

Ensure the formatter doesn't error when printing :EXITs

Tool: Elixir Module: Kernel

Rename ELIXIR_ERL_OPTS to ELIXIR_ERL_OPTIONS for consistency with ERL_COMPILER_OPTIONS

Tool: Elixir Module: OptionParser

Parse - as a plain argument

Tool: Elixir Module: OptionParser

-- is always removed from argument list on parse/2 and when it is the leading entry on parse_head/2

Tool: Elixir Module: Regex

Properly escape regex (previously regex controls were double escaped)

Tool: Elixir Module: Dict

Dict.Behaviour is deprecated in favor of Dict

Tool: Elixir Module: Kernel

Application.Behaviour, GenEvent.Behaviour, GenServer.Behaviour and Supervisor.Behaviour are deprecated in favor of Application, GenEvent, GenServer and Supervisor

Tool: Elixir Module: Kernel

defexception/3 is deprecated in favor of defexception/1

Tool: Elixir Module: Kernel

raise/3 is deprecated in favor of reraise/2

Tool: Elixir Module: Kernel

set_elem/3 is deprecated in favor of put_elem/3

Tool: Elixir Module: Kernel

atom_to_binary/1 and atom_to_list/1 are deprecated in favor of Atom.to_string/1 and Atom.to_char_list/1

Tool: Elixir Module: Kernel

bitstring_to_list/1 and list_to_bitstring/1 are deprecated in favor of the :erlang ones

Tool: Elixir Module: Kernel

binary_to_atom/1, binary_to_existing_atom/1, binary_to_float/1, binary_to_integer/1 and binary_to_integer/2 are deprecated in favor of conversion functions in String

Tool: Elixir Module: Kernel

float_to_binary/* and float_to_list/* are deprecated in favor of Float.to_string/* and Float.to_char_list/*

Tool: Elixir Module: Kernel

integer_to_binary/* and integer_to_list/* are deprecated in favor of Integer.to_string/* and Integer.to_char_list/*

Tool: Elixir Module: Kernel

iodata_to_binary/1 and iodata_length/1 are deprecated IO.iodata_to_binary/1 and IO.iodata_length/1

Tool: Elixir Module: Kernel

list_to_atom/1, list_to_existing_atom/1, list_to_float/1, list_to_integer/1, list_to_integer/2 and list_to_tuple/1 are deprecated in favor of conversion functions in List

Tool: Elixir Module: Kernel

tuple_to_list/1 is deprecated in favor of Tuple.to_list/1

Tool: Elixir Module: List

List.from_char_data/1 and List.from_char_data!/1 deprecated in favor of String.to_char_list/1

Tool: Elixir Module: String

String.from_char_data/1 and String.from_char_data!/1 deprecated in favor of List.to_string/1

Tool: Elixir Module: Kernel

is_exception/1, is_record/1 and is_record/2 are deprecated in favor of Exception.exception?1, Record.record?/1 and Record.record?/2

Tool: Elixir Module: Kernel

defrecord/3 is deprecated in favor of structs

Tool: Elixir Module: Kernel

:hygiene in quote is deprecated

Tool: Elixir Module: Mix

Mix.project/0 is deprecated in favor of Mix.Project.config/0

Tool: Elixir Module: Process

Process.spawn/1, Process.spawn/3, Process.spawn_link/1, Process.spawn_link/3, Process.spawn_monitor/1, Process.spawn_monitor/3, Process.send/2 and Process.self/0 are deprecated in favor of the ones in Kernel

Tool: Elixir Module: Exception

Exceptions now generate structs instead of records

Tool: Elixir Module: OptionParser

Errors on parsing returns the switch and value as binaries (unparsed)

Tool: Elixir Module: String

String.to_char_list/1 (previously deprecated) no longer returns a tuple but the char list only and raises in case of failure