- [EEx] Add
:parser_options
to EEx functions
- [Code] Add
Code.string_to_quoted_with_comments/2
andCode.quoted_to_algebra/2
- [Code] Add more
:token_metadata
to aliases and remote calls when parsing strings - [Code] Add
Code.Fragment
module to provide best-effort information from code fragments. The module currently provides an updatedCode.Fragment.cursor_context/2
with operator support andCode.Fragment.surround_context/2
which looks at a given position in a fragment and find its surrounding delimiters - [Code] Add
{:on_module, bytecode, :none}
trace to compilation tracers - [Enum] Optimize
Enum.concat/1
for lists of lists - [Exception] Better format Elixir exceptions in Erlang
- [Inspect] Allow default inspect fun to be set globally with
Inspect.Opts.default_inspect_fun/1
- [IO] Allow
:eof
to be given as limit toIO.getn/2
- [Kernel] Make
get_in
consistently abort whennil
values are found - [Kernel] Improve compilation times by reducing the amount of copies of the AST across compiler processes
- [Kernel] Warn when
?\
is used and there is no need for a escape character - [Kernel] Track structs in typespecs as export deps instead of compile-time deps
- [List] Add
List.keyfind!/3
- [Module] Support
:nillify_clauses
inModule.get_definition/3
- [Module] Add
Module.attributes_in/1
andModule.overridables_in/1
- [OptionParser] Add "did you mean?" suggestions to
OptionParser.ParseError
messages - [Record] Add record reflection via
@__records__
- [Task] Add
Task.completed/1
- [ExUnit.CaptureIO] Add
with_io/3
to return result with captured io - [ExUnit.CaptureLog] Add
with_log/2
to return result with captured logs
- [IEx.Autocomplete] Add path autocompletion whenever when the cursor follows
"./
or"/
or"DRIVER:
whereDRIVER
is a single letter
- [Logger] Add
Logger.put_application_level/2
- [mix archive.install] Run
loadconfig
before building archive - [mix compile] Move Elixir version check to before deps are compiled, in order to give feedback earlier
- [mix deps] Add
:subdir
option to git deps - [mix escript.install] Run
loadconfig
before building escript - [mix rebar] No longer support
sub_dirs
in Rebar 2 to help migration towards Rebar 3 - [mix test] Support
--profile-require=time
to profile the time loading test files themselves - [mix test] Allow filtering modules from coverage using regex
- [mix test] Allow the exit status of ExUnit to be configured and set the default to 2
- [mix test] Exit with a status of 3 when coverage falls below threshold
- [mix test] Write failed manifest when suite fails due to --warnings-as-errors
- [mix xref] Support multiple sinks and sources in
mix xref graph
- [mix xref] Add
--fail-above
option tomix xref
- [mix xref] Add
--label compile-connected
tomix xref
- [mix xref] Add
--label compile-direct
tomix xref
(instead of--only-direct
)
- [Code] Ensure bindings with no context are returned as atoms instead of
{binding, nil}
in eval operations - [Kernel] Improve error message on invalid argument for
byte_size
from binary concat - [Kernel] Raise when aliasing non-Elixir modules without
:as
- [Kernel] Allow
unquote_splicing
inside%{...}
without parens - [Kernel] Ensure that waiting on a struct expansion inside a typespec is correctly tracked as waiting time in the compiler
- [Kernel] Correctly parse the atom
.
as a keyword list key - [Kernel] Do not leak variables from the first generator in
with
andfor
special forms - [OptionParser] Validate switch types/modifiers early on to give more precise feedback
- [Protocol] Add
defdelegate
to the list of unallowed macros inside protocols as protocols do not allow function definitions - [Protocol] Warn if
@callback
,@macrocallback
and@optional_callbacks
are defined inside protocol - [URI] Only percent decode if followed by hex digits (according to https://url.spec.whatwg.org/#percent-decode)
- [ExUnit] Invalidate a module's tests in
ExUnit.run/0
results if that module'ssetup_all
fails - [ExUnit] Fix count in formatter if a module's
setup_all
fails
- [mix deps] Raise if local dep is unavailable while compiling
- [mix local.install] Do not respect
MIX_DEPS_PATH
for install commands - [mix release] Improve release scripts to make sure shell errors cascade by avoiding exporting and defining variables at once
- [mix release] Do not boot release if RELEASE_COOKIE is empty
- [Mix.Shell] Add
default
option toMix.Shell.yes?
- [IO]
:all
onIO.getn
is deprecated in favor of:eof
- [Code]
Code.cursor_context/2
is deprecated, useCode.Fragment.cursor_context/2
instead - [Macro]
Macro.to_string/2
is deprecated, useMacro.to_string/1
instead - [System]
System.get_pid/0
is deprecated, useSystem.pid/0
instead
- [mix escript.build]
:strip_beam
option is deprecated in favor of:strip_beams
- [Mix]
:exit_code
inMix.raise/2
has been deprecated in favor of:exit_status
- [Mix.Config]
Mix.Config
is deprecated in favor ofConfig
module
The CHANGELOG for v1.12 releases can be found in the v1.12 branch.