RepoJournal
Elixir & Phoenix Elixir & Phoenix
156 wires and counting

$ follow Elixir & Phoenix

Keep up with Elixir & Phoenix in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

$ status

wire 2026-10-29
stories 13

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

Elixir map-type inference stops multiplying, Phoenix shares Channel frames

By RepoJournal · Filed · About Elixir & Phoenix · Composed from the cited sources · methodology

Elixir's type checker now widens all named keys in a single step for non-finite atom keys, and Phoenix avoids copying encoded broadcasts across subscriber processes.

Update all named keys at once for non-finite atom keys elixir-lang/elixir

by josevalim

When the key may be any atom outside a finite set (atom(), dynamic(), atom() and not :a), map updates used to compute one alternative per named key and multiply the map lines with every chained update. Each line now updates all named keys and domains at once, each keeping its old value or taking the new one, which the commit calls "a supertype of the per-key union."

Preserve static map domains with none values elixir-lang/elixir

by lukaszsamson

Map domain entries are optional, so an empty static value excludes keys in that domain rather than emptying the whole map; the patch preserves those static lower bounds and covers them in contravariant function arguments, fixing #15854. The "map hoists dynamic" tests were updated because they asserted on static part precision loss.

Keep exclusions local when printing list type unions elixir-lang/elixir

by claytongentry

add_to_list_normalize/4 could copy exclusions from an existing union alternative onto an incoming one with no exclusions, changing what the printed type means, so an input permitting [:b] printed only alternatives that exclude it. When delete_elem/3 finds no matching exclusion, the code now recurses with the incoming alternative's [] instead of the existing one's n.

Send fastlane frames as a shared binary phoenixframework/phoenix

by Snehil-Shah

Encoded fastlane frames are now flattened into a single binary above the 64-byte refc threshold, so the frame is shared between processes instead of copied per subscriber. In the PR's table, a 100 KB payload to one subscriber goes from 0.9 ms to 0.8 ms per broadcast/4.

Fix map_test expectation after #16025 elixir-lang/elixir

by José Valim

The map_test expectation that hard-coded the old per-key approximation now asserts that updating the partitioned input gives the same type as updating the original. All quiet otherwise across the two repositories.

Quick answers

What shipped in Elixir & Phoenix on October 29, 2026?
Elixir's type checker now widens all named keys in a single step for non-finite atom keys, and Phoenix avoids copying encoded broadcasts across subscriber processes. In total, 7 commits and 6 pull requests landed.
Who contributed to Elixir & Phoenix on October 29, 2026?
4 developers shipped this update, including josevalim, lukaszsamson, claytongentry, and Snehil-Shah.
What were the notable Elixir & Phoenix updates?
Update all named keys at once for non-finite atom keys, Preserve static map domains with none values, and Keep exclusions local when printing list type unions.