1.15.0

Released on 2023-06-19

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Include source code snippets in syntax errors
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add support for epoch time (`%s`) to `Calendar.strftime/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
`Code.format_string!/2` now converts `'charlists'` into `~c"charlists"` by default
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `:on_undefined_variable` to the compiler options to preserve the warning behaviour which was deprecated back in Elixir v1.4
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.loaded?/1` and `Code.ensure_all_loaded(!)/1`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.prepend_paths/1`, `Code.append_paths/1`, and `Code.delete_paths/1`
Type
enhancement
Tool
Elixir
Module
Code
Description
Add `Code.with_diagnostics/2` to return diagnostics when compiling and evaluating code
Type
enhancement
Tool
Elixir
Module
Code.Fragment
Description
Support nested expressions in `Code.Fragment.cursor_context/1`
Type
enhancement
Tool
Elixir
Module
Code.Fragment
Description
Keep operators and no paren calls in `Code.Fragment.container_cursor_to_quoted/1`
Type
enhancement
Tool
Elixir
Module
Date
Description
Add `Date.before?/2` and `Date.after?/2`
Type
enhancement
Tool
Elixir
Module
DateTime
Description
Add `DateTime.before?/2` and `DateTime.after?/2`
Type
enhancement
Tool
Elixir
Module
DateTime
Description
Support precision in `DateTime.utc_now/2`
Type
enhancement
Tool
Elixir
Module
File
Description
Support distributed `File.Stream`
Type
enhancement
Tool
Elixir
Module
Inspect
Description
`Inspect` now renders `'charlists'` as `~c"charlists"` by default
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Break down `case` and `cond` inside `dbg/2`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `t:nonempty_binary/0` and `t:nonempty_bitstring/0`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Treat `@behaviour`s as runtime dependencies
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Do not add runtime dependencies for alias references in patterns and guards
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn for nested calls without parens inside keywords
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Support for multi-letter uppercase sigils
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Introduce mechanism to collect several errors in a module. Previously, as soon as there was a compilation error, compilation would fail. Now the compiler became a bit smarter and will report multiple errors whenever possible as multiple `error: ...` messages, similar to `warning: ...`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Raise instead of warning on undefined variables. Previously, an undefined variable would attempt to invoke a function of the same name, which led to confusing error messages, especially to newcomers. To enable the previous behaviour, invoke `Code.compiler_options(on_undefined_variable: :warn)` at the top of your `mix.exs`
Type
enhancement
Tool
Elixir
Module
Kernel.CLI
Description
Support `--sname undefined`/`--name undefined` so a name is automatically generated
Type
enhancement
Tool
Elixir
Module
Keyword
Description
Add `Keyword.split_with/2`
Type
enhancement
Tool
Elixir
Module
Macro
Description
Improve error message when piping into an expression ending in bracket-based access
Type
enhancement
Tool
Elixir
Module
Macro.Env
Description
Add `Macro.Env.lookup_alias_as/2`
Type
enhancement
Tool
Elixir
Module
Map
Description
Add `Map.split_with/2`
Type
enhancement
Tool
Elixir
Module
Map
Description
Add `Map.intersect/2` and `Map.intersect/3`
Type
enhancement
Tool
Elixir
Module
MapSet
Description
Add `MapSet.split_with/2`
Type
enhancement
Tool
Elixir
Module
MapSet
Description
Optimize most functions
Type
enhancement
Tool
Elixir
Module
NaiveDateTime
Description
Add `NaiveDateTime.beginning_of_day/1` and `NaiveDateTime.end_of_day/1`
Type
enhancement
Tool
Elixir
Module
NaiveDateTime
Description
Add `NaiveDateTime.before?/2` and `NaiveDateTime.after?/2`
Type
enhancement
Tool
Elixir
Module
NaiveDateTime
Description
Support precision in `NaiveDateTime.utc_now/2`
Type
enhancement
Tool
Elixir
Module
Module
Description
Mark functions as generated in "Docs" chunk
Type
enhancement
Tool
Elixir
Module
Module
Description
Add `Module.get_last_attribute/3`
Type
enhancement
Tool
Elixir
Module
OptionParser
Description
Support `:return_separator` option
Type
enhancement
Tool
Elixir
Module
Process
Description
Add `Process.alias/0,1` and `Process.unalias/1`
Type
enhancement
Tool
Elixir
Module
Range
Description
Add `Range.split/2`
Type
enhancement
Tool
Elixir
Module
String
Description
Update Unicode to version 15.0.0
Type
enhancement
Tool
Elixir
Module
String
Description
Add `:fast_ascii` mode to `String.valid?/2`
Type
enhancement
Tool
Elixir
Module
Supervisor
Description
Add support for automatic shutdown in `Supervisor`
Type
enhancement
Tool
Elixir
Module
System
Description
Support `:lines` in `System.cmd/3` to capture output line by line
Type
enhancement
Tool
Elixir
Module
Task
Description
Remove head of line blocking on `Task.yield_many/2`
Type
enhancement
Tool
Elixir
Module
Task
Description
Enable selective receive optimizations in Erlang/OTP 26+
Type
enhancement
Tool
Elixir
Module
Task
Description
Reduce tasks footprint by avoiding unecessary work during spawning
Type
enhancement
Tool
Elixir
Module
Task.Supervisor
Description
Do not copy args on temporary `Task.Supervisor.start_child/2`
Type
enhancement
Tool
Elixir
Module
Time
Description
Add `Time.before?/2` and `Time.after?/2`
Type
enhancement
Tool
Elixir
Module
URI
Description
Add `URI.append_path/2`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add more color configuration to ExUnit CLI formatter
Type
enhancement
Tool
ExUnit
Module
ExUnit.Callbacks
Description
Accept `{module, function}` tuples in ExUnit `setup` callbacks
Type
enhancement
Tool
ExUnit
Module
ExUnit.Case
Description
Add `ExUnit.Case.get_last_registered_test/1`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Doctest
Description
Add `ExUnit.DocTest.doctest_file/2`
Type
enhancement
Tool
ExUnit
Module
ExUnit.Doctest
Description
Include `doctest_data` in doctest tags
Type
enhancement
Tool
ExUnit
Module
ExUnit.Formatter
Description
When comparing two anonymous functions, defined at the same place but capturing a different environment, we will now also diff the environments
Type
enhancement
Tool
IEx
Module
IEx
Description
Make pry opt-in on dbg with `--dbg pry`
Type
enhancement
Tool
IEx
Module
IEX
Description
Support `IEX_HOME`
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Only provide aliases when autocompleting `alias`, `import`, and `require`
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Provide field completion on map and struct updates
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add `runtime_info(:allocators)`
Type
enhancement
Tool
IEx
Module
IEx.Info
Description
Implement protocol for `Range`, `DateTime`, and `Regex`
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `Logger.add_handlers/1` and `Logger.default_formatter/1`
Type
enhancement
Tool
Logger
Module
Logger
Description
Introduce `default_formatter` and `default_handler` configuration for Logger which configures Erlang/OTP logger
Type
enhancement
Tool
Logger
Module
Logger
Description
Add `:always_evaluate_messages` configuration to Logger
Type
enhancement
Tool
Logger
Module
Logger.Formatter
Description
Implement the Erlang Logger formatter API
Type
enhancement
Tool
Logger
Module
Logger.Formatter
Description
Add support for ports in Logger metadata
Type
enhancement
Tool
Mix
Module
mix app.start
Description
Allow applications to be started concurrently via the `:start_concurrently` configuration
Type
enhancement
Tool
Mix
Module
mix compile
Description
Set `--all-warnings` by default
Type
enhancement
Tool
Mix
Module
mix compile
Description
Reduce the amount of filesystem lookups for path dependencies by storing timestamps in manifests
Type
enhancement
Tool
Mix
Module
mix compile
Description
Track digests of `@external_resources`
Type
enhancement
Tool
Mix
Module
mix compile.app
Description
Write `optional_applications` to `.app` file
Type
enhancement
Tool
Mix
Module
mix compile.elixir
Description
Add `--purge-consolidation-path-if-stale` which will purge the given consolidation path if compilation is required
Type
enhancement
Tool
Mix
Module
mix deps.compile
Description
Automatically recompile dependencies if their compile env changes
Type
enhancement
Tool
Mix
Module
mix deps.get
Description
Automatically install Hex and Rebar on `mix deps.get`/`mix deps.update`
Type
enhancement
Tool
Mix
Module
mix deps.get
Description
Support `--check-locked` which raises if changes to the lockfile are required
Type
enhancement
Tool
Mix
Module
mix eval
Description
Allow passing additional arguments
Type
enhancement
Tool
Mix
Module
mix format
Description
Support `--no-exit` option
Type
enhancement
Tool
Mix
Module
mix format
Description
Allow multiple formatters per file extension and sigil
Type
enhancement
Tool
Mix
Module
mix format
Description
Show diffs whenever `--check-formatted` fails
Type
enhancement
Tool
Mix
Module
mix format
Description
Allow the formatting root to be configured
Type
enhancement
Tool
Mix
Module
mix loadpaths
Description
Cache deps and archive loadpaths in Erlang/OTP 26
Type
enhancement
Tool
Mix
Module
mix profile.fprof
Description
Support `--trace-to-file` to improve performance when working with large outputs
Type
enhancement
Tool
Mix
Module
mix release
Description
Allow passing additional arguments to the `eval` command
Type
enhancement
Tool
Mix
Module
mix xref graph
Description
Support `--output` flag
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Support `def cli` to unify all CLI defaults in a single place
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Add `Mix.Project.deps_tree/1`
Type
bugfix
Tool
Elixir
Module
Code.Formatter
Description
Fix a scenario where a keyword followed by parenthesis could go above the maximum line length
Type
bugfix
Tool
Elixir
Module
Code.Formatter
Description
Remove unnecessary parens in nullary type funs
Type
bugfix
Tool
Elixir
Module
Exception
Description
Fix operator precedence when printing guards in `Exception.blame/3`
Type
bugfix
Tool
Elixir
Module
File
Description
Do not raise if there are file system race conditions in `File.cp/2`
Type
bugfix
Tool
Elixir
Module
File
Description
Do not raise when deleting write-only empty directories on `File.rm_rf/1`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Expand macros on the left side of -> in `try/rescue`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise on misplaced `...` inside typespecs
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not import `behaviour_info` and `module_info` functions from Erlang modules
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise when macros are given to dialyzer
Type
bugfix
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Make sure compiler doesn't crash when there are stray messages in the inbox
Type
bugfix
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Track compile and runtime warnings separately
Type
bugfix
Tool
Elixir
Module
Module
Description
Ensure that `Module.get_attribute/3` returns `nil` and not the given default value when an attribute has been explicitly set as `nil`
Type
bugfix
Tool
Elixir
Module
System
Description
Fix race condition when a script would terminate before `System.stop/1` executes
Type
bugfix
Tool
Elixir
Module
Task
Description
Do not double log Task failure reports
Type
bugfix
Tool
Elixir
Module
URI
Description
Make sure `URI.merge/2` works accordingly with relative paths
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Fix crash when `@tag capture_log: true` was set to true and the Logger application was shut down in the middle of the test
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Do not merge context as tags inside the runner to reduce memory usage when emitting events to formatters
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Mark test cases as invalid when an exit occurs during `setup_all`
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Do not expand or collect vars from quote in ExUnit assertions
Type
bugfix
Tool
ExUnit
Module
ExUnit.DocTest
Description
Ensure proper line is returned when failing to parse doctest results
Type
bugfix
Tool
ExUnit
Module
ExUnit.Doctest
Description
Fix line information when a doctest with multiple assertions fails
Type
bugfix
Tool
IEx
Module
IEx
Description
Do not spawn a process to read IO. This fixes a bug where multiline paste stopped working
Type
bugfix
Tool
IEx
Module
IEx
Description
Do not perform completion for prompts triggered during code evaluation
Type
bugfix
Tool
Mix
Module
mix compile
Description
Include `cwd` in compiler cache key
Type
bugfix
Tool
Mix
Module
mix release
Description
Fix Windows service when invoking `erlsrv.exe` in path with spaces
Type
bugfix
Tool
Mix
Module
mix xref
Description
Raise early if `mix xref` is used at the umbrella root
Type
enhancement
Tool
Elixir
Module
File
Description
`File.cp/3` and `File.cp_r/3` with a function as third argument
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Require pin variable when accessing variable inside binary size in match
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
Require the `:return_diagnostics` option to be
Type
enhancement
Tool
Logger
Module
Logger
Description
`add_backend/2`, `remove_backend/2`, and `configure_backend/2` have been deprecated
Type
enhancement
Tool
Logger
Module
Logger
Description
The `:console` configuration has been deprecated in favor of `:default_formatter`
Type
enhancement
Tool
Logger
Module
Logger
Description
The `:backends` configuration has been deprecated in favor of `Logger.add_handlers/1`
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
`:preferred_cli_env` is deprecated in favor of `:preferred_envs` in `def cli`
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
`:preferred_cli_target` is deprecated in favor of `:preferred_targets` in `def cli`
Type
enhancement
Tool
Mix
Module
mix local
Description
The environment variable `HEX_MIRROR` is deprecated in favor of `HEX_BUILDS_URL`
Type
hard_deprecation
Tool
Elixir
Module
Calendar
Description
`Calendar.ISO.day_of_week/3` is deprecated in favor of `Calendar.ISO.day_of_week/4`
Type
hard_deprecation
Tool
Elixir
Module
Exception
Description
`Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1`
Type
hard_deprecation
Tool
Elixir
Module
Kernel
Description
Deprecate `...` as a valid function call identifier
Type
hard_deprecation
Tool
Elixir
Module
Regex
Description
`Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2`
Type
hard_deprecation
Tool
Logger
Module
Logger
Description
`Logger.warn/2` is deprecated in favor of `Logger.warning/2`