RepoJournal
Elixir & Phoenix Elixir & Phoenix
138 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-08-16
stories 17

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

ELIXIR CORE CUTS ALLOCATIONS ACROSS STRING AND AST OPERATIONS

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

Thomas Cioppettini landed four performance wins overnight that eliminate unnecessary allocations in List.myers_difference, String case conversion, and Macro tree walkers.

The most immediate win ships in List.myers_difference [1], which removed a length computation that was firing on every call. But the bigger story is String.downcase and String.upcase with :ascii flag [2], which were building one cons cell per input byte only to flatten it back to binary. The fix scans without allocating on the first pass, cutting overhead dramatically on the dominant real-world case: URI schemes and HTTP headers that are already in target case. Macro.prewalk and postwalk get dedicated fast paths [3] that bypass wrapper closures and tuple allocations, preserving exact traversal semantics while cutting per-node overhead. Separately, Range.disjoint?/2 [4] now handles ranges beyond float precision correctly. On the Ecto side, embedded_load and embedded_dump now accept loader/dumper arguments [5], letting custom types like MapOf specify their own format without hardcoding :json.

Action items

References

  1. [1] perf: Remove unused length computation in List.myers_difference (#15753) ↗ elixir-lang/elixir
  2. [2] perf: Avoid intermediate charlist in String.downcase/upcase with :ascii ↗ elixir-lang/elixir
  3. [3] perf: Add accumulator free fast paths to Macro.prewalk/2 and postwalk/2 ↗ elixir-lang/elixir
  4. [4] fix: Range.disjoint?/2 for ranges beyond float precision (#15760) ↗ elixir-lang/elixir
  5. [5] Allow loader/dumper be passed through Ecto.embedded_load / Ecto.embedded_dump ↗ elixir-ecto/ecto

Quick answers

What shipped in Elixir & Phoenix on August 16, 2026?
Thomas Cioppettini landed four performance wins overnight that eliminate unnecessary allocations in List.myers_difference, String case conversion, and Macro tree walkers. In total, 7 commits and 10 pull requests landed.
Who contributed to Elixir & Phoenix on August 16, 2026?
2 developers shipped this update, including Thomas Cioppettini and LostKobrakai.
What were the notable Elixir & Phoenix updates?
perf: Remove unused length computation in List.myers_difference (#15753), perf: Avoid intermediate charlist in String.downcase/upcase with :ascii, and perf: Add accumulator free fast paths to Macro.prewalk/2 and postwalk/2.