Erlang OTP-27.1 Released

OTP 27.1

Erlang/OTP 27.1 is the first maintenance patch package for OTP 27, with mostly bug fixes as well as improvements.

Highlights

  • The zip module has been updated with support for:

    • zip64 archives - Archives larger than 4GB or with more than 2^32 entries.
    • extended timestamps - Higher resolution and in UTC.
    • UID/GID - Save and extract the original UID/GID.
    • Fixes so that permission mode attributes are correctly read and set for
      files in archives.
    • zip:list_dir/2 now also returns directories, not only files. (You can disable this behaviour by using the option skip_directories).
  • All releases now have .zip versions of the Windows installer that can be used to install Erlang/OTP on Windows when you do not have administrator priviliges. You can download it from Downloads - Erlang/OTP or from Releases Ā· erlang/otp Ā· GitHub.

    Various bugs in the original implementation have also been fixed, such as:

    • Correctly encoding and decoding the DOS timestamps for entries within an archive
      (that is the non-extended timestamp).
    • Fixed DOS timestamps to be set to localtime instead of UTC (use extended
      timestamps for UTC timestamps).
    • Used the unix file attributes read from disk when creating archives instead
      of setting everything to 644.

Potential incompatibilities:

  • Progress reports for a dynamically started supervisor will now be logged at
    debug level.

For details about bugfixes and potential incompatibilities see
the Erlang 27.1 README

The Erlang/OTP source can also be found at GitHub on the official Erlang repository,

Download links for this and previous versions are found here

11 Likes

@proxyles we switched to 27.1 yesterday. No issue so far.

1 Like

A breaking change that affects us. Errors with OTP 27.1 Ā· Issue #38 Ā· xavier/xlsx_reader Ā· GitHub

Seems like either I or the tool that created those zip files have interpreted the zip64 standard incorrectly. As unix zip seems to be happy enough to extract these, Iā€™m leaning towards me. When running zipinfo on test.xlsx it prints a lot of ā€œThere are an extra XYZ bytes preceding this file.ā€, which Iā€™m guessing is the parts that are breaking things.

Thanks for the report, Iā€™ll create a PR with a fix as soon as Iā€™ve figured out what zip should do in these type of scenarios.

Here is a PR with a fix: stdlib: Fix unzip to not crash on unused data in zip64 extra header by garazdawi Ā· Pull Request #8836 Ā· erlang/otp Ā· GitHub please test it to make sure that it works.

Do you know how that xlsx file was created?

The library author replied in the GH issue: Errors with OTP 27.1 Ā· Issue #38 Ā· xavier/xlsx_reader Ā· GitHub

It must be a mix of Apple Numbers, Google Sheets and perhaps Excel if the fixture was provided by a 3rd party. I canā€™t tell for sure.

@garazdawi Is there a way I can test it easily with asdf? Like install erlang by commit hash and then run the xslx_reader tests?

Found it. asdf install erlang ref:82313219eb08b962b05b9a614b57713e434f9f66

Or put this in .tool-versions

elixir 1.17.3-otp-27
erlang ref:82313219eb08b962b05b9a614b57713e434f9f66

Ran the tests: all good!

Hm, Iā€™ve been having issues where previously working self-signed certificates seem to no longer be accepted, where I instead get an error:

=NOTICE REPORT==== 23-Sep-2024::09:46:04.205008 ===
TLS client: In state wait_cert at ssl_handshake.erl:2175 generated CLIENT ALERT: Fatal - Bad Certificate
 - selfsigned_peer

Whatā€™s interesting is that if I try to instrument my very_fun/3 function (which does certificate pinning), it does not even output anything, leading me to think thereā€™s some weird issue with the new decoding and usage of verify_fun/4 bailing out before I can tell it itā€™s actually okay?

This happens both in server and client mode.

Does this solve anything for you?

Iā€™ll try to get a custom build going and report back.

That wasnā€™t very challenging to do with Kerl, I can confirm I managed to make it work without issues using Ingelaā€™s patch.

(It also appears that regardless of my tests, I wouldnā€™t get output out of the very_fun functions, which is a bit funny but I imagine my user output got redirected at a place I didnā€™t expect in my release.)

Iā€™ll be awaiting 27.1.1 then :slight_smile:

3 Likes