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