RepoJournal

$ cat elixir/month/2026-10-01.log

Elixir & Phoenix

Elixir & Phoenix

the month in review · October 2026

Elixir patches JSON and URI denial-of-service bugs

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

♥

The URI.parse/1 fix bounds port parsing, closing a CPU exhaustion path that any app parsing untrusted URLs was exposed to.

204 commits 100 PRs merged 5 releases 3 security advisories 30 briefings covered

all elixir reviews →

Unbounded port parsing in URI.parse/1 enables CPU exhaustion denial of service elixir-lang/elixir

The unbounded port parsing let an attacker-supplied URL drive parsing work without limit, so CPU exhaustion is reachable from anywhere you feed user input to URI.parse/1, including redirect handling and webhook fetching. Upgrade to the Elixir release carrying the patch; the JSON denial-of-service fix shipped in the same window.

Wait for all ancestor locks before auto-upload phoenixframework/phoenix_live_view

by lukaszsamson

Auto-upload could start while a file input sat inside a locked ancestor, because onUnlock only waited for the nearest lock. The client now rechecks after each unlock and fires the callback only once the full ancestor chain is unlocked, so nested locked forms no longer upload early.

Handle chunk push timeouts in uploads phoenixframework/phoenix_live_view

by lukaszsamson

pushChunk gained missing client-side timeout handling; a slow chunk previously swallowed the client timeout and left the connection waiting on the server timeout until UploadChannel closed the socket. Slow uploads now fail on the client's own clock instead of hanging.

Fix form recovery completion ordering phoenixframework/phoenix_live_view

by lukaszsamson

The mount patch callback previously tracked only the last entry in the array; it now runs after every form recovery completes, regardless of completion order. Forms with several recovered fields get a consistent mount patch instead of one that raced the rest.

Optimize String.chunk with uniform fast-path and sub-binary slicing elixir-lang/elixir

by preciz

Fully valid and printable strings return [string] immediately, skipping the chunk loop and its allocations entirely, with the fallback loop reusing the first decoded codepoint and classification. String.chunk over uniform input is now close to free.

Avoid repeated dependency scans in nested Mix projects elixir-lang/elixir

by claytongentry

Mix.Dep.load_and_cache/5 rescanned the root project's already topologically sorted cache once per level of nested children and filtered it again to select records. It now traverses that cache in reverse, preserving dependency order, so deeply nested umbrella setups stop paying the repeated scan.

Avoid UTF-8 re-encoding in StringIO character reads elixir-lang/elixir

by preciz

StringIO character reads no longer re-encode the binary to build the accumulator. The author benchmarks a 1.2x to 1.3x speedup with "no regression, less memory usage", holding for wider input types like Asian strings in local benchmarks.

Keep trailing comments after nodes without closing metadata elixir-lang/elixir

by josevalim

Alongside: comment-preserving formatter fixes landed on both the trailing-comment and node-metadata paths, a registry :off_heap option and a fix for Ecto dropping true filters arrived, and DynamicSupervisor stopped leaking shutdown timeout messages.

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

Thu Oct 1 Elixir clarifies compile.elixir's documented contract Fri Oct 2 StringIO drops UTF-8 re-encoding, LiveView fixes unload and upload locks Sat Oct 3 LiveView form recovery now waits for every entry, not just the last Sun Oct 4 Mix stops rescanning nested deps, linked lists get a cheaper access update Mon Oct 5 Elixir trims compiler internals: dependency-cycle preflight, type inference Tue Oct 6 String.chunk gets a zero-copy fast path, LiveView uploads stop swallowing chunk timeouts Wed Oct 7 Float rounding up to 30% faster, LiveView link targets fixed Thu Oct 8 Phoenix fastlanes PubSub over a behavior, and Mix stops rescanning the dep graph Fri Oct 9 LiveView gets PubSub for components Sat Oct 10 Phoenix fixes connection race conditions, minified float rounding Sun Oct 11 URI encoding without the temporary binaries, faster local integration tests Mon Oct 12 Phoenix pins CI runners to ubuntu-24.04 and hardens all workflows Tue Oct 13 URI.encode_query builds pairs as single binaries, Phoenix CI workflows hardened Wed Oct 14 Elixir fixes deprecated Dict branches, Phoenix trims deprecation text Thu Oct 15 Stepped binary_slice goes fast path, non-empty bitstring comprehensions inline Fri Oct 16 Consolidated protocols drop apply for literal external funs Sat Oct 17 Registry gains an :off_heap option, Ecto stops dropping true filters Sun Oct 18 Formatter stops eating comments, protocol consolidation unbreaks Mon Oct 19 Base validators go SWAR, formatter output stabilizes Tue Oct 20 Formatter bugs that changed program meaning, and a LiveView assign that always fired Wed Oct 21 Base validation regression fixed, formatter comments stay put Thu Oct 22 Algorithm L replaces inside-out shuffles in Enum Sat Oct 24 Elixir trims type unions and startup cost, Phoenix returns 400 on bad auth tokens Sun Oct 25 StringIO counts characters faster, replace_leading gets simpler Mon Oct 26 DynamicSupervisor keeps shutdown reasons, stops leaking timeout messages Tue Oct 27 Ecto stops logging redacted fields in plaintext Wed Oct 28 Formatter comment fixes, LiveView patch handling corrected Thu Oct 29 Elixir map-type inference stops multiplying, Phoenix shares Channel frames Fri Oct 30 Elixir patches JSON and URI denial-of-service bugs Sat Oct 31 Integer.parse/2 gets a faster path, mix compile --list survives aliases

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 →