Skip to content

Initial proposal to update to otp-29/Elixir 1.20 - #218

Open
thiagoesteves wants to merge 1 commit into
mainfrom
thiagoesteves/update-to-otp-29
Open

Initial proposal to update to otp-29/Elixir 1.20#218
thiagoesteves wants to merge 1 commit into
mainfrom
thiagoesteves/update-to-otp-29

Conversation

@thiagoesteves

Copy link
Copy Markdown
Owner

No description provided.

@thiagoesteves thiagoesteves self-assigned this May 18, 2026
@thiagoesteves thiagoesteves moved this to In Progress in DeployEx Project May 18, 2026
@thiagoesteves
thiagoesteves force-pushed the thiagoesteves/update-to-otp-29 branch 2 times, most recently from c1e7047 to ad4c48c Compare June 17, 2026 17:33
@thiagoesteves thiagoesteves changed the title Initial proposal to update to otp-29 Initial proposal to update to otp-29/Elixir 1.20 Jun 17, 2026
@thiagoesteves
thiagoesteves force-pushed the thiagoesteves/update-to-otp-29 branch 6 times, most recently from e3a062d to 41b92e0 Compare June 17, 2026 17:54
@thiagoesteves
thiagoesteves marked this pull request as ready for review June 17, 2026 18:58
@thiagoesteves thiagoesteves added the enhancement New feature or request label Jul 7, 2026
@thiagoesteves
thiagoesteves force-pushed the thiagoesteves/update-to-otp-29 branch 2 times, most recently from c58cab6 to 14bad77 Compare July 14, 2026 14:11
Rebased onto main at 0.9.13. The conflicting hunks were resolved in favour
of main wherever main had moved on (mix.lock, the multi_select markup, the
catalog test that main already switched to async: false, the FinchStream
callback typedoc), keeping only the OTP-29 intent from this branch.

Workflow fixes:
- The release workflows were left in a hybrid state by the matrix rebase
  (#246): matrix still [27, 28] plus an appended old-style job referencing
  env vars that no longer exist. The matrix is now [28, 29] and the
  orphaned jobs are removed.
- The hot upgrade workflow offers 28/29 and defaults to 29.

Toolchain:
- .tool-versions and devops/releases/otp-29 pin erlang 29.0.3 and
  elixir 1.20.2-otp-29; the OTP-28 release keeps main's 28.5.0.4.
- Version moved to 0.10.0-rc1.

Library updates (no vulnerabilities reported by mix deps.audit):
- phoenix_live_view 1.0.18 -> 1.2.9 (requirement relaxed to ~> 1.2)
- gettext 0.26.2 -> 1.0.2 (already using the Gettext.Backend pattern)
- briefly 0.4.1 -> 0.5.1
- lazy_html added as a test dependency, required by the LiveView 1.2 test
  helpers. Its elixir_make ~> 0.9 requirement is satisfied by the 0.10.0
  already locked, so no downgrade is needed any more.
- Every other dependency stays on the version main locked.

Source and test updates:
- Unused `require Logger` removed where the new compiler flags it
- mode_test option assertions made tolerant to attribute order and boolean
  attribute serialization, since lazy_html renders differently
- The two remaining Foundation catalog test modules are no longer async:
  they share the var_path tree and raced with each other's cleanup

Docs consistency:
- Changelog 0.10.0 section: baseline is 0.9.13, the OTP-27 drop sits under
  backwards incompatible changes, host binary labels fixed (OTP 28/29)
- README version table: OTP-29 column added, existing rows marked "-", and
  a 0.10.0 🔜 row with 28.5.0.4 / 29.0.3

Validated under Erlang 29.0.3 / Elixir 1.20.2-otp-29 after the rebase:
807 tests pass, coverage above threshold in all apps, compile
--warnings-as-errors, format check, deps.unlock --check-unused,
credo --strict, mix docs --failed, deps.audit, sobelow and dialyzer
(0 errors) all clean.

Risk assessment:
- Impact: completes the OTP-29 rollover so PR CI runs on OTP 29 and
  releases build for OTP 28/29.
- Blast radius: release workflows, dependency versions (the LiveView
  1.0 -> 1.2 jump is the largest), test suite, docs.
- Regression risk: medium. LiveView 1.2 changes DOM test serialization;
  the full suite plus every static check passes, but the tag-triggered
  release workflows still need a real run, so a non-main rc tag is
  recommended before the 0.10.0 release.
- Rollback: revert this commit; the branch remains on the previous
  library set via mix.lock history.
@thiagoesteves
thiagoesteves force-pushed the thiagoesteves/update-to-otp-29 branch from 14bad77 to e35993b Compare August 14, 2026 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant