José Valim explains the development, implementation, and phased rollout of Elixir's new set-theoretic type system.
Elixir Programming Language | Software Development | Gradual Types
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.
The Journey of Elixir's Type System
Challenges and Learnings in Type System Development
Community Feedback and Iterations
Current Progress and Metrics
Set Theoretic Type Approach
Dialyxir and Future of Elixir's Type System
Developer Guidance and Future Plans
Drawing the Owl: Initial Steps
Type Information and False Negatives
Refining Type Information
Future Goals and Timeline
Implementing and Testing New Features
Dynamic vs. Static Typing
Impact on Developer Tools
Performance and Compilation Times
Final Thoughts and Developer Guidance
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:
github.com/elixir-nxlivebook.dev/hexdocs.pm/phoenix_live_view/Phoenix.LiveView.htmlhexdocs.pm/elixir/main/gradual-set-theoretic-types.htmlhexdocs.pm/dialyxir/0.4.0/readme.htmlremote.com/
Draw the Owl meme: i.imgur.com/rCr9A.pngdashbit.co/blog/data-evolution-with-set-theoretic-typeshexdocs.pm/ecto/Ecto.htmlgithub.com/elixir-lsp/elixir-ls
Why it's here
1 person recommends this
What people say. Recommended for a deep dive into how Elixir is adopting set-theoretic types without sacrificing its dynamic nature.
i
u/ideamarcosin r/elixir • Recommends
Set Theoretic Types in Elixir with José Valim
Elixir creator José Valim returns to the Elixir Wizards 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…