v0.13.2
Pre-release
Pre-release
Enhancements
- [Application] Add an Application module with common functions to work with OTP applications
- [Exception] Add
Exception.message/1
,Exception.format_banner/1
,Exception.format_exit/1
andException.format/1
- [File] Add
File.ln_s/1
- [Mix]
mix deps.clean
now works accross environments - [Mix] Support line numbers in
mix test
, e.g. test/some/file_test.exs:12 - [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 - [Mix] Support application configurations in
config/config.exs
which can be customized by specifying your own:config_path
- [Mix] Support user-wide configuration with
~/.mix/config.exs
- [Mix]
mix help
now uses ANSI formatting to print guides - [Regex] Support functions in
Regex.replace/4
- [String] Support
:parts
inString.split/3
Bug fixes
- [Code] Ensure we don't lose the caller stacktrace on code evaluation
- [IEx] Exit signals now exits the IEx evaluator and a new one is spawned on its place
- [IEx] Ensure we don't prune too much stacktrace when reporting failures
- [IEx] Fix an issue where
iex.bat
on Windows was not passing the proper parameters forward - [Kernel] Ensure modules defined on root respect defined aliases
- [Kernel] Do not wrap single lists in
:__block__
- [Kernel] Ensure emitted beam code works nicely with dialyzer
- [Kernel] Do not allow a module named
Elixir
to be defined - [Kernel] Create remote funs even if mod is a variable in capture
&mod.fun/arity
- [Kernel] Improve compiler message when duplicated modules are detected
- [Mix] Generate
.gitignore
for--umbrella
projects - [Mix] Verify if a git dependency in deps has a proper git checkout and clean it automatically when it doesn't
- [Mix] Ensure
mix test
works withIEx.pry/0
- [System] Convert remaining functions in System to rely on char data
Soft deprecations (no warnings emitted)
- [Application]
use Application.Behaviour
is deprecated in favor ofuse Application
- [Exception]
exception.message
is deprecated in favorException.message/1
for retrieving exception messages - [Kernel]
is_exception/1
,is_record/1
andis_record/2
are deprecated in favor ofException.exception?1
,Record.record?/1
andRecord.record?/2
- [Mix]
Mix.project/0
is deprecated in favor ofMix.Project.config/0
- [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
andProcess.self/0
are deprecated in favor of the ones inKernel
Deprecations
- [IEx] IEx.Options is deprecated in favor of
IEx.configure/1
andIEx.configuration/0
- [Kernel]
lc
andbc
comprehensions are deprecated in favor offor
- [Macro]
Macro.safe_terms/1
is deprecated - [Process]
Process.delete/0
is deprecated - [Regex] Deprecate
:global
option inRegex.split/3
in favor ofparts: :infinity
- [String] Deprecate
:global
option inString.split/3
in favor ofparts: :infinity
Backwards incompatible changes
- [ExUnit]
ExUnit.Test
andExUnit.TestCase
has been converted to structs - [ExUnit] The test and callback context has been converted to maps
- [Kernel]
File.Stat
,HashDict
,HashSet
,Inspect.Opts
,Macro.Env
,Range
,Regex
andVersion.Requirement
have been converted to structs. This meansis_record/2
checks will no longer work, instead, you can pattern match on them using%Range{}
and similar - [URI] The
URI.Info
record has now become theURI
struct - [Version] The
Version.Schema
record has now become theVersion
struct