Elixir is a dynamic, functional language for building scalable and maintainable applications
Code.eval_*
functions are not returned as tagged tuples:exit_code
option to :exit_status
on Mix.raise/2
--profile time
to make it easier to detect outliersApplication.compile_env/2
and Application.compile_env!/2
Enum.into/3
and Map.new/2
Code.format_string!/2
formats multiline expression inside interpolation on the first runMix.install/2
expand paths for depshttpc
warningsAnnouncement: https://elixir-lang.org/blog/2021/05/19/elixir-v1-12-0-released/
c:EEx.Engine.handle_text/3
callback that receives text metadataCode.cursor_context/2
to return the context of a code snippetCalendar.ISO
parsing functionsDate.range/3
offset
to DateTime.to_iso8601/2
(now to_iso8601/3
)Enum.count_until/2
and Enum.count_until/3
Enum.product/1
Enum.zip_with/2
, Enum.zip_with/3
, Enum.zip_reduce/3
, and Enum.zip_reduce/4
Enum.with_index/2
error_info
data for exceptions coming from ErlangFloat.pow/2
Integer.pow/2
and Integer.extended_gcd/2
IO.stream/0
and IO.binstream/0
which default to STDIO with line orientationList.first/1
and List.last/1
first..last//step
as support for stepped rangesmin/2
and max/2
Kernel.tap/2
and Kernel.then/2
Macro.struct!/2
:newline
to customize newlines escaping in Macro.unescape_string/2
@dialyzer
attributesModule.get_definition/2
and Module.delete_definition/2
@on_load
to be a private function@dialyzer
related module attributesModule.reserved_attributes/0
to list all reserved attributes by the languageRange.new/3
and Range.size/1
Regex.scan/3
and Regex.run/3
:compression
on Registry
tablesRegistry.values/3
for reading values under a given key-pid pairStream.zip_with/2
and Stream.zip_with/3
:turkic
mode option to String case functionsSystem.trap_signal/3
and System.untrap_signal/2
System.shell/2
to invoke a command that is interpreted by the shellTuple.sum/1
and Tuple.product/1
:rfc3986
optionasync
vs sync
testsExUnit.async_run/0
and ExUnit.await_run/1
|>
, automatically pipe in the result of the last expressionMix.install/2
for dynamically installing a list of dependencies:exit_code
option in Mix.raise/2
MIX_ENV
and MIX_TARGET
values if they are empty stringsMIX_DEBUG=1
config/runtime.exs
RELEASE_PROG
to releases with the name of the executable starting the releaseremote.vm.args
to customize how the connecting VM boots--failed
tests. This provides a better workflow as you no longer need to toggle the --failed
flag between runs-e ""
(with an empty string) parses correctly on Windows:limit
option for derived implementationsCode.fetch_docs/1
, unless they start with underscore, where they remain as :none
. This aligns Elixir's implementation with EEP48end
) followed by the ::
operatorMacro.decompose_call/1
now also consider tuples with more than 2 elements to not be valid callsMacro.to_string/1
double-escaping of escape characters in sigilsMacro.underscore/1
on digits preceded by capitals: "FOO10" now becomes "foo10" instead of "fo_o10"Macro.underscore/1
-ab3
is now parsed as -a -b 3
Path.relative_to/2
when referencing selfPath.absname/1
, such as "c:"Task.async_stream/2
with ordered: false
discard results as they are emitted, instead of needlessly accumulating inside the stream manager:max_concurrency
is set to 0 on streaming operationsURI.merge/2
@tag tmp_dir
an absolute directory, avoiding inconsistencies if the test changes the current working directoryruntime: false
setmix compile
cycle--cover
is givenmix compile
callfirst..last
to match on ranges is soft-deprecated and will warn on future Elixir versions. Use first..last//step
insteadfirst..last
to create decreasing ranges is soft-deprecated and will warn on future versions. Use first..last//-1
insteaduse EEx.Engine
is deprecated in favor of explicit delegation^^^
is deprecated. If you are using Bitwise.^^^/2
, use Bitwise.bxor/2
instead@foo()
in favor of @foo
System.stacktrace/0
(it was already deprecated outside of catch/rescue and now it is deprecated everywhere):xref
compiler is deprecated and it has no effect. Please remove it from your mix.exs file.This release introduces fixes for better support of Erlang/OTP 24+.
Macro.unique_var/2
and Macro.generate_unique_arguments/2
:static_atoms_encoder
is set in Code.string_to_quoted
with
@after_compile
++
ram_file:compress/1
erts
appdir:erlang.is_record
is used in guards__ENV__
inside functions