v0.13.0
Pre-release
Pre-release
Enhancements
- [Base] Add
Base
module which does conversions to bases 16, 32, hex32, 64 and url64 - [Code] Add
Code.eval_file/2
- [Collectable] Add the
Collectable
protocol that empowersEnum.into/2
andStream.into/2
and the:into
option in comprehensions - [Collectable] Implement
Collectable
for lists, dicts, bitstrings, functions and provide bothFile.Stream
andIO.Stream
- [EEx] Add
handle_body/1
callback toEEx.Engine
- [Enum] Add
Enum.group_by/2
,Enum.into/2
,Enum.into/3
,Enum.traverse/2
andEnum.sum/2
- [ExUnit] Randomize cases and tests suite runs, allow seed configuration and the
--seed
flag viamix test
- [ExUnit] Support
--only
for filtering when running tests withmix test
- [ExUnit] Raise an error if another
capture_io
process already captured the device - [ExUnit] Improve formatter to show source code and rely on lhs and rhs (instead of expected and actual)
- [IEx] Allow prompt configuration with the
:prompt
option - [IEx] Use werl on Windows
- [Kernel] Support
ERL_PATH
inbin/elixir
- [Kernel] Support interpolation in keyword syntax
- [Map] Add a Map module and support 17.0 maps and structs
- [Mix] Add dependency option
:only
to specify the dependency environment.mix deps.get
andmix deps.update
works accross all environment unless--only
is specified - [Mix] Add
Mix.Shell.prompt/1
- [Mix] Ensure the project is compiled in case Mix' CLI cannot find a task
- [Node] Add
Node.ping/1
- [Process] Include
Process.send/3
and support the--gen-debug
option - [Regex] Regexes no longer need the "g" option when there is a need to use named captures
- [Stream] Add
Stream.into/2
andStream.into/3
- [StringIO] Add a
StringIO
module that allows a String to be used as IO device - [System] Add
System.delete_env/1
to remove a variable from the environment
Bug fixes
- [CLI] Ensure
--app
is handled as an atom before processing - [ExUnit] Ensure
ExUnit.Assertions
does not emit compiler warnings forassert_receive
- [Kernel] Ensure the same pid is not queued twice in the parallel compiler
- [Macro]
Macro.to_string/2
considers proper precedence when translating!(foo > bar)
into a string - [Mix] Automatically recompile on outdated Elixir version and show proper error messages
- [Mix] Ensure generated
.app
file includes core dependencies - [Mix] Allow a dependency with no SCM to be overridden
- [Mix] Allow queries in
mix local.install
URL - [OptionParser] Do not recognize undefined aliases as switches
Deprecations
- [Dict]
Dict.empty/1
,Dict.new/1
andDict.new/2
are deprecated - [Exception]
Exception.normalize/1
is deprecated in favor ofException.normalize/2
- [Kernel]
lc
andbc
comprehensions are deprecated in favor offor
(this is a soft deprecation, no warning will be emitted) - [ListDict]
ListDict
is deprecated in favor ofMap
(this is a soft deprecation, no warning will be emitted) - [Record]
defrecord/2
,defrecordp/3
,is_record/1
andis_record/2
macros in Kernel are deprecated. Instead, use the new macros and API defined in theRecord
module (this is a soft deprecation, no warnings will be emitted)
Backwards incompatible changes
- [ExUnit] Formatters are now required to be a GenEvent and
ExUnit.run/2
returns a map with results