Elixir v1.20.0 is released, requiring Erlang/OTP 27+ and compatible with OTP 29. The headline feature is a major type system overhaul: the type system now understands all language constructs and can infer types for function definitions without requiring explicit type signatures. Key improvements include type inference from guards, whole-body type inference, typing across clauses (occurrence typing for case/cond/with), and full support for non-atom map keys using domain-based typing. Map operations in the Map module are now fully typed, enabling detection of missing or invalid key accesses across module boundaries. Compile-time performance is also improved, with a new :interpreted module_definition option that can significantly speed up compilation on multi-core machines. Additional enhancements span ExUnit, IEx, Mix (dry-run for tests, parallelized dep checks), and the standard library (new Integer functions, SWAR optimizations, etc.). Several hard deprecations are introduced for Logger backends and other APIs.

11m read timeFrom elixirforum.com
Post cover image
Table of contents
Type system improvementsCompile-time improvementsv1.20.0 (2026-06-03)
557 Impressions