Store compilation results if compilation fails due to --warnings-as-errors
Module
mix compile.elixir
26 changes across 12 versions
Changes by version
Do not verify modules twice
Do not run fixpoint computation on runtime dependencies. This should considerably improve compilation times for large projects when changing only one or two files
Pass original exception down to diagnostic :details when possible
Optimize scenario where there are thousands of files in lib/ and one of them is changed
Ensure __mix_recompile__? callbacks are properly invoked
Add --purge-consolidation-path-if-stale which will purge the given consolidation path if compilation is required
Optimize application tracer
Fix --warnings-as-errors when used with --all-warnings
Ensure semantic recompilation cascades to path dependencies
Lock the compiler to avoid concurrent usage
Do not recompile files if their modification time change but their contents are still the same and the .beam files are still on disk
Do not recompile all Elixir sources when Erlang modules change, only dependent ones
Do not recompile Elixir files if mix.exs changes, instead recompile only files using Mix.Project or trigger a recompilation if a compiler option changes
Only recompile needed files when a dependency is added, updated or removed
Only recompile needed files when a dependency is configured
Track transitive runtime dependencies coming from local/path dependencies
Recompile file if @external_resource is deleted
Print number of compiling files on all compiler cycles. This will make the Compiling N files (.ex) show up multiple times if necessary
Ensure that a manifest is generated even with no source code
Make sure export dependencies trigger recompilation when the dependency is removed as well as when the whole file is removed
Do not emit false positive warnings when a path dependency adds a module that is then used by the current application in the same mix compile cycle
Mark modules for path dependencies as "Export dependencies" if they changed but their public interface is the same
Track application boundaries in the Elixir compiler. If you invoke code from Erlang or Elixir standard libraries and you don't depend on the proper applications, a warning will be emitted. A warning will also be emitted if you invoke code from an umbrella sibling that you don't depend on - effectively forbidding cyclic dependencies between apps
Add --all-warnings option to Elixir compiler that shows all warnings from the previous compilation (instead of just of the files being compiled)
Store multiple sources in case of module conflicts. This solves an issue where _build would get corrupted when compiling Elixir projects with module conflicts