Elixir release

0.14.0

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

33 changes

Tool: Elixir Module: ExUnit

Add on_exit/1 callbacks that are guaranteed to run once the test process exits and always in another process

Tool: Elixir Module: Kernel

Store documentation in the abstract code to avoid loading them when the module is loaded

Tool: Elixir Module: Kernel

Add get_in/2, put_in/3, update_in/3 and get_and_update_in/3 to handle nested data structure operations

Tool: Elixir Module: Kernel

Add get_in/1, put_in/2, update_in/2 and get_and_update_in/2 to handle nested data structure operations via paths

Tool: Elixir Module: Mix

Add Mix.Config to ease definition of configuration files

Tool: Elixir Module: Mix

Add mix loadconfig task that can be called multiple times to load external configs

Tool: Elixir Module: Mix

Support --config option on mix run

Tool: Elixir Module: Mix

Support HTTP_PROXY and HTTPS_PROXY on Mix url commands

Tool: Elixir Module: Mix

Support --names options in mix help which emit only names (useful for autocompletion)

Tool: Elixir Module: Protocol

Add Protocol.consolidate/2, Protocol.consolidated?/1 and a mix compile.protocols task for protocol consolidation

Tool: Elixir Module: Protocol

Add Protocol.derive/3 for runtime deriving of a struct

Tool: Elixir Module: String

Add String.chunk/2

Tool: Elixir Module: Struct

Add support for @derive before defstruct/2 definitions

Tool: Elixir Module: File

File.rm now consistently deletes read-only across operating systems

Tool: Elixir Module: Kernel

Ensure Mix _build structure works on Windows when copying projects

Tool: Elixir Module: Kernel

Ensure 1.0E10 (with uppercase E) is also valid syntax

Tool: Elixir Module: Mix

Fix mix do task for Windows' powershell users

Tool: Elixir Module: Path

Fix Path.absname("/") and Path.expand("/") to return the absolute path "/".

Tool: Elixir Module: Kernel

size/1 is deprecated, please use byte_size/1 or tuple_size/1 instead

Tool: Elixir Module: ExUnit

teardown/2 and teardown_all/2 are deprecated in favor of on_exit/1 callbacks

Tool: Elixir Module: Access

Access.access/2 is deprecated in favor of Access.get/2

Tool: Elixir Module: Dict

Dict.Behaviour is deprecated in favor of Dict

Tool: Elixir Module: Kernel

Application.Behaviour, GenEvent.Behaviour, GenServer.Behaviour and Supervisor.Behaviour are deprecated in favor of Application, GenEvent, GenServer and Supervisor

Tool: Elixir Module: Kernel

defexception/3 is deprecated in favor of defexception/1

Tool: Elixir Module: Kernel

raise/3 is deprecated in favor of reraise/2

Tool: Elixir Module: Kernel

set_elem/3 is deprecated in favor of put_elem/3

Tool: Elixir Module: Kernel

Passing an atom var!/1 is deprecated, variables can be built dynamically with Macro.var/2

Tool: Elixir Module: Mix

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

Tool: Elixir Module: Access

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

Tool: Elixir Module: Kernel

Retrieving docs as module.__info__(:docs) is no longer supported, please use Code.get_docs/2 instead

Tool: Elixir Module: Kernel

Code.compiler_options/1 no longer accepts custom options, only the ones specified by Elixir (use mix config instead)

Tool: Elixir Module: Mix

mix new no longer generates a supevision tree by default, please pass --sup instead

Tool: Elixir Module: Task

Tasks are automatically linked to callers and a failure in the task will crash the caller directly