1.2.0
Released on 2016-01-01
Changes
- Type
- enhancement
- Tool
- Elixir
- Module
- Application
- Description
- Add `spec/1` and `spec/2` to retrieve application specification
- Type
- enhancement
- Tool
- Elixir
- Module
- Application
- Description
- Add `get_application/1` to retrieve the application a given module belongs to
- Type
- enhancement
- Tool
- Elixir
- Module
- Base
- Description
- Optimize encode and decode operations about 10 times
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Use the faster and auto-seeding `:rand` instead of `:random` in `Enum.shuffle/1` and `Enum.random/1` and `Enum.take_random/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Add `Enum.with_index/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- GenServer
- Description
- Add `GenServer.stop/1` for shutting down servers reliably
- Type
- enhancement
- Tool
- Elixir
- Module
- IO
- Description
- Add `color` related functions to `IO.ANSI`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Support multiple aliases in `alias`, `import`, `require` and `use`. For example, `alias MyApp.{Foo, Bar, Baz}`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `struct!/2`. Similar to `struct/2` but raises on invalid keys
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if `@doc/@typedoc/@moduledoc` attributes are redefined
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if non-variables are used in `defdelegate/2` (as they have no effect)
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Mark quoted expressions as generated, avoiding false positives on dialyzer
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Allow variables as map keys on creation `%{key => value}` and on matches `%{^key => value}`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Allow the pin operator `^` in `fn` clauses and on the left side of `<-` in `for` comprehensions
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Introduce `with` as a special form that allows matching on right side parameters
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn when right hand side of `->` does not provide any expression
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if the Elixir was compiled with a different endianness than the one currently available at runtime
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if a variable is used after being defined exclusively in a nested context
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if piping into an expression without parentheses
- Type
- enhancement
- Tool
- Elixir
- Module
- Macro
- Description
- Add `Macro.traverse/4` that performs pre and post-walk at once
- Type
- enhancement
- Tool
- Elixir
- Module
- Macro
- Description
- Add `Macro.camelize/1` and `Macro.underscore/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Process
- Description
- Add `Process.get_keys/0`
- Type
- enhancement
- Tool
- Elixir
- Module
- Stream
- Description
- Add `Stream.with_index/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Introduce `String.replace_{prefix,suffix,leading,trailing}/2`. The first two will replace only the first occurrence of the given match in string. The last two will replace all occurrences of the given match
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Support `String.normalize/2` and `String.equivalent?/2` that perform NFD and NFC normalization
- Type
- enhancement
- Tool
- Elixir
- Module
- System
- Description
- Add `System.time_offset`, `System.monotonic_time`, `System.system_time`, `System.convert_time_unit` and `System.unique_integer`
- Type
- enhancement
- Tool
- Elixir
- Module
- System
- Description
- Allow `System.cmd/3` to remove variables by specifying nil values
- Type
- enhancement
- Tool
- Elixir
- Module
- Task
- Description
- Add `Task.Supervisor.async_nolink/1/3` that spawns a supervised task without linking to the caller process
- Type
- enhancement
- Tool
- Elixir
- Module
- Task
- Description
- Introduce `Task.yield_many/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Task
- Description
- Raise an error when a task is queried from a non-owning process (instead of waiting forever)
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Allow one test to raise multiple errors. The goal is to enable tools in the ecosystem to emit multiple failure reports from the same test
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Support `@tag report: [:foo, :bar]` which will include the values for tags `:foo` and `:bar` whenever a test fails
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Allow `IEX_WITH_WERL` to be set on Windows to always run on WERL mode
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Display type docs for `t(Module.type)` and `t(Module.type/arity)`
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Add `i/1` helper that prints information about any data type
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Show source code snippet whenever there is a request to pry a given process
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Add file to logger metadata
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Cache and always consolidate protocols
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Add `warn_test_pattern` to `mix test` that will warn on potentially misconfigured test files
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Introduce `MIX_QUIET` environment variable that configures the underlying Mix task to output only error messages
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Introduce `MIX_DEBUG` environment variable that prints information about the task being run
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Validate git options and warn on conflicting ref, branch or tags
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- New umbrella applications will now share configuration and build files
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Add experimental support for Rebar 3
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Do not warn when an optional dependency has a conflicting `:only` option with another dependency
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Raise readable error message when parsertools is not available
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- Add `--build` flag to `mix deps.clean DEP` to only remove artifacts from `_build`
- Type
- bugfix
- Tool
- Kernel
- Module
- Access
- Description
- Improve error messages when using Access on non-valid key-value structures
- Type
- bugfix
- Tool
- Kernel
- Module
- Kernel
- Description
- Raise when conflicting `:only` and `:except` are given to import
- Type
- bugfix
- Tool
- Kernel
- Module
- Kernel
- Description
- Change `__ENV__.file` if `@file` is set for the given function
- Type
- bugfix
- Tool
- Kernel
- Module
- Kernel
- Description
- Make `Kernel.ParallelRequire` aware of `:warning_as_errors`
- Type
- bugfix
- Tool
- Kernel
- Module
- Kernel
- Description
- Improve error message for invalid `do`/`do:`
- Type
- bugfix
- Tool
- Kernel
- Module
- Macro
- Description
- Ensure `Macro.to_string/2` respects operator precedence when using the access operator
- Type
- bugfix
- Tool
- Kernel
- Module
- Path
- Description
- Do not crash when expanding paths that go beyond the root, for example, `Path.expand("/../..")`
- Type
- bugfix
- Tool
- Kernel
- Module
- String
- Description
- Ensure `UnicodeConversionError` does not contain invalid string in its error message
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Do not start apps on `recompile` helper if `--no-start` was given
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Avoid copying of data when evaluating every expression in IEx
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Always run non-recursive tasks at the umbrella root
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Ensure rebar projects work on directory names that contain non-latin characters
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Ignore directories inside `apps` in umbrellas that do not have a `mix.exs` file
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Ensure Mix can be used with path dependencies where the app name is different than the path basename
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Ensure dependencies won't crash when updating from a git repository to a hex repository and the git version did not respect SemVer
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Do not run remote converger if dependencies have diverged
- Type
- bugfix
- Tool
- Mix
- Module
- Mix
- Description
- Ensure umbrella dependencies across all environments are loaded on parent deps.get/deps.update
- Type
- bugfix
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Include file and line in all compilation errors for doctests
- Type
- enhancement
- Tool
- Kernel
- Module
- Dict
- Description
- `Dict` and `HashDict` are soft deprecated in favor of `Map`
- Type
- enhancement
- Tool
- Kernel
- Module
- Keyword
- Description
- `Keyword.size/1` is deprecated in favor of `length/1`
- Type
- enhancement
- Tool
- Kernel
- Module
- Map
- Description
- `Map.size/1` is deprecated in favor of `map_size/1`
- Type
- enhancement
- Tool
- Kernel
- Module
- Set
- Description
- `Set` and `HashSet` are soft deprecated in favor of `MapSet`
- Type
- enhancement
- Tool
- Mix
- Module
- Mix
- Description
- `Mix.Utils.camelize/1` and `Mix.Utils.underscore/1` are soft deprecated in favor of `Macro.camelize/1` and `Macro.underscore/1`