Elixir release

0.13.2

Change breakdown

Organization at a glance

Detailed changelog

Enhancement

41 changes

Tool: Elixir Module: Application

Add an Application module with common functions to work with OTP applications

Tool: Elixir Module: Exception

Add Exception.message/1, Exception.format_banner/1, Exception.format_exit/1 and Exception.format/1

Tool: Elixir Module: File

Add File.ln_s/1

Tool: Elixir Module: Mix

mix deps.clean now works accross environments

Tool: Elixir Module: Mix

Support line numbers in mix test, e.g. test/some/file_test.exs:12

Tool: Elixir Module: Mix

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

Tool: Elixir Module: Mix

Support application configurations in config/config.exs which can be customized by specifying your own :config_path

Tool: Elixir Module: Mix

Support user-wide configuration with ~/.mix/config.exs

Tool: Elixir Module: Mix

mix help now uses ANSI formatting to print guides

Tool: Elixir Module: Regex

Support functions in Regex.replace/4

Tool: Elixir Module: String

Support :parts in String.split/3

Tool: Elixir Module: Code

Ensure we don't lose the caller stacktrace on code evaluation

Tool: Elixir Module: IEx

Exit signals now exits the IEx evaluator and a new one is spawned on its place

Tool: Elixir Module: IEx

Ensure we don't prune too much stacktrace when reporting failures

Tool: Elixir Module: IEx

Fix an issue where iex.bat on Windows was not passing the proper parameters forward

Tool: Elixir Module: Kernel

Ensure modules defined on root respect defined aliases

Tool: Elixir Module: Kernel

Do not wrap single lists in :__block__

Tool: Elixir Module: Kernel

Ensure emitted beam code works nicely with dialyzer

Tool: Elixir Module: Kernel

Do not allow a module named Elixir to be defined

Tool: Elixir Module: Kernel

Create remote funs even if mod is a variable in capture &mod.fun/arity

Tool: Elixir Module: Kernel

Improve compiler message when duplicated modules are detected

Tool: Elixir Module: Mix

Generate .gitignore for --umbrella projects

Tool: Elixir Module: Mix

Verify if a git dependency in deps has a proper git checkout and clean it automatically when it doesn't

Tool: Elixir Module: Mix

Ensure mix test works with IEx.pry/0

Tool: Elixir Module: System

Convert remaining functions in System to rely on char data

Tool: Elixir Module: Application

use Application.Behaviour is deprecated in favor of use Application

Tool: Elixir Module: Exception

exception.message is deprecated in favor Exception.message/1 for retrieving exception messages

Tool: Elixir Module: Kernel

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

Tool: Elixir Module: Mix

Mix.project/0 is deprecated in favor of Mix.Project.config/0

Tool: Elixir Module: Process

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

Tool: Elixir Module: IEx

IEx.Options is deprecated in favor of IEx.configure/1 and IEx.configuration/0

Tool: Elixir Module: Kernel

lc and bc comprehensions are deprecated in favor of for

Tool: Elixir Module: Macro

Macro.safe_terms/1 is deprecated

Tool: Elixir Module: Process

Process.delete/0 is deprecated

Tool: Elixir Module: Regex

Deprecate :global option in Regex.split/3 in favor of parts: :infinity

Tool: Elixir Module: String

Deprecate :global option in String.split/3 in favor of parts: :infinity

Tool: Elixir Module: ExUnit

ExUnit.Test and ExUnit.TestCase has been converted to structs

Tool: Elixir Module: ExUnit

The test and callback context has been converted to maps

Tool: Elixir Module: Kernel

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

Tool: Elixir Module: URI

The URI.Info record has now become the URI struct

Tool: Elixir Module: Version

The Version.Schema record has now become the Version struct