1.14.0

Released on 2022-09-01

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Support multi-line comments to EEx via `<%!-- --%>`
Type
enhancement
Tool
EEx
Module
EEx
Description
Add `EEx.tokenize/2`
Type
enhancement
Tool
Elixir
Module
Access
Description
Add `Access.slice/1`
Type
enhancement
Tool
Elixir
Module
Application
Description
Add `Application.compile_env/4` and `Application.compile_env!/3` to read the compile-time environment inside macros
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Support ISO8601 basic format parsing with `DateTime.from_iso8601/2`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `day`/`hour`/`minute` on `add`/`diff` across different calendar modules
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `:normalize_bitstring_modifiers` to `Code.format_string!/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Emit deprecation and type warnings for invalid options in on `Code.compile_string/2` and `Code.compile_quoted/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Warn if an outdated lexical tracker is given on eval
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.env_for_eval/1` and `Code.eval_quoted_with_env/3`
Type
enhancement
Tool
Elixir
Module
Code
Description
Improve stacktraces from eval operations on Erlang/OTP 25+
Type
enhancement
Tool
Elixir
Module
Code.Fragment
Description
Add support for `__MODULE__` in several functions
Type
enhancement
Tool
Elixir
Module
Code.Fragment
Description
Support surround and context suggestions across multiple lines
Type
enhancement
Tool
Elixir
Module
Enum
Description
Allow slicing with steps in `Enum.slice/2`
Type
enhancement
Tool
Elixir
Module
File
Description
Support `dereference_symlinks: true` in `File.cp/3` and `File.cp_r/3`
Type
enhancement
Tool
Elixir
Module
Float
Description
Do not show floats in scientific notation if below `1.0e16` and the fractional value is precisely zero
Type
enhancement
Tool
Elixir
Module
Float
Description
Add `Float.min_finite/0` and `Float.max_finite/0`
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Improve error reporting when there is a faulty implementation of the `Inspect` protocol
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Allow `:optional` when deriving the Inspect protocol for hiding fields that match their default value
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Inspect struct fields in the order they are declared in `defstruct`
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Use expression-based inspection for `Date.Range`, `MapSet`, and `Version.Requirement`
Type
enhancement
Tool
Elixir
Module
IO
Description
Support `Macro.Env` and keywords as stacktrace definitions in `IO.warn/2`
Type
enhancement
Tool
Elixir
Module
IO
Description
Add `IO.ANSI.syntax_colors/0` and related configuration to be shared across IEx and `dbg`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add new `dbg/0-2` macro
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Allow any guard expression as the size of a bitstring in a pattern match
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Allow composite types with pins as the map key in a pattern match
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Print escaped version of control chars when they show up as unexpected tokens
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on confusable non-ASCII identifiers
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `..` as a nullary operator that returns `0..-1//1`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Implement Unicode Technical Standard #39 recommendations. In particular, we warn for confusable scripts and restrict identifiers to single-scripts or highly restrictive mixed-scripts
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Automatically perform NFC conversion of identifiers
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `binary_slice/2` and `binary_slice/3`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Lazily expand module attributes to avoid compile-time deps
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Automatically cascade `generated: true` annotations on macro expansion
Type
enhancement
Tool
Elixir
Module
Keyword
Description
Add `Keyword.from_keys/2` and `Keyword.replace_lazy/3`
Type
enhancement
Tool
Elixir
Module
List
Description
Add `List.keysort/3` with support for a `sorter` function
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.classify_atom/1` and `Macro.inspect_atom/2`
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.expand_literal/2` and `Macro.path/2`
Type
enhancement
Tool
Elixir
Module
Macro.Env
Description
Add `Macro.Env.prune_compile_info/1`
Type
enhancement
Tool
Elixir
Module
Map
Description
Add `Map.from_keys/2` and `Map.replace_lazy/3`
Type
enhancement
Tool
Elixir
Module
MapSet
Description
Add `MapSet.filter/2`, `MapSet.reject/2`, and `MapSet.symmetric_difference/2`
Type
enhancement
Tool
Elixir
Module
Node
Description
Add `Node.spawn_monitor/2` and `Node.spawn_monitor/4`
Type
enhancement
Tool
Elixir
Module
Module
Description
Support new `@after_verify` attribute for executing code whenever a module is verified
Type
enhancement
Tool
Elixir
Module
PartitionSupervisor
Description
Add `PartitionSupervisor` that starts multiple isolated partitions of the same child for scalability
Type
enhancement
Tool
Elixir
Module
Path
Description
Add `Path.safe_relative/1` and `Path.safe_relative_to/2`
Type
enhancement
Tool
Elixir
Module
Registry
Description
Add `Registry.count_select/2`
Type
enhancement
Tool
Elixir
Module
Stream
Description
Add `Stream.duplicate/2` and `Stream.transform/5`
Type
enhancement
Tool
Elixir
Module
String
Description
Support empty lookup lists in `String.replace/3`, `String.split/3`, and `String.splitter/3`
Type
enhancement
Tool
Elixir
Module
String
Description
Allow slicing with steps in `String.slice/2`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `:zip_input_on_exit` option to `Task.async_stream/3`
Type
enhancement
Tool
Elixir
Module
Task
Description
Store `:mfa` in the `Task` struct for reflection purposes
Type
enhancement
Tool
Elixir
Module
URI
Description
Add `URI.append_query/2`
Type
enhancement
Tool
Elixir
Module
Version
Description
Add `Version.to_string/1`
Type
enhancement
Tool
Elixir
Module
Version
Description
Colorize `Version.Requirement` source in the `Inspect` protocol
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add `ExUnit.Callbacks.start_link_supervised!/2`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add `ExUnit.run/1` to rerun test modules
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Colorize summary in yellow with message when all tests are excluded
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Display friendly error when test name is too long
Type
enhancement
Tool
IEx
Module
IEx
Description
Evaluate `--dot-iex` line by line
Type
enhancement
Tool
IEx
Module
IEx
Description
Add line-by-line evaluation of IEx breakpoints
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Autocomplete bitstrings modifiers (after `::` inside `<<...>>`)
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Allow an atom to be given to `pid/1`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Support sigils in `h/1`
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `Logger.put_process_level/2`
Type
enhancement
Tool
Mix
Module
Mix
Description
Add `:config_path` and `:lockfile` options to `Mix.install/2`
Type
enhancement
Tool
Mix
Module
mix compile
Description
Add `--no-optional-deps` to skip optional dependencies to test compilation works without optional dependencies
Type
enhancement
Tool
Mix
Module
mix compile
Description
Include column information on error diagnostics when possible
Type
enhancement
Tool
Mix
Module
mix deps
Description
`Mix.Dep.Converger` now tells which deps formed a cycle
Type
enhancement
Tool
Mix
Module
mix do
Description
Support `--app` option to restrict recursive tasks in umbrella projects
Type
enhancement
Tool
Mix
Module
mix do
Description
Allow using `+` as a task separator instead of comma
Type
enhancement
Tool
Mix
Module
mix format
Description
Support filename in `mix format -` when reading from stdin
Type
enhancement
Tool
Mix
Module
mix format
Description
Compile if `mix format` plugins are missing
Type
enhancement
Tool
Mix
Module
mix new
Description
Do not allow projects to be created with application names that conflict with multi-arg Erlang VM switches
Type
enhancement
Tool
Mix
Module
mix profile
Description
Return the return value of the profiled function
Type
enhancement
Tool
Mix
Module
mix release
Description
Make BEAM compression opt-in
Type
enhancement
Tool
Mix
Module
mix release
Description
Let `:runtime_config_path` accept `false` to skip the `config/runtime.exs`
Type
enhancement
Tool
Mix
Module
mix test
Description
Improve error message when suite fails due to coverage
Type
enhancement
Tool
Mix
Module
mix test
Description
Support `:test_elixirc_options` and default to not generating docs nor debug info chunk for tests
Type
enhancement
Tool
Mix
Module
mix xref
Description
Support `--group` flag in `mix xref graph`
Type
bugfix
Tool
Elixir
Module
Calendar
Description
Handle widths with "0" in them in `Calendar.strftime/3`
Type
bugfix
Tool
Elixir
Module
CLI
Description
Improve errors on incorrect `--rpc-eval` usage
Type
bugfix
Tool
Elixir
Module
CLI
Description
Return proper exit code on Windows
Type
bugfix
Tool
Elixir
Module
Code
Description
Do not emit warnings when formatting code
Type
bugfix
Tool
Elixir
Module
Enum
Description
Allow slices to overflow on both starting and ending positions
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not allow restricted characters in identifiers according to UTS39
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Define `__exception__` field as `true` when expanding exceptions in typespecs
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Warn if any of `True`, `False`, and `Nil` aliases are used
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Warn on underived `@derive` attributes
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Remove compile-time dependency from `defimpl :for`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Track all arities on imported functions
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix equality in guards for dynamic ranges without steps
Type
bugfix
Tool
Elixir
Module
Module
Description
Fix loop while unifying type variables
Type
bugfix
Tool
Elixir
Module
Protocol
Description
Warn if a protocol has no definitions
Type
bugfix
Tool
Elixir
Module
Regex
Description
Show list options when inspecting a Regex manually defined with `Regex.compile/2`
Type
bugfix
Tool
Elixir
Module
String
Description
Allow slices to overflow on both starting and ending positions
Type
bugfix
Tool
Elixir
Module
System
Description
Raise non-generic exception on missing env in `System.fetch_env!/1` to mirror map operations
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Do not crash when diffing unknown bindings in guards
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Properly print diffs when comparing improper lists with strings at the tail position
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Add short hash to `tmp_dir` in ExUnit to avoid test name collision
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Do not store logs in the CLI formatter (this reduces memory usage for suites with `capture_log`)
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Run `ExUnit.after_suite/1` callback even when no tests run
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Fix scenario where `setup` with imported function from within `describe` failed to compile
Type
bugfix
Tool
IEx
Module
IEx
Description
Disallow short-hand pipe after matches
Type
bugfix
Tool
IEx
Module
IEx
Description
Fix `exports/1` in IEx for long function names
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Fix `--warnings-as-errors` when used with `--all-warnings`
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Ensure semantic recompilation cascades to path dependencies
Type
bugfix
Tool
Mix
Module
mix compile.elixir
Description
Lock the compiler to avoid concurrent usage
Type
bugfix
Tool
Mix
Module
mix format
Description
Do not add new lines if the formatted file is empty
Type
bugfix
Tool
Mix
Module
mix format
Description
Properly compile dependencies on `mix format`
Type
bugfix
Tool
Mix
Module
mix release
Description
Only set `RELEASE_MODE` after `env.{sh,bat}` are executed
Type
bugfix
Tool
Mix
Module
mix release
Description
Allow application mode configuration to cascade to dependencies
Type
bugfix
Tool
Mix
Module
mix xref
Description
Do not emit already consolidated warnings during `mix xref trace`
Type
bugfix
Tool
Mix
Module
Mix
Description
Do not start apps with `runtime: false` on `Mix.install/2`
Type
enhancement
Tool
Elixir
Module
File
Description
Passing a callback as third argument to `File.cp/3` and `File.cp_r/3` is deprecated.
Type
enhancement
Tool
EEx
Module
EEx
Description
Using `<%# ... %>` for comments is deprecated. Please use `<% # ... %>` or the new multi-line comments with `<%!-- ... --%>`
Type
enhancement
Tool
Logger
Module
Logger
Description
Deprecate `Logger.enable/1` and `Logger.disable/1` in favor of `Logger.put_process_level/2`
Type
enhancement
Tool
Mix
Module
mix cmd
Description
The `--app` option in `mix cmd CMD` is deprecated in favor of the more efficient `mix do --app app cmd CMD`
Type
hard_deprecation
Tool
Elixir
Module
Application
Description
Calling `Application.get_env/3` and friends in the module body is now discouraged, use `Application.compile_env/3` instead
Type
hard_deprecation
Tool
Elixir
Module
Bitwise
Description
`use Bitwise` is deprecated, use `import Bitwise` instead
Type
hard_deprecation
Tool
Elixir
Module
Bitwise
Description
`~~~` is deprecated in favor of `bnot` for clarity
Type
hard_deprecation
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Returning a list or two-element tuple from `:each_cycle` is deprecated, return a `{:compile | :runtime, modules, warnings}` tuple instead
Type
hard_deprecation
Tool
Elixir
Module
Kernel
Description
Deprecate the operator `<|>` to avoid ambiguity with upcoming extended numerical operators
Type
hard_deprecation
Tool
Elixir
Module
String
Description
Deprecate passing a binary compiled pattern to `String.starts_with?/2`
Type
hard_deprecation
Tool
Logger
Module
Logger
Description
Deprecate `$levelpad` on message formatting
Type
hard_deprecation
Tool
Mix
Module
Mix
Description
`Mix.Tasks.Xref.calls/1` is deprecated in favor of compilation tracers
Type
enhancement
Tool
Mix
Module
mix local.rebar
Description
Remove support for rebar2, which has not been updated in 5 years, and is no longer supported on recent Erlang/OTP versions