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-09
stories 2

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

MACRO.TO_STRING BUG BREAKS FOR COMPREHENSIONS WITH TRAILING KEYWORDS

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

Elixir's Macro.to_string/1 silently corrupts for-comprehensions that use do-end blocks with non-block trailing keywords, rendering valid code that no longer compiles.

When Macro.to_string/1 encounters a trailing keyword list starting with do:, it renders the entire expression as a do-end block regardless of what comes after [1]. This breaks code like for(cp <- gc, do: <<cp::utf8>>, into: "") by parsing into as a bare variable instead of a comprehension option [1]. The rendered output looks syntactically valid but fails to compile, turning a silent macro bug into a runtime trap [2]. The fix restricts do-end block rendering to cases where every trailing keyword is actually a block keyword, preserving the semantic meaning of the original quoted expression [2]. This lands as a single commit across the Elixir repo over the last 24 hours.

Quick answers

What shipped in Elixir & Phoenix on August 9, 2026?
Elixir's Macro.to_string/1 silently corrupts for-comprehensions that use do-end blocks with non-block trailing keywords, rendering valid code that no longer compiles. In total, 1 commits and 1 pull requests landed.
Who contributed to Elixir & Phoenix on August 9, 2026?
1 developer shipped this update, including makoto-developer.
What were the notable Elixir & Phoenix updates?
Only use do-end blocks when every trailing keyword is a block keyword and Only use do-end blocks when every trailing keyword is a block keyword (#15725).