v0.13.3
Pre-release
Pre-release
Enhancements
- [OptionParser] Add
:strictoption that only parses known switches - [OptionParser] Add
next/2useful for manual parsing of options - [Macro] Add
Macro.prewalk/2/3andMacro.postwalk/2/3 - [Kernel]
GenEvent,GenServer,Supervisor,AgentandTaskmodules added - [Kernel] Make deprecations compiler warnings to avoid the same deprecation being printed multiple times
Bug fixes
- [Enum] Fix
Enum.join/2andEnum.map_join/3for empty binaries at the beginning of the collection - [ExUnit] Ensure the formatter doesn't error when printing :EXITs
- [Kernel] Rename
ELIXIR_ERL_OPTStoELIXIR_ERL_OPTIONSfor consistency withERL_COMPILER_OPTIONS - [OptionParser] Parse
-as a plain argument - [OptionParser]
--is always removed from argument list onparse/2and 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.Behaviouris deprecated in favor ofDict - [Kernel]
Application.Behaviour,GenEvent.Behaviour,GenServer.BehaviourandSupervisor.Behaviourare deprecated in favor ofApplication,GenEvent,GenServerandSupervisor - [Kernel]
defexception/3is deprecated in favor ofdefexception/1 - [Kernel]
raise/3is deprecated in favor ofreraise/2 - [Kernel]
set_elem/3is deprecated in favor ofput_elem/3
Soft deprecations for conversions (no warnings emitted)
- [Kernel]
atom_to_binary/1andatom_to_list/1are deprecated in favor ofAtom.to_string/1andAtom.to_char_list/1 - [Kernel]
bitstring_to_list/1andlist_to_bitstring/1are deprecated in favor of the:erlangones - [Kernel]
binary_to_atom/1,binary_to_existing_atom/1,binary_to_float/1,binary_to_integer/1andbinary_to_integer/2are 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/1andiodata_length/1are deprecatedIO.iodata_to_binary/1andIO.iodata_length/1 - [Kernel]
list_to_atom/1,list_to_existing_atom/1,list_to_float/1,list_to_integer/1,list_to_integer/2andlist_to_tuple/1are deprecated in favor of conversion functions inList - [Kernel]
tuple_to_list/1is deprecated in favor ofTuple.to_list/1 - [List]
List.from_char_data/1andList.from_char_data!/1deprecated in favor ofString.to_char_list/1 - [String]
String.from_char_data/1andString.from_char_data!/1deprecated in favor ofList.to_string/1
Deprecations
- [Kernel]
is_exception/1,is_record/1andis_record/2are deprecated in favor ofException.exception?1,Record.record?/1andRecord.record?/2 - [Kernel]
defrecord/3is deprecated in favor of structs - [Kernel]
:hygieneinquoteis deprecated - [Mix]
Mix.project/0is 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/2andProcess.self/0are 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