Enhancement
37 changes
Eval now returns variables from other contexts
Document and enforce all dicts use the match operator (===) when checking for keys
Add Enum.slice/2 with a range
Document and enforce Enum.member?/2 to use the match operator (===)
Split IEx.Evaluator from IEx.Server to allow custom evaluators
Add support for IEx.pry which halts a given process for inspection
Add specs and allow some IO APIs to receive any data that implements String.Chars
Improve stacktraces on command line interfaces
Sigils can now handle balanced tokens as in %s(f(o)o)
Emit warnings when an alias is not used
Add Macro.pipe/3 and Macro.unpipe/1 for building pipelines
Allow umbrella children to share dependencies between them
Allow mix to be escriptize'd
Speed mix projects compilation by relying on more manifests information
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
Document and enforce all sets use the match operator (===) when checking for keys
Update to Unicode 6.3.0
Add String.slice/2 with a range
Ensure defexception fields can be set dynamically
Guarantee aliases hygiene is respected when the current module name is not known upfront
Kernel.access/2 no longer flattens lists
Ensure cyclic dependencies are properly handled
Implement the extended grapheme cluster algorithm for String operations
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
insert_elem/3 and delete_elem/2 are deprecated in favor of Tuple.insert_at/3 and Tuple.delete_at/2
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])
Macro.expand_all/2 is deprecated
@only and @except in protocols are now deprecated
Protocols no longer fallback to Any out of the box (this functionality needs to be explicitly enabled by setting @fallback_to_any to true)
String.to_integer/1 and String.to_float/1 are deprecated in favor of Integer.parse/1 and Float.parse/1
Reading .elixirrc has been dropped in favor of setting env vars
Kernel.access/2 now expects the second argument to be a compile time list
fn -> end quoted expression is no longer wrapped in a do keyword
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__)
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
Process.group_leader/2 args have been reversed so the "subject" comes first
Protocol no longer dispatches to Number, but to Integer and Float