1.13.0

Released on 2021-12-03

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Add `:parser_options` to EEx functions
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `c:Calendar.year_of_era/3` to support calendars where the beginning of a new era does not align with the beginning of a new year
Type
enhancement
Tool
Elixir
Module
CLI
Description
Support `--short-version` on the CLI that does not boot the VM
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.string_to_quoted_with_comments/2` and `Code.quoted_to_algebra/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add more `:token_metadata` to aliases and remote calls when parsing strings
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.Fragment` module to provide best-effort information from code fragments. The module currently provides an updated `Code.Fragment.cursor_context/2` with operator support and `Code.Fragment.surround_context/2` which looks at a given position in a fragment and find its surrounding delimiters
Type
enhancement
Tool
Elixir
Module
Code
Description
Allow custom sigil formatting on `Code.format_string!/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `{:on_module, bytecode, :none}` trace to compilation tracers
Type
enhancement
Tool
Elixir
Module
Enum
Description
Optimize `Enum.concat/1` for lists of lists
Type
enhancement
Tool
Elixir
Module
Enum
Description
Add `Enum.slide/3`
Type
enhancement
Tool
Elixir
Module
Exception
Description
Better format Elixir exceptions in Erlang
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Allow default inspect fun to be set globally with `Inspect.Opts.default_inspect_fun/1`
Type
enhancement
Tool
Elixir
Module
IO
Description
Allow `:eof` to be given as limit to `IO.getn/2`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Support the `:sigils` option in `import Mod, only: :sigils` and allow the sigil modifiers to be also digits
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Make `get_in` consistently abort when `nil` values are found
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Improve compilation times by reducing the amount of copies of the AST across compiler processes
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Raise if trying to define a module with a slash in its name
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn when `?\` is used and there is no need for a escape character
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Track structs in typespecs as export deps instead of compile-time deps
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add power operator (`**/2`)
Type
enhancement
Tool
Elixir
Module
Keyword
Description
Add `Keyword.validate/2`
Type
enhancement
Tool
Elixir
Module
Keyword
Description
Implement `Keyword.filter/2` and `Keyword.map/2`
Type
enhancement
Tool
Elixir
Module
List
Description
Add `List.keyfind!/3`
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.prewalker/1` and `Macro.postwalker/1`
Type
enhancement
Tool
Elixir
Module
Macro.Env
Description
Add the following reflection functions: `required?/2`, `lookup_import/2`, `fetch_alias/2`, and `fetch_macro_alias/2`
Type
enhancement
Tool
Elixir
Module
Map
Description
Implement `Map.filter/2` and `Map.map/2`
Type
enhancement
Tool
Elixir
Module
Module
Description
Support `:nillify_clauses` in `Module.get_definition/3`
Type
enhancement
Tool
Elixir
Module
Module
Description
Add `Module.attributes_in/1` and `Module.overridables_in/1`
Type
enhancement
Tool
Elixir
Module
OptionParser
Description
Add "did you mean?" suggestions to `OptionParser.ParseError` messages
Type
enhancement
Tool
Elixir
Module
Record
Description
Add record reflection via `@__records__`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `Task.completed/1`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `Task.ignore/1` to keep a task running but ignoring all of its results
Type
enhancement
Tool
Elixir
Module
Task
Description
Reduce the amount of copying `Task.async*` functions
Type
enhancement
Tool
Elixir
Module
URI
Description
Add `URI.new/1` and `URI.new!/1`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Show hint if comparing different but equivalent strings
Type
enhancement
Tool
ExUnit
Module
ExUnit.CaptureIO
Description
Add `with_io/3` to return result with captured io
Type
enhancement
Tool
ExUnit
Module
ExUnit.CaptureLog
Description
Add `with_log/2` to return result with captured logs
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Add path autocompletion whenever when the cursor follows `"./` or `"/` or `"DRIVER:` where `DRIVER` is a single letter
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Add autocompletion for sigils, struct names, and struct fields
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Allow multiple modules to be given to `r/1`
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `Logger.put_application_level/2`
Type
enhancement
Tool
Mix
Module
Mix
Description
Add `MIX_INSTALL_FORCE` environment variable support
Type
enhancement
Tool
Mix
Module
Mix
Description
Support `:config` and `:system_env` in `Mix.install/2`
Type
enhancement
Tool
Mix
Module
Mix
Description
Add `Mix.installed?/0`
Type
enhancement
Tool
Mix
Module
Mix.Shell
Description
Add `:default` option to `Mix.Shell.yes?`
Type
enhancement
Tool
Mix
Module
mix archive.install
Description
Run `loadconfig` before building archive
Type
enhancement
Tool
Mix
Module
mix compile
Description
Move Elixir version check to before deps are compiled, in order to give feedback earlier
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Do not recompile files if their modification time change but their contents are still the same and the .beam files are still on disk
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Do not recompile all Elixir sources when Erlang modules change, only dependent ones
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Do not recompile Elixir files if `mix.exs` changes, instead recompile only files using `Mix.Project` or trigger a recompilation if a compiler option changes
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Only recompile needed files when a dependency is added, updated or removed
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Only recompile needed files when a dependency is configured
Type
enhancement
Tool
Mix
Module
mix deps
Description
Add `:subdir` option to git deps
Type
enhancement
Tool
Mix
Module
mix escript.install
Description
Run `loadconfig` before building escript
Type
enhancement
Tool
Mix
Module
mix format
Description
Support `:plugins` in `mix format` that can hook into custom extensions and sigils
Type
enhancement
Tool
Mix
Module
mix format
Description
Add `Mix.Tasks.Format.formatter_for_file/2`
Type
enhancement
Tool
Mix
Module
mix local.rebar
Description
No longer support `sub_dirs` in Rebar 2 to help migration towards Rebar 3
Type
enhancement
Tool
Mix
Module
mix local.rebar
Description
Support `--if-missing` option when installing Rebar
Type
enhancement
Tool
Mix
Module
mix local.rebar
Description
Set `REBAR_PROFILE=prod` when compiling Rebar dependencies
Type
enhancement
Tool
Mix
Module
mix test
Description
Support `--profile-require=time` to profile the time loading test files themselves
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow filtering modules from coverage using regex
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow the exit status of ExUnit to be configured and set the default to 2
Type
enhancement
Tool
Mix
Module
mix test
Description
Exit with a status of 3 when coverage falls below threshold
Type
enhancement
Tool
Mix
Module
mix test
Description
Write failed manifest when suite fails due to --warnings-as-errors
Type
enhancement
Tool
Mix
Module
mix test
Description
Ignore `MIX_TEST_PARTITION` when partitions set to 1
Type
enhancement
Tool
Mix
Module
mix xref
Description
Support multiple sinks and sources in `mix xref graph`
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `trace` subcommand to print compilation dependencies between files
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `--fail-above` option to `mix xref`
Type
enhancement
Tool
Mix
Module
mix xref
Description
Add `--label compile-connected` to `mix xref`
Type
bugfix
Tool
EEx
Module
EEx
Description
Accept comments in EEx between do and the first clause
Type
bugfix
Tool
EEx
Module
EEx
Description
Accept EEx expressions where `->` is followed by newline
Type
bugfix
Tool
Elixir
Module
Application
Description
Allow any expression as first argument of `compile_env`
Type
bugfix
Tool
Elixir
Module
Application
Description
Warn if `Application.compile_env` or `Application.compile_env!` are called without a require
Type
bugfix
Tool
Elixir
Module
Code
Description
Make sure `:static_atoms_encoder` in `Code.string_to_quoted/2` also applies to quoted keyword keys
Type
bugfix
Tool
Elixir
Module
Code
Description
Ensure bindings with no context are returned as atoms instead of `{binding, nil}` in eval operations
Type
bugfix
Tool
Elixir
Module
Inspect
Description
Fix a bug when inspecting a non-binary bitstring with colors
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Reject bidirectional formatting characters in strings and comments
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Support escaping of terminators in uppercase sigils heredocs for consistency
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise if `__CALLER__` or `__ENV__` or `__STACKTRACE__` are used in match
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Improve error message on invalid argument for `byte_size` from binary concat
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise when aliasing non-Elixir modules without `:as`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Allow `unquote_splicing` inside `%{...}` without parens
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Ensure that waiting on a struct expansion inside a typespec is correctly tracked as waiting time in the compiler
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Correctly parse the atom `.` as a keyword list key
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not leak variables from the first generator in `with` and `for` special forms
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix column number on strings with NFD characters
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix a bug where a combination of dynamic line in `quote` with `unquote` of remote calls would emit invalid AST metadata
Type
bugfix
Tool
Elixir
Module
OptionParser
Description
Validate switch types/modifiers early on to give more precise feedback
Type
bugfix
Tool
Elixir
Module
Protocol
Description
Add `defdelegate` to the list of unallowed macros inside protocols as protocols do not allow function definitions
Type
bugfix
Tool
Elixir
Module
Protocol
Description
Warn if `@callback`, `@macrocallback` and `@optional_callbacks` are defined inside protocol
Type
bugfix
Tool
Elixir
Module
Protocol
Description
Ensure protocol metadata is deterministic on consolidation
Type
bugfix
Tool
Elixir
Module
Range
Description
Always show step when range is descending
Type
bugfix
Tool
Elixir
Module
String
Description
Update Unicode database to version 14.0
Type
bugfix
Tool
Elixir
Module
URI
Description
Only percent decode if followed by hex digits (according to https://url.spec.whatwg.org/#percent-decode)
Type
bugfix
Tool
Elixir
Module
Version
Description
Ensure proper precedence of `and`/`or` in version requirements
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Fix formatter and counters from `ExUnit.run/0` to consider all tests in a module whenever if a module's `setup_all` fails
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Allow doctests newlines to be terminated by CRLF
Type
bugfix
Tool
IEx
Module
IEx
Description
Fix the loss of `.iex.exs` context after a pry session
Type
bugfix
Tool
IEx
Module
IEx
Description
Stop evaluator before exiting IEx server to avoid evaluators leaking
Type
bugfix
Tool
Logger
Module
Logger
Description
Raise clear error message for invalid `:compile_time_purge_matching` configuration
Type
bugfix
Tool
Logger
Module
Logger
Description
Fix a bug where Logger would not reset its discard counter under some scenarios
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Track transitive runtime dependencies coming from local/path dependencies
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Recompile file if `@external_resource` is deleted
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Print number of compiling files on all compiler cycles. This will make the `Compiling N files (.ex)` show up multiple times if necessary
Type
bugfix
Tool
Mix
Module
mix deps
Description
Raise if local dep is unavailable while compiling
Type
bugfix
Tool
Mix
Module
mix deps.unlock
Description
Fix blank output when unlocking a dependency that is not locked
Type
bugfix
Tool
Mix
Module
mix local.install
Description
Do not respect `MIX_DEPS_PATH` for install commands
Type
bugfix
Tool
Mix
Module
mix release
Description
Improve release scripts by making sure shell errors cascade (this is done by avoiding exporting and defining variables in a single step)
Type
bugfix
Tool
Mix
Module
mix release
Description
Do not boot release if `RELEASE_COOKIE` is empty
Type
bugfix
Tool
Mix
Module
mix release
Description
Allow releases running as a daemon to be restarted
Type
bugfix
Tool
Mix
Module
mix release
Description
Raise proper error message when non-serializable values are in configs
Type
bugfix
Tool
Mix
Module
mix test
Description
Fix coverage engine to also tag `case`, `cond`, and `receive` branches where the right side is a literal
Type
enhancement
Tool
Elixir
Module
Code
Description
Environment options in `Code.eval_quoted/3` and `Code.eval_string/3`, such as `:aliases` and `:tracers`, have been deprecated in favor of passing an environment
Type
enhancement
Tool
Elixir
Module
IO
Description
`:all` on `IO.getn` is deprecated in favor of `:eof`
Type
enhancement
Tool
Elixir
Module
URI
Description
`URI.parse/1` is deprecated in favor of `URI.new/1` and `URI.new!/1`
Type
enhancement
Tool
Mix
Module
mix format
Description
`Mix.Tasks.Format.formatter_opts_for_file/2` is deprecated in favor of `Mix.Tasks.Format.formatter_for_file/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
`Code.cursor_context/2` is deprecated, use `Code.Fragment.cursor_context/2` instead
Type
enhancement
Tool
Elixir
Module
Macro
Description
`Macro.to_string/2` is deprecated, use `Macro.to_string/1` instead
Type
enhancement
Tool
Elixir
Module
System
Description
`System.get_pid/0` is deprecated, use `System.pid/0` instead
Type
enhancement
Tool
Elixir
Module
Version
Description
Using `!` or `!=` in version requirements is deprecated, use `~>` or `>=` instead
Type
enhancement
Tool
Mix
Module
mix escript.build
Description
`:strip_beam` option is deprecated in favor of `:strip_beams`
Type
enhancement
Tool
Mix
Module
Mix
Description
`:exit_code` in `Mix.raise/2` has been deprecated in favor of `:exit_status`
Type
enhancement
Tool
Mix
Module
Mix.Config
Description
`Mix.Config` is deprecated in favor of `Config` module