DiscoverElixir WizardsSet Theoretic Types in Elixir with José Valim
Set Theoretic Types in Elixir with José Valim

Set Theoretic Types in Elixir with José Valim

Update: 2025-07-10
Share

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

Special Guest: José Valim.

Comments 
loading
In Channel
loading
00:00
00:00
1.0x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Set Theoretic Types in Elixir with José Valim

Set Theoretic Types in Elixir with José Valim

SmartLogic LLC