Elixir release

0.15.1

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

28 changes

Tool: Elixir Module: GenEvent

Support :ack mode for GenEvent streams

Tool: Elixir Module: Inspect

Support :base option in inspect/2 to choose the base (:binary, :octal, :decimal or :hex) numbers a printed

Tool: Elixir Module: Kernel

Print warnings when used ? with characters with escape codes

Tool: Elixir Module: Logger

Add SASL log forwarding option to Logger

Tool: Elixir Module: Logger

Add $padlevel to option Logger formatter

Tool: Elixir Module: Logger

Backends receive the exact handler value when added, allowing a key to be passed for configuration lookup

Tool: Elixir Module: Logger

Add Logger.flush/0 to flush the Logger (useful for testing)

Tool: Elixir Module: Logger

Persist backends dynamically added or removed via add_backend/2 and remove_backend/2

Tool: Elixir Module: Macro

Add Macro.validate/1 to recursively check if a value is a valid quoted expression

Tool: Elixir Module: Mix

Load mix deps only when there is a need to use them (this improves the timing for the majority of tasks in a Mix project)

Tool: Elixir Module: Mix

Make the environment explicit on the success message generated after escript.build is invoked

Tool: Elixir Module: Mix

Load config/config.exs inside escripts

Tool: Elixir Module: Mix

Store and check Elixir version requirement for generated archives

Tool: Elixir Module: CLI

Fix shell bugs when running on Windows with Cygwin or MinGW

Tool: Elixir Module: Kernel

Modules compiled by Elixir now report the correct beam location when :code.which/1 is invoked. If the bytecode is only available in memory, :code.which/1 returns :in_memory

Tool: Elixir Module: Kernel

Do not expand args for unknown functions/macros

Tool: Elixir Module: Kernel

Ensure defstruct, @attr inside and friends raise a nice error messages when values cannot be properly escaped

Tool: Elixir Module: Kernel

Do not raise conflicts on imports used from inside quotes

Tool: Elixir Module: Logger

Metadata is now correctly merged on each Logger.metadata/1 call

Tool: Elixir Module: Logger

Use the Logger PID on :error_logger wrapper to avoid race conditions on shutdown

Tool: Elixir Module: Macro

Ensure bitstrings work with Macro.escape/1

Tool: Elixir Module: Mix

Ensure aliases are invoked on umbrella recursive tasks

Tool: Elixir Module: Mix

Leave it up to the application to start the Logger after compilation

Tool: Elixir Module: Mix

Accept more forms of git versions (like "git version 1.9.3 (Apple Git-50)")

Tool: Elixir Module: Path

Do not normalize paths in Path.join/2 as normalization is beyond the scope of such function

Tool: Elixir Module: URI

to_string/1 now properly converts URI to strings when the schema is missing

Tool: Elixir Module: Collectable

Having a function as collectable is deprecated

Tool: Elixir Module: Module

Module.function/3 is deprecated, please use :erlang.make_fun/3 instead