1.7.0

Released on 2018-07-25

Changes

Type
enhancement
Tool
Elixir
Module
Calendar.ISO
Description
Support negative dates in `Calendar.ISO`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Calendar.months_in_year/1` callback
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.compile_file/2` that compiles files without leaving footprints on the system
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.purge_compiler_modules/0` that purges any compiler module left behind. This is useful for live systems dynamically compiling code
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.fetch_docs/1` that returns docs in the [EEP 48](http://erlang.org/eep/eeps/eep-0048.html) format
Type
enhancement
Tool
Elixir
Module
Date
Description
Add `Date.months_in_year/1` function
Type
enhancement
Tool
Elixir
Module
DynamicSupervisor
Description
Use the name of the `DynamicSupervisor` as the ID whenever possible
Type
enhancement
Tool
Elixir
Module
Exception
Description
Provide "did you mean" suggestions on KeyError
Type
enhancement
Tool
Elixir
Module
Exception
Description
Provide more information on ArithmeticError on Erlang/OTP 21+
Type
enhancement
Tool
Elixir
Module
Function
Description
Add `Function` module with `capture/3`, `info/1` and `info/2` functions
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Support the new `handle_continue/2` callback on Erlang/OTP 21+
Type
enhancement
Tool
Elixir
Module
IO.ANSI
Description
Add cursor movement to `IO.ANSI`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Support adding arbitrary documentation metadata by passing a keyword list to `@doc`, `@moduledoc` and `@typedoc`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Introduce `__STACKTRACE__` to retrieve the current stacktrace inside `catch`/`rescue` (this will be a requirement for Erlang/OTP 21+)
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Raise on unsafe variables in order to allow us to better track unused variables (also known as imperative assignment / variable leakage)
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn when using `length` to check if a list is not empty on guards
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add hints on mismatched `do`/`end` and others pairs
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn when comparing structs using the `>`, `<`, `>=` and `<=` operators
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on unsupported nested comparisons such as `x < y < z`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn if redefining documentation across clauses of the same definition
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on unnecessary quotes around atoms, keywords and calls
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.special_form?/2` and `Macro.operator?/2` that returns `true` if the given name/arity is a special form or operator respectively
Type
enhancement
Tool
Elixir
Module
Macro.Env
Description
Add `Macro.Env.vars/1` and `Macro.Env.has_var?/2` that gives access to environment data without accessing private fields
Type
enhancement
Tool
Elixir
Module
Regex
Description
Include endianness in the regex version. This allows regexes to be recompiled when an archive is installed in a system with a different endianness
Type
enhancement
Tool
Elixir
Module
Registry
Description
Add `Registry.count/1` and `Registry.count_match/4`
Type
enhancement
Tool
Elixir
Module
String
Description
Update to Unicode 11
Type
enhancement
Tool
Elixir
Module
StringIO
Description
Add `StringIO.open/3`
Type
enhancement
Tool
Elixir
Module
System
Description
Use ISO 8601 in `System.build_info/0`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Assertion
Description
Print the arguments in error reports when asserting on a function call. For example, if `assert is_list(arg)` fails, the argument will be shown in the report
Type
enhancement
Tool
ExUnit
Module
ExUnit.Diff
Description
Improve diffing of lists when one list is a subset of the other
Type
enhancement
Tool
ExUnit
Module
ExUnit.DocTest
Description
Show colored diffs on failed doctests
Type
enhancement
Tool
ExUnit
Module
ExUnit.Formatter
Description
Excluded tests, via the `--exclude` and `--only` flags, are now shown as "Excluded" in reports. Tests skipped via `@tag :skip` are now exclusively shown as "Skipped" and in yellow
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add `use_if_available/2`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Allow `force: true` option in `recompile/1`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add `:allocators` pane to `runtime_info/1`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Show documentation metadata in `h/1` helpers
Type
enhancement
Tool
Logger
Module
Logger
Description
Ensure nil metadata is always pruned
Type
enhancement
Tool
Logger
Module
Logger
Description
Only evaluate Logger macro arguments when the message will be logged
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `:compile_time_purge_matching` to purge logger calls that match certain compile time metadata, such as module names and application names
Type
enhancement
Tool
Logger
Module
Logger
Description
Log to `:stderr` if a backend fails and there are no other backends
Type
enhancement
Tool
Logger
Module
Logger
Description
Allow translators to return custom metadata
Type
enhancement
Tool
Logger
Module
Logger
Description
Return `:crash_reason`, `:initial_call` and `:registered_name` as metadata in crash reports coming from Erlang/OTP
Type
enhancement
Tool
Mix
Module
mix archive.install
Description
Add support for the Hex organization via `--organization`
Type
enhancement
Tool
Mix
Module
mix archive.uninstall
Description
Support `--force` flag
Type
enhancement
Tool
Mix
Module
mix compile
Description
Improve support for external build tools such as `rebar`
Type
enhancement
Tool
Mix
Module
mix deps
Description
Include `override: true` in rebar dependencies to make the behaviour closer to how rebar3 works (although diverged deps are still marked as diverged)
Type
enhancement
Tool
Mix
Module
mix escript.install
Description
Add support for the Hex organization via `--organization`
Type
enhancement
Tool
Mix
Module
mix escript.uninstall
Description
Support `--force` flag
Type
enhancement
Tool
Mix
Module
mix help
Description
Also list aliases
Type
enhancement
Tool
Mix
Module
mix local
Description
Use ipv6 with auto fallback to ipv4 when downloading data
Type
enhancement
Tool
Mix
Module
mix profile
Description
Allow all profiling tasks to run programatically
Type
enhancement
Tool
Mix
Module
mix test
Description
Add `--failed` option that only runs previously failed tests
Type
enhancement
Tool
Mix
Module
mix test
Description
Print coverage summary by default when the `--cover` flag is given
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Add `Mix.Project.clear_deps_cache/0`
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Add `Mix.Project.config_mtime/0` that caches the config mtime values to avoid filesystem access
Type
bugfix
Tool
Elixir
Module
IO.ANSI.Docs
Description
Fix table column alignment when converting docs to ANSI escapes
Type
bugfix
Tool
Elixir
Module
Code
Description
Ensure `string_to_quoted` returns error tuples instead of raising in certain constructs
Type
bugfix
Tool
Elixir
Module
Code.Formatter
Description
Consistently format keyword lists in function calls with and without parens
Type
bugfix
Tool
Elixir
Module
Code.Formatter
Description
Do not break after `->` when there are only comments and one-line clauses
Type
bugfix
Tool
Elixir
Module
File
Description
Allow the `:trim_bom` option to be used with `:encoding`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise on unsafe variables as some of the code emitted with unsafe variables would not correctly propagate variables or would disable tail call optimization semantics
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not crash on dynamic sizes in binary generators with collectable into in comprehensions
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not crash on literals with non-unary size in binary generators with collectable into in comprehensions
Type
bugfix
Tool
Elixir
Module
Task
Description
Improve error reports and exit reasons for failed tasks on Erlang/OTP 20+
Type
bugfix
Tool
ExUnit
Module
ExUnit.Case
Description
Raise proper error if `@tag` and `@moduletag` are used before `use ExUnit.Case`
Type
bugfix
Tool
ExUnit
Module
ExUnit.Case
Description
Raise proper error if `@describetag` is used outside of `describe/2` blocks
Type
bugfix
Tool
ExUnit
Module
ExUnit.DocTest
Description
Emit proper assertion error on doctests with invalid UTF-8
Type
bugfix
Tool
Mix
Module
mix archive.install
Description
Fetch optional dependencies when installing an archive from Git/Hex
Type
bugfix
Tool
Mix
Module
mix compile
Description
Properly track config files in umbrella projects and recompile when any relevant umbrella configuration changes
Type
bugfix
Tool
Mix
Module
mix deps
Description
Ensure the same dependency from different SCMs are tagged as diverged when those SCMs are remote and non-remote
Type
bugfix
Tool
Mix
Module
mix deps
Description
Ensure we re-run dependency resolution when overriding a skipped dep in umbrella
Type
bugfix
Tool
Mix
Module
mix deps.compile
Description
Perform clean builds for dependencies on outdated locks to avoid old modules from affecting future compilation
Type
bugfix
Tool
Mix
Module
mix escript.install
Description
Fetch optional dependencies when installing an escript from Git/Hex
Type
enhancement
Tool
Elixir
Module
Code
Description
Deprecate `Code.load_file/2` in favor of `Code.compile_file/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Deprecate `Code.loaded_files/0` in favor of `Code.required_files/0`
Type
enhancement
Tool
Elixir
Module
Code
Description
Deprecate `Code.unload_files/1` in favor of `Code.unrequire_files/1`
Type
enhancement
Tool
Logger
Module
Logger
Description
`compile_time_purge_level` is deprecated in favor of `compile_time_purge_matching`
Type
enhancement
Tool
Elixir
Module
Code
Description
`Code.get_docs/2` is deprecated in favor of `Code.fetch_docs/1`
Type
enhancement
Tool
Elixir
Module
Enum
Description
`Enum.chunk/2/3/4` is deprecated in favor of `Enum.chunk_every/2/3/4` - notice `chunk_every` does not discard incomplete chunks by default
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Warn if `super` is used in any of the GenServer callbacks
Type
enhancement
Tool
Elixir
Module
Kernel
Description
`not left in right` is ambiguous and is deprecated in favor of `left not in right`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on confusing operator sequences, such as `1+++1` meaning `1 ++ +1` or `........` meaning `... .. ...`
Type
enhancement
Tool
Elixir
Module
OptionParser
Description
Deprecate dynamic option parser mode that depended on atoms to be previously loaded and therefore behaved inconsistently
Type
enhancement
Tool
Elixir
Module
Stream
Description
`Stream.chunk/2/3/4` is deprecated in favor of `Stream.chunk_every/2/3/4` - notice `chunk_every` does not discard incomplete chunks by default