1. Enhancements
Elixir
- [Kernel.ParallelCompiler] Include per-module type checking times when compiler profiling is enabled with
profile: :time
2. Bug fixes
Elixir
- [Kernel] Fix binary comprehensions with sizes when options such as
:uniqor:intoare used - [Kernel] Improve compiler error messages when
quotewithunquoteis used inside a pattern or guard - [Kernel] Restore the compiler optimization of
Kernel.put_elem/3to emit:erlang.setelement/3 - [Module] Fix type checking when applying an empty function type
- [Module] Fix type checking of bitstring patterns that reuse variables
- [Module] Fix type information for
__info__(:struct)to include the:requiredkey - [Module] Fix type operations on map and optional keys during difference/intersection, including open keys and empty intersections
- [Module] Fix typing of list types involving dynamic or empty lists
- [Module] Include bitstrings as a possible domain key in the type system
- [Module] Preserve file metadata from each clause in type system warnings
- [Module] Fix type warnings for protocol implementations whose protocol module defines additional callbacks
- [Module] Raise clearer type checking errors when an expected struct is removed or redefined during compilation
Mix
- [mix compile] Avoid unnecessary umbrella recompilation when a path dependency's manifest is newer but unchanged
- [mix deps.compile] Recompile fetched dependencies when their compile-time environment changes