RepoJournal

$ cat elixir/week/2026-10-12.log

Elixir & Phoenix

Elixir & Phoenix

the week in review · Oct 12 – Oct 18, 2026

Phoenix rewrites every CI workflow to hardened patterns

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

Elixir's week ran the other direction: Registry gained an :off_heap option and the compiler team kept chasing allocations out of Uri and binary_slice.

22 commits 18 PRs merged 7 briefings covered

all elixir reviews →

Standardize and harden GitHub Actions workflows phoenixframework/phoenix

by rhcarvalho

A second pass over phoenixframework/phoenix workflows, following the earlier hardening and the docs.yml addition, standardizes structure and caching and applies the hardened patterns where they were missed. If you fork Phoenix or template your own CI off it, the reusable patterns here are the ones to copy.

Build each pair as a single binary in URI.encode_query elixir-lang/elixir

by preciz

URI.encode_query now encodes each value straight into the accumulator holding the encoded key and delimiter, so "This avoids intermediate binary allocations and string concatenations for each pair". Query-string building in the hot path gets cheaper without an API change.

Add :off_heap option to Registry (#15992) elixir-lang/elixir

by Weronika Witek

Registry takes an :off_heap option for its storage. For a registry holding a very large number of entries, that moves the table out of the process heap, a memory-layout decision you opt into rather than get by default.

Keep comments on do-end block keywords when formatting elixir-lang/elixir

by Mandar Joshi

Comments written after do-end block keywords, as in a `rescue # comment` line, used to be dropped by the formatter. They now move to the start of the relevant block body, so a `mix format` run stops losing text you wrote.

Dispatch consolidated protocols through literal external funs elixir-lang/elixir

by Nelson Vides

Consolidated protocol dispatch previously called impl_for!/1 then the implementation through a dynamic Module.fun(...) call, compiling to apply with an export table lookup per call. Protocol functions now compile the same way before and after consolidation, to literal external funs.

Fix protocol consolidation crash on beams from older Elixir versions (#15995) elixir-lang/elixir

by Jonathan Gnagy

Consolidation no longer crashes when it encounters beams compiled by older Elixir versions. That matters for anyone consolidating against an existing _build from a previous toolchain.

Return :error when casting malformed datetimes without seconds elixir-ecto/ecto

by ybai08

Ecto.Type.cast/2 for the naive and utc datetime types raised FunctionClauseError on strings shaped like a datetime but missing seconds; it returns :error as callers expect. A cast of untrusted input now fails cleanly instead of crashing.

Fix deprecated Dict, HashDict, and HashSet calls elixir-lang/elixir

by Leandro Ostera

Alongside: the deprecated Dict, HashDict, and HashSet branches now resolve against Elixir.Dict rather than the absent Erlang module, @deprecated messages in both Elixir and Phoenix lost redundant text that ExDoc already renders, and Ecto stopped dropping interpolated true filters a later or_where depends on.

$ ls elixir/week/ # the briefings behind this review

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.

all elixir reviews →