1.4.0

Released on 2017-01-04

Changes

Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Date.compare/2`, `Time.compare/2`, `NaiveDateTime.compare/2` and `DateTime.compare/2`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Support `NaiveDateTime.add/3` and `NaiveDateTime.diff/3` for adding seconds (up to microseconds) as well as the difference between two NaiveDateTimes in seconds (up to microseconds)
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Add `Date.leap_year?/1` and `Date.day_of_week/1`
Type
enhancement
Tool
Elixir
Module
Calendar
Description
Ensure `Date`, `Time` and `NaiveDateTime` APIs work with any struct that provides the same set of fields as their respective struct. For example, a `NaiveDateTime` can be given to `Date` since it contains a superset of the fields in the `Date` struct
Type
enhancement
Tool
Elixir
Module
Enum
Description
Add `Enum.map_every/2` that invokes the given function with every nth item
Type
enhancement
Tool
Elixir
Module
Enum
Description
Add `min/2`, `max/2`, `min_max/2`, `min_by/3`, `max_by/3`, and `min_max_by/3` that allow a function specifying the default value when the enumerable is empty
Type
enhancement
Tool
Elixir
Module
Enum
Description
Introduce `Enum.zip/1` to zip multiple entries at once
Type
enhancement
Tool
Elixir
Module
Float
Description
Introduce `Float.ratio/1` that returns a tuple with the numerator and denominator as integers to retrieve the given float
Type
enhancement
Tool
Elixir
Module
GenServer
Description
Log warn on default `handle_info/2` implementation
Type
enhancement
Tool
Elixir
Module
Inspect
Description
Support syntax coloring via the `:syntax_color` option
Type
enhancement
Tool
Elixir
Module
Integer
Description
`Integer.digits/2` now accepts negative integers
Type
enhancement
Tool
Elixir
Module
Integer
Description
Add `Integer.mod/2` and `Integer.floor_div/2`
Type
enhancement
Tool
Elixir
Module
IO
Description
Add `:label` option to `IO.inspect/2` to help distinguish multiple `IO.inspect/2` calls.
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Recognize merge conflict markers in source and provide a readable error message
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn on unused module attributes
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Improve compiler message on unexpected end of line
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Raise `BadBooleanError` when a non-boolean is given on the left-hand side of `and`/`or`
Type
enhancement
Tool
Elixir
Module
List
Description
Add `List.pop_at/3`
Type
enhancement
Tool
Elixir
Module
List
Description
Add `List.myers_difference/2`
Type
enhancement
Tool
Elixir
Module
OptionParser
Description
Expand multi-letter aliases in `OptionParser`
Type
enhancement
Tool
Elixir
Module
Process
Description
Add `Process.send_after/4`
Type
enhancement
Tool
Elixir
Module
Process
Description
Improve error messages on `Process.register/2` errors
Type
enhancement
Tool
Elixir
Module
Registry
Description
Add a local, decentralized and scalable key-value process storage
Type
enhancement
Tool
Elixir
Module
Stream
Description
Add `Stream.map_every/2` that invokes the given function with every nth item
Type
enhancement
Tool
Elixir
Module
Stream
Description
Introduce `Stream.zip/1` to lazily zip multiple entries at once
Type
enhancement
Tool
Elixir
Module
String
Description
Update to Unicode 9.0.0
Type
enhancement
Tool
Elixir
Module
Task
Description
Add `Task.async_stream/3` and `Task.async_stream/5` as well as the supervised versions `Task.Supervisor.async_stream/4` and `Task.Supervisor.async_stream/6`
Type
enhancement
Tool
Elixir
Module
URI
Description
Allow 0 as URI scheme default port
Type
enhancement
Tool
ExUnit
Module
ExUnit.Diff
Description
Use red or green background for whitespace-only diffs
Type
enhancement
Tool
ExUnit
Module
ExUnit.Doctest
Description
Allow inspected structures with multiples lines and unicode characters in the doctest result
Type
enhancement
Tool
ExUnit
Module
ExUnit.Formatter
Description
Replace lhs/rhs with left/right in the formatter for clarity
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Stop appending a trailing dot when autocompleting modules in IEx
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Support autocompletion for structs
Type
enhancement
Tool
IEx
Module
IEx.Autocomplete
Description
Improve IEx autocomplete to support navigating map atom keys
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
`c/1` now compiles in memory by default to avoid common issue where `.beam` files remain at projects root directory
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
Add info about protocols in `i/1`
Type
enhancement
Tool
IEx
Module
IEx.Server
Description
Support interrupting IEx evaluation through the Ctrl+G prompt
Type
enhancement
Tool
Mix
Module
mix archive
Description
Compress archive files built by `mix archive` as they are now unzipped during installation
Type
enhancement
Tool
Mix
Module
mix archive
Description
Install from SCM
Type
enhancement
Tool
Mix
Module
mix compile
Description
Automatically infer the list of applications for Mix projects
Type
enhancement
Tool
Mix
Module
mix cmd
Description
Add the ability to specify one or more apps in `mix cmd`
Type
enhancement
Tool
Mix
Module
mix deps
Description
Warn if there are non-applications in the `apps` directory for umbrella projects
Type
enhancement
Tool
Mix
Module
mix deps
Description
Add warning for invalid paths on `mix deps.clean`
Type
enhancement
Tool
Mix
Module
mix deps
Description
Add `Mix.Project.apps_paths` that returns the paths to children applications in umbrella projects
Type
enhancement
Tool
Mix
Module
mix deps
Description
Add `MIX_REBAR` environment variable for overriding local rebar
Type
enhancement
Tool
Mix
Module
mix escript
Description
Install from SCM
Type
enhancement
Tool
Mix
Module
mix new
Description
Check directory existence in `mix new` and ask how to proceed if one exists
Type
enhancement
Tool
Mix
Module
mix new
Description
Applications built with the `--sup` flag now have an individual module to work as application callback
Type
enhancement
Tool
Mix
Module
mix test
Description
Add `--formatter` option to `mix test`
Type
enhancement
Tool
Mix
Module
mix xref
Description
Provide "did you mean?" suggestions for `mix xref`
Type
bugfix
Tool
Elixir
Module
Access
Description
Do not accept nils in `Access.key/1` and `Access.key/2` in favor of explicit default values (or Access.key!/1 if you expect the key to always be available)
Type
bugfix
Tool
Elixir
Module
Float
Description
Avoid multiple roundings in `Float.ceil/2`, `Float.floor/2` and `Float.round/2`
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Don't crash in `macro_exported?/3` when dealing with Erlang modules
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Ensure locals calls are rewritten when calling a local function or macro from inside a module
Type
bugfix
Tool
Elixir
Module
Kernel
Description
Annotate the context for variables as zero-arity funs in quotes
Type
bugfix
Tool
Elixir
Module
Kernel.SpecialForms
Description
Ensure comprehensions with guards and filters keep proper ordering,
Type
bugfix
Tool
Elixir
Module
Kernel.SpecialForms
Description
Produce meaningful warning when with's else clauses have no effect
Type
bugfix
Tool
Elixir
Module
Macro
Description
Wrap fn calls in parens in `Macro.to_string/2`
Type
bugfix
Tool
Elixir
Module
Macro
Description
Do not print aliases as keys inside keyword lists in `Macro.to_string/2`
Type
bugfix
Tool
Elixir
Module
OptionParser
Description
Support options in `OptionParser.to_argv/2` to ensure `:count` switches are correctly encoded
Type
bugfix
Tool
Elixir
Module
Stream
Description
Ensure `Stream.take/2` does not consume next element on `:suspend`
Type
bugfix
Tool
Elixir
Module
String
Description
Fix infinite recursion in `String.replace_leading/3` and `String.replace_trailing/3` when given an empty string
Type
bugfix
Tool
Elixir
Module
Task
Description
Fix `Task.shutdown/1,2` infinite block when task has no monitor
Type
bugfix
Tool
Elixir
Module
Task
Description
Ensure task cannot link after parents unlinks
Type
bugfix
Tool
ExUnit
Module
ExUnit
Description
Fix a race condition in `assert_receive` where we would assert a message was not received but show it in the list of messages when the message is delivered right after the timeout value
Type
bugfix
Tool
ExUnit
Module
IEx.Helpers
Description
Purge consolidated protocols before and after `recompile/0`
Type
bugfix
Tool
ExUnit
Module
Mix.Dep
Description
Use `gmake` on FreeBSD instead of `make` when compiling make dependencies
Type
bugfix
Tool
ExUnit
Module
Mix.Project
Description
Only copy files from source when they're newer than destination (for Windows machines)
Type
bugfix
Tool
ExUnit
Module
Mix.Task
Description
Ensure non-recursive tasks inside umbrella are reenabled
Type
enhancement
Tool
Elixir
Module
Enum
Description
`Enum.partition/2` has been deprecated in favor of `Enum.split_with/2`
Type
enhancement
Tool
Elixir
Module
System
Description
Deprecate plural time units in favor of singular ones to align with future Erlang releases
Type
enhancement
Tool
ExUnit
Module
ExUnit
Description
Using GenEvent to implement ExUnit formatters is deprecated. Please use the new `GenServer` based formatters instead
Type
enhancement
Tool
Elixir
Module
Access
Description
`Access.key/1` is deprecated due to erratic behaviour for missing keys, please use Access.key/2 instead with proper default values
Type
enhancement
Tool
Elixir
Module
Behaviour
Description
The `Behaviour` module is deprecated. Callbacks may now be defined directly via the `@callback` attribute
Type
enhancement
Tool
Elixir
Module
Enum
Description
Deprecate `Enum.uniq/2` in favor of `Enum.uniq_by/2`
Type
enhancement
Tool
Elixir
Module
Float
Description
`Float.to_char_list/2` and `Float.to_string/2` are deprecated (use the :erlang functions if such conversions are desired)
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Deprecate support for making private functions overridable. Overridable functions must always be public as they must be contracts
Type
enhancement
Tool
Elixir
Module
Kernel
Description
Warn if variable is used as a function call
Type
enhancement
Tool
Elixir
Module
OptionParser
Description
Deprecate aliases with multiple letters, such as `-abc`
Type
enhancement
Tool
Elixir
Module
Set
Description
Deprecate the `Set` module
Type
enhancement
Tool
Elixir
Module
Stream
Description
Deprecate `Stream.uniq/2` in favor of `Stream.uniq_by/2`
Type
enhancement
Tool
IEx
Module
IEx.Helpers
Description
`import_file/2` is deprecated in favor of `import_file_if_available/1`
Type
enhancement
Tool
Mix
Module
Mix.Utils
Description
`underscore/1` and `camelize/1` are deprecated