Enhancement
41 changes
Add an Application module with common functions to work with OTP applications
Add Exception.message/1, Exception.format_banner/1, Exception.format_exit/1 and Exception.format/1
Add File.ln_s/1
mix deps.clean now works accross environments
Support line numbers in mix test, e.g. test/some/file_test.exs:12
Use @file attributes to detect dependencies in between .ex and external files. This means changing an .eex file will no longer recompile the whole project only the files that depend directly on it
Support application configurations in config/config.exs which can be customized by specifying your own :config_path
Support user-wide configuration with ~/.mix/config.exs
mix help now uses ANSI formatting to print guides
Support functions in Regex.replace/4
Support :parts in String.split/3
Ensure we don't lose the caller stacktrace on code evaluation
Exit signals now exits the IEx evaluator and a new one is spawned on its place
Ensure we don't prune too much stacktrace when reporting failures
Fix an issue where iex.bat on Windows was not passing the proper parameters forward
Ensure modules defined on root respect defined aliases
Do not wrap single lists in :__block__
Ensure emitted beam code works nicely with dialyzer
Do not allow a module named Elixir to be defined
Create remote funs even if mod is a variable in capture &mod.fun/arity
Improve compiler message when duplicated modules are detected
Generate .gitignore for --umbrella projects
Verify if a git dependency in deps has a proper git checkout and clean it automatically when it doesn't
Ensure mix test works with IEx.pry/0
Convert remaining functions in System to rely on char data
use Application.Behaviour is deprecated in favor of use Application
exception.message is deprecated in favor Exception.message/1 for retrieving exception messages
is_exception/1, is_record/1 and is_record/2 are deprecated in favor of Exception.exception?1, Record.record?/1 and Record.record?/2
Mix.project/0 is deprecated in favor of Mix.Project.config/0
Process.spawn/1, Process.spawn/3, Process.spawn_link/1, Process.spawn_link/3, Process.spawn_monitor/1, Process.spawn_monitor/3, Process.send/2 and Process.self/0 are deprecated in favor of the ones in Kernel
IEx.Options is deprecated in favor of IEx.configure/1 and IEx.configuration/0
lc and bc comprehensions are deprecated in favor of for
Macro.safe_terms/1 is deprecated
Process.delete/0 is deprecated
Deprecate :global option in Regex.split/3 in favor of parts: :infinity
Deprecate :global option in String.split/3 in favor of parts: :infinity
ExUnit.Test and ExUnit.TestCase has been converted to structs
The test and callback context has been converted to maps
File.Stat, HashDict, HashSet, Inspect.Opts, Macro.Env, Range, Regex and Version.Requirement have been converted to structs. This means is_record/2 checks will no longer work, instead, you can pattern match on them using %Range{} and similar
The URI.Info record has now become the URI struct
The Version.Schema record has now become the Version struct