0.12.0

Released on 2013-12-15

Changes

Type
enhancement
Tool
Elixir
Module
Exception
Description
Allow `exception/1` to be overriden and promote it as the main mechanism to customize exceptions
Type
enhancement
Tool
Elixir
Module
File
Description
Add `File.stream_to!/3`
Type
enhancement
Tool
Elixir
Module
Float
Description
Add `Float.floor/1`, `Float.ceil/1` and `Float.round/3`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `List.delete_at/2` and `List.updated_at/3`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `Enum.reverse/2`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Implement `defmodule/2`, `@/1`, `def/2` and friends in Elixir itself. `case/2`, `try/2` and `receive/1` have been made special forms. `var!/1`, `var!/2` and `alias!/1` have also been implemented in Elixir and demoted from special forms
Type
enhancement
Tool
Elixir
Module
Record
Description
Support dynamic fields in `defrecordp`
Type
enhancement
Tool
Elixir
Module
Stream
Description
Add `Stream.resource/3`
Type
enhancement
Tool
Elixir
Module
Stream
Description
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` and `Stream.run/1`
Type
enhancement
Tool
Elixir
Module
Stream
Description
Support `Stream.take/2` and `Stream.drop/2` with negative counts
Type
enhancement
Tool
Elixir
Module
HashDict
Description
Ensure a `HashDict` stored in an attribute can be accessed via the attribute
Type
enhancement
Tool
Elixir
Module
Enum
Description
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
Type
enhancement
Tool
Elixir
Module
IEx
Description
Ensure `c/2` helper works with full paths
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`quote location: :keep` now only affects definitions in order to keep the proper trace in definition exceptions
Type
enhancement
Tool
Elixir
Module
Mix
Description
Also symlink `include` directories in _build dependencies
Type
enhancement
Tool
Elixir
Module
Version
Description
Fix `Version.match?/2` with `~>` and versions with alphanumeric build info (like `-dev`)
Type
enhancement
Tool
Elixir
Module
Enum
Description
`Enumerable.count/1` and `Enumerable.member?/2` should now return tagged tuples. Please see `Enumerable` docs for more info
Type
enhancement
Tool
Elixir
Module
Enum
Description
Deprecate `Enum.chunks/2`, `Enum.chunks/4` and `Enum.chunks_by/2` in favor of `Enum.chunk/2`, `Enum.chunk/4` and `Enum.chunk_by/2`
Type
enhancement
Tool
Elixir
Module
File
Description
`File.binstream!/3` is deprecated. Simply use `File.stream!/3` which is able to figure out if `stream` or `binstream` operations should be used
Type
enhancement
Tool
Elixir
Module
Macro
Description
`Macro.extract_args/1` is deprecated in favor of `Macro.decompose_call/1`
Type
enhancement
Tool
Elixir
Module
Enum
Description
Behaviour of `Enum.drop/2` and `Enum.take/2` has been switched when given negative counts
Type
enhancement
Tool
Elixir
Module
Enum
Description
Behaviour of `Enum.zip/2` has been changed to stop as soon as the first enumerable finishes
Type
enhancement
Tool
Elixir
Module
Enum
Description
`Enumerable.reduce/3` protocol has changed to support suspension. Please see `Enumerable` docs for more info
Type
enhancement
Tool
Elixir
Module
Mix
Description
Require `:escript_main_module` to be set before generating escripts
Type
enhancement
Tool
Elixir
Module
Range
Description
`Range.Iterator` protocol has changed in order to work with the new `Enumerable.reduce/3`. Please see `Range.Iterator` docs for more info
Type
enhancement
Tool
Elixir
Module
Stream
Description
The `Stream.Lazy` structure has changed to accumulate functions and accumulators as we go (its inspected representation has also changed)
Type
enhancement
Tool
Elixir
Module
Typespec
Description
`when` clauses were moved to the outer part of the spec and should be in the keywords format. So `add(a, b) when is_subtype(a, integer) and is_subtype(b, integer) :: integer` should now be written as `add(a, b) :: integer when a: integer, b: integer`