Description
Elixir creator José Valim returns to the podcast to unpack the latest developments in Elixir’s set-theoretic type system and how it is slotting into existing code without requiring annotations. We discuss familiar compiler warnings, new warnings based on inferred types, a phased rollout in v1.19/v1.20 that preserves backward compatibility, performance profiling the type checks across large codebases, and precise typing for maps as both records and dictionaries.
José also touches on CNRS academic collaborations, upcoming LSP/tooling enhancements, and future possibilities like optional annotations and guard-clause typing, all while keeping Elixir’s dynamic, developer-friendly experience front and center.
Key topics discussed in this episode:
Set-theoretic typing (union, intersection, difference)
Compiler-driven inference with zero annotations
Phased rollout strategy in 1.19 and 1.20
Performance profiling for large codebases
Map typing as records and dictionaries
Exhaustivity checks and behavioral typing in GenServers
Language Server Protocol & tooling updates
Future optional annotations and guard-clause typing
CNRS collaboration for theoretical foundations
Clear error messages and false-positive reduction
Community-driven feedback and iterative improvements
Links mentioned:
https://github.com/elixir-nx
https://livebook.dev/
https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html
https://hexdocs.pm/elixir/main/gradual-set-theoretic-types.html
https://hexdocs.pm/dialyxir/0.4.0/readme.html
https://remote.com/
Draw the Owl meme: https://i.imgur.com/rCr9A.png
https://dashbit.co/blog/data-evolution-with-set-theoretic-types
https://hexdocs.pm/ecto/Ecto.html
https://github.com/elixir-lsp/elixir-lsSpecial Guest: José Valim.