$ the-wire · showcase
Recursive types get readable names, Ecto errors get relative paths
By RepoJournal · Filed · About Elixir & Phoenix · Composed from the cited sources · methodology
Elixir's type printer now names recursive types instead of expanding them, and Ecto stores query expression files relative to the current directory so worktrees and reused builds stop reporting the wrong checkout.
Recursive type pretty printing elixir-lang/elixir
The type printer displays recursive types through named definitions such as `rec(x, nil or {integer(), x})`, covering tuples, maps, lists, functions, and dynamic types while keeping `and`, `or`, and `not` expressions intact without re-expanding recursive fields. Reading a type error on a self-referential structure no longer means chasing an unfolding expansion.
Store query expression files relative to the current directory elixir-ecto/ecto
QueryExpr, BooleanExpr, JoinExpr, and FromExpr captured the caller's absolute `file` at compile time for `Ecto.QueryError` messages, so a copy of a project reusing its `_build` (git worktrees for parallel coding agents, copy-on-write clones, restored CI caches) reported the original checkout's files. The new `Ecto.Query.Builder.file/1` stores the file relative to the current directory, matching...
Evaluate the subject of to_existing_atom/2 once elixir-lang/elixir
When the allowed list passed to `String.to_existing_atom/2` or `List.to_existing_atom/2` is a literal, the call compiles into a case expression; the translated first argument was spliced into both the case subject and the fallback call to `__to_existing_atom__/2`, so any non-variable argument was evaluated twice when no atom matched and the error could report a value the case never saw. The sub...
Track which guards may fail elixir-lang/elixir
José Valim landed guard analysis that tracks which guards may fail, closing two open issues against the compiler's guard handling. The commit message is a single line, so treat this as groundwork rather than a documented behavior change.
Improve checks in `return_compare` and `mismatched_ordered_comparison` elixir-lang/elixir
Lukasz Samson tightened the checks in `return_compare` and `mismatched_ordered_comparison` and dropped the unused `number_type?/1`. Elsewhere it was a quiet day: a test-suite warning removed, a Dependabot bump of eslint, eslint-plugin-jest, and jsdom in Phoenix's dev tooling.