v0.13.3
Pre-release
Pre-release
Enhancements
- [OptionParser] Add
:strict
option that only parses known switches - [OptionParser] Add
next/2
useful for manual parsing of options - [Macro] Add
Macro.prewalk/2/3
andMacro.postwalk/2/3
- [Kernel]
GenEvent
,GenServer
,Supervisor
,Agent
andTask
modules added - [Kernel] Make deprecations compiler warnings to avoid the same deprecation being printed multiple times
Bug fixes
- [Enum] Fix
Enum.join/2
andEnum.map_join/3
for empty binaries at the beginning of the collection - [ExUnit] Ensure the formatter doesn't error when printing :EXITs
- [Kernel] Rename
ELIXIR_ERL_OPTS
toELIXIR_ERL_OPTIONS
for consistency withERL_COMPILER_OPTIONS
- [OptionParser] Parse
-
as a plain argument - [OptionParser]
--
is always removed from argument list onparse/2
and when it is the leading entry onparse_head/2
- [Regex] Properly escape regex (previously regex controls were double escaped)
Soft deprecations (no warnings emitted)
- [Dict]
Dict.Behaviour
is deprecated in favor ofDict
- [Kernel]
Application.Behaviour
,GenEvent.Behaviour
,GenServer.Behaviour
andSupervisor.Behaviour
are deprecated in favor ofApplication
,GenEvent
,GenServer
andSupervisor
- [Kernel]
defexception/3
is deprecated in favor ofdefexception/1
- [Kernel]
raise/3
is deprecated in favor ofreraise/2
- [Kernel]
set_elem/3
is deprecated in favor ofput_elem/3
Soft deprecations for conversions (no warnings emitted)
- [Kernel]
atom_to_binary/1
andatom_to_list/1
are deprecated in favor ofAtom.to_string/1
andAtom.to_char_list/1
- [Kernel]
bitstring_to_list/1
andlist_to_bitstring/1
are deprecated in favor of the:erlang
ones - [Kernel]
binary_to_atom/1
,binary_to_existing_atom/1
,binary_to_float/1
,binary_to_integer/1
andbinary_to_integer/2
are deprecated in favor of conversion functions inString
- [Kernel]
float_to_binary/*
andfloat_to_list/*
are deprecated in favor ofFloat.to_string/*
andFloat.to_char_list/*
- [Kernel]
integer_to_binary/*
andinteger_to_list/*
are deprecated in favor ofInteger.to_string/*
andInteger.to_char_list/*
- [Kernel]
iodata_to_binary/1
andiodata_length/1
are deprecatedIO.iodata_to_binary/1
andIO.iodata_length/1
- [Kernel]
list_to_atom/1
,list_to_existing_atom/1
,list_to_float/1
,list_to_integer/1
,list_to_integer/2
andlist_to_tuple/1
are deprecated in favor of conversion functions inList
- [Kernel]
tuple_to_list/1
is deprecated in favor ofTuple.to_list/1
- [List]
List.from_char_data/1
andList.from_char_data!/1
deprecated in favor ofString.to_char_list/1
- [String]
String.from_char_data/1
andString.from_char_data!/1
deprecated in favor ofList.to_string/1
Deprecations
- [Kernel]
is_exception/1
,is_record/1
andis_record/2
are deprecated in favor ofException.exception?1
,Record.record?/1
andRecord.record?/2
- [Kernel]
defrecord/3
is deprecated in favor of structs - [Kernel]
:hygiene
inquote
is deprecated - [Mix]
Mix.project/0
is deprecated in favor ofMix.Project.config/0
- [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
andProcess.self/0
are deprecated in favor of the ones inKernel
Backwards incompatible changes
- [Exception] Exceptions now generate structs instead of records
- [OptionParser] Errors on parsing returns the switch and value as binaries (unparsed)
- [String]
String.to_char_list/1
(previously deprecated) no longer returns a tuple but the char list only and raises in case of failure