The Wire · Showcase
ELIXIR TIGHTENS TYPE REFINEMENT, ECTO UNLOCKS MACRO EXPANSION IN WINDOW FRAMES
By RepoJournal · Filed · About Elixir & Phoenix
Elixir's type system got sharper overnight with reverse arrow refinement landing, while Ecto's query builder now accepts macros where it previously rejected them.
The Elixir language repo merged the reverse arrow refinement for static predicate branches [1], enabling developers to annotate functions with input-level type precision. This lands alongside a tokenizer fix [2] that stops the compiler from suggesting back invalid characters when hints fail, a problem uncovered in issue 15419. The fix is being backported for stability. Meanwhile, Ecto shipped macro expansion in window frames [3], which means your custom query helpers now work in `frame` clauses where they previously failed validation. Before this change, you could only pass raw fragments; now macros expand first, making complex window definitions cleaner and more reusable.
Action items
- → Review reverse arrow type refinement docs if you're using static type guards elixir-lang/elixir [plan]
- → Test macro-based window frames in your Ecto queries if you've built custom helpers elixir-ecto/ecto [plan]
References
- [1] Refine static predicate branches ↗ elixir-lang/elixir
- [2] Make sure we never suggest back invalid characters ↗ elixir-lang/elixir
- [3] Expand macros in window frames ↗ elixir-ecto/ecto
FAQ
- What changed in Elixir & Phoenix on May 28, 2026?
- Elixir's type system got sharper overnight with reverse arrow refinement landing, while Ecto's query builder now accepts macros where it previously rejected them.
- What should Elixir & Phoenix teams do about it?
- Review reverse arrow type refinement docs if you're using static type guards • Test macro-based window frames in your Ecto queries if you've built custom helpers
- Which Elixir & Phoenix repositories shipped on May 28, 2026?
- elixir-lang/elixir, elixir-ecto/ecto