1.11.0

Released on 2020-10-06

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Track column information in EEx templates when enabled in the compiler
Type
enhancement
Tool
EEx
Module
EEx
Description
Show column information in EEx error messages
Type
enhancement
Tool
EEx
Module
EEx
Description
Support `:indentation` option when compiling EEx templates for proper column tracking
Type
enhancement
Tool
Elixir
Module
Access
Description
Add `Access.at!/1`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Calendar.strftime/3` for datetime formatting
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add linear integer representations to Calendar modules: `Date.from_gregorian_days/2`, `Date.to_gregorian_days/1`, `NaiveDateTime.from_gregorian_seconds/3`, `NaiveDateTime.to_gregorian_seconds/1`, `Time.from_seconds_after_midnight/1`, and `Time.to_seconds_after_midnight/1`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `new!` to Date/Time/NaiveDateTime/DateTime (`new` has also been added to `DateTime` for completeness)
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Support custom starting day of the week in `Date.day_of_week/2`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Date.beginning_of_month/1` and `Date.end_of_month/1`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Date.beginning_of_week/2` and `Date.end_of_week/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `:column` to `Code.string_to_quoted*/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.can_await_module_compilation?/0` to check if the parallel compiler is enabled and it can await for other modules to be compiled
Type
enhancement
Tool
Elixir
Module
Config
Description
Support `config_env/0` and `config_target/0` in `config` files
Type
enhancement
Tool
Elixir
Module
Config
Description
Allow `import_config` to be disabled for some configuration files
Type
enhancement
Tool
Elixir
Module
Enum
Description
Allow a sorting function on `Enum.min_max_by/3,4`, including the new `compare/2` conventions
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `is_struct/2` guard
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `is_exception/1` and `is_exception/2` guards
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Support `map.field` syntax in guards
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `+++` and `---` with right associativity to the list of custom operators
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn if a variable that looks like a compiler variable (such as `__MODULE__`) is unused
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Report individual file compilation times when `profile: :time` is given
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Improve precision of `:long_compilation_threshold` so it takes only compilation times into account (and not waiting times)
Type
enhancement
Tool
Elixir
Module
Registry
Description
Add `Registry.delete_meta/2`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `Task.await_many/2`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add support for coloring on Windows 10 consoles/shells
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add `ExUnit.fetch_test_supervisor/0`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add `@tag :tmp_dir` support to ExUnit. The temporary directory is automatically created and pruned before each test
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add file and line to ExUnit's `--trace`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Assertion
Description
Allow receive timeouts to be computed at runtime
Type
enhancement
Tool
ExUnit
Module
ExUnit.Case
Description
Add `register_test/6` to speed up compilation of custom tests
Type
enhancement
Tool
ExUnit
Module
ExUnit.Doctest
Description
Allow users to add tags to doctests
Type
enhancement
Tool
IEx
Module
IEx
Description
Add support for coloring on Windows 10 consoles/shells
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Show docs from Erlang modules that have been compiled with the docs chunk
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `notice`, `critical`, `alert`, and `emergency` log levels
Type
enhancement
Tool
Logger
Module
Logger
Description
Support structured logging by logging maps or keyword lists
Type
enhancement
Tool
Logger
Module
Logger
Description
Allow level to be set per module with `Logger.put_module_level/2`
Type
enhancement
Tool
Logger
Module
Logger
Description
Include `erl_level` in Logger's metadata
Type
enhancement
Tool
Mix
Module
mix
Description
Add `MIX_BUILD_ROOT` to config `_build` dir
Type
enhancement
Tool
Mix
Module
mix
Description
Introduce `MIX_XDG` as a simpler mechanism to opt-in to the XDG specification
Type
enhancement
Tool
Mix
Module
mix
Description
Allow requirements for a Mix task to be listed via the `@requirements` module attribute
Type
enhancement
Tool
Mix
Module
mix
Description
Allow optional dependencies to be defined in `:extra_applications` and `:applications`
Type
enhancement
Tool
Mix
Module
mix app.config
Description
Add new `mix app.config` task that compiles applications and loads runtime configuration
Type
enhancement
Tool
Mix
Module
mix archive.install
Description
Support `--repo` option on Hex packages
Type
enhancement
Tool
Mix
Module
mix compile
Description
Support the `__mix_recompile__?/0` callback for custom behaviour on when Mix should recompile a given module
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Mark modules for path dependencies as "Export dependencies" if they changed but their public interface is the same
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Track application boundaries in the Elixir compiler. If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper applications, a warning will be emitted. A warning will also be emitted if you invoke code from an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between apps
Type
enhancement
Tool
Mix
Module
mix deps
Description
Sort the dependencies alphabetically before printing
Type
enhancement
Tool
Mix
Module
mix deps
Description
Use `origin/HEAD` as the default Git ref in dependencies
Type
enhancement
Tool
Mix
Module
mix deps
Description
Redact Git `username`/`password` in output log
Type
enhancement
Tool
Mix
Module
mix deps
Description
Support rebar3's `git_subdir` resource type
Type
enhancement
Tool
Mix
Module
mix deps.compile
Description
Allow local deps to be skipped on `mix deps.compile`
Type
enhancement
Tool
Mix
Module
mix deps.unlock
Description
Print which dependencies get unlocked when using the `--unused` flag
Type
enhancement
Tool
Mix
Module
mix escript.install
Description
Support `--repo` option on Hex packages
Type
enhancement
Tool
Mix
Module
mix new
Description
Add `@impl` to application generated by `mix new --sup`
Type
enhancement
Tool
Mix
Module
mix release
Description
Enable overriding `sys.config` location via `RELEASE_SYS_CONFIG` env var
Type
enhancement
Tool
Mix
Module
mix release
Description
Boot a release under configuration in interactive mode and then swap to embedded mode (if running on Erlang/OTP 23+)
Type
enhancement
Tool
Mix
Module
mix release
Description
Add `rel_templates_path` to configure the source of template files such as "env.sh.eex", "vm.args.eex" and "overlays"
Type
enhancement
Tool
Mix
Module
mix release
Description
Allow some chunks to be kept in the `:strip_beams` config
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow `:ignore_modules` inside `:test_coverage` option
Type
enhancement
Tool
Mix
Module
mix test.coverage
Description
Add `mix test.coverage` that aggregates coverage results from umbrellas and OS partitioning
Type
enhancement
Tool
Mix
Module
mix xref
Description
Make the `--label` option for `mix xref graph` transitive by default and add `--only-direct` for only direct dependencies
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `--format cycles` support for `mix xref graph`
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add support to `mix xref graph` for using `--source` and `--sink` at the same time
Type
bugfix
Tool
EEx
Module
EEx
Description
Make trimming behaviour via the `:trim` option more consistent
Type
bugfix
Tool
Elixir
Module
Application
Description
Warn if non-atom keys are given to `put_env`, `get_env`, `fetch_env`, and `delete_env`
Type
bugfix
Tool
Elixir
Module
Code
Description
Do not send language keyword through the `:static_atoms_encoder` in `Code.string_to_quoted`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Validate values given to `:line` in quote to avoid emitting invalid ASTs
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Report the correct line number when raising inside a macro
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix an issue where `elixirc` would not accept paths with backslash (`\`) separators on Windows
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Properly parse `&//2` (i.e. the capture of the division operator)
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise `CompileError` when trying to define reserved types
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Improve compiler error message when using `|` in a `def` signature
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Improve error message when trying to use invalid list operators in guards
Type
bugfix
Tool
Elixir
Module
Kernel.SpecialForms
Description
Add `|/2` to the list of special forms to avoid inconsistent behaviour on overrides
Type
bugfix
Tool
Elixir
Module
Keyword
Description
Enforce keys to be atoms in `Keyword.keys/1`
Type
bugfix
Tool
Elixir
Module
Record
Description
Keep lexical ordering when creating records
Type
bugfix
Tool
Elixir
Module
Registry
Description
Do not crash when a process with key-value has been registered using `:via` and it fails to start on `init`
Type
bugfix
Tool
Elixir
Module
URI
Description
`URI.decode_query/2` emits an empty string for parameters without values, according to [URL's living standard](https://url.spec.whatwg.org/#application/x-www-form-urlencoded) - note this behaviour is not specified in the spec implemented by the URI module, so the living standard was chosen
Type
bugfix
Tool
Elixir
Module
Version
Description
Add defaults and enforce keys in `Version` struct
Type
bugfix
Tool
ExUnit
Module
ExUnit.CaptureIO
Description
Fix race condition where a dead capture would still be considered as active
Type
bugfix
Tool
ExUnit
Module
ExUnit.Diff
Description
Do not crash when failing to eval/inspect struct
Type
bugfix
Tool
ExUnit
Module
ExUnit.Diff
Description
Properly diff numbers in respect to `==` and `===` operators
Type
bugfix
Tool
IEx
Module
IEx
Description
Fix tokenizer emitting repeated warnings in the REPL
Type
bugfix
Tool
IEx
Module
IEx
Description
Ensure `--dot-iex` is preserved when restarting the evaluator and after shell respawn
Type
bugfix
Tool
IEx
Module
IEx.Pry
Description
Ensure `IEx.pry` can be triggered more than twice when invoked from the same process
Type
bugfix
Tool
Mix
Module
mix cmd
Description
Fix a bug where only the first --app option would be executed
Type
bugfix
Tool
Mix
Module
mix compile
Description
Fix an issue where new protocol implementations would not propagate when running `mix compile` from an umbrella root
Type
bugfix
Tool
Mix
Module
mix deps.compile
Description
Use `gmake` instead of `make` when compiling deps on NetBSD/DragonFlyBSD
Type
bugfix
Tool
Mix
Module
mix release
Description
Load `.app` from dependencies path when it is a project dependency
Type
bugfix
Tool
Mix
Module
mix release
Description
Always include "rel/overlays" in the list of overlays directories if available
Type
bugfix
Tool
Mix
Module
mix release
Description
Change `erts/bin/erl` binary mode to `0o755`
Type
bugfix
Tool
Mix
Module
mix test
Description
Compare to test coverage threshold inclusively
Type
bugfix
Tool
Logger
Module
Logger
Description
Print metadata for all types that implement String.Chars
Type
enhancement
Tool
Elixir
Module
Exception
Description
`Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1`
Type
enhancement
Tool
Elixir
Module
Regex
Description
`Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2`
Type
enhancement
Tool
Elixir
Module
Logger
Description
`warn` log level is deprecated in favor of `warning`
Type
enhancement
Tool
Elixir
Module
mix release
Description
`config/releases.exs` is deprecated in favor of a more general purpose `config/runtime.exs`
Type
enhancement
Tool
Elixir
Module
Supervisor
Description
Deprecate `Supervisor.start_child/2` and `Supervisor.terminate_child/2` in favor of `DynamicSupervisor`
Type
enhancement
Tool
Elixir
Module
Supervisor.Spec
Description
Deprecate `Supervisor.Spec.worker/3` and `Supervisor.Spec.supervisor/3` in favor of the new typespecs
Type
enhancement
Tool
Elixir
Module
System
Description
Deprecate `System.stacktrace/0` in favor of `__STACKTRACE__`
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Deprecate `Mix.Project.compile/2` in favor of `Mix.Task.run("compile", args)`