Tobias Pfeiffer
0208ff88c3
Link the relevant docs from --partitions docs ( #15865 )
...
Very small docs improvement, thought it'd be nice if the section
was linked in the docs.
Built the docs and verified it works.
2026-09-07 11:13:55 +02:00
José Valim
48ff182db0
Also install if versions are different
2026-09-05 09:47:19 +02:00
José Valim
ccab980101
Fix swapped Hex version check condition, closes #15847
2026-09-05 00:37:27 +02:00
Evan Purcer
26f6dbdb2a
Docs updates for .ex/.exs plugin behavior ( #15809 )
2026-08-29 22:51:50 +02:00
José Valim
1d661fb91d
Do not skip optional dependencies which are required downstream
2026-08-28 10:05:48 +02:00
Jonatan Kłosko
b703302cd1
Fix mix sync lock_N files getting overridden with empty content ( #15765 )
2026-08-18 13:25:11 +02:00
José Valim
37c7da4fbf
Fix constant retrigger of protocol consolidations in umbrellas
...
Closes #15727 .
2026-08-11 22:09:55 +02:00
Rodolfo Carvalho
44405c300b
Ensure no double newlines in files generated by "mix new" ( #15711 )
2026-08-03 08:59:29 +02:00
Rodolfo Carvalho
a9021b1c8d
Fix trailing whitespace in files generated by "mix new" ( #15710 )
2026-08-02 11:22:48 +02:00
Aaron Tinio
44ea7a621e
Pass :sigils to mix format plugins invoked for a sigil ( #15672 )
...
mix format passes the :sigils option to a plugin invoked for a file
extension, but not to a plugin invoked for a sigil, because the sigil
formatter closure captures the options before :sigils is put into them.
A plugin that formats embedded Elixir code therefore cannot dispatch a
sigil nested inside the sigil it is formatting by passing on the options
it received, so the same snippet formats differently in a .heex file and
in an ~H sigil.
The sigil formatters are part of the options they receive, so a private
function rebuilds the list whenever a sigil is formatted.
2026-07-25 10:52:31 +02:00
Barna Kovacs
1570992d04
Optimize stale dependency module lookups ( #15656 )
...
Reuse the manifest modules map instead of building a list and
scanning that list for every dependency export.
2026-07-23 08:36:40 +02:00
José Valim
ca719e08fb
Do not store optional in descr ( #15624 )
2026-07-17 01:20:39 +02:00
José Valim
c423e83fb0
Clarify formatter docs, closes #15616
2026-07-15 09:55:47 +02:00
Łukasz Samson
48c124abbe
Accept chardata paths in Mix.Release.make_boot_script/4 ( #15573 )
...
Found by re-running the type checker over function bodies with
spec-derived argument domains (#15559 ): the path argument is spec'd
Path.t() (chardata), but the body applies <> and String.to_charlist/1
to it, so a charlist path -- valid per the spec -- raised
ArgumentError. Normalize with IO.chardata_to_string/1 first, as the
Path module functions do.
2026-07-10 09:45:04 +02:00
Victor Rodrigues
c7586755a6
Document --failed interaction with --partitions in mix test ( #15563 )
2026-07-09 14:27:14 +02:00
José Valim
a3bfe9d407
Improve docs and code coments
2026-07-09 00:32:52 +02:00
Jean Klingler
bec8d39796
Add :migrate_atom_interpolations option to formatter ( #15531 )
2026-07-02 08:04:25 +09:00
José Valim
b3c0f259ef
mix format
2026-07-01 09:39:40 +02:00
Aaron Tinio
b680bea383
Document :opening_delimiter option for Mix.Tasks.Format format/2 ( #15532 )
...
Sigil callbacks have received :opening_delimiter in their opts since
v1.15.0, but it was never listed alongside :sigil and :modifiers
2026-06-28 16:49:51 +02:00
José Valim
9cb8bb63ce
Check for missing requirement in the loader
2026-06-26 18:43:53 +02:00
José Valim
eecafef2c0
Track dependency removal for local dependencies, closes #15445
2026-06-24 17:55:33 +02:00
José Valim
1ad6e735cb
Track dependency removal for fetchable dependencies
2026-06-24 17:55:33 +02:00
José Valim
f4bf3fd20e
Segregate bitstring and bitstring no binary in map domains
2026-06-23 10:43:35 +02:00
José Valim
34c7f2106c
Add warnings around using Mix.Project in formatters
2026-06-22 10:02:23 +02:00
José Valim
264200a4a6
Avoid unecessary umbrella recompilation when a path dependency's manifest is newer but unchanged, closes #15454
2026-06-17 15:54:55 +02:00
Jean Klingler
83e9b66e65
Add to_unsafe_atom/1 and soft-deprecate to_atom/1 ( #15494 )
2026-06-16 20:50:11 +09:00
Zach Allaun
59434b1590
Document that mix test --dry-run was introduced in 1.20.0 ( #15484 )
2026-06-15 15:08:02 +02:00
José Valim
502421c94e
Fix env outdated deps compilation
...
We should only avoid cleaning for path dependencies.
Fetch dependencies should go through the previous process.
Closes #15467 .
2026-06-13 12:08:52 +02:00
José Valim
6f18bf70c0
Persist code paths and Code.compiler_options across partitions
...
Closes #15457
2026-06-12 21:00:46 +02:00
Jean Klingler
8032f1dd19
Add since info to recently added env vars ( #15458 )
2026-06-11 16:50:03 +09:00
José Valim
f594d98a15
Raise if a Git refspec starts with - as it is parsed as a CLI flag
2026-06-10 09:27:32 +02:00
José Valim
0cdfc80737
Validate paths and files when extracting archives
2026-06-09 14:15:27 +02:00
José Valim
b2aad3d9f8
Clarify security considerations and disclaimers to archive/escript install
2026-06-09 13:37:58 +02:00
Aaron Tinio
d714fb203b
Honor --no-compile in mix format ( #15443 )
2026-06-07 21:34:23 +02:00
Jonatan Männchen
b5f1864d4e
Use package.hexdocs.pm URL format instead of hexdocs.pm/package ( #15429 )
2026-05-30 22:19:31 +02:00
José Valim
5337ab8716
Revert expansion of or/and in guards
...
This partially reverts aad63173 as it caused
massive AST to generate when expanding guards
with `expr in [...]` checks in them, as each
`or` became a full-blown case expression.
Alternative approaches will be explored in
future releases.
2026-05-22 09:51:09 +02:00
José Valim
af6d6b2cbe
Mark stale fetchable deps for compile before convergence
...
A fetched git dependency could report {:ok, vsn} from its
stale .app before Mix checked the stored SCM manifest lock.
If the same dependency then appeared again through a stricter
transitive requirement, the converger would mark it as
:divergedreq instead of :compile.
Validate the SCM manifest while loading the dependency so
fetchable deps with a stale stored lock are marked for
compilation before convergence reuses their status.
Add regression tests for the transitive git case and for
the direct converger case.
Closes #15406 .
2026-05-21 12:54:55 +02:00
José Valim
4dd6c3cf6a
Revert "Allow overriding specific dependencies in override ( #15193 )"
...
Hex uses the flag in a way that's not visibile to Mix,
so we have false positives. Closes #15407 .
This reverts commit bc7af21c02 .
2026-05-21 10:17:05 +02:00
José Valim
6962dc2d91
Deprecate xref: [exclude: ...]
2026-05-16 13:24:12 +02:00
José Valim
c3e1aa706d
Infer signatures across application boundaries, closes #15360
2026-05-16 13:14:06 +02:00
Łukasz Samson
0418986004
Fix Mix.Task.requirements/1 spec ( #15394 )
2026-05-15 21:45:22 +02:00
Jonatan Kłosko
536e53b173
Respect --raise when mix test --warnings-as-errors passes with warnings ( #15390 )
2026-05-15 10:30:28 +02:00
José Valim
64d381bd05
Avoid warnings when editor is not set
2026-05-14 21:55:35 +02:00
Łukasz Samson
b8723fea1e
Add missing spec for documented deps property in Mix.Dep ( #15351 )
2026-05-08 22:42:20 +02:00
José Valim
35497755b5
Use non_executable_binary_to_term on loopback pubsub
2026-05-06 23:42:55 +02:00
José Valim
68aae43703
Revert "Add each_directory to File.rm_rf, closes #15308 ( #15311 )"
...
This reverts commit d02e61d75e .
It did not address the original root problem.
2026-04-26 18:02:46 +02:00
José Valim
d02e61d75e
Add each_directory to File.rm_rf, closes #15308 ( #15311 )
2026-04-26 10:39:46 +02:00
José Valim
a5e19ad385
Support --output in mix deps.tree and mix app.tree, closes #15288
2026-04-20 08:17:12 +02:00
José Valim
983e033863
Do not touch sources when external resources change
...
Instead we store the changed files in the checkpoint.
This also address an issue where Elixir would say
"mtime was set in the future" when compiled too quickly.
See 7d521de . Closes #15277 .
2026-04-18 22:26:29 +02:00
José Valim
603602e67b
Implement reverse arrows for case ( #15260 )
2026-04-13 15:21:08 +02:00