Enhancement
84 changes
Support multi-line comments to EEx via <%!-- --%>
Add EEx.tokenize/2
Add Access.slice/1
Add Application.compile_env/4 and Application.compile_env!/3 to read the compile-time environment inside macros
Support ISO8601 basic format parsing with DateTime.from_iso8601/2
Add day/hour/minute on add/diff across different calendar modules
Add :normalize_bitstring_modifiers to Code.format_string!/2
Emit deprecation and type warnings for invalid options in on Code.compile_string/2 and Code.compile_quoted/2
Warn if an outdated lexical tracker is given on eval
Add Code.env_for_eval/1 and Code.eval_quoted_with_env/3
Improve stacktraces from eval operations on Erlang/OTP 25+
Add support for __MODULE__ in several functions
Support surround and context suggestions across multiple lines
Allow slicing with steps in Enum.slice/2
Support dereference_symlinks: true in File.cp/3 and File.cp_r/3
Do not show floats in scientific notation if below 1.0e16 and the fractional value is precisely zero
Add Float.min_finite/0 and Float.max_finite/0
Improve error reporting when there is a faulty implementation of the Inspect protocol
Allow :optional when deriving the Inspect protocol for hiding fields that match their default value
Inspect struct fields in the order they are declared in defstruct
Use expression-based inspection for Date.Range, MapSet, and Version.Requirement
Support Macro.Env and keywords as stacktrace definitions in IO.warn/2
Add IO.ANSI.syntax_colors/0 and related configuration to be shared across IEx and dbg
Add new dbg/0-2 macro
Allow any guard expression as the size of a bitstring in a pattern match
Allow composite types with pins as the map key in a pattern match
Print escaped version of control chars when they show up as unexpected tokens
Warn on confusable non-ASCII identifiers
Add .. as a nullary operator that returns 0..-1//1
Implement Unicode Technical Standard #39 recommendations. In particular, we warn for confusable scripts and restrict identifiers to single-scripts or highly restrictive mixed-scripts
Automatically perform NFC conversion of identifiers
Add binary_slice/2 and binary_slice/3
Lazily expand module attributes to avoid compile-time deps
Automatically cascade generated: true annotations on macro expansion
Add Keyword.from_keys/2 and Keyword.replace_lazy/3
Add List.keysort/3 with support for a sorter function
Add Macro.classify_atom/1 and Macro.inspect_atom/2
Add Macro.expand_literal/2 and Macro.path/2
Add Macro.Env.prune_compile_info/1
Add Map.from_keys/2 and Map.replace_lazy/3
Add MapSet.filter/2, MapSet.reject/2, and MapSet.symmetric_difference/2
Add Node.spawn_monitor/2 and Node.spawn_monitor/4
Support new @after_verify attribute for executing code whenever a module is verified
Add PartitionSupervisor that starts multiple isolated partitions of the same child for scalability
Add Path.safe_relative/1 and Path.safe_relative_to/2
Add Registry.count_select/2
Add Stream.duplicate/2 and Stream.transform/5
Support empty lookup lists in String.replace/3, String.split/3, and String.splitter/3
Allow slicing with steps in String.slice/2
Add :zip_input_on_exit option to Task.async_stream/3
Store :mfa in the Task struct for reflection purposes
Add URI.append_query/2
Add Version.to_string/1
Colorize Version.Requirement source in the Inspect protocol
Add ExUnit.Callbacks.start_link_supervised!/2
Add ExUnit.run/1 to rerun test modules
Colorize summary in yellow with message when all tests are excluded
Display friendly error when test name is too long
Evaluate --dot-iex line by line
Add line-by-line evaluation of IEx breakpoints
Autocomplete bitstrings modifiers (after :: inside <<...>>)
Allow an atom to be given to pid/1
Support sigils in h/1
Add Logger.put_process_level/2
Add :config_path and :lockfile options to Mix.install/2
Add --no-optional-deps to skip optional dependencies to test compilation works without optional dependencies
Include column information on error diagnostics when possible
Mix.Dep.Converger now tells which deps formed a cycle
Support --app option to restrict recursive tasks in umbrella projects
Allow using + as a task separator instead of comma
Support filename in mix format - when reading from stdin
Compile if mix format plugins are missing
Do not allow projects to be created with application names that conflict with multi-arg Erlang VM switches
Return the return value of the profiled function
Make BEAM compression opt-in
Let :runtime_config_path accept false to skip the config/runtime.exs
Improve error message when suite fails due to coverage
Support :test_elixirc_options and default to not generating docs nor debug info chunk for tests
Support --group flag in mix xref graph
Passing a callback as third argument to File.cp/3 and File.cp_r/3 is deprecated.
Using <%# ... %> for comments is deprecated. Please use <% # ... %> or the new multi-line comments with <%!-- ... --%>
Deprecate Logger.enable/1 and Logger.disable/1 in favor of Logger.put_process_level/2
The --app option in mix cmd CMD is deprecated in favor of the more efficient mix do --app app cmd CMD
Remove support for rebar2, which has not been updated in 5 years, and is no longer supported on recent Erlang/OTP versions