v0.10.0
Pre-release
Pre-release
Enhancements
- [ExUnit] Support
trace: true
option which gives detailed reporting on test runs - [HashDict] Optimize
HashDict
to store pairs in a cons cell reducing storage per key by half - [Kernel] Add pretty printing support for inspect
- [Kernel] Add document algebra library used as the foundation for pretty printing
- [Kernel] Add
defrecordp/3
that enables specifying the first element of the tuple - [Kernel] Add the
Set
API and a hash based implementation viaHashSet
- [Kernel] Add
Stream
as composable, lazy-enumerables - [Mix]
mix archive
now includes the version of the generated archive - [Mix] Mix now requires explicit dependency overriding to be given with
override: true
- [Mix] Projects can now define an
:elixir
key to outline supported Elixir versions - [Typespec] Improve error messages to contain file, line and the typespec itself
Bug fix
- [CLI] Elixir can now run on Unix directories with
:
in its path - [Kernel]
match?/2
does not leak variables to outer scope - [Kernel] Keep
head|tail
format when splicing at the tail - [Kernel] Ensure variables defined in the module body are not passed to callbacks
- [Mix] On dependencies conflict, show from where each source is coming from
- [Mix] Empty projects no longer leave empty ebin files on
mix compile
- [Module] Calling
Module.register_attribute/3
no longer automatically changes it to persisted or accumulated
Deprecations
- [Enum] Receiving the index of iteration in
Enum.map/2
andEnum.each/2
is deprecated in favor ofStream.with_index/1
- [File]
File.iterator/1
andFile.biniterator/1
are deprecated in favor ofIO.stream/1
andIO.binstream/1
- [File]
File.iterator!/2
andFile.biniterator!/2
are deprecated in favor ofFile.stream!/2
andFile.binstream!/2
- [Kernel] Deprecate recently added
quote binding: ...
in favor of the clearerquote bind_quoted: ...
- [Kernel] Deprecate
Kernel.float/1
in favor of a explicit conversion - [Mix] Deprecate
mix run EXPR
in favor ofmix run -e EXPR
- [Record]
Record.__index__/2
deprecated in favor ofRecord.__record__(:index, key)
Backwards incompatible changes
-
[Kernel] The
Binary.Inspect
protocol has been renamed toInspect
-
[Kernel] Tighten up the grammar rules regarding parentheses omission, previously the examples below would compile but now they raise an error message:
do_something 1, is_list [], 3 [1, is_atom :foo, 3]
-
[Module] Calling
Module.register_attribute/3
no longer automatically changes it to persisted or accumulated -
[Record] First element of a record via
defrecordp
is now thedefrecordp
name and no longer the current atom -
[URI] Remove custom URI parsers in favor of
URI.default_port/2