Enhancement
66 changes
Support negative dates in Calendar.ISO
Add Calendar.months_in_year/1 callback
Add Code.compile_file/2 that compiles files without leaving footprints on the system
Add Code.purge_compiler_modules/0 that purges any compiler module left behind. This is useful for live systems dynamically compiling code
Add Code.fetch_docs/1 that returns docs in the EEP 48 format
Add Date.months_in_year/1 function
Use the name of the DynamicSupervisor as the ID whenever possible
Provide "did you mean" suggestions on KeyError
Provide more information on ArithmeticError on Erlang/OTP 21+
Add Function module with capture/3, info/1 and info/2 functions
Support the new handle_continue/2 callback on Erlang/OTP 21+
Add cursor movement to IO.ANSI
Support adding arbitrary documentation metadata by passing a keyword list to @doc, @moduledoc and @typedoc
Introduce __STACKTRACE__ to retrieve the current stacktrace inside catch/rescue (this will be a requirement for Erlang/OTP 21+)
Raise on unsafe variables in order to allow us to better track unused variables (also known as imperative assignment / variable leakage)
Warn when using length to check if a list is not empty on guards
Add hints on mismatched do/end and others pairs
Warn when comparing structs using the >, <, >= and <= operators
Warn on unsupported nested comparisons such as x < y < z
Warn if redefining documentation across clauses of the same definition
Warn on unnecessary quotes around atoms, keywords and calls
Add Macro.special_form?/2 and Macro.operator?/2 that returns true if the given name/arity is a special form or operator respectively
Add Macro.Env.vars/1 and Macro.Env.has_var?/2 that gives access to environment data without accessing private fields
Include endianness in the regex version. This allows regexes to be recompiled when an archive is installed in a system with a different endianness
Add Registry.count/1 and Registry.count_match/4
Update to Unicode 11
Add StringIO.open/3
Use ISO 8601 in System.build_info/0
Print the arguments in error reports when asserting on a function call. For example, if assert is_list(arg) fails, the argument will be shown in the report
Improve diffing of lists when one list is a subset of the other
Show colored diffs on failed doctests
Excluded tests, via the --exclude and --only flags, are now shown as "Excluded" in reports. Tests skipped via @tag :skip are now exclusively shown as "Skipped" and in yellow
Add use_if_available/2
Allow force: true option in recompile/1
Add :allocators pane to runtime_info/1
Show documentation metadata in h/1 helpers
Ensure nil metadata is always pruned
Only evaluate Logger macro arguments when the message will be logged
Add :compile_time_purge_matching to purge logger calls that match certain compile time metadata, such as module names and application names
Log to :stderr if a backend fails and there are no other backends
Allow translators to return custom metadata
Return :crash_reason, :initial_call and :registered_name as metadata in crash reports coming from Erlang/OTP
Add support for the Hex organization via --organization
Support --force flag
Improve support for external build tools such as rebar
Include override: true in rebar dependencies to make the behaviour closer to how rebar3 works (although diverged deps are still marked as diverged)
Add support for the Hex organization via --organization
Support --force flag
Also list aliases
Use ipv6 with auto fallback to ipv4 when downloading data
Allow all profiling tasks to run programatically
Add --failed option that only runs previously failed tests
Print coverage summary by default when the --cover flag is given
Add Mix.Project.clear_deps_cache/0
Add Mix.Project.config_mtime/0 that caches the config mtime values to avoid filesystem access
Deprecate Code.load_file/2 in favor of Code.compile_file/2
Deprecate Code.loaded_files/0 in favor of Code.required_files/0
Deprecate Code.unload_files/1 in favor of Code.unrequire_files/1
compile_time_purge_level is deprecated in favor of compile_time_purge_matching
Code.get_docs/2 is deprecated in favor of Code.fetch_docs/1
Enum.chunk/2/3/4 is deprecated in favor of Enum.chunk_every/2/3/4 - notice chunk_every does not discard incomplete chunks by default
Warn if super is used in any of the GenServer callbacks
not left in right is ambiguous and is deprecated in favor of left not in right
Warn on confusing operator sequences, such as 1+++1 meaning 1 ++ +1 or ........ meaning ... .. ...
Deprecate dynamic option parser mode that depended on atoms to be previously loaded and therefore behaved inconsistently
Stream.chunk/2/3/4 is deprecated in favor of Stream.chunk_every/2/3/4 - notice chunk_every does not discard incomplete chunks by default