-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update dependency elixir to v1.16.2 #7
Open
renovate
wants to merge
1
commit into
main
Choose a base branch
from
renovate/elixir-1.x
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
March 18, 2023 21:56
6728032
to
8dc1596
Compare
renovate
bot
changed the title
Update dependency elixir to v1.14.2
Update dependency elixir to v1.14.3
Mar 18, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
April 3, 2023 09:31
8dc1596
to
c20d333
Compare
renovate
bot
changed the title
Update dependency elixir to v1.14.3
Update dependency elixir to v1.14.4
Apr 3, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
May 28, 2023 09:25
c20d333
to
14ff27f
Compare
renovate
bot
changed the title
Update dependency elixir to v1.14.4
Update dependency elixir to v1.14.5
May 28, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
June 19, 2023 17:01
14ff27f
to
49fc26c
Compare
renovate
bot
changed the title
Update dependency elixir to v1.14.5
Update dependency elixir to v1.15.0
Jun 19, 2023
renovate
bot
changed the title
Update dependency elixir to v1.15.0
Update dependency elixir to v1.15.1
Jun 30, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
2 times, most recently
from
July 1, 2023 22:14
0f9efe4
to
542dbbd
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.1
Update dependency elixir to v1.15.2
Jul 1, 2023
renovate
bot
changed the title
Update dependency elixir to v1.15.2
Update dependency elixir to v1.15.3
Jul 15, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
July 15, 2023 09:44
542dbbd
to
a15c404
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.3
Update dependency elixir to v1.15.4
Jul 18, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
July 18, 2023 12:46
a15c404
to
483193e
Compare
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
August 28, 2023 13:10
483193e
to
c515f3a
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.4
Update dependency elixir to v1.15.5
Aug 28, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
September 20, 2023 11:31
c515f3a
to
2ca4979
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.5
Update dependency elixir to v1.15.6
Sep 20, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
October 14, 2023 10:37
2ca4979
to
684b626
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.6
Update dependency elixir to v1.15.7
Oct 14, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
December 22, 2023 18:39
684b626
to
ea1760b
Compare
renovate
bot
changed the title
Update dependency elixir to v1.15.7
Update dependency elixir to v1.16.0
Dec 22, 2023
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
January 31, 2024 10:43
ea1760b
to
8595d07
Compare
renovate
bot
changed the title
Update dependency elixir to v1.16.0
Update dependency elixir to v1.16.1
Jan 31, 2024
renovate
bot
force-pushed
the
renovate/elixir-1.x
branch
from
March 10, 2024 13:24
8595d07
to
85652bf
Compare
renovate
bot
changed the title
Update dependency elixir to v1.16.1
Update dependency elixir to v1.16.2
Mar 10, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
None yet
0 participants
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
1.11.1-otp-23
->1.16.2
Release Notes
elixir-lang/elixir (elixir)
v1.16.2
Compare Source
1. Enhancements
Elixir
:defmodule
tracing event on module definitionMix
Mix.install_project_dir/0
Mix.install/2
installationMix.SCM.delete/1
2. Bug fixes
Elixir
Path.relative_to/2
dealt with "." as inputIEx
ExUnit
v1.16.1
Compare Source
1. Bug fixes
Elixir
Code.quoted_to_algebra/2
for operator with :do key as operandString.capitalize/1
with a single codepointIEx
$HOME
is setMix
v1.16.0
Compare Source
Official announcement: https://elixir-lang.org/blog/2023/12/22/elixir-v1-16-0-released/
1. Enhancements
EEx
Elixir
:emit_warnings
forCode.string_to_quoted/2
MismatchedDelimiterError
for handling mismatched delimiter exceptions\r\n
:offset
option toFile.stream!/2
UndefinedFunctionError
Kernel.ParallelCompiler.pmap/2
to compile multiple additional entries in parallelTrue
/False
/Nil
are used as aliases and there is no such aliasMacro.compile_apply/4
@nifs
annotation from Erlang/OTP 25@dialyzer
configurationString.replace_invalid/2
:limit
option toTask.yield_many/2
Logger
Logger.levels/0
Mix
MIX_PROFILE
to profile a list of comma separated tasks--sparse
option:applications
and:extra_applications
are used:details
when possiblelib/
and one of them is changed--sparse
optioninclude/
directory in releasesmix test test/foo_test.exs:13 test/bar_test.exs:27
2. Bug fixes
Elixir
Code.Fragment.surround_context/2
when matching on->
IO.binwrite/2
on terminated device (mirroringIO.write/2
)dbg
module is a compile-time dependencyunquote/1
and the function/macro itself is unusedElixir.
in their definition@after_compile
callbacks to avoid deadlocksMacro.to_string/1
for certain ASTsFile.cwd!/0
inPath.expand/1
andPath.absname/1
Path.relative_to/2
returns a relative path when the given argument does not share a common prefix withcwd
ExUnit
IEx
Mix
mix archive.install
mix escript.install
3. Soft deprecations (no warnings emitted)
Elixir
File.stream!(file, options, line_or_bytes)
in favor of keeping the options as last argument, as inFile.stream!(file, line_or_bytes, options)
Kernel.ParallelCompiler.async/1
in favor ofKernel.ParallelCompiler.pmap/2
Path.safe_relative_to/2
in favor ofPath.safe_relative/2
Mix
Mix.Task.Compiler.Diagnostic
4. Hard deprecations
Elixir
Date.range/3
with a negative step insteadEnum.slice/2
, givefirst..last//1
instead~R/.../
is deprecated in favor of~r/.../
. This is because~R/.../
still allowed escape codes, which did not fit the definition of uppercase sigilsString.slice/2
, givefirst..last//1
insteadExUnit
format_time/2
, useformat_times/1
insteadMix
:leex
to be added as a compiler to run theleex
compiler:yecc
to be added as a compiler to run theyecc
compilerv1.15.7
Compare Source
1. Enhancements
Elixir
2. Bug fixes
EEx
Mix
Mix.Tasks.Format.formatter_for_file/2
v1.15.6
Compare Source
This release also includes fixes to the Windows installer.
1. Bug fixes
EEx
Elixir
*
in bitstringsCode.quoted_to_algebra/2
Mix
:extra_applications
declare in umbrella projects are loadedv1.15.5
Compare Source
1. Enhancements
IEx
2. Bug fixes
Elixir
Code.Fragment.surround_context/2
for aliases and submodules of non-aliasesExUnit
IEx
Mix
blake
is always availablev1.15.4
Compare Source
1. Bug fixes
Mix
v1.15.3
Compare Source
1. Enhancements
Elixir
Mix
Mix.install/2
2. Bug fixes
Elixir
with_diagnostics
propagate warnings from inner Erlang passesIEx
--remsh
on Erlang/OTP 25 and earlierMix
__mix_recompile__?
callbacks are properly invokedv1.15.2
Compare Source
1. Bug fixes
IEx
v1.15.1
Compare Source
1. Enhancements
Code.string_to_quoted/2
honors:static_atoms_encoder
for multi-letter sigils2. Bug fixes
ExUnit
capture_log
capture_log
callsIEx
pry
works on Erlang/OTP 25 and earlier while IEx is bootingCode.Fragment.surround_context
considers surround context around spaces and parensLogger
:function
as metadataMix
mtime was successfully retrieved
--werl
from release scripts on Erlang/OTP 26v1.15.0
Compare Source
Official announcement: https://elixir-lang.org/blog/2023/06/19/elixir-v1-15-0-released/
This release requires Erlang/OTP 24 and later.
Elixir v1.15 is a smaller release with focused improvements
on compilation and boot times. This release also completes
our integration process with Erlang/OTP logger, bringing new
features such as log rotation and compaction out of the box.
You will also find additional convenience functions in
Code
,Map
,Keyword
, all Calendar modules, and others.Compile and boot-time improvements
The last several releases brought improvements to compilation
time and this version is no different. In particular, Elixir
now caches and prunes load paths before compilation, ensuring your
project (and dependencies!) compile faster and in an environment
closer to production.
In a nutshell the Erlang VM loads modules from code paths. Each
application that ships with Erlang and Elixir plus each dependency
become an entry in your code path. The larger the code path, the
more work Erlang has to do in order to find a module.
In previous versions, Mix would only add entries to the load paths.
Therefore, if you compiled 20 dependencies and you went to compile
the 21st, the code path would have 21 entries (plus all Erlang and
Elixir apps). This allowed modules from unrelated dependencies to
be seen and made compilation slower the more dependencies you had.
With this release, we will now prune the code paths to only the ones
listed as dependencies, bringing the behaviour closer to
mix release
.Furthermore, Erlang/OTP 26 allows us to start applications
concurrently and cache the code path lookups, decreasing the cost of
booting applications. The combination of Elixir v1.15 and Erlang/OTP 26
should reduce the boot time of applications, such as when starting
iex -S mix
or running a single test withmix test
, from 5% to 30%.The compiler is also smarter in several ways:
@behaviour
declarationsno longer add compile-time dependencies and aliases in patterns and
guards add no dependency whatsoever, as no dispatching happens. Furthermore,
Mix now tracks the digests of
@external_resource
files, reducing theamount of recompilation when swapping branches. Finally, dependencies
are automatically recompiled when their compile-time configuration changes.
Potential incompatibilities
Due to the code path pruning, if you have an application or dependency
that does not specify its dependencies on Erlang and Elixir application,
it may no longer compile successfully in Elixir v1.15. You can temporarily
disable code path pruning by setting
prune_code_paths: false
in yourmix.exs
, although doing so may lead to runtime bugs that are onlymanifested inside a
mix release
.Compiler warnings and errors
The Elixir compiler can now emit many errors for a single file, making
sure more feedback is reported to developers before compilation is aborted.
In Elixir v1.14, an undefined function would be reported as:
In Elixir v1.15, the new reports will look like:
A new function, called
Code.with_diagnostics/2
, has been added so thisinformation can be leveraged by editors, allowing them to point to several
errors at once.
Potential incompatibilities
As part of this effort, the behaviour where undefined variables were
transformed into nullary function calls, often leading to confusing error
reports, has been disabled during project compilation. You can invoke
Code.compiler_options(on_undefined_variable: :warn)
at the top of your
mix.exs
to bring the old behaviour back.Integration with Erlang/OTP logger
This release provides additional features such as global logger
metadata and file logging (with rotation and compaction) out-of-the-box!
This release also soft-deprecates Elixir's Logger Backends in
favor of Erlang's Logger handlers. Elixir will automatically
convert your
:console
backend configuration into the newconfiguration. Previously, you would set:
Which is now translated to the equivalent:
If you use
Logger.Backends.Console
with a custom device or otherbackends, they are still fully supported and functional. If you
implement your own backends, you want to consider migrating to
:logger_backends
in the long term.
See the new
Logger
documentation for more information on thenew features and on compatibility.
1. Enhancements
EEx
Elixir
%s
) toCalendar.strftime/2
Code.format_string!/2
now converts'charlists'
into~c"charlists"
by default:on_undefined_variable
to the compiler options to preserve the warning behaviour which was deprecated back in Elixir v1.4Code.loaded?/1
andCode.ensure_all_loaded(!)/1
Code.prepend_paths/1
,Code.append_paths/1
, andCode.delete_paths/1
Code.with_diagnostics/2
to return diagnostics when compiling and evaluating codeCode.Fragment.cursor_context/1
Code.Fragment.container_cursor_to_quoted/1
Date.before?/2
andDate.after?/2
DateTime.before?/2
andDateTime.after?/2
DateTime.utc_now/2
File.Stream
Inspect
now renders'charlists'
as~c"charlists"
by defaultcase
andcond
insidedbg/2
t:nonempty_binary/0
andt:nonempty_bitstring/0
@behaviour
s as runtime dependencieserror: ...
messages, similar towarning: ...
Code.compiler_options(on_undefined_variable: :warn)
at the top of yourmix.exs
--sname undefined
/--name undefined
so a name is automatically generatedKeyword.split_with/2
Macro.Env.lookup_alias_as/2
Map.split_with/2
Map.intersect/2
andMap.intersect/3
MapSet.split_with/2
NaiveDateTime.beginning_of_day/1
andNaiveDateTime.end_of_day/1
NaiveDateTime.before?/2
andNaiveDateTime.after?/2
NaiveDateTime.utc_now/2
Module.get_last_attribute/3
:return_separator
optionProcess.alias/0,1
andProcess.unalias/1
Range.split/2
:fast_ascii
mode toString.valid?/2
Supervisor
:lines
inSystem.cmd/3
to capture output line by lineTask.yield_many/2
Task.Supervisor.start_child/2
Time.before?/2
andTime.after?/2
URI.append_path/2
ExUnit
{module, function}
tuples in ExUnitsetup
callbacksExUnit.Case.get_last_registered_test/1
ExUnit.DocTest.doctest_file/2
doctest_data
in doctest tagsIEx
--dbg pry
IEX_HOME
alias
,import
, andrequire
runtime_info(:allocators)
Range
,DateTime
, andRegex
Logger
Logger.add_handlers/1
andLogger.default_formatter/1
default_formatter
anddefault_handler
configuration for Logger which configures Erlang/OTP logger:always_evaluate_messages
configuration to LoggerMix
:start_concurrently
configuration--all-warnings
by default@external_resources
optional_applications
to.app
file--purge-consolidation-path-if-stale
which will purge the given consolidation path if compilation is requiredmix deps.get
/mix deps.update
--check-locked
which raises if changes to the lockfile are required--no-exit
option--check-formatted
fails--trace-to-file
to improve performance when working with large outputseval
command--output
flagdef cli
to unify all CLI defaults in a single placeMix.Project.deps_tree/1
2. Bug fixes
Elixir
Exception.blame/3
File.cp/2
File.rm_rf/1
try/rescue
...
inside typespecsbehaviour_info
andmodule_info
functions from Erlang modulesModule.get_attribute/3
returnsnil
and not the given default value when an attribute has been explicitly set asnil
System.stop/1
executesURI.merge/2
works accordingly with relative pathsExUnit
@tag capture_log: true
was set to true and the Logger application was shut down in the middle of the testsetup_all
IEx
whenever the input reader was killed
Mix
cwd
in compiler cache keyerlsrv.exe
in path with spacesmix xref
is used at the umbrella root3. Soft deprecations (no warnings emitted)
Elixir
File.cp/3
andFile.cp_r/3
with a function as third argumentis deprecated in favor of a keyword list
:return_diagnostics
option to beset to true when compiling or requiring code
Logger
add_backend/2
,remove_backend/2
, andconfigure_backend/2
have been deprecatedin favor of the new
:logger_backends
dependency:console
configuration has been deprecated in favor of:default_formatter
:backends
configuration has been deprecated in favor ofLogger.add_handlers/1
Mix
:preferred_cli_env
is deprecated in favor of:preferred_envs
indef cli
:preferred_cli_target
is deprecated in favor of:preferred_targets
indef cli
HEX_MIRROR
is deprecated in favor ofHEX_BUILDS_URL
4. Hard deprecations
Elixir
Calendar.ISO.day_of_week/3
is deprecated in favor ofCalendar.ISO.day_of_week/4
Exception.exception?/1
is deprecated in favor ofKernel.is_exception/1
...
as a valid function call identifierRegex.regex?/1
is deprecated in favor ofKernel.is_struct/2
Logger
Logger.warn/2
is deprecated in favor ofLogger.warning/2
v1.14.5
Compare Source
This release contains fixes for Erlang/OTP 26.
Bug fixes
Elixir
Mix
v1.14.4
Compare Source
This release adds basic support for Erlang/OTP 26. When migrating
to Erlang/OTP 26, keep it mind it changes how maps are stored
internally and they will be printed and traversed in a different
order (note maps never provided a guarantee of their order).
To aid migration, this release adds
:sort_maps
toinspect
custom options, in case you want to sort them before inspection:
Enhancements
Elixir
:sort_maps
toInspect.Opts.custom_options
IEx
Mix
Bug fixes
Elixir
Code.quoted_to_string_with_comments/2
debug_info/4
when returning core_v1quote keep: true
to avoid invalid stacktracesStream.zip/1
hanging on empty listMix
v1.14.3
Compare Source
1. Enhancements
Elixir
ExUnit
2. Bug fixes
Elixir
Calendar.strftime/2
is_struct/2
guardsdefguard
expansiondefmodule
Macro.to_string/1
for large negative integers__ENV__
in macrosPath.wildcard/2
expands..
symlinks accordinglyRange.disjoint?/2
implementationExUnit
v1.14.2
Compare Source
1. Enhancements
Elixir
Code.eval_quoted_with_env/4
with support for the:prune_binding
optionExUnit
:doctest
and:doctest_line
as meta tagsExUnit.Formatter.format_assertion_diff/4
Mix
Mix.install/2
accepts atoms as paths2. Bug fixes
Elixir
size*unit
shortcut in bitstringdefguard
:for
in protocols with the appropriate envExUnit
ExUnit.run/1
Mix
v1.14.1
Compare Source
1. Enhancements
Elixir
Application.compile_env/3
inside module attributesMacro.expand_literals/2
andMacro.expand_literals/3
:close_stdin
toSystem.shell/2
Mix
--all-warnings
option2. Bug fixes
Elixir
:uniq
is given infor
comprehensions and the result is unused@enforce_keys
attribute afterdefstruct
declaration:debug_info
chunkMacro.to_string/2
when converting an AST with:erlang.binary_to_atom/2
String.split/3
andString.next_grapheme/1
returning invalid results on invalid UTF-8 encodingSystem.shell/2
uri.port
as:undefined
in certain cases inURI.new/1
ExUnit
:moduledoc
and functions are specified in:only
IEx
--no-pry
is givenMix
.formatter.exs
so they are properly re-evaluted on every callv1.14.0
Compare Source
Elixir v1.14 brings many improvements to the debugging experience in Elixir
and data-type inspection. It also includes a new abstraction for easy
partitioning of processes called
PartitionSupervisor
, as well as improvedcompilation times and error messages.
Elixir v1.14 is the last version to support Erlang/OTP 23. Consider updating
to Erlang/OTP 24 or Erlang/OTP 25.
dbg
Kernel.dbg/2
is a new macro that's somewhat similar toIO.inspect/2
, butspecifically tailored for debugging.
When called, it prints the value of whatever you pass to it, plus the debugged
code itself as well as its location. This code:
Prints this:
dbg/2
can do more. It's a macro, so it understands Elixir code. You can seethat when you pass a series of
|>
pipes to it.dbg/2
will print the valuefor every step of the pipeline. This code:
Prints this:
IEx and Prying
dbg/2
supports configurable backends. IEx automatically replaces the defaultbackend by one that halts the code execution with
IEx.Pry
, giving developersthe option to access local variables, imports, and more. This also works with
pipelines: if you pass a series of
|>
pipe calls todbg
(or pipe into it at theend, like
|> dbg()
), you'll be able to step through every line in the pipeline.You can keep the default behaviour by passing the
--no-pry
option to IEx.PartitionSupervisor
PartitionSupervisor
is a new module that implements a new supervisor type. Thepartition supervisor is designed to help with situations where you have a single
supervised process that becomes a bottleneck. If that process's state can be
easily partitioned, then you can use
PartitionSupervisor
to supervise multipleisolated copies of that process running concurrently, each assigned its own
partition.
For example, imagine you have an
ErrorReporter
process that you use to reporterrors to a monitoring service.
As the concurrency of your application goes up, the
ErrorReporter
processmight receive requests from many other processes and eventually become a
bottleneck. In a case like this, it could help to spin up multiple copies of the
ErrorReporter
process under aPartitionSupervisor
.The
PartitionSupervisor
will spin up a number of processes equal toSystem.schedulers_online()
by default (most often one per core). Now, whenrouting requests to
ErrorReporter
processes we can use a:via
tuple androute the requests through the partition supervisor.
Using
self()
as the partitioning key here means that the same process willalways report errors to the same
ErrorReporter
process, ensuring a form ofback-pressure. You can use any term as the partitioning key.
A Common Example
A common and practical example of a good use case for
PartitionSupervisor
ispartitioning something like a
DynamicSupervisor
. When starting many processesunder it, a dynamic supervisor can be a bottleneck, especially if said processes
take a long time to initialize. Instead of starting a single
DynamicSupervisor
,you can start multiple:
Now you start processes on the dynamic supervisor for the right partition.
For instance, you can partition by PID, like in the previous example:
Improved errors on binaries and evaluation
Erlang/OTP 25 improved errors on binary construction and evaluation. These improvements
apply to Elixir as well. Before v1.14, errors when constructing binaries would
often be hard-to-debug generic "argument errors". With Erlang/OTP 25 and Elixir v1.14,
more detail is provided for easier debugging. This work is part of EEP
54.
Before:
Now:
Slicing with steps
Elixir v1.12 introduced stepped ranges, which are ranges where you can
specify the "step":
Stepped ranges are particularly useful for numerical operations involving
vectors and matrices (see Nx, for example).
However, the Elixir standard library was not making use of stepped ranges in its
APIs. Elixir v1.14 starts to take advantage of steps with support for stepped
ranges in a couple of functions. One of them is
Enum.slice/2
:binary_slice/2
(andbinary_slice/3
for completeness) has been added to theKernel
module, that works with bytes and also support stepped ranges:Expression-based inspection and
Inspect
improvementsIn Elixir, it's conventional to implement the
Inspect
protocol for opaquestructs so that they're inspected with a special notation, resembling this:
This is generally done when the struct content or part of it is private and the
%name{...}
representation would reveal fields that are not part of the publicAPI.
The downside of the
#name<...>
convention is that the inspected output is notvalid Elixir code. For example, you cannot copy the inspected output and paste
it into an IEx session.
Elixir v1.14 changes the convention for some of the standard-library structs.
The
Inspect
implementation for those structs now returns a string with a validElixir expression that recreates the struct when evaluated. In the
MapSet
example above, this is what we have now:
The
MapSet.new/1
expression evaluates to exactly the struct that we'reinspecting. This allows us to hide the internals of
MapSet
, while keepingit as valid Elixir code. This expression-based inspection has been
implemented for
Version.Requirement
,MapSet
, andDate.Range
.Finally, we have improved the
Inspect
protocol for structs so thatfields are inspected in the order they are declared in
defstruct
.The option
:optional
has also been added when deriving theInspect
protocol, giving developers more control over the struct representation.
See the updated documentation for
Inspect
for a general rundown onthe approaches and options available.
1. Enhancements
EEx
<%!-- --%>
EEx.tokenize/2
Elixir
Access.slice/1
Application.compile_env/4
andApplication.compile_env!/3
to read the compile-time environment inside macrosDateTime.from_iso8601/2
day
/hour
/minute
onadd
/diff
across different calendar modules:normalize_bitstring_modifiers
toCode.format_string!/2
Code.compile_string/2
andCode.compile_quoted/2
Code.env_for_eval/1
andCode.eval_quoted_with_env/3
__MODULE__
in several functionsEnum.slice/2
dereference_symlinks: true
inFile.cp/3
andFile.cp_r/3
1.0e16
and the fractional value is precisely zeroFloat.min_finite/0
andFloat.max_finite/0
Inspect
protocol:optional
when deriving the Inspect protocol for hiding fields that match their default valuedefstruct
Date.Range
,MapSet
, andVersion.Requirement
Macro.Env
and keywords as stacktrace definitions inIO.warn/2
IO.ANSI.syntax_colors/0
and related configuration to be shared across IEx anddbg
dbg/0-2
macro..
as a nullary operator that returns0..-1//1
binary_slice/2
andbinary_slice/3
generated: true
annotations on macro expansionKeyword.from_keys/2
andKeyword.replace_lazy/3
List.keysort/3
with support for asorter
functionMacro.classify_atom/1
andMacro.inspect_atom/2
Macro.expand_literal/2
andMacro.path/2
Macro.Env.prune_compile_info/1
Map.from_keys/2
andMap.replace_lazy/3
MapSet.filter/2
,MapSet.reject/2
, andMapSet.symmetric_difference/2
Node.spawn_monitor/2
andNode.spawn_monitor/4
@after_verify
attribute for executing code whenever a module is verifiedPartitionSupervisor
that starts multiple isolated partitions of the same child for scalabilityPath.safe_relative/1
andPath.safe_relative_to/2
Registry.count_select/2
Stream.duplicate/2
andStream.transform/5
String.replace/3
,String.split/3
, andString.splitter/3
String.slice/2
:zip_input_on_exit
option toTask.async_stream/3
:mfa
in theTask
struct for reflection purposesURI.append_query/2
Version.to_string/1
Version.Requirement
source in theInspect
protocolExUnit
ExUnit.Callbacks.start_link_supervised!/2
ExUnit.run/1
to rerun test modulesIEx
--dot-iex
line by line::
inside<<...>>
)pid/1
h/1
Logger
Logger.put_process_level/2
Mix
:config_path
and:lockfile
options toMix.install/2
--no-optional-deps
to skip optional dependencies to test compilation works without optional dependenciesMix.Dep.Converger
now tells which deps formed a cycle--app
option to restrict recursive tasks in umbrella projects+
as a task separator instead of commamix format -
when reading from stdinmix format
plugins are missing:runtime_config_path
acceptfalse
to skip theconfig/runtime.exs
:test_elixirc_options
and default to not generating docs nor debug info chunk for tests--group
flag inmix xref graph
2. Bug fixes
Elixir
Calendar.strftime/3
--rpc-eval
usage__exception__
field astrue
when expanding exceptions in typespecsTrue
,False
, andNil
aliases are used@derive
attributesdefimpl :for
Regex.compile/2
System.fetch_env!/1
to mirror map operationsExUnit
tmp_dir
in ExUnit to avoid test name collisioncapture_log
)ExUnit.after_suite/1
callback even when no tests runsetup
with imported function from withindescribe
failed to compileIEx
exports/1
in IEx for long function namesMix
--warnings-as-errors
when used with--all-warnings
mix format
RELEASE_MODE
afterenv.{sh,bat}
are executedmix xref trace
runtime: false
onMix.install/2
3. Soft deprecations (no warnings emitted)
Elixir
File.cp/3
andFile.cp_r/3
is deprecated.Instead pass the callback the
:on_conflict
key of a keyword listEEx
<%# ... %>
for comments is deprecated. Please use<% # ... %>
or the new multi-line comments with<%!-- ... --%>
Logger
Logger.enable/1
andLogger.disable/1
in favor ofLogger.put_process_level/2
Mix
--app
option inmix cmd CMD
is deprecated in favor of the more efficientmix do --app app cmd CMD
4. Hard deprecations
Elixir
Application.get_env/3
and friends in the module body is now discouraged, useApplication.compile_env/3
insteaduse Bitwise
is deprecated, useimport Bitwise
instead~~~
is deprecated in favor ofbnot
for clarity:each_cycle
is deprecated, return a{:compile | :runtime, modules, warnings}
tuple instead<|>
to avoid ambiguity with upcoming extended numerical operatorsString.starts_with?/2
Logger
$levelpad
on message formattingMix
Mix.Tasks.Xref.calls/1
is deprecated in favor of compilation tracers5. Backwards incompatible changes
Mix
v1.13.4
Compare Source
This release has been verified to work with Erlang/OTP 25 RC2.
1. Enhancements
Elixir
2. Bug fixes
Elixir
require
Registry
send work with named triplets3. Deprecations
Mix
Checksums
325fbdd
2ae1b2e
v1.13.3
Compare Source
1. Enhancements
Mix
2. Bug fixes
Elixir
Macro.to_string/1
when the plain aliasElixir
is givenString.split_at/2
Mix
Checksums
7a2d0ff
e1110f7
v1.13.2
Compare Source
1. Enhancements
Mix
.ex
and.exs
files2. Bug fixes
Elixir
Code.Fragment.container_cursor_to_quoted/2
:uniq
was used inside another comprehension with:uniq
env.context_modules
is properly set inside optimizeddefmodule
Keyword.map/2
as it is equivalent toKeyword.new/2
Map.map/2
as it is equivalent toMap.new/2
Checksums
53bf917
442ee13
v1.13.1
Compare Source
1. Bug fixes
Elixir
SyntaxError
andTokenMissingError
if line is emptyArgumentError
for improper lists onapply/3
line_length
forMacro.to_string/1
Macro.to_string/1
slice
with negative positions in rangesURI.parse/1
asURI.new/1
is too strict in many common casesURI.new/1
returns nil for empty pathsIEx
--version
flag halts IExMix
Mix.install/2
cacheChecksums
40762ff
066586b
v1.13.0
Compare Source
Announcement: https://elixir-lang.org/blog/2021/12/03/elixir-v1-13-0-released/
1. Enhancements
EEx
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.