1.11.0
Released on 2020-10-06
Changes
- Type
- enhancement
- Tool
- EEx
- Module
- EEx
- Description
- Track column information in EEx templates when enabled in the compiler
- Type
- enhancement
- Tool
- EEx
- Module
- EEx
- Description
- Show column information in EEx error messages
- Type
- enhancement
- Tool
- EEx
- Module
- EEx
- Description
- Support `:indentation` option when compiling EEx templates for proper column tracking
- Type
- enhancement
- Tool
- Elixir
- Module
- Access
- Description
- Add `Access.at!/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add `Calendar.strftime/3` for datetime formatting
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add linear integer representations to Calendar modules: `Date.from_gregorian_days/2`, `Date.to_gregorian_days/1`, `NaiveDateTime.from_gregorian_seconds/3`, `NaiveDateTime.to_gregorian_seconds/1`, `Time.from_seconds_after_midnight/1`, and `Time.to_seconds_after_midnight/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add `new!` to Date/Time/NaiveDateTime/DateTime (`new` has also been added to `DateTime` for completeness)
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Support custom starting day of the week in `Date.day_of_week/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add `Date.beginning_of_month/1` and `Date.end_of_month/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add `Date.beginning_of_week/2` and `Date.end_of_week/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Add `:column` to `Code.string_to_quoted*/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Add `Code.can_await_module_compilation?/0` to check if the parallel compiler is enabled and it can await for other modules to be compiled
- Type
- enhancement
- Tool
- Elixir
- Module
- Config
- Description
- Support `config_env/0` and `config_target/0` in `config` files
- Type
- enhancement
- Tool
- Elixir
- Module
- Config
- Description
- Allow `import_config` to be disabled for some configuration files
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Allow a sorting function on `Enum.min_max_by/3,4`, including the new `compare/2` conventions
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `is_struct/2` guard
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `is_exception/1` and `is_exception/2` guards
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Support `map.field` syntax in guards
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `+++` and `---` with right associativity to the list of custom operators
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if a variable that looks like a compiler variable (such as `__MODULE__`) is unused
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.ParallelCompiler
- Description
- Report individual file compilation times when `profile: :time` is given
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel.ParallelCompiler
- Description
- Improve precision of `:long_compilation_threshold` so it takes only compilation times into account (and not waiting times)
- Type
- enhancement
- Tool
- Elixir
- Module
- Registry
- Description
- Add `Registry.delete_meta/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Task
- Description
- Add `Task.await_many/2`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Add support for coloring on Windows 10 consoles/shells
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Add `ExUnit.fetch_test_supervisor/0`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Add `@tag :tmp_dir` support to ExUnit. The temporary directory is automatically created and pruned before each test
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit
- Description
- Add file and line to ExUnit's `--trace`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Assertion
- Description
- Allow receive timeouts to be computed at runtime
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Case
- Description
- Add `register_test/6` to speed up compilation of custom tests
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Doctest
- Description
- Allow users to add tags to doctests
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Add support for coloring on Windows 10 consoles/shells
- Type
- enhancement
- Tool
- IEx
- Module
- IEx.Helpers
- Description
- Show docs from Erlang modules that have been compiled with the docs chunk
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Add `notice`, `critical`, `alert`, and `emergency` log levels
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Support structured logging by logging maps or keyword lists
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Allow level to be set per module with `Logger.put_module_level/2`
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Include `erl_level` in Logger's metadata
- Type
- enhancement
- Tool
- Mix
- Module
- mix
- Description
- Add `MIX_BUILD_ROOT` to config `_build` dir
- Type
- enhancement
- Tool
- Mix
- Module
- mix
- Description
- Introduce `MIX_XDG` as a simpler mechanism to opt-in to the XDG specification
- Type
- enhancement
- Tool
- Mix
- Module
- mix
- Description
- Allow requirements for a Mix task to be listed via the `@requirements` module attribute
- Type
- enhancement
- Tool
- Mix
- Module
- mix
- Description
- Allow optional dependencies to be defined in `:extra_applications` and `:applications`
- Type
- enhancement
- Tool
- Mix
- Module
- mix app.config
- Description
- Add new `mix app.config` task that compiles applications and loads runtime configuration
- Type
- enhancement
- Tool
- Mix
- Module
- mix archive.install
- Description
- Support `--repo` option on Hex packages
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile
- Description
- Support the `__mix_recompile__?/0` callback for custom behaviour on when Mix should recompile a given module
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile.elixir
- Description
- Mark modules for path dependencies as "Export dependencies" if they changed but their public interface is the same
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile.elixir
- Description
- Track application boundaries in the Elixir compiler. If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper applications, a warning will be emitted. A warning will also be emitted if you invoke code from an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between apps
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps
- Description
- Sort the dependencies alphabetically before printing
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps
- Description
- Use `origin/HEAD` as the default Git ref in dependencies
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps
- Description
- Redact Git `username`/`password` in output log
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps
- Description
- Support rebar3's `git_subdir` resource type
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps.compile
- Description
- Allow local deps to be skipped on `mix deps.compile`
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps.unlock
- Description
- Print which dependencies get unlocked when using the `--unused` flag
- Type
- enhancement
- Tool
- Mix
- Module
- mix escript.install
- Description
- Support `--repo` option on Hex packages
- Type
- enhancement
- Tool
- Mix
- Module
- mix new
- Description
- Add `@impl` to application generated by `mix new --sup`
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Enable overriding `sys.config` location via `RELEASE_SYS_CONFIG` env var
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Boot a release under configuration in interactive mode and then swap to embedded mode (if running on Erlang/OTP 23+)
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Add `rel_templates_path` to configure the source of template files such as "env.sh.eex", "vm.args.eex" and "overlays"
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Allow some chunks to be kept in the `:strip_beams` config
- Type
- enhancement
- Tool
- Mix
- Module
- mix test
- Description
- Allow `:ignore_modules` inside `:test_coverage` option
- Type
- enhancement
- Tool
- Mix
- Module
- mix test.coverage
- Description
- Add `mix test.coverage` that aggregates coverage results from umbrellas and OS partitioning
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Make the `--label` option for `mix xref graph` transitive by default and add `--only-direct` for only direct dependencies
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Add `--format cycles` support for `mix xref graph`
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- Add support to `mix xref graph` for using `--source` and `--sink` at the same time
- Type
- bugfix
- Tool
- EEx
- Module
- EEx
- Description
- Make trimming behaviour via the `:trim` option more consistent
- Type
- bugfix
- Tool
- Elixir
- Module
- Application
- Description
- Warn if non-atom keys are given to `put_env`, `get_env`, `fetch_env`, and `delete_env`
- Type
- bugfix
- Tool
- Elixir
- Module
- Code
- Description
- Do not send language keyword through the `:static_atoms_encoder` in `Code.string_to_quoted`
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Validate values given to `:line` in quote to avoid emitting invalid ASTs
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Report the correct line number when raising inside a macro
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Fix an issue where `elixirc` would not accept paths with backslash (`\`) separators on Windows
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Properly parse `&//2` (i.e. the capture of the division operator)
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Raise `CompileError` when trying to define reserved types
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Improve compiler error message when using `|` in a `def` signature
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Improve error message when trying to use invalid list operators in guards
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel.SpecialForms
- Description
- Add `|/2` to the list of special forms to avoid inconsistent behaviour on overrides
- Type
- bugfix
- Tool
- Elixir
- Module
- Keyword
- Description
- Enforce keys to be atoms in `Keyword.keys/1`
- Type
- bugfix
- Tool
- Elixir
- Module
- Record
- Description
- Keep lexical ordering when creating records
- Type
- bugfix
- Tool
- Elixir
- Module
- Registry
- Description
- Do not crash when a process with key-value has been registered using `:via` and it fails to start on `init`
- Type
- bugfix
- Tool
- Elixir
- Module
- URI
- Description
- `URI.decode_query/2` emits an empty string for parameters without values, according to [URL's living standard](https://url.spec.whatwg.org/#application/x-www-form-urlencoded) - note this behaviour is not specified in the spec implemented by the URI module, so the living standard was chosen
- Type
- bugfix
- Tool
- Elixir
- Module
- Version
- Description
- Add defaults and enforce keys in `Version` struct
- Type
- bugfix
- Tool
- ExUnit
- Module
- ExUnit.CaptureIO
- Description
- Fix race condition where a dead capture would still be considered as active
- Type
- bugfix
- Tool
- ExUnit
- Module
- ExUnit.Diff
- Description
- Do not crash when failing to eval/inspect struct
- Type
- bugfix
- Tool
- ExUnit
- Module
- ExUnit.Diff
- Description
- Properly diff numbers in respect to `==` and `===` operators
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Fix tokenizer emitting repeated warnings in the REPL
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Ensure `--dot-iex` is preserved when restarting the evaluator and after shell respawn
- Type
- bugfix
- Tool
- IEx
- Module
- IEx.Pry
- Description
- Ensure `IEx.pry` can be triggered more than twice when invoked from the same process
- Type
- bugfix
- Tool
- Mix
- Module
- mix cmd
- Description
- Fix a bug where only the first --app option would be executed
- Type
- bugfix
- Tool
- Mix
- Module
- mix compile
- Description
- Fix an issue where new protocol implementations would not propagate when running `mix compile` from an umbrella root
- Type
- bugfix
- Tool
- Mix
- Module
- mix deps.compile
- Description
- Use `gmake` instead of `make` when compiling deps on NetBSD/DragonFlyBSD
- Type
- bugfix
- Tool
- Mix
- Module
- mix release
- Description
- Load `.app` from dependencies path when it is a project dependency
- Type
- bugfix
- Tool
- Mix
- Module
- mix release
- Description
- Always include "rel/overlays" in the list of overlays directories if available
- Type
- bugfix
- Tool
- Mix
- Module
- mix release
- Description
- Change `erts/bin/erl` binary mode to `0o755`
- Type
- bugfix
- Tool
- Mix
- Module
- mix test
- Description
- Compare to test coverage threshold inclusively
- Type
- bugfix
- Tool
- Logger
- Module
- Logger
- Description
- Print metadata for all types that implement String.Chars
- Type
- enhancement
- Tool
- Elixir
- Module
- Exception
- Description
- `Exception.exception?/1` is deprecated in favor of `Kernel.is_exception/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Regex
- Description
- `Regex.regex?/1` is deprecated in favor of `Kernel.is_struct/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Logger
- Description
- `warn` log level is deprecated in favor of `warning`
- Type
- enhancement
- Tool
- Elixir
- Module
- mix release
- Description
- `config/releases.exs` is deprecated in favor of a more general purpose `config/runtime.exs`
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor
- Description
- Deprecate `Supervisor.start_child/2` and `Supervisor.terminate_child/2` in favor of `DynamicSupervisor`
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor.Spec
- Description
- Deprecate `Supervisor.Spec.worker/3` and `Supervisor.Spec.supervisor/3` in favor of the new typespecs
- Type
- enhancement
- Tool
- Elixir
- Module
- System
- Description
- Deprecate `System.stacktrace/0` in favor of `__STACKTRACE__`
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Project
- Description
- Deprecate `Mix.Project.compile/2` in favor of `Mix.Task.run("compile", args)`