1.17.0

Released on 2024-06-12

Changes

Type
enhancement
Tool
Elixir
Module
Access
Description
Add `Access.find/1` that mirrors `Enum.find/2`
Type
enhancement
Tool
Elixir
Module
Code
Description
Support cursor inside fn/rescue/catch/else/after inside `Code.Fragment.container_cursor_to_quoted/2`
Type
enhancement
Tool
Elixir
Module
Date
Description
Add `Date.shift/2` to shift dates with duration and calendar-specific semantics
Type
enhancement
Tool
Elixir
Module
Date
Description
Allow `Date` to accept years outside of `-9999..9999` range
Type
enhancement
Tool
Elixir
Module
DateTime
Description
Add `DateTime.shift/2` to shift datetimes with duration and calendar-specific semantics
Type
enhancement
Tool
Elixir
Module
Duration
Description
Add a new `Duration` data type
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Add `c:GenServer.format_status/1` callback
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `Kernel.get_in/1` with safe nil-handling for access and structs
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `Kernel.is_non_struct_map/1` guard
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `Kernel.to_timeout/1`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Emit warnings for undefined functions from modules defined within the same context as the caller code
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Support integers in uppercase sigils
Type
enhancement
Tool
Elixir
Module
Keyword
Description
Add `Keyword.intersect/2-3` to mirror the `Map` API
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.Env.define_alias/4`, `Macro.Env.define_import/4`, `Macro.Env.define_require/4`, `Macro.Env.expand_alias/4`, `Macro.Env.expand_import/5`, and `Macro.Env.expand_require/6` to aid the implementation of language servers and embedded languages
Type
enhancement
Tool
Elixir
Module
NaiveDateTime
Description
Add `NaiveDateTime.shift/2` to shift naive datetimes with duration and calendar-specific semantics
Type
enhancement
Tool
Elixir
Module
Process
Description
Add `Process.set_label/1`
Type
enhancement
Tool
Elixir
Module
String
Description
Add `String.byte_slice/3` to slice a string to a maximum number of bytes while keeping it UTF-8 encoded
Type
enhancement
Tool
Elixir
Module
System
Description
Support `use_stdio: false` in `System.cmd/3` and `System.shell/2`
Type
enhancement
Tool
Elixir
Module
Time
Description
Add `Time.shift/2` to shift times with duration and calendar-specific semantics
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Propagate the test process itself as a caller in `start_supervised`
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Include max cases in ExUnit reports
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Warns if `recompile` was called and the current working directory changed
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add `c/0` as an alias to `continue/0`
Type
enhancement
Tool
IEx
Module
IEx.Pry
Description
Add `IEx.Pry.annotate_quoted/3` to annotate a quoted expression with pry breakpoints
Type
enhancement
Tool
Logger
Module
Logger
Description
Format `:gen_statem` reports using Elixir data structures
Type
enhancement
Tool
Logger
Module
Logger
Description
Include process label in logger events
Type
enhancement
Tool
Mix
Module
mix deps
Description
Add `:depth` option to `Mix.SCM.Git`, thus supporting shallow clones of Git dependencies
Type
enhancement
Tool
Mix
Module
mix deps
Description
Warn if `:optional` is used in combination with `:in_umbrella`
Type
enhancement
Tool
Mix
Module
mix deps.get
Description
Do not add optional dependency requirements if its parent dep was skipped
Type
enhancement
Tool
Mix
Module
mix deps.tree
Description
Add `--umbrella-only` to `mix deps.tree`
Type
enhancement
Tool
Mix
Module
mix profile.tprof
Description
Add a new profiler, available on Erlang/OTP 27+, which can measure count, time, and heap usage
Type
enhancement
Tool
Mix
Module
mix test
Description
Add `mix test --breakpoints` that sets up a breakpoint before each test that will run
Type
enhancement
Tool
Mix
Module
mix test
Description
Add `mix test --repeat-until-failure` to rerun tests until a failure occurs
Type
enhancement
Tool
Mix
Module
mix test
Description
Add `mix test --slowest-modules` to print slowest modules based on all of the tests they hold
Type
enhancement
Tool
Mix
Module
mix test
Description
Generate cover HTML files in parallel
Type
bugfix
Tool
Elixir
Module
bin/elixir.bat
Description
Improve handling of quotes and exclamation marks in flags
Type
bugfix
Tool
Elixir
Module
Code
Description
Address a bug where AST nodes for `(a -> b)` were not wrapped as part of the literal encoder
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Resolve inconsistencies of how `..` and `...` are handled at the AST level
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix parsing precedence of ambiguous operators followed by containers
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not expand code in `quote bind_quoted: ...` twice
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Respect `:line` property when `:file` is given as option to `quote`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not crash on `Macro.escape/2` when passing a quote triplet without valid meta
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Avoid double tracing events when capturing a function
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Fix a bug where captured arguments would conflict when a capture included a macro that also used captures
Type
bugfix
Tool
Elixir
Module
Module
Description
Return default value in `Module.get_attribute/3` for persisted attributes which have not yet been written to
Type
bugfix
Tool
IEx
Module
IEx.Helpers
Description
Update the history size whenever history is pruned
Type
bugfix
Tool
Mix
Module
mix deps
Description
Fix error message for diverged SCM definition in sibling
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Deprecate `c:GenServer.format_status/2` callback to align with Erlang/OTP 25+
Type
enhancement
Tool
Mix
Module
mix profile.cprof
Description
Deprecated in favor of the new `mix profile.tprof`
Type
enhancement
Tool
Mix
Module
mix profile.eprof
Description
Deprecated in favor of the new `mix profile.tprof`
Type
hard_deprecation
Tool
Elixir
Module
IO
Description
Passing `:all` to `IO.read/2` and `IO.binread/2` is deprecated, pass `:eof` instead
Type
hard_deprecation
Tool
Elixir
Module
Kernel
Description
Single-quote charlists are deprecated, use `~c` instead
Type
hard_deprecation
Tool
Elixir
Module
Kernel
Description
Deprecate escaping closing delimiter in uppercase sigils
Type
hard_deprecation
Tool
Elixir
Module
Range
Description
`left..right` without explicit steps inside patterns and guards is deprecated, write `left..right//step` instead
Type
hard_deprecation
Tool
Elixir
Module
Range
Description
Decreasing ranges, such as `10..1` without an explicit step is deprecated, write `10..1//-1` instead
Type
hard_deprecation
Tool
ExUnit
Module
ExUnit.Case
Description
`register_test/4` is deprecated in favor of `register_test/6` for performance reasons