RepoJournal
Elixir & Phoenix Elixir & Phoenix
107 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-09-11
stories 8

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

ExUnit restores async modules in reverse, OptionParser raises the wrong error

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

Two fixes landed in elixir-lang/elixir: ExUnit's --repeat-until-failure runner now restores async modules in execution order, and OptionParser.parse!/2 and parse_head!/2 report proper ParseErrors for list switch types instead of leaking ArgumentError.

The ExUnit.Server.restore_modules/2 path used by --repeat-until-failure reconstructed the internal queue and group state using the opposite ordering from the runner, which stores modules in execution order. The runner restores async modules after each successful run, so the mismatch shuffled module order between runs; the fix preserves the execution order the runner already stores [1].

OptionParser.parse!/2 and OptionParser.parse_head!/2 raised the wrong error class when reporting invalid or missing arguments with valid list type opts. For a strict [port: [:integer, :keep]] spec, `OptionParser.parse!(["--port", "4000", "--port"], opts)` produced `** (ArgumentError) cannot convert the given list to a string` instead of `** (OptionParser.ParseError) 1 error found!` with `--port : Missing argument of type integer`. The commit fixes the reporting path for list switch types [2][3].

Both changes are in elixir-lang/elixir. The OptionParser fix is the one that affects error handling you may match on; a ParseError replacing an ArgumentError is a behavior change for callers that rescue specifically.

Quick answers

What shipped in Elixir & Phoenix on September 11, 2026?
Two fixes landed in elixir-lang/elixir: ExUnit's --repeat-until-failure runner now restores async modules in execution order, and OptionParser.parse!/2 and parse_head!/2 report proper ParseErrors for list switch types instead of leaking ArgumentError. In total, 4 commits and 4 pull requests landed.
Who contributed to Elixir & Phoenix on September 11, 2026?
2 developers shipped this update, including cuishuang and Alexander Gubarev.
What were the notable Elixir & Phoenix updates?
Preserve async module order across repeat-until-failure runs, Fix OptionParser wrong errors for list switch types (#15881), and Fix OptionParser wrong errors for list switch types.