Skip to content

chore: update toolchain and dependencies - #4

Merged
lostbean merged 1 commit into
mainfrom
chore/update-deps-and-toolchain
Jun 17, 2026
Merged

lostbean merged 1 commit into
mainfrom
chore/update-deps-and-toolchain

Conversation

@lostbean

@lostbean lostbean commented Jun 17, 2026 •

Copy link
Copy Markdown
Owner

Summary

Modernizes the dev toolchain and dependencies so the library builds cleanly on the latest compiler.

  • Toolchain: Nix dev shell bumped from Elixir 1.19 → Elixir 1.20.1 (OTP 28). mix.exs elixir: requirement raised to ~> 1.20. Flake inputs refreshed (nix flake update).
  • Dependencies: All Hex deps updated to latest compatible versions via mix deps.update --all. Notable bumps: req 0.5.15→0.5.18, plug 1.18.1→1.19.2, finch 0.20→0.22, mint 1.7.1→1.9.0, ex_doc 0.39→0.40, credo 1.7.13→1.7.19. No breaking majors needed to be held back — the only major bump (texture 0.1→1.0) is a transitive dev/test-only dep of req_llm and is exercised by the passing suite. idna newly pulled in transitively by jsv.

Compiler warnings (Elixir 1.20)

The library code compiles with zero warnings under --warnings-as-errors. The only new feedback came from the test suite, now fixed:

  • Replaced deprecated Regex.regex?/1 with is_struct(term, Regex).
  • Routed deliberately-invalid arguments in negative tests (Presets.get!/1, Escape.escape/1) through variables so the new type checker doesn't flag the intentional contract violations being tested.

Verification (all inside the Nix flake, Elixir 1.20.1 / OTP 28)

  • mix compile --warnings-as-errors --force — clean
  • mix format --check-formatted — clean
  • mix credo --strict — no issues
  • mix test — 514 passed, 7 excluded (the 7 are :req_llm-tagged, excluded by default since they need API keys / cost money; the default run is network-independent)
  • nix flake check — passes

Bump the Nix dev toolchain from Elixir 1.19 to Elixir 1.20 (OTP 28) and
raise the `mix.exs` requirement to `~> 1.20`. Refresh flake inputs and
update all Hex dependencies to their latest compatible versions.

Fix new Elixir 1.20 compiler feedback in the test suite:
- Replace deprecated `Regex.regex?/1` with `is_struct(term, Regex)`.
- Route deliberately-invalid arguments in negative tests through
  variables so the new type checker does not flag the intentional
  contract violations.

All checks pass under Elixir 1.20.1: zero-warning compile
(`--warnings-as-errors`), `mix format --check-formatted`,
`mix credo --strict`, and the full test suite (514 passed, 7 LLM
tests excluded by default as they require API keys).
@lostbean
lostbean merged commit 5765a77 into main Jun 17, 2026
1 check passed
@lostbean
lostbean deleted the chore/update-deps-and-toolchain branch July 27, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant