- [Calendar] Add
Date.compare/2
,Time.compare/2
,NaiveDateTime.compare/2
andDateTime.compare/2
- [Calendar] Support
NaiveDateTime.add/3
andNaiveDateTime.diff/3
for adding seconds (up to microseconds) as well as the difference between two NaiveDateTimes in seconds (up to microseconds) - [Enum] Add
Enum.map_every/2
that invokes the given function with every nth item - [Enum] Add
min/2
,max/2
,min_max/2
,min_by/3
,max_by/3
, andmin_max_by/3
that allow a function specifying the default value when the enumerable is empty - [Enum] Introduce
Enum.zip/1
to zip multiple entries at once - [Float] Introduce
Float.ratio/1
that returns a tuple with the numerator and denominator to retrieve the given float - [GenServer] Log error on default
handle_info/2
implementation - [Integer]
Integer.digits/2
now accepts negative integers - [Integer] Add
Integer.mod/2
andInteger.floor_div/2
- [List] Add
List.pop_at/3
- [List] Add
List.myers_difference/2
- [OptionParser] Expand multi-letter aliases in
OptionParser
- [Process] Add
Process.send_after/4
- [Process] Improve error messages on
Process.register
errors - [Stream] Add
Stream.map_every/2
that invokes the given function with every nth item - [Stream] Introduce
Stream.zip/1
to lazily zip multiple entries at once - [Task] Add
Task.async_stream/3
andTask.async_stream/5
as well as the supervised versionsTask.Supervisor.async_stream/4
andTask.Supervisor.async_stream/6
- [URI] Allow 0 as URI scheme default port
- [ExUnit.Doctest] Allow inspected structures with multiples lines and unicode characters in the doctest result
- [ExUnit.Formatter] Replace lhs/rhs with left/right in the formatter for clarity
- [IEx.Helpers]
c/1
now compiles in memory by default to avoid common issue where.beam
files remain at projects root directory - [IEx.Helpers] Add info about protocols in
i/1
- [IEx.Autocomplete] Stop appending a trailing dot when autocompleting modules in IEx
- [IEx.Autocomplete] Support autocompletion for structs
- [IEx.Server] Support interrupting IEx evaluation through the Ctrl+G prompt
- [Mix] Provide "did you mean?" suggestions for
mix xref
- [Mix] Add the ability to specify one or more apps in
mix cmd
- [Mix] Compress archive files built by
mix archive
as they are now unzipped during installation - [Mix] Check directory existence in
mix new
and ask how to proceed if one exists - [Mix] Applications built with the
--sup
flag now have an individual module to work as application callback - [Mix] Add
--formatter
option tomix test
- [Mix.Dep] Add warning for invalid paths on
mix deps.clean
- [Mix.Project] Add
Mix.Project.apps_paths
that returns the paths to children applications in umbrella projects - [Mix.Rebar] Add
MIX_REBAR
environment variable for overriding local rebar
- [Float] Avoid multiple roundings in
Float.{ceil/2, floor/2, round/2}
- [Kernel] Don't crash in
macro_exported?/3
when dealing with Erlang modules - [Kernel.SpecialForms] Produce meaningful warning when with's else clauses have no effect
- [Macro] Wrap fn calls in parens in
Macro.to_string/2
- [Macro] Do not print aliases as keys inside keyword lists in
Macro.to_string/2
- [Stream] Ensure
Stream.take/2
does not consume next element on:suspend
- [String] Fix infinite recursion in
String.replace_leading/3
andString.replace_trailing/3
when given an empty string - [Task] Fix
Task.shutdown/1,2
infinite block when task has no monitor
- [ExUnit] 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
- [Mix.Dep] Use
gmake
on FreeBSD instead ofmake
when compiling make dependencies - [Mix.Project] Only copy files from source when they're newer than destination (for Windows machines)
- [Mix.Task] Ensure non-recursive tasks inside umbrella are reenabled
- [Enum]
Enum.partition/2
has been deprecated in favor ofEnum.split_with/2
- [System] Deprecate plural time units in favor of singular ones to align with future Erlang releases
- [Behaviour] The
Behaviour
module is deprecated. Callbacks may now be defined directly via the@callback
attribute - [Enum] Deprecate
Enum.uniq/2
in favor ofEnum.uniq_by/2
- [Float]
Float.to_char_list/2
andFloat.to_string/2
are deprecated (use the :erlang functions if such conversions are desired) - [Kernel] Deprecate support for making private functions overridable. Overridable functions must always be public as they must be contracts
- [Kernel] Warn if variable is used as a function call
- [OptionParser] Deprecate aliases with multiple letters, such as
-abc
- [Stream] Deprecate
Stream.uniq/2
in favor ofStream.uniq_by/2
- [IEx.Helpers]
import_file/2
is deprecated in favor ofimport_file_if_available/1
- [Mix.Utils]
underscore/1
andcamelize/1
are deprecated
The CHANGELOG for v1.3 releases can be found in the v1.3 branch.