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`