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}`