1.10.0
Released on 2020-01-27
Changes
- Type
- enhancement
- Tool
- Elixir
- Module
- Application
- Description
- Add `Application.compile_env/3` and `Application.compile_env!/2` for reading values at compilation time and tracking if they accidentally change during runtime
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Allow custom calendar representations in calendar sigils
- Type
- enhancement
- Tool
- Elixir
- Module
- Calendar
- Description
- Add `c:Calendar.parse_time/1`, `c:Calendar.parse_date/1`, `c:Calendar.parse_naive_datetime/1` and `c:Calendar.parse_utc_datetime/1` callbacks to calendar behaviour
- Type
- enhancement
- Tool
- Elixir
- Module
- CLI
- Description
- Add support for `NO_COLOR` environment variable
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Add `:token_metadata` and `:literal_encoder` support to `Code.string_to_quoted/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Add compiler tracing to lift events done by the compiler
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- Return `{:error, :unavailable}` in `Code.ensure_compiled/1` if module is in a deadlock
- Type
- enhancement
- Tool
- Elixir
- Module
- DateTime
- Description
- Add `DateTime.now!/2` and `DateTime.shift_zone!/3`
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Speed up getting one random element from enumerables
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Add `Enum.frequencies/1`, `Enum.frequencies_by/2`, and `Enum.map_intersperse/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Allow a sorting function on `Enum.min/max/min_by/max_by`
- Type
- enhancement
- Tool
- Elixir
- Module
- Enum
- Description
- Add `asc/desc` and `compare/1` support to `Enum.sort/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Exception
- Description
- Add version alongside app names in stacktraces
- Type
- enhancement
- Tool
- Elixir
- Module
- Function
- Description
- Add `Function.identity/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Add `Kernel.is_struct/1` and `Kernel.is_map_key/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn when function head comes immediately after the implementation instead of before the implementation
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Warn if duplicate key is found in struct declaration
- Type
- enhancement
- Tool
- Elixir
- Module
- Kernel
- Description
- Print all undefined functions as warnings and then raise. This allows users to see all undefined calls at once, when it would otherwise require them to compile the code multiple times
- Type
- enhancement
- Tool
- Elixir
- Module
- Keyword
- Description
- Add `Keyword.pop!/2` and `Keyword.pop_values/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Map
- Description
- Add `Map.pop!/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- MapSet
- Description
- Optimize multiple operations
- Type
- enhancement
- Tool
- Elixir
- Module
- Module
- Description
- Add `Module.has_attribute?/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Module
- Description
- Add `@compile {:no_warn_undefined, mfa_or_module}` to turn off undefined function warnings
- Type
- enhancement
- Tool
- Elixir
- Module
- NaiveDateTime
- Description
- Add `NaiveDateTime.local_now/0`
- Type
- enhancement
- Tool
- Elixir
- Module
- Record
- Description
- Warn if duplicate key is found in record declaration
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- Update to Unicode 12.1
- Type
- enhancement
- Tool
- Elixir
- Module
- StringIO
- Description
- Add `:encoding` option to StringIO and optimize `get_chars` operation
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.Assertions
- Description
- Support diffs in pattern matching and in `assert_receive`
- Type
- enhancement
- Tool
- ExUnit
- Module
- ExUnit.CaptureIO
- Description
- Supports capturing named devices in asynchronous tests
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Warn on circular file imports when loading default `.iex.exs`
- Type
- enhancement
- Tool
- IEx
- Module
- IEx
- Description
- Allow customization of the continuation prompt on IEx
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Allow `start_options` to be configured on Logger's GenEvent
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Integrate Elixir's Logger with Erlang/OTP 21+'s logger. This means setting up the logger level in Elixir will automatically change the logger level for Erlang and vice-versa
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile
- Description
- Add `--profile time` flag to profile compilation steps
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps.compile
- Description
- Add `--skip-umbrella-children` flag. The new flag does not compile umbrella apps. This is useful for building caches in CD/CI pipelines
- Type
- enhancement
- Tool
- Mix
- Module
- mix deps.unlock
- Description
- Add `--check-unused` flag. The new flag raises if there are any unused dependencies in the lock file
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Allow `RELEASE_DISTRIBUTION` to be set to `none`
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Support overlays in `rel/overlays`
- Type
- enhancement
- Tool
- Mix
- Module
- mix release
- Description
- Allow configuration reboot to be disabled in releases
- Type
- enhancement
- Tool
- Mix
- Module
- mix test
- Description
- Add support for simple round-robin test partitioning across multiple machines
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Project
- Description
- Add `MIX_DEPS_PATH` environment variable for setting `:deps_path`
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Project
- Description
- Add `Mix.Project.deps_scms/1` that returns deps with their SCMs
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Task
- Description
- Add `Mix.Task.Compiler.after_compiler/2` callback, to simplify compilers that may need to run something at multiple steps
- Type
- bugfix
- Tool
- EEx
- Module
- EEx
- Description
- Ensure multiline do/end with no spaces compile under trim mode
- Type
- bugfix
- Tool
- Elixir
- Module
- Enum
- Description
- Allow positive range slices on infinite streams given to `Enum.slice/2`
- Type
- bugfix
- Tool
- Elixir
- Module
- Kernel
- Description
- Raise error on functions/guards without implementation
- Type
- bugfix
- Tool
- Elixir
- Module
- Keyword
- Description
- Ensure keyword replace and update preserve order
- Type
- bugfix
- Tool
- Elixir
- Module
- Module
- Description
- Raise instead of silently failing when performing a write module operation during after-compile
- Type
- bugfix
- Tool
- Elixir
- Module
- Module
- Description
- Fix `@macrocallback` definitions with a `when` clause
- Type
- bugfix
- Tool
- Elixir
- Module
- Path
- Description
- Fix `Path.absname/1` to correctly handle UNC paths on Windows
- Type
- bugfix
- Tool
- Elixir
- Module
- Stream
- Description
- Close with correct accumulator in `Stream.resource/3` when called for a single-element list
- Type
- bugfix
- Tool
- Elixir
- Module
- Stream
- Description
- Allow `Stream.cycle/1` to be double nested inside `Stream.cycle/1`
- Type
- bugfix
- Tool
- Elixir
- Module
- URI
- Description
- Preserve slashes in URIs without authority
- Type
- bugfix
- Tool
- Elixir
- Module
- URI
- Description
- Require a nil or an absolute path on URIs with host or authority
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Exit IEx session if the group leader exits
- Type
- bugfix
- Tool
- IEx
- Module
- IEx
- Description
- Allow `pry` to be used in non-tty terminals
- Type
- bugfix
- Tool
- Mix
- Module
- mix compile
- Description
- Do not filter out warning for external files from diagnostics
- Type
- bugfix
- Tool
- Mix
- Module
- Mix.Project
- Description
- Ensure user given `:manager` to dependencies has higher precedence than the SCM one
- Type
- bugfix
- Tool
- Mix
- Module
- Mix.Project
- Description
- Recompile umbrella children when config files change and `mix compile` is called from the umbrella root
- Type
- bugfix
- Tool
- Mix
- Module
- Mix.Task
- Description
- Always recompile before running tasks from dependencies
- Type
- bugfix
- Tool
- Mix
- Module
- Mix.Task
- Description
- Ensure project's Logger config is used when running Mix tasks
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- `compiler_options/0` is deprecated in favor of `compiler_option/1`
- Type
- enhancement
- Tool
- Mix
- Module
- Mix.Config
- Description
- `Mix.Config.persist/1` has been deprecated. Instead of `Mix.Config.persist(config)` use `Application.put_all_env(config, persistent: true)` (`Application.put_all_env/2` was added in v1.9)
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- `calls/0` is deprecated in favor of compiler tracer
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref
- Description
- The `xref.exclude` option has been moved to `elixirc_options.no_warn_undefined` as the `xref` pass has been moved into the compiler
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- `Code.load_file/2` has been deprecated in favor of `Code.require_file/2` or `Code.compile_file/2`
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- `Code.loaded_files/0` and `Code.unload_file/1` have been deprecated in favor of `Code.required_files/0` and `Code.unrequire_file/1` respectively
- Type
- enhancement
- Tool
- Elixir
- Module
- Code
- Description
- `Code.ensure_compiled?/1` is deprecated in favor of `Code.ensure_compiled/1`
- Type
- enhancement
- Tool
- Elixir
- Module
- String
- Description
- `String.normalize/2` has been deprecated in favor of `:unicode.characters_to_nfc_binary/1` or `:unicode.characters_to_nfd_binary/1` which ship as part of Erlang/OTP 20+
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor
- Description
- `Supervisor.Spec.supervise/2` has been deprecated in favor of the new Supervisor child specification
- Type
- enhancement
- Tool
- Elixir
- Module
- Supervisor
- Description
- The `:simple_one_for_one` strategy in `Supervisor` has been deprecated in favor of `DynamicSupervisor`
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- `:compile_time_purge_level` application environment configuration has been deprecated in favor of the more general `:compile_time_purge_matching` config
- Type
- enhancement
- Tool
- Logger
- Module
- Logger
- Description
- Deprecate logging non-chardata values
- Type
- enhancement
- Tool
- Mix
- Module
- mix compile.xref
- Description
- This check has been moved into the compiler and has no effect now
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref deprecations
- Description
- This check has been moved into the compiler and has no effect now
- Type
- enhancement
- Tool
- Mix
- Module
- mix xref unreachable
- Description
- This check has been moved into the compiler and has no effect now