1.6.0

Released on 2018-01-17

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Allow markers `/` and `|` to be used in a custom EEx engine
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add truncate to `Time`, `DateTime` and `NaiveDateTime` to facilitate microsecond precision pruning
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `format_string!/2` and `format_file!/2` for automatic code formatting
Type
enhancement
Tool
Elixir
Module
Code
Description
Support column annotations in quoted expressions with `columns: true` in `Code.string_to_quoted/2`
Type
enhancement
Tool
Elixir
Module
DynamicSupervisor
Description
Add `DynamicSupervisor` designed to manage children that are added and removed dynamically
Type
enhancement
Tool
Elixir
Module
Exception
Description
Make `Exception.blame/3` extensible by adding an optional `blame/2` callback to exceptions
Type
enhancement
Tool
Elixir
Module
Exception
Description
Improve the printing of guards on blamed exceptions
Type
enhancement
Tool
Elixir
Module
Enumerable
Description
Add `Enumerable.slice/1` and optimize many `Enum` operations with the new protocol. This allows data-structures with index-based random access to provide a non-linear implementation
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Show UTF-8 BOM on inspected strings
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
Add `:strict` and `:flex` breaks - this gives more control over the document fitting
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
Allow a group to inherit the parent group break
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
Add `force_unfit/1` and `next_break_fits/2` which give more control over document fitting
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
Add `collapse_lines/1` for collapsing multiple lines to a maximum value
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
Allow `nest/2` to be `:reset` or be set to the current `:cursor` position
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Prefix variables with V when emitting Erlang code. This improves the integration with tools such as Erlang code formatters and the GUI debugger
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on the use of `length(x) == 0` in guards
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn if `catch` comes before `rescue` in try
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn if heredoc is outdented compared to its closing quotes
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `defguard/1` and `defguardp/1` to make it easier to build guard-safe macros
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Add `compile/2`, `compile_to_path/3` and `require/2` which provide detailed information about warnings and errors
Type
enhancement
Tool
Elixir
Module
Kernel.SpecialForms
Description
Support the `uniq: true` flag in `for` comprehensions
Type
enhancement
Tool
Elixir
Module
Module
Description
Introduce `@deprecated` and `@since` attributes
Type
enhancement
Tool
Elixir
Module
List
Description
Rearrange equals and inserts for shorter diff scripts in `List.myers_difference/2`
Type
enhancement
Tool
Elixir
Module
Record
Description
Allow `:macros` and `:includes` to be given to `Record.extract/2`
Type
enhancement
Tool
Elixir
Module
Stream
Description
Add `Stream.intersperse/2`
Type
enhancement
Tool
Elixir
Module
String
Description
Update to Unicode 10
Type
enhancement
Tool
Elixir
Module
String
Description
Allow passing empty string `match` to `String.replace/4`
Type
enhancement
Tool
Elixir
Module
String
Description
Support context and language sensitive operations in `String.upcase/2` and `String.downcase/2`. Currently only the `:greek` context is supported
Type
enhancement
Tool
Elixir
Module
String
Description
Support `:ascii` conversion in `String.upcase/2` and `String.downcase/2`
Type
enhancement
Tool
Elixir
Module
Time
Description
Add `Time.add/3`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Assertions
Description
Perform inclusive checks in `assert_in_delta`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Callbacks
Description
Add `ExUnit.Callbacks.start_supervised!/2`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Case
Description
Generate a random seed per test based on the test suite seed
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Provide contextual autocompletion: `t Enum.` will autocomplete types, `b Enum` will autocomplete callbacks
Type
enhancement
Tool
IEx
Module
IEx.CLI
Description
Provide hints for developers when a bad host name is given to `--remsh`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Automatically include specs when showing documentation for functions/macros
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Improve formatting of behaviours and typespecs by using the formatter
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Allow pattern matching and guard expressions when on `IEx.break!`
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `:discard_threshold` to Logger to help with message queue overflow
Type
enhancement
Tool
Mix
Module
mix app.start
Description
Add `--preload-modules` to `mix app.start`
Type
enhancement
Tool
Mix
Module
mix archive.build
Description
Allow `mix archive.build` to bundle dot files via an option
Type
enhancement
Tool
Mix
Module
mix compile
Description
Define a behavior for Mix compiler tasks and return diagnostics from compiler tasks
Type
enhancement
Tool
Mix
Module
mix compile
Description
Track struct dependencies between files and recompile them only if the struct changes
Type
enhancement
Tool
Mix
Module
mix deps
Description
Support `:system_env` option when specifying dependencies
Type
enhancement
Tool
Mix
Module
mix format
Description
Add a `mix format` task that formats the given files (or the files specified in a `.formatter.exs` file)
Type
enhancement
Tool
Mix
Module
mix profile.eprof
Description
Add a new task for time-based profiling with eprof
Type
enhancement
Tool
Mix
Module
mix test
Description
Run all functions in a describe block by giving the `file:line` the describe block starts
Type
enhancement
Tool
Mix
Module
mix test
Description
Report the top N slowest tests with the `--slowest N` flag
Type
enhancement
Tool
Mix
Module
mix test
Description
Report the number of doctests and tests separately
Type
enhancement
Tool
Mix
Module
mix xref
Description
Support `--include-siblings` in reports for umbrella support
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `mix xref graph --format stats`
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `--only-nodes` and `--label` filters to mix xref graph
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `mix xref deprecated` that shows the callsite of deprecated functions
Type
bugfix
Tool
Elixir
Module
CLI
Description
Support path with spaces as argument to elixir.bat
Type
bugfix
Tool
Elixir
Module
Inspect
Description
Properly handle minus signal for non-decimal negative integers
Type
bugfix
Tool
Elixir
Module
Integer
Description
Do not raise on non-integer values in `is_odd`/`is_even`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Solve a precedence issue between `&` and `|`, such as `[&Foo.bar/1 | &Baz.bat/2]`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not load dynamic Elixir modules as `:in_memory` as this value is not officially supported by the code server. Instead, use an empty list, which is the same value used by Erlang.
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Validate variable struct name is atom when used in pattern matching
Type
bugfix
Tool
Elixir
Module
Kernel
Description
No longer generate documentation for `defdelegate` functions automatically to avoid overriding previously specified `@doc`
Type
bugfix
Tool
Elixir
Module
Macro
Description
Fix `Macro.to_string/2` for tuple calls, such as `alias Foo.{Bar, Baz}`
Type
bugfix
Tool
Elixir
Module
MapSet
Description
Return valid MapSet when unioning a legacy MapSet
Type
bugfix
Tool
Elixir
Module
Regex
Description
Return a leading empty space when splitting on empty pattern. This makes the `split` operation consistent with the other operations in the `Regex` module
Type
bugfix
Tool
Elixir
Module
Stream
Description
Ensure `Stream.chunk_while/4` does not emit more elements than necessary when halted
Type
bugfix
Tool
Elixir
Module
String
Description
Return a leading empty space when splitting on empty string. This makes the `split` operation consistent with the other operations in the `String` module
Type
bugfix
Tool
Elixir
Module
URI
Description
Preserve empty fragments in `URI.parse/1`
Type
bugfix
Tool
Mix
Module
mix app.start
Description
Improve the quality of reports if app fails to boot
Type
bugfix
Tool
Mix
Module
mix cmd
Description
Allow `mix cmd` to be invoked multiple times without marking it as executed
Type
bugfix
Tool
Mix
Module
mix deps
Description
Ensure optional dependencies in umbrella applications are loaded
Type
bugfix
Tool
Mix
Module
mix deps.update
Description
Ensure transitive new non-Hex dependencies are also fetched when a repo is updated
Type
bugfix
Tool
Mix
Module
mix xref
Description
Take compile dependencies with higher priority than runtime ones when building a graph
Type
bugfix
Tool
Mix
Module
mix xref
Description
Handle external files for xref callers and warnings
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Warn if `init/1` is not defined in `GenServer`. This brings GenServer closer to the implementation in OTP and aligns all behaviours to require the `init/1` callback
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
`surround/3` and `surround_many/6` are deprecated in favor of `container_doc/6`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Specifying map types with variable keys without defining the type as required/optional is deprecated
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
`files/2` and `files_to_path/3` are deprecated in favor of `compile/2` and `compile_to_path/3`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelRequire
Description
`files/2` is deprecated in favor of `Kernel.ParallelCompiler.require/2`
Type
enhancement
Tool
Elixir
Module
Supervisor
Description
The `:simple_one_for_one` strategy is deprecated in favor of `DynamicSupervisor`
Type
enhancement
Tool
Elixir
Module
Supervisor
Description
Passing a list of args to `Supervisor.start_child/2` is deprecated in favor of `DynamicSupervisor`
Type
enhancement
Tool
Elixir
Module
Task.Supervisor
Description
Passing `:restart` and `:shutdown` to `Task.Supervisor.start_link/2` is deprecated (it should be passed on start child instead)
Type
enhancement
Tool
ExUnit
Module
ExUnit.Formatter
Description
`:case_started` and `:case_finished` events are deprecated in favor of `:module_started` and `:module_finished`
Type
enhancement
Tool
Mix
Module
Mix.Compilers.Erlang
Description
Returning `{:ok, val} | :error` from custom Erlang compilers is deprecated in favor of `{:ok, val, warnings} | {:error, errors, warnings}`
Type
enhancement
Tool
Elixir
Module
Enum
Description
`Enum.partition/2` is deprecated in favor of `Enum.split_with/2`
Type
enhancement
Tool
Elixir
Module
Keyword
Description
`Keyword.replace/3` is deprecated in favor of `Keyword.fetch/2` and `Keyword.put/3`
Type
enhancement
Tool
Elixir
Module
Map
Description
`Map.replace/3` is deprecated in favor of `Map.fetch/2` and `Map.put/3`
Type
enhancement
Tool
Elixir
Module
Macro
Description
`Macro.unescape_tokens/1` and `Macro.unescape_tokens/2` are deprecated in favor of `Enum.map/2`
Type
enhancement
Tool
Elixir
Module
Range
Description
Deprecate `Range.range?/1` in favor of pattern matching on `_ .. _`