1.8.0

Released on 2019-01-14

Changes

Type
enhancement
Tool
EEx
Module
EEx
Description
Optimize the default template engine to compile and execute more efficiently
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Calendar.TimeZoneDatabase` and a `Calendar.UTCOnlyTimeZoneDatabase` implementation
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add callbacks `day_of_year/3`, `quarter_of_year/3`, `year_of_era/1`, and `day_of_era/3`
Type
enhancement
Tool
Elixir
Module
Code.Formatter
Description
Preserve user's choice of new line after most operators
Type
enhancement
Tool
Elixir
Module
Date
Description
Add `Date.day_of_year/1`, `Date.quarter_of_year/1`, `Date.year_of_era/1`, and `Date.day_of_era/1`
Type
enhancement
Tool
Elixir
Module
DateTime
Description
Add `DateTime.from_naive/3`, `DateTime.now/1`, and `DateTime.shift_zone/3`
Type
enhancement
Tool
Elixir
Module
File
Description
Allow `:raw` option in `File.exists?/2`, `File.regular?/2`, and `File.dir?/2`
Type
enhancement
Tool
Elixir
Module
File
Description
Allow POSIX time as an integer in `File.touch/2` and `File.touch!/2`
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Allow `Inspect` protocol to be derivable with the `:only`/`:except` options
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Do not propagate counters to variables in quote inside another quote
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on ambiguous use of `::` and `|` in typespecs
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `:delegate_to` `@doc` metadata tag when using `defdelegate`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Improve compile-time building of ranges via the `..` operator
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Compile charlist interpolation more efficiently
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Add `floor/1` and `ceil/1` guards
Type
enhancement
Tool
Elixir
Module
Kernel.SpecialForms
Description
Add `:reduce` option to `for` comprehensions
Type
enhancement
Tool
Elixir
Module
List
Description
Add `List.myers_difference/3` and `List.improper?/1`
Type
enhancement
Tool
Elixir
Module
Macro
Description
Add `Macro.struct!/2` for proper struct resolution during compile time
Type
enhancement
Tool
Elixir
Module
Map
Description
Optimize and merge nested maps `put` and `merge` operations
Type
enhancement
Tool
Elixir
Module
Range
Description
Add `Range.disjoint?/2`
Type
enhancement
Tool
Elixir
Module
Record
Description
Reduce memory allocation when updating multiple fields in a record
Type
enhancement
Tool
Elixir
Module
Registry
Description
Allow associating a value on `:via` tuple
Type
enhancement
Tool
Elixir
Module
String
Description
Add `String.bag_distance/2`
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `$callers` tracking to `Task` - this makes it easier to find which process spawned a task and use it for tracking ownership and monitoring
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Add `ExUnit.after_suite/1` callback
Type
enhancement
Tool
ExUnit
Module
ExUnit.Assertions
Description
Show last N messages (instead of first N) from mailbox on `assert_receive` fail
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add `port/1` and `port/2`
Type
enhancement
Tool
IEx
Module
IEx.Server
Description
Expose `IEx.Server.run/1` for custom IEx sessions with the ability to broker pry sessions
Type
enhancement
Tool
Mix
Module
Mix
Description
Add `Mix.target/0` and `Mix.target/1` to control dependency management per target
Type
enhancement
Tool
Mix
Module
Mix.Project
Description
Add `:depth` and `:parents` options to `deps_paths/1`
Type
enhancement
Tool
Mix
Module
mix archive.install
Description
Add a timeout when installing archives
Type
enhancement
Tool
Mix
Module
mix compile
Description
Include optional dependencies in `:extra_applications`
Type
enhancement
Tool
Mix
Module
mix escript.install
Description
Add a timeout when installing escripts
Type
enhancement
Tool
Mix
Module
mix format
Description
Warn when the same file may be formatted by multiple `.formatter.exs`
Type
enhancement
Tool
Mix
Module
mix test
Description
Allow setting the maximum number of failures via `--max-failures`
Type
enhancement
Tool
Mix
Module
mix test
Description
Print a message instead of raising on unmatched tests inside umbrella projects
Type
bugfix
Tool
Elixir
Module
Calendar
Description
Allow printing dates with more than 9999 years
Type
bugfix
Tool
Elixir
Module
Exception
Description
Exclude deprecated functions in "did you mean?" hints
Type
bugfix
Tool
Elixir
Module
Float
Description
Handle subnormal floats in `Float.ratio/1`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Remove `Guard test tuple_size(...) can never succeed` Dialyzer warning on `try`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Expand operands in `size*unit` bitstring modifier instead of expecting `size` and `unit` to be literal integers
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not deadlock on circular struct dependencies in typespecs
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Raise proper error message when passing flags to the Erlang compiler that Elixir cannot handle
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Do not leak variables in `cond` clauses with a single matching at compile-time clause
Type
bugfix
Tool
Elixir
Module
NaiveDateTime
Description
Do not accept leap seconds in builder and parsing functions
Type
bugfix
Tool
Elixir
Module
String
Description
Fix ZWJ handling in Unicode grapheme clusters
Type
bugfix
Tool
Elixir
Module
StringIO
Description
Handle non-printable args in StringIO gracefully
Type
bugfix
Tool
IEx
Module
IEx.Helpers
Description
Use typespec info (instead of docs chunk) and properly format callbacks in `b/1`
Type
bugfix
Tool
Logger
Module
Logger
Description
Allow Logger backends to be dynamically removed when an application is shutting down
Type
bugfix
Tool
Mix
Module
mix compile
Description
Ensure changes in deps propagate to all umbrella children - this fix a long standing issue where updating a dependency would not recompile all projects accordingly, requiring a complete removal of `_build`
Type
bugfix
Tool
Mix
Module
mix compile
Description
Avoid time drift when checking and updating compiler manifest files
Type
bugfix
Tool
Mix
Module
mix compile.app
Description
Respect the `:only` option between umbrella siblings
Type
bugfix
Tool
Mix
Module
mix compile.protocols
Description
Reconsolidate protocols if local dependencies are stale
Type
bugfix
Tool
Mix
Module
mix deps
Description
Properly mark dependencies with different `:system_env` as diverged
Type
bugfix
Tool
Mix
Module
mix new
Description
Use `--module` value when setting up filenames
Type
enhancement
Tool
Elixir
Module
Enum
Description
Passing a non-empty list to `Enum.into/2` was inconsistent with maps and is deprecated in favor of `Kernel.++/2` or `Keyword.merge/2`
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
`surround/3` is deprecated in favor of `Inspect.Algebra.concat/2` and `Inspect.Algebra.nest/2`
Type
enhancement
Tool
Elixir
Module
Inspect.Algebra
Description
`surround_many/6` is deprecated in favor of `container_doc/6`
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Using `@since` will now emit a unused attribute warning. Use `@doc since: "1.7.2"` instead
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Passing a non-empty list as `:into` in `for` comprehensions was inconsistent with maps and is deprecated in favor of `Kernel.++/2` or `Keyword.merge/2`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
`files/2` is deprecated in favor of `compile/2`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelCompiler
Description
`files_to_path/2` is deprecated in favor of `compile_to_path/2`
Type
enhancement
Tool
Elixir
Module
Kernel.ParallelRequire
Description
`files/2` is deprecated in favor of `Kernel.ParallelCompiler.require/2`
Type
enhancement
Tool
Elixir
Module
System
Description
`:seconds`, `:milliseconds`, etc. as time units is deprecated in favor of `:second`, `:millisecond`, etc.
Type
enhancement
Tool
Elixir
Module
System
Description
`System.cwd/0` and `System.cwd!/0` are deprecated in favor of `File.cwd/0` and `File.cwd!/0`
Type
enhancement
Tool
Mix
Module
mix compile.erlang
Description
Returning `{:ok, contents}` or `:error` as the callback in `Mix.Compilers.Erlang.compile/6` is deprecated in favor of returning `{:ok, contents, warnings}` or `{:error, errors, warnings}`