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/1andException.format/1 - [File] Add
File.ln_s/1 - [Mix]
mix deps.cleannow works accross environments - [Mix] Support line numbers in
mix test, e.g. test/some/file_test.exs:12 - [Mix] Use
@fileattributes to detect dependencies in between.exand external files. This means changing an.eexfile will no longer recompile the whole project only the files that depend directly on it - [Mix] Support application configurations in
config/config.exswhich can be customized by specifying your own:config_path - [Mix] Support user-wide configuration with
~/.mix/config.exs - [Mix]
mix helpnow uses ANSI formatting to print guides - [Regex] Support functions in
Regex.replace/4 - [String] Support
:partsinString.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.baton 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
Elixirto 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
.gitignorefor--umbrellaprojects - [Mix] Verify if a git dependency in deps has a proper git checkout and clean it automatically when it doesn't
- [Mix] Ensure
mix testworks withIEx.pry/0 - [System] Convert remaining functions in System to rely on char data
Soft deprecations (no warnings emitted)
- [Application]
use Application.Behaviouris deprecated in favor ofuse Application - [Exception]
exception.messageis deprecated in favorException.message/1for retrieving exception messages - [Kernel]
is_exception/1,is_record/1andis_record/2are deprecated in favor ofException.exception?1,Record.record?/1andRecord.record?/2 - [Mix]
Mix.project/0is 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/2andProcess.self/0are deprecated in favor of the ones inKernel
Deprecations
- [IEx] IEx.Options is deprecated in favor of
IEx.configure/1andIEx.configuration/0 - [Kernel]
lcandbccomprehensions are deprecated in favor offor - [Macro]
Macro.safe_terms/1is deprecated - [Process]
Process.delete/0is deprecated - [Regex] Deprecate
:globaloption inRegex.split/3in favor ofparts: :infinity - [String] Deprecate
:globaloption inString.split/3in favor ofparts: :infinity
Backwards incompatible changes
- [ExUnit]
ExUnit.TestandExUnit.TestCasehas 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,RegexandVersion.Requirementhave been converted to structs. This meansis_record/2checks will no longer work, instead, you can pattern match on them using%Range{}and similar - [URI] The
URI.Inforecord has now become theURIstruct - [Version] The
Version.Schemarecord has now become theVersionstruct