$ the-wire · showcase
Base validation regression fixed, formatter comments stay put
By RepoJournal · Filed · About Elixir & Phoenix · Composed from the cited sources · methodology
Elixir repaired the large-input slowdown its own SWAR rewrite introduced in Base32 and Base64 validation, and the formatter stopped duplicating operator comments it started misplacing after a recent change.
Fix large-input regressions in Base validation elixir-lang/elixir
Stepping by 8 bytes extracted an extra byte and ran valid_char?/1 on every stride, which was slower on large inputs than the pure 7-byte SWAR path. The fix checks the length remainder modulo 4 (Base64) or 8 (Base32) once at entry, recovering large-input throughput while also improving small and medium inputs, with fewer LOC and a smaller .beam.
Keep formatter output stable with comments elixir-lang/elixir
Since a recent change a comment can attach to the leftmost operand of an operator, so the formatter printed it mid-expression and moved it again on the next run. Comments now pop together with the operator and land before the whole expression, and fn and (a, b -> c) clauses break onto their own line when their arguments carry comments, so runs are idempotent again.
Don't treat code 1000 as special phoenixframework/phoenix
Close code 1000 was treated as the signal for the documented "disconnect" broadcast to stop the browser reconnecting, but that code is not always under your control: a middleware closing with 1000 left the browser permanently disconnected. Phoenix no longer special-cases 1000, so verify any client relying on that convention before upgrading.
Revert cancelled popstate navigation by the traversed distance phoenixframework/phoenix_live_view
When phx:before-navigate cancels a history traversal, the popstate handler reverted with a single history.back() or history.forward() chosen from state.position. Fragment entries and entries pushed by other scripts have no position, so a traversal crossing one reverted the wrong way and bounced between two entries; it now reverts by the traversed distance.
Only spawn tasks if more than one core elixir-ecto/ecto
Ecto now spawns tasks only when the machine has more than one core, avoiding pointless task overhead on single-core hosts; ExUnit.CaptureLog also picked up a documentation rewrite that makes its concurrent-log test actually concurrent and demonstrates running a fun once and asserting against the captured log repeatedly.