Set Theoretic Types in Elixir with José Valim

About this Episode

Published July 10, 2025 | Duration: 45:40 | RSS Feed | Direct download
Transcript: English

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-ls

Special Guest: José Valim.

Transcript (English):