$ 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
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
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
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
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
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.