1.16.0

Released on 2023-12-22

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Include relative file information in diagnostics
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `:emit_warnings` for `Code.string_to_quoted/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Automatically include columns in parsing options
Type
enhancement
Tool
Elixir
Module
Code
Description
Introduce `MismatchedDelimiterError` for handling mismatched delimiter exceptions
Type
enhancement
Tool
Elixir
Module
Code.Fragment
Description
Handle anonymous calls in fragments
Type
enhancement
Tool
Elixir
Module
Code.Formatter
Description
Trim trailing whitespace on heredocs with `\r\n`
Type
enhancement
Tool
Elixir
Module
File
Description
Add `:offset` option to `File.stream!/2`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Auto infer size of matched variable in bitstrings
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Preserve column information when translating typespecs
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Suggest module names based on suffix and casing errors when the module does not exist in `UndefinedFunctionError`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Introduce `Kernel.ParallelCompiler.pmap/2` to compile multiple additional entries in parallel
Type
enhancement
Tool
Elixir
Module
Kernel.SpecialForms
Description
Warn if `True`/`False`/`Nil` are used as aliases and there is no such alias
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.compile_apply/4`
Type
enhancement
Tool
Elixir
Module
Module
Description
Add support for `@nifs` annotation from Erlang/OTP 25
Type
enhancement
Tool
Elixir
Module
Module
Description
Add support for missing `@dialyzer` configuration
Type
enhancement
Tool
Elixir
Module
String
Description
Update to Unicode 15.1.0
Type
enhancement
Tool
Elixir
Module
String
Description
Add `String.replace_invalid/2`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `:limit` option to `Task.yield_many/2`
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `Logger.levels/0`
Type
enhancement
Tool
Mix
Module
mix
Description
Add `MIX_PROFILE` to profile a list of comma separated tasks
Type
enhancement
Tool
Mix
Module
mix archive.install
Description
Support `--sparse` option
Type
enhancement
Tool
Mix
Module
mix compile.app
Description
Warn if both `:applications` and `:extra_applications` are used
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Pass original exception down to diagnostic `:details` when possible
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Optimize scenario where there are thousands of files in `lib/` and one of them is changed
Type
enhancement
Tool
Mix
Module
mix deps.clean
Description
Emit a warning instead of crashing when a dependency cannot be removed
Type
enhancement
Tool
Mix
Module
mix escript.install
Description
Support `--sparse` option
Type
enhancement
Tool
Mix
Module
mix release
Description
Include `include/` directory in releases
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow testing multiple file:line at once, such as `mix test test/foo_test.exs:13 test/bar_test.exs:27`
Type
bugfix
Tool
Elixir
Module
Code
Description
Keep quotes for atom keys in formatter
Type
bugfix
Tool
Elixir
Module
Code.Fragment
Description
Fix crash in `Code.Fragment.surround_context/2` when matching on `->`
Type
bugfix
Tool
Elixir
Module
IO
Description
Raise when using `IO.binwrite/2` on terminated device (mirroring `IO.write/2`)
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not expand aliases recursively (the alias stored in Macro.Env is already expanded)
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Ensure `dbg` module is a compile-time dependency
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Warn when a private function or macro uses `unquote/1` and the function/macro itself is unused
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Re-enabled compiler optimizations for top level functions in scripts (disabled in v1.14.0 but shouldn't impact most programs)
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not define an alias for nested modules starting with `Elixir.` in their definition
Type
bugfix
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Consider a module has been defined in `@after_compile` callbacks to avoid deadlocks
Type
bugfix
Tool
Elixir
Module
Macro
Description
Address exception on `Macro.to_string/1` for certain ASTs
Type
bugfix
Tool
Elixir
Module
Path
Description
Lazily evaluate `File.cwd!/0` in `Path.expand/1` and `Path.absname/1`
Type
bugfix
Tool
Elixir
Module
Path
Description
Ensure `Path.relative_to/2` returns a relative path when the given argument does not share a common prefix with `cwd`
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Raise on incorrectly dedented doctests
Type
bugfix
Tool
IEx
Module
IEx.Pry
Description
Fix prying functions with only literals in their body
Type
bugfix
Tool
Mix
Module
mix archive.install
Description
Restore code paths after `mix archive.install`
Type
bugfix
Tool
Mix
Module
mix compile
Description
Ensure files with duplicate modules are recompiled whenever any of the files change
Type
bugfix
Tool
Mix
Module
mix compile
Description
Update Mix compiler diagnostics documentation and typespecs to match the Elixir compiler behaviour where both lines and columns start from one (before it inaccurately said that columns started from zero)
Type
bugfix
Tool
Mix
Module
mix escript.install
Description
Restore code paths after `mix escript.install`
Type
enhancement
Tool
Elixir
Module
File
Description
Deprecate `File.stream!(file, options, line_or_bytes)` in favor of keeping the options as last argument, as in `File.stream!(file, line_or_bytes, options)`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Deprecate `Kernel.ParallelCompiler.async/1` in favor of `Kernel.ParallelCompiler.pmap/2`
Type
enhancement
Tool
Elixir
Module
Path
Description
Deprecate `Path.safe_relative_to/2` in favor of `Path.safe_relative/2`
Type
enhancement
Tool
Mix
Module
mix compile
Description
Returning a four-element tuple as a position in `Mix.Task.Compiler.Diagnostic`
Type
hard_deprecation
Tool
Elixir
Module
Date
Description
Deprecate inferring a range with negative step, call `Date.range/3` with a negative step instead
Type
hard_deprecation
Tool
Elixir
Module
Enum
Description
Deprecate passing a range with negative step on `Enum.slice/2`, give `first..last//1` instead
Type
hard_deprecation
Tool
Elixir
Module
Kernel
Description
`~R/.../` is deprecated in favor of `~r/.../`. This is because `~R/.../` still allowed escape codes, which did not fit the definition of uppercase sigils
Type
hard_deprecation
Tool
Elixir
Module
String
Description
Deprecate passing a range with negative step on `String.slice/2`, give `first..last//1` instead
Type
hard_deprecation
Tool
ExUnit
Module
ExUnit.Formatter
Description
Deprecate `format_time/2`, use `format_times/1` instead
Type
hard_deprecation
Tool
Mix
Module
mix compile.leex
Description
Require `:leex` to be added as a compiler to run the `leex` compiler
Type
hard_deprecation
Tool
Mix
Module
mix compile.yecc
Description
Require `:yecc` to be added as a compiler to run the `yecc` compiler