$ the-wire · showcase
Phoenix fastlanes PubSub over a behavior, and Mix stops rescanning the dep graph
By RepoJournal · Filed · About Elixir & Phoenix · Composed from the cited sources · methodology
Phoenix routes fastlane messages through the PubSub.Sender behavior while Elixir's Mix collector trades a small top-level cost for a much better worst case on deep graphs.
Use the PubSub.Sender behavior for fastlaning phoenixframework/phoenix
Fastlaning now goes through the PubSub.Sender behavior instead of bypassing the pubsub module's contract, so custom PubSub implementations can define their own send path. The upgrading instructions are explicit: go through 1.8.16 or later before landing on 1.9, per the accompanying Phoenix change.
Collect deps for invalidation in a single pass elixir-lang/elixir
Invalidation now collects dependencies in one pass, using the converger's child-before-parent ordering plus a MapSet of included apps and a tail-recursive traversal, instead of repeatedly scanning the dependency graph. The author notes a small tradeoff for top-level updates with no dependents, against a significantly improved worst case on deep graphs and faster partial updates.
Fix Phoenix.ChannelTest sockets violating Phoenix.Socket.t (#6870) phoenixframework/phoenix
Sockets built by Phoenix.ChannelTest now satisfy Phoenix.Socket.t, with topic and channel_pid typed as nilable because both are nil until a channel is joined, and the test supervisor kept in socket.private rather than the transport field. That removes a long-standing source of Dialyzer complaints when test sockets are passed into Channel.Server.join/4.
Optimize Float.ratio/1 reduction elixir-lang/elixir
Float.ratio/1 reduces the full significand directly and strips trailing zero bits in chunks, with ratio construction inlined, keeping the signed-zero fast path intact. The author reports it is faster in all cases while using less memory, pulled out of a larger Float module refactor.
Mention first!/1 and hd/1 are equivalent elixir-lang/elixir
The docs now state that first!/1 and hd/1 are equivalent, so the non-empty-list accessor reads the same in either spelling.