Enhancement
71 changes
Track column information in EEx templates when enabled in the compiler
Show column information in EEx error messages
Support :indentation option when compiling EEx templates for proper column tracking
Add Access.at!/1
Add Calendar.strftime/3 for datetime formatting
Add linear integer representations to Calendar modules: Date.from_gregorian_days/2, Date.to_gregorian_days/1, NaiveDateTime.from_gregorian_seconds/3, NaiveDateTime.to_gregorian_seconds/1, Time.from_seconds_after_midnight/1, and Time.to_seconds_after_midnight/1
Add new! to Date/Time/NaiveDateTime/DateTime (new has also been added to DateTime for completeness)
Support custom starting day of the week in Date.day_of_week/2
Add Date.beginning_of_month/1 and Date.end_of_month/1
Add Date.beginning_of_week/2 and Date.end_of_week/2
Add :column to Code.string_to_quoted*/2
Add Code.can_await_module_compilation?/0 to check if the parallel compiler is enabled and it can await for other modules to be compiled
Support config_env/0 and config_target/0 in config files
Allow import_config to be disabled for some configuration files
Allow a sorting function on Enum.min_max_by/3,4, including the new compare/2 conventions
Add is_struct/2 guard
Add is_exception/1 and is_exception/2 guards
Support map.field syntax in guards
Add +++ and --- with right associativity to the list of custom operators
Warn if a variable that looks like a compiler variable (such as __MODULE__) is unused
Report individual file compilation times when profile: :time is given
Improve precision of :long_compilation_threshold so it takes only compilation times into account (and not waiting times)
Add Registry.delete_meta/2
Add Task.await_many/2
Add support for coloring on Windows 10 consoles/shells
Add ExUnit.fetch_test_supervisor/0
Add @tag :tmp_dir support to ExUnit. The temporary directory is automatically created and pruned before each test
Add file and line to ExUnit's --trace
Allow receive timeouts to be computed at runtime
Add register_test/6 to speed up compilation of custom tests
Allow users to add tags to doctests
Add support for coloring on Windows 10 consoles/shells
Show docs from Erlang modules that have been compiled with the docs chunk
Add notice, critical, alert, and emergency log levels
Support structured logging by logging maps or keyword lists
Allow level to be set per module with Logger.put_module_level/2
Include erl_level in Logger's metadata
Add MIX_BUILD_ROOT to config _build dir
Introduce MIX_XDG as a simpler mechanism to opt-in to the XDG specification
Allow requirements for a Mix task to be listed via the @requirements module attribute
Allow optional dependencies to be defined in :extra_applications and :applications
Add new mix app.config task that compiles applications and loads runtime configuration
Support --repo option on Hex packages
Support the __mix_recompile__?/0 callback for custom behaviour on when Mix should recompile a given module
Mark modules for path dependencies as "Export dependencies" if they changed but their public interface is the same
Track application boundaries in the Elixir compiler. If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper applications, a warning will be emitted. A warning will also be emitted if you invoke code from an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between apps
Sort the dependencies alphabetically before printing
Use origin/HEAD as the default Git ref in dependencies
Redact Git username/password in output log
Support rebar3's git_subdir resource type
Allow local deps to be skipped on mix deps.compile
Print which dependencies get unlocked when using the --unused flag
Support --repo option on Hex packages
Add @impl to application generated by mix new --sup
Enable overriding sys.config location via RELEASE_SYS_CONFIG env var
Boot a release under configuration in interactive mode and then swap to embedded mode (if running on Erlang/OTP 23+)
Add rel_templates_path to configure the source of template files such as "env.sh.eex", "vm.args.eex" and "overlays"
Allow some chunks to be kept in the :strip_beams config
Allow :ignore_modules inside :test_coverage option
Add mix test.coverage that aggregates coverage results from umbrellas and OS partitioning
Make the --label option for mix xref graph transitive by default and add --only-direct for only direct dependencies
Add --format cycles support for mix xref graph
Add support to mix xref graph for using --source and --sink at the same time
Exception.exception?/1 is deprecated in favor of Kernel.is_exception/1
Regex.regex?/1 is deprecated in favor of Kernel.is_struct/2
warn log level is deprecated in favor of warning
config/releases.exs is deprecated in favor of a more general purpose config/runtime.exs
Deprecate Supervisor.start_child/2 and Supervisor.terminate_child/2 in favor of DynamicSupervisor
Deprecate Supervisor.Spec.worker/3 and Supervisor.Spec.supervisor/3 in favor of the new typespecs
Deprecate System.stacktrace/0 in favor of __STACKTRACE__
Deprecate Mix.Project.compile/2 in favor of Mix.Task.run("compile", args)