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`