diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6756c568f4..eb09e6aca3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,12 +26,12 @@ jobs: fail-fast: false matrix: include: - - otp_version: "28.0" + - otp_version: "28.1" deterministic: true - - otp_version: "28.0" + - otp_version: "28.1" erlc_opts: "warnings_as_errors" coverage: true - - otp_version: "28.0" + - otp_version: "28.1" otp_latest: true erlc_opts: "warnings_as_errors" - otp_version: "27.3" @@ -106,7 +106,7 @@ jobs: name: Windows Server 2019, Erlang/OTP ${{ matrix.otp_version }} strategy: matrix: - otp_version: ["26.2", "27.3", "28.0"] + otp_version: ["26.2", "27.3", "28.1"] runs-on: windows-2022 steps: - name: Configure Git diff --git a/lib/elixir/src/elixir.erl b/lib/elixir/src/elixir.erl index 2f7fa8bad4..352c529dc6 100644 --- a/lib/elixir/src/elixir.erl +++ b/lib/elixir/src/elixir.erl @@ -128,6 +128,16 @@ parse_otp_release() -> %% Whenever we change this check, we should also change Makefile. case string:to_integer(erlang:system_info(otp_release)) of {Num, _} when Num >= 26 -> + case Num == 28 andalso (code:ensure_loaded(re) == {module, re}) andalso not erlang:function_exported(re, import, 1) of + true -> + io:format(standard_error, + "warning! Erlang/OTP 28.0 detected.~n" + "Regexes will be re-compiled from source at runtime, which will cause degraded performance.~n" + "This can be fixed by using Erlang OTP 28.1+ or 27-.~n" + , []); + false -> + ok + end, Num; _ -> io:format(standard_error, "ERROR! Unsupported Erlang/OTP version, expected Erlang/OTP 26+~n", []),