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`