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