Enhancement
64 changes
Add Date.compare/2, Time.compare/2, NaiveDateTime.compare/2 and DateTime.compare/2
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)
Add Date.leap_year?/1 and Date.day_of_week/1
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
Add Enum.map_every/2 that invokes the given function with every nth item
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
Introduce Enum.zip/1 to zip multiple entries at once
Introduce Float.ratio/1 that returns a tuple with the numerator and denominator as integers to retrieve the given float
Log warn on default handle_info/2 implementation
Support syntax coloring via the :syntax_color option
Integer.digits/2 now accepts negative integers
Add Integer.mod/2 and Integer.floor_div/2
Add :label option to IO.inspect/2 to help distinguish multiple IO.inspect/2 calls.
Recognize merge conflict markers in source and provide a readable error message
Warn on unused module attributes
Improve compiler message on unexpected end of line
Raise BadBooleanError when a non-boolean is given on the left-hand side of and/or
Add List.pop_at/3
Add List.myers_difference/2
Expand multi-letter aliases in OptionParser
Add Process.send_after/4
Improve error messages on Process.register/2 errors
Add a local, decentralized and scalable key-value process storage
Add Stream.map_every/2 that invokes the given function with every nth item
Introduce Stream.zip/1 to lazily zip multiple entries at once
Update to Unicode 9.0.0
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
Allow 0 as URI scheme default port
Use red or green background for whitespace-only diffs
Allow inspected structures with multiples lines and unicode characters in the doctest result
Replace lhs/rhs with left/right in the formatter for clarity
Stop appending a trailing dot when autocompleting modules in IEx
Support autocompletion for structs
Improve IEx autocomplete to support navigating map atom keys
c/1 now compiles in memory by default to avoid common issue where .beam files remain at projects root directory
Add info about protocols in i/1
Support interrupting IEx evaluation through the Ctrl+G prompt
Compress archive files built by mix archive as they are now unzipped during installation
Install from SCM
Automatically infer the list of applications for Mix projects
Add the ability to specify one or more apps in mix cmd
Warn if there are non-applications in the apps directory for umbrella projects
Add warning for invalid paths on mix deps.clean
Add Mix.Project.apps_paths that returns the paths to children applications in umbrella projects
Add MIX_REBAR environment variable for overriding local rebar
Install from SCM
Check directory existence in mix new and ask how to proceed if one exists
Applications built with the --sup flag now have an individual module to work as application callback
Add --formatter option to mix test
Provide "did you mean?" suggestions for mix xref
Enum.partition/2 has been deprecated in favor of Enum.split_with/2
Deprecate plural time units in favor of singular ones to align with future Erlang releases
Using GenEvent to implement ExUnit formatters is deprecated. Please use the new GenServer based formatters instead
Access.key/1 is deprecated due to erratic behaviour for missing keys, please use Access.key/2 instead with proper default values
The Behaviour module is deprecated. Callbacks may now be defined directly via the @callback attribute
Deprecate Enum.uniq/2 in favor of Enum.uniq_by/2
Float.to_char_list/2 and Float.to_string/2 are deprecated (use the :erlang functions if such conversions are desired)
Deprecate support for making private functions overridable. Overridable functions must always be public as they must be contracts
Warn if variable is used as a function call
Deprecate aliases with multiple letters, such as -abc
Deprecate the Set module
Deprecate Stream.uniq/2 in favor of Stream.uniq_by/2
import_file/2 is deprecated in favor of import_file_if_available/1
underscore/1 and camelize/1 are deprecated