Enhancement
68 changes
Add c:EEx.Engine.handle_text/3 callback that receives text metadata
Emit warnings for unused "do" expression in EEx
Add Code.cursor_context/2 to return the context of a code snippet
Do not add newlines around interpolation on code formatting. Note this means formatted code that has interpolation after the line length on Elixir v1.12 won't be considered as formatted on earlier Elixir versions
Do not add brackets when keywords is used in the access syntax
Support basic datetime format in Calendar.ISO parsing functions
Improve evaluation performance on systems running on Erlang/OTP 24+
Support steps via Date.range/3
Add offset to DateTime.to_iso8601/2 (now to_iso8601/3)
Add Enum.count_until/2 and Enum.count_until/3
Add Enum.product/1
Add Enum.zip_with/2, Enum.zip_with/3, Enum.zip_reduce/3, and Enum.zip_reduce/4
Add support for functions as the second argument of Enum.with_index/2
Show error_info data for exceptions coming from Erlang
Add Float.pow/2
Add Integer.pow/2 and Integer.extended_gcd/2
Add IO.stream/0 and IO.binstream/0 which default to STDIO with line orientation
Add default value for List.first/1 and List.last/1
Add first..last//step as support for stepped ranges
Also warn for literal structs on min/2 and max/2
Add Kernel.tap/2 and Kernel.then/2
Do not add runtime dependencies to remotes in typespecs
When there is an unused variable warning and there is a variable with the same name previously defined, suggest the user may have wanted to use the pin operator
Improve error messages on invalid character right after a number
Show removal and deprecated tips from Erlang/OTP
Add export dependencies on Macro.struct!/2
Support :newline to customize newlines escaping in Macro.unescape_string/2
Raise on invalid @dialyzer attributes
Add Module.get_definition/2 and Module.delete_definition/2
Allow @on_load to be a private function
Validate @dialyzer related module attributes
Add Module.reserved_attributes/0 to list all reserved attributes by the language
Add Range.new/3 and Range.size/1
Add offset option to Regex.scan/3 and Regex.run/3
Support :compression on Registry tables
Support Registry.values/3 for reading values under a given key-pid pair
Add Stream.zip_with/2 and Stream.zip_with/3
Add :turkic mode option to String case functions
Update to Unicode 13.0
Add System.trap_signal/3 and System.untrap_signal/2
Add System.shell/2 to invoke a command that is interpreted by the shell
Add Tuple.sum/1 and Tuple.product/1
Support RFC3986 compliant encoding and decoding of queries via the :rfc3986 option
Intercept SIGQUIT (via Ctrl+\) and show a list of all aborted tests as well as intermediate test results
Interpolate module attributes in match assertions diffs
Print how much time is spent on async vs sync tests
Improve error messages for doctests
Compile doctests faster (often by two times)
Add ExUnit.async_run/0 and ExUnit.await_run/1
Make IEx' parser configurable to allow special commands
Show function signature when pressing tab after the opening parens of a function
If an IEx expression starts with a binary operator, such as |>, automatically pipe in the result of the last expression
Add Mix.install/2 for dynamically installing a list of dependencies
Support :exit_code option in Mix.raise/2
Discard MIX_ENV and MIX_TARGET values if they are empty strings
Print the time taken to execute a task with on MIX_DEBUG=1
Compile multiple files in parallel
Deep merge configuration and ensure argv is set when executing config/runtime.exs
Add RELEASE_PROG to releases with the name of the executable starting the release
Support remote.vm.args to customize how the connecting VM boots
Run all available tests if there are no pending --failed tests. This provides a better workflow as you no longer need to toggle the --failed flag between runs
Using first..last to match on ranges is soft-deprecated and will warn on future Elixir versions. Use first..last//step instead
Using first..last to create decreasing ranges is soft-deprecated and will warn on future versions. Use first..last//-1 instead
use EEx.Engine is deprecated in favor of explicit delegation
The binary operator ^^^ is deprecated. If you are using Bitwise.^^^/2, use Bitwise.bxor/2 instead
Deprecate @foo() in favor of @foo
Deprecate System.stacktrace/0 (it was already deprecated outside of catch/rescue and now it is deprecated everywhere)
The :xref compiler is deprecated and it has no effect. Please remove it from your mix.exs file.