1.9.0

Released on 2019-06-24

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Allow more complex mixed expressions when tokenizing
Type
enhancement
Tool
Elixir
Module
Access
Description
Allow `Access.at/1` to handle negative index
Type
enhancement
Tool
Elixir
Module
CLI
Description
Add support for `--boot`, `--boot-var`, `--erl-config`, `--pipe-to`, `--rpc-eval`, and `--vm-args` options
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `static_atom_encoder` option to `Code.string_to_quoted/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Support `:force_do_end_blocks` on `Code.format_string!/2` and `Code.format_file!/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Do not raise on deadlocks on `Code.ensure_compiled/1`
Type
enhancement
Tool
Elixir
Module
Config
Description
Add `Config`, `Config.Reader`, and `Config.Provider` modules for working with configuration
Type
enhancement
Tool
Elixir
Module
File
Description
Add `File.rename!/2`
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Add `:inspect_fun` and `:custom_options` to `Inspect.Opts`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `~U` sigil for UTC date times
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Optimize `&super/arity` and `&super(&1)`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Optimize generated code for `with` with a catch-all clause
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Validate `__struct__` key in map returned by `__struct__/0,1`
Type
enhancement
Tool
Elixir
Module
Module
Description
Add `Module.get_attribute/3`
Type
enhancement
Tool
Elixir
Module
Protocol
Description
Improve `Protocol.UndefinedError` messages to also include the type that was attempted to dispatch on
Type
enhancement
Tool
Elixir
Module
Protocol
Description
Optimize performance of dynamic dispatching for non-consolidated protocols
Type
enhancement
Tool
Elixir
Module
Record
Description
Include field names in generated type for records
Type
enhancement
Tool
Elixir
Module
Regex
Description
Automatically recompile regexes
Type
enhancement
Tool
Elixir
Module
Registry
Description
Add `Registry.select/2`
Type
enhancement
Tool
Elixir
Module
System
Description
Add `System.restart/0`, `System.pid/0` and `System.no_halt/1`
Type
enhancement
Tool
Elixir
Module
System
Description
Add `System.get_env/2`, `System.fetch_env/1`, and `System.fetch_env!/1`
Type
enhancement
Tool
Elixir
Module
System
Description
Support `SOURCE_DATE_EPOCH` for reproducible builds
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Allow multiple `:exclude` on configuration/CLI
Type
enhancement
Tool
ExUnit
Module
ExUnit.DocTest
Description
No longer wrap doctest errors in custom exceptions. They ended-up hiding more information than showing
Type
enhancement
Tool
ExUnit
Module
ExUnit.DocTest
Description
Display the actual doctest code when doctest fails
Type
enhancement
Tool
IEx
Module
IEx.CLI
Description
Copy ticktime from remote node on IEx `--remsh`
Type
enhancement
Tool
IEx
Module
IEx.CLI
Description
Automatically add a host on node given to `--remsh`
Type
enhancement
Tool
Logger
Module
Logger
Description
Use a decentralized mode computation for Logger which allows overloads to be detected more quickly
Type
enhancement
Tool
Logger
Module
Logger
Description
Use `persistent_term` to store configuration whenever available for performance
Type
enhancement
Tool
Mix
Module
Mix
Description
Follow XDG base dir specification in Mix for temporary and configuration files
Type
enhancement
Tool
Mix
Module
Mix.Generator
Description
Add `copy_file/3`, `copy_template/4`, and `overwite?/2`
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Add `preferred_cli_target` that works like `preferred_cli_env`
Type
enhancement
Tool
Mix
Module
mix archive.uninstall
Description
Allow `mix archive.uninstall APP` to uninstall any installed version of APP
Type
enhancement
Tool
Mix
Module
mix new
Description
No longer generate a `config/` directory for mix new
Type
enhancement
Tool
Mix
Module
mix release
Description
Add support for releases
Type
enhancement
Tool
Mix
Module
mix release.init
Description
Add templates for release configuration
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow running tests for a given umbrella app from the umbrella root with `mix test apps/APP/test`. Test failures also include the `apps/APP` prefix in the test location
Type
bugfix
Tool
EEx
Module
EEx
Description
Consistently trim newlines when you have a single EEx expression per line on multiple lines
Type
bugfix
Tool
Elixir
Module
Code
Description
Quote `::` in `Code.format_string!/1` to avoid ambiguity
Type
bugfix
Tool
Elixir
Module
Code
Description
Do not crash formatter on false positive sigils
Type
bugfix
Tool
Elixir
Module
Enum
Description
Ensure the first equal entry is returned by `Enum.min/2` and `Enum.max/2`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Improve error message when string interpolation is used in a guard
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Properly merge and handle docs for callbacks with multiple clauses
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Guarantee reproducible builds on modules with dozens of specs
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Resolve `__MODULE__` accordingly in nested `defmodule` to avoid double nesting
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Type variables starting with an underscore (`_foo`) should not raise compile error
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Keep order of elements when macro `in/2` is expanded with a literal list on the right-hand side
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Print proper location on undefined function error from dynamically generated functions
Type
bugfix
Tool
Elixir
Module
System
Description
Make sure `:init.get_status/0` is set to `{:started, :started}` once the system starts
Type
bugfix
Tool
Elixir
Module
Path
Description
Do not expand `~` in `Path.expand/2` when not followed by a path separator
Type
bugfix
Tool
Elixir
Module
Protocol
Description
Ensure `debug_info` is kept in protocols
Type
bugfix
Tool
Elixir
Module
Regex
Description
Ensure inspect returns valid `~r//` expressions when they are manually compiled with backslashes
Type
bugfix
Tool
Elixir
Module
Registry
Description
Fix ETS leak in `Registry.register/2` for already registered calls in unique registries while the process is still alive
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Raise error if attempting to run single line tests on multiple files
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Return proper error on duplicate child IDs on `start_supervised`
Type
bugfix
Tool
IEx
Module
IEx
Description
Automatically shut down IEx if we receive EOF
Type
bugfix
Tool
Logger
Module
Logger
Description
Don't discard Logger messages from other nodes as to leave a trail on both systems
Type
bugfix
Tool
Mix
Module
mix compile
Description
Ensure Erlang-based Mix compilers (erlang, leex, yecc) set valid position on diagnostics
Type
bugfix
Tool
Mix
Module
mix compile
Description
Ensure compilation halts in an umbrella project if one of the siblings fail to compile
Type
bugfix
Tool
Mix
Module
mix deps
Description
Raise an error if the umbrella app's dir name and `mix.exs` app name don't match
Type
bugfix
Tool
Mix
Module
mix deps.compile
Description
Fix subcommand splitting bug in rebar3
Type
bugfix
Tool
Mix
Module
mix test
Description
Do not consider modules that are no longer cover compiled when computing coverage report, which could lead to flawed reports
Type
enhancement
Tool
Mix
Module
Mix.Config
Description
`Mix.Config` has been deprecated in favor of the `Config` module that now ships as part of Elixir itself. Reading configuration files should now be done by the `Config.Reader` module
Type
enhancement
Tool
Elixir
Module
CLI
Description
Deprecate `--detached` option, use `--erl "-detached"` instead
Type
enhancement
Tool
Elixir
Module
Map
Description
Deprecate Enumerable keys in `Map.drop/2`, `Map.split/2`, and `Map.take/2`
Type
enhancement
Tool
Elixir
Module
String
Description
The `:insert_replaced` option in `String.replace/4` has been deprecated. Instead you may pass a function as a replacement or use `:binary.replace/4` if you need to support earlier Elixir versions
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Deprecate `Mix.Project.load_paths/1` in favor of `Mix.Project.compile_path/1`