Elixir 1.20 marks a historic milestone for the language: it is now officially a gradually typed language.
The most significant feature is the introduction of native, optional typing integrated directly into the compiler. Unlike previous approaches that relied on external tools, Elixir 1.20 can now define and verify type information for functions, modules, and structures directly within the code at compile time. This enables better documentation, earlier error detection, and improved tooling support (such as auto-completion) without sacrificing Elixir’s dynamism and flexibility. Developers can decide how strictly they want to apply typing in their projects.
In addition to typing, this release brings improvements to compiler performance and enhancements to pattern matching that facilitate working with the new types. It is the largest update since the introduction of protocols and defines the future direction of the language’s development towards greater safety and maintainability in large codebases.