0.11.0

Released on 2013-11-02

Changes

Type
enhancement
Tool
Elixir
Module
Code
Description
Eval now returns variables from other contexts
Type
enhancement
Tool
Elixir
Module
Dict
Description
Document and enforce all dicts use the match operator (`===`) when checking for keys
Type
enhancement
Tool
Elixir
Module
Enum
Description
Add `Enum.slice/2` with a range
Type
enhancement
Tool
Elixir
Module
Enum
Description
Document and enforce `Enum.member?/2` to use the match operator (`===`)
Type
enhancement
Tool
Elixir
Module
IEx
Description
Split `IEx.Evaluator` from `IEx.Server` to allow custom evaluators
Type
enhancement
Tool
Elixir
Module
IEx
Description
Add support for `IEx.pry` which halts a given process for inspection
Type
enhancement
Tool
Elixir
Module
IO
Description
Add specs and allow some IO APIs to receive any data that implements `String.Chars`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Improve stacktraces on command line interfaces
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Sigils can now handle balanced tokens as in `%s(f(o)o)`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Emit warnings when an alias is not used
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.pipe/3` and `Macro.unpipe/1` for building pipelines
Type
enhancement
Tool
Elixir
Module
Mix
Description
Allow umbrella children to share dependencies between them
Type
enhancement
Tool
Elixir
Module
Mix
Description
Allow mix to be escriptize'd
Type
enhancement
Tool
Elixir
Module
Mix
Description
Speed mix projects compilation by relying on more manifests information
Type
enhancement
Tool
Elixir
Module
Protocol
Description
Protocols now provide `impl_for/1` and `impl_for!/1` functions which receive a structure and returns its respective implementation, otherwise returns nil or an error
Type
enhancement
Tool
Elixir
Module
Set
Description
Document and enforce all sets use the match operator (`===`) when checking for keys
Type
enhancement
Tool
Elixir
Module
String
Description
Update to Unicode 6.3.0
Type
enhancement
Tool
Elixir
Module
String
Description
Add `String.slice/2` with a range
Type
enhancement
Tool
Elixir
Module
Exception
Description
Ensure `defexception` fields can be set dynamically
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Guarantee aliases hygiene is respected when the current module name is not known upfront
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`Kernel.access/2` no longer flattens lists
Type
enhancement
Tool
Elixir
Module
Mix
Description
Ensure cyclic dependencies are properly handled
Type
enhancement
Tool
Elixir
Module
String
Description
Implement the extended grapheme cluster algorithm for `String` operations
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`pid_to_list/1`, `list_to_pid/1`, `binary_to_atom/2`, `binary_to_existing_atom/2` and `atom_to_binary/2` are deprecated in favor of their counterparts in the `:erlang` module
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`insert_elem/3` and `delete_elem/2` are deprecated in favor of `Tuple.insert_at/3` and `Tuple.delete_at/2`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Use of `in` inside matches (as in `x in [1,2,3] -> x`) is deprecated in favor of the guard syntax (`x when x in [1,2,3]`)
Type
enhancement
Tool
Elixir
Module
Macro
Description
`Macro.expand_all/2` is deprecated
Type
enhancement
Tool
Elixir
Module
Protocol
Description
`@only` and `@except` in protocols are now deprecated
Type
enhancement
Tool
Elixir
Module
Protocol
Description
Protocols no longer fallback to `Any` out of the box (this functionality needs to be explicitly enabled by setting `@fallback_to_any` to true)
Type
enhancement
Tool
Elixir
Module
String
Description
`String.to_integer/1` and `String.to_float/1` are deprecated in favor of `Integer.parse/1` and `Float.parse/1`
Type
enhancement
Tool
Elixir
Module
CLI
Description
Reading `.elixirrc` has been dropped in favor of setting env vars
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`Kernel.access/2` now expects the second argument to be a compile time list
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`fn -> end` quoted expression is no longer wrapped in a `do` keyword
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Quoted variables from the same module must be explicitly shared. Previously, if a function returned `quote do: a = 1`, another function from the same module could access it as `quote do: a`. This has been fixed and the variables must be explicitly shared with `var!(a, __MODULE__)`
Type
enhancement
Tool
Elixir
Module
Mix
Description
Umbrella apps now treat children apps as dependencies. This means all dependencies will be checked out in the umbrela `deps` directory. On upgrade, child apps need to point to the umbrella project by setting `deps_path: "../../deps_path", lockfile: "../../mix.lock"` in their project config
Type
enhancement
Tool
Elixir
Module
Process
Description
`Process.group_leader/2` args have been reversed so the "subject" comes first
Type
enhancement
Tool
Elixir
Module
Protocol
Description
Protocol no longer dispatches to `Number`, but to `Integer` and `Float`