Enhancement
33 changes
Add on_exit/1 callbacks that are guaranteed to run once the test process exits and always in another process
Store documentation in the abstract code to avoid loading them when the module is loaded
Add get_in/2, put_in/3, update_in/3 and get_and_update_in/3 to handle nested data structure operations
Add get_in/1, put_in/2, update_in/2 and get_and_update_in/2 to handle nested data structure operations via paths
Add Mix.Config to ease definition of configuration files
Add mix loadconfig task that can be called multiple times to load external configs
Support --config option on mix run
Support HTTP_PROXY and HTTPS_PROXY on Mix url commands
Support --names options in mix help which emit only names (useful for autocompletion)
Add Protocol.consolidate/2, Protocol.consolidated?/1 and a mix compile.protocols task for protocol consolidation
Add Protocol.derive/3 for runtime deriving of a struct
Add String.chunk/2
Add support for @derive before defstruct/2 definitions
File.rm now consistently deletes read-only across operating systems
Ensure Mix _build structure works on Windows when copying projects
Ensure 1.0E10 (with uppercase E) is also valid syntax
Fix mix do task for Windows' powershell users
Fix Path.absname("/") and Path.expand("/") to return the absolute path "/".
size/1 is deprecated, please use byte_size/1 or tuple_size/1 instead
teardown/2 and teardown_all/2 are deprecated in favor of on_exit/1 callbacks
Access.access/2 is deprecated in favor of Access.get/2
Dict.Behaviour is deprecated in favor of Dict
Application.Behaviour, GenEvent.Behaviour, GenServer.Behaviour and Supervisor.Behaviour are deprecated in favor of Application, GenEvent, GenServer and Supervisor
defexception/3 is deprecated in favor of defexception/1
raise/3 is deprecated in favor of reraise/2
set_elem/3 is deprecated in favor of put_elem/3
Passing an atom var!/1 is deprecated, variables can be built dynamically with Macro.var/2
Exceptions that define a :mix_error field to be compatible with Mix are no longer supported. Instead please provide a :mix field and use Mix.raise/1 and Mix.raise/2
Kernel.access/2 no longer exists and the Access protocol now requires get/2 (instead of access/2) and get_and_update/3 to be implemented
Retrieving docs as module.__info__(:docs) is no longer supported, please use Code.get_docs/2 instead
Code.compiler_options/1 no longer accepts custom options, only the ones specified by Elixir (use mix config instead)
mix new no longer generates a supevision tree by default, please pass --sup instead
Tasks are automatically linked to callers and a failure in the task will crash the caller directly