v0.12.0
Pre-release
Pre-release
Enhancements
- [Exception] Allow
exception/1
to be overriden and promote it as the main mechanism to customize exceptions - [File] Add
File.stream_to!/3
- [Float] Add
Float.floor/1
,Float.ceil/1
andFloat.round/3
- [Kernel] Add
List.delete_at/2
andList.updated_at/3
- [Kernel] Add
Enum.reverse/2
- [Kernel] Implement
defmodule/2
,@/1
,def/2
and friends in Elixir itself.case/2
,try/2
andreceive/1
have been made special forms.var!/1
,var!/2
andalias!/1
have also been implemented in Elixir and demoted from special forms - [Record] Support dynamic fields in
defrecordp
- [Stream] Add
Stream.resource/3
- [Stream] Add
Stream.zip/2
,Stream.filter_map/3
,Stream.each/2
,Stream.take_every/2
,Stream.chunk/2
,Stream.chunk/3
,Stream.chunk/4
,Stream.chunk_by/2
,Stream.scan/2
,Stream.scan/3
,Stream.uniq/2
,Stream.after/2
andStream.run/1
- [Stream] Support
Stream.take/2
andStream.drop/2
with negative counts
Bug fixes
- [HashDict] Ensure a
HashDict
stored in an attribute can be accessed via the attribute - [Enum] Fix bug in
Enum.chunk/4
where you'd get an extra element when the enumerable was a multiple of the counter and a pad was given - [IEx] Ensure
c/2
helper works with full paths - [Kernel]
quote location: :keep
now only affects definitions in order to keep the proper trace in definition exceptions - [Mix] Also symlink
include
directories in _build dependencies - [Version] Fix
Version.match?/2
with~>
and versions with alphanumeric build info (like-dev
)
Deprecations
- [Enum]
Enumerable.count/1
andEnumerable.member?/2
should now return tagged tuples. Please seeEnumerable
docs for more info - [Enum] Deprecate
Enum.chunks/2
,Enum.chunks/4
andEnum.chunks_by/2
in favor ofEnum.chunk/2
,Enum.chunk/4
andEnum.chunk_by/2
- [File]
File.binstream!/3
is deprecated. Simply useFile.stream!/3
which is able to figure out ifstream
orbinstream
operations should be used - [Macro]
Macro.extract_args/1
is deprecated in favor ofMacro.decompose_call/1
Backwards incompatible changes
- [Enum] Behaviour of
Enum.drop/2
andEnum.take/2
has been switched when given negative counts - [Enum] Behaviour of
Enum.zip/2
has been changed to stop as soon as the first enumerable finishes - [Enum]
Enumerable.reduce/3
protocol has changed to support suspension. Please seeEnumerable
docs for more info - [Mix] Require
:escript_main_module
to be set before generating escripts - [Range]
Range.Iterator
protocol has changed in order to work with the newEnumerable.reduce/3
. Please seeRange.Iterator
docs for more info - [Stream] The
Stream.Lazy
structure has changed to accumulate functions and accumulators as we go (its inspected representation has also changed) - [Typespec]
when
clauses were moved to the outer part of the spec and should be in the keywords format. Soadd(a, b) when is_subtype(a, integer) and is_subtype(b, integer) :: integer
should now be written asadd(a, b) :: integer when a: integer, b: integer