Elixir & Phoenix

Elixir & Phoenix

Elixir, Phoenix, LiveView, and Ecto - the BEAM web stack

Pick a date

The Wire · Showcase

ECTO FIXES CRITICAL SPLICE BUG, PHOENIX ADOPTS BOB FOR DOCKER IMAGES

By RepoJournal · Filed · About Elixir & Phoenix

Ecto shipped a fix for a long-standing splice parameter bug that was causing placeholder mismatches in dynamic expressions, while Phoenix moved to Bob's API for smarter Docker image selection in release generation.

Ecto's dynamic expression builder had a nasty problem: when splicing parameters, the postwalker appended the same parameter multiple times per placeholder occurrence, resulting in k placeholders generating k copies of parameters and broken bindings [1]. The fix recurses through splices into a map on first occurrence, so subsequent placeholders reuse the param instead of duplicating it [1]. That same release also tackles a data-modifying CTE planner cache traversal issue [2] that could corrupt query state. On the Phoenix side, `phx.gen.release` now uses Bob's API instead of hardcoded Docker image logic [3], which means generated Dockerfiles will automatically pull the optimal image for your target architecture and Elixir version. Phoenix also shipped Seenode deployment support [4], adding it as a first-class option alongside existing platforms. The Elixir repo meanwhile corrected documentation inconsistencies: `IO.read/2` docs incorrectly claimed the count argument was in bytes when it counts characters [5], and `MapSet.split_with/2` had a copy-pasted doctest that passed a two-element tuple to a single-argument predicate [6].

Action items

References

  1. [1] Fix splice params in dynamic expressions ↗ elixir-ecto/ecto
  2. [2] Fix data-modifying CTE planner cache traversal ↗ elixir-ecto/ecto
  3. [3] use Bob API for finding best docker image in phx.gen.release ↗ phoenixframework/phoenix
  4. [4] Add Seenode support to Phoenix deployment guide ↗ phoenixframework/phoenix
  5. [5] Fix `IO.read/2` docs: integer count is in characters, not bytes ↗ elixir-lang/elixir
  6. [6] Align `Access.filter/1` spec with its truthy semantics ↗ elixir-lang/elixir

FAQ

What changed in Elixir & Phoenix on July 9, 2026?
Ecto shipped a fix for a long-standing splice parameter bug that was causing placeholder mismatches in dynamic expressions, while Phoenix moved to Bob's API for smarter Docker image selection in release generation.
What should Elixir & Phoenix teams do about it?
Review Ecto changelog and test dynamic expressions with splices if you use them • Regenerate Phoenix release tasks to pick up Bob API integration • Update any custom `IO.read/2` implementations assuming byte counts
Which Elixir & Phoenix repositories shipped on July 9, 2026?
elixir-ecto/ecto, phoenixframework/phoenix, elixir-lang/elixir

For your repos

The showcase is a teaser.
Your wire is the product.

Same engine. Different stack. Below: what changes when the wire is yours.

Showcase wire

  • 14 famous open source orgs
  • One wire per day
  • Public, generic
  • Read on the web, when you remember

Your wire

  • Up to 1,500 of your repos - orgs, deps, vendors
  • Morning and evening briefs
  • Action items routed to your team
  • Slack delivery, email, breaking-news CVE alerts

Want a hands-on demo first? Ask a current user for an invite link.