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