Erlang/OTP 27.1

This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).

docker run -it erlang:27.1
Patch Package:           OTP 27.1
Git Tag:                 OTP-27.1
Date:                    2024-09-18
Trouble Report Id:       OTP-17848, OTP-19032, OTP-19097, OTP-19098,
                         OTP-19101, OTP-19102, OTP-19103, OTP-19104,
                         OTP-19105, OTP-19110, OTP-19112, OTP-19113,
                         OTP-19114, OTP-19119, OTP-19122, OTP-19126,
                         OTP-19128, OTP-19129, OTP-19130, OTP-19132,
                         OTP-19133, OTP-19134, OTP-19136, OTP-19138,
                         OTP-19139, OTP-19143, OTP-19145, OTP-19146,
                         OTP-19148, OTP-19153, OTP-19154, OTP-19157,
                         OTP-19163, OTP-19164, OTP-19166, OTP-19167,
                         OTP-19168, OTP-19169, OTP-19170, OTP-19171,
                         OTP-19172, OTP-19173, OTP-19175, OTP-19176,
                         OTP-19178, OTP-19179, OTP-19181, OTP-19182,
                         OTP-19183, OTP-19186, OTP-19187, OTP-19188,
                         OTP-19189, OTP-19190, OTP-19191, OTP-19192,
                         OTP-19193, OTP-19197, OTP-19199, OTP-19200,
                         OTP-19201, OTP-19202, OTP-19203, OTP-19205,
                         OTP-19206, OTP-19208, OTP-19209, OTP-19210,
                         OTP-19211, OTP-19212, OTP-19214, OTP-19215,
                         OTP-19216, OTP-19217, OTP-19218, OTP-19219,
                         OTP-19220, OTP-19222
Seq num:                 #8399, ERIERL-1102, ERIERL-1104, ERIERL-870,
                         GH-4362, GH-7621, GH-7746, GH-8378, GH-8454,
                         GH-8472, GH-8477, GH-8486, GH-8498, GH-8561,
                         GH-8562, GH-8568, GH-8604, GH-8605, GH-8613,
                         GH-8630, GH-8656, GH-8657, GH-8661, GH-8690,
                         GH-8715, GH-8738, GH-8748, GH-8779, GH-8785,
                         OTP-18671, OTP-18835, OTP-19101, OTP-19175,
                         PR-7226, PR-7419, PR-7919, PR-8261, PR-8310,
                         PR-8472, PR-8478, PR-8499, PR-8503, PR-8515,
                         PR-8516, PR-8518, PR-8521, PR-8528, PR-8539,
                         PR-8541, PR-8543, PR-8555, PR-8560, PR-8575,
                         PR-8578, PR-8583, PR-8584, PR-8596, PR-8611,
                         PR-8623, PR-8627, PR-8636, PR-8638, PR-8655,
                         PR-8672, PR-8683, PR-8686, PR-8690, PR-8692,
                         PR-8702, PR-8703, PR-8707, PR-8709, PR-8731,
                         PR-8739, PR-8740, PR-8741, PR-8742, PR-8751,
                         PR-8757, PR-8765, PR-8774, PR-8777, PR-8781
System:                  OTP
Release:                 27
Application:             asn1-5.3.1, common_test-1.27.1,
                         compiler-8.5.2, crypto-5.5.1, dialyzer-5.2.1,
                         diameter-2.4.1, edoc-1.3.2, erts-15.1,
                         ftp-1.2.3, inets-9.3, kernel-10.1, odbc-2.15,
                         public_key-1.16.2, runtime_tools-2.1.1,
                         snmp-5.17, ssh-5.2.2, ssl-11.2.2, stdlib-6.1,
                         syntax_tools-3.2.1, tftp-1.2.1, tools-4.1,
                         wx-2.4.3, xmerl-2.1
Predecessor:             OTP 27.0.1

Check out the git tag OTP-27.1, and build a full OTP system including
documentation. Apply one or more applications from this build as patches to your
installation using the 'otp_patch_apply' tool. For information on install
requirements, see descriptions for each application version below.

# 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`).

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

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

  Own Id: OTP-19214
  Application(s): erts, stdlib
  Related Id(s): PR-8765

# POTENTIAL INCOMPATIBILITIES

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

  Own Id: OTP-19202
  Application(s): stdlib
  Related Id(s): GH-8715, PR-8261, PR-8741

# OTP-27.1

## Fixed Bugs and Malfunctions

- The description of the pre-defined macros has been clarified. In particular,
  it is now made clear that the release returned by `?OTP_RELEASE` is the
  release under which the compiler is run.

  Own Id: OTP-19103
  Related Id(s): GH-8486, PR-8518

- `ex_doc` now runs using an explicit escript instance instead of `/usr/bin/env`
  so that package tools such as `nix` can build the documentation.

  Own Id: OTP-19145
  Related Id(s): GH-8378, PR-8596

- The `otp_patch_apply` script, used for patching OTP applications, has been
  fixed. It was not possible (and still is not possible) to apply applications
  from the OTP 27.0.1 patch package onto an OTP 27.0 installation.

  Own Id: OTP-19182

- `./otp_build download_ex_doc` was using `sha1sum` and `sha256sum` which work
  on various Unix systems. macOS does not have these applications installed by
  default, so we added a new dependency to the build process, `shasum`, which is
  installed by default on macOS and allows us to check the integrity of
  `ex_doc`.

  Own Id: OTP-19193
  Related Id(s): GH-8656, PR-8707

- On documentation web pages using Mermaid JS scripts for figures, the scripts
  are now loaded asynchronously so that the rest of pages can be shown while the
  scripts are still downloading.

  Own Id: OTP-19197
  Related Id(s): PR-8731

## Improvements and New Features

- The obsolete documentation for OAM Principles has been removed.

  Own Id: OTP-19110
  Related Id(s): PR-8528

# asn1-5.3.1

The asn1-5.3.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed a cosmetic but harmless issue with the ASN.1 compiler passing on the
  `undec_rest` option to the Erlang compiler.

  Own Id: OTP-19218
  Related Id(s): GH-8779, PR-8781

> #### Full runtime dependencies of asn1-5.3.1
>
> erts-14.0, kernel-9.0, stdlib-5.0

# common_test-1.27.1

The common_test-1.27.1 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Groups with empty list specifying groups and test cases no longer crash
  execution.

  Own Id: OTP-19032
  Related Id(s): GH-4362, PR-7919

- The Common_Test documentation and type specs have been polished.

  Own Id: OTP-19148
  Related Id(s): PR-8516

- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other
  programs that are included in Erlang/OTP.

  Own Id: OTP-19201
  Related Id(s): PR-8740

> #### Full runtime dependencies of common_test-1.27.1
>
> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0,
> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0,
> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8

# compiler-8.5.2

The compiler-8.5.2 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed a crash in an optimization pass relating to appending binaries.

  Own Id: OTP-19168
  Related Id(s): GH-8630

- Fixed a bug in the compiler's alias analysis pass that could make it emit
  unsafe code.

  Own Id: OTP-19178
  Related Id(s): PR-8686

> #### Full runtime dependencies of compiler-8.5.2
>
> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0

# crypto-5.5.1

The crypto-5.5.1 application can be applied independently of other applications
on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- crypto built with `--enable-fips` will now accept an OpenSSL 3 lib without
  fips provider as long as fips mode is not enabled.

  Own Id: OTP-19212
  Related Id(s): GH-8562

## Improvements and New Features

- Added a warning in the documentation to avoid calling crypto:start/0 as it
  does not work for FIPS mode. Use `application:start(crypto)` instead.

  Own Id: OTP-19143

- Deprecation of RSA encryption functions has been reverted, as there still
  exists legitimate use cases with other padding modes than PKCS-1.

  While use PCKS-1 padding with some versions of cryptolib could be considered
  secure, we still recommend using other algorithms that are less sensitive to
  oracle attacks.

  Own Id: OTP-19163

- Compiler warnings for some removed functions have been corrected to point out
  the correct replacement functions.

  Own Id: OTP-19186
  Related Id(s): PR-8709

> #### Full runtime dependencies of crypto-5.5.1
>
> erts-9.0, kernel-5.3, stdlib-3.9

# dialyzer-5.2.1

The dialyzer-5.2.1 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other
  programs that are included in Erlang/OTP.

  Own Id: OTP-19201
  Related Id(s): PR-8740

> #### Full runtime dependencies of dialyzer-5.2.1
>
> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0

# diameter-2.4.1

The diameter-2.4.1 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Function specs for the main API module has been updated.

  Own Id: OTP-19126
  Related Id(s): #8399

- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other
  programs that are included in Erlang/OTP.

  Own Id: OTP-19201
  Related Id(s): PR-8740

- diameter:stop_service/1 has been made more synchronous.

  Own Id: OTP-19206
  Related Id(s): ERIERL-1102

> #### Full runtime dependencies of diameter-2.4.1
>
> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0

# edoc-1.3.2

The edoc-1.3.2 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Broken links in release notes have been mended.

  Own Id: OTP-19139
  Related Id(s): PR-8584

> #### Full runtime dependencies of edoc-1.3.2
>
> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7

# erts-15.1

The erts-15.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The `erl -man example` has been corrected to not consider values set in
  `ERL_ZFLAGS` and stop parsing arguments when a `--` is encountered.

  Own Id: OTP-19098
  Related Id(s): GH-8477, PR-8478

- Compiler warnings for Windows I/O back-end have been silenced.

  Own Id: OTP-19113

- Bugs related to `return_to` trace have been fixed. It did not work for more
  than once trace session and it did sometimes not trigger for exceptions.

  Own Id: OTP-19122

- Potential deadlocks while writing a crash dump have been eliminated.

  Own Id: OTP-19133
  Related Id(s): GH-8498, PR-8521

- When loading a damaged or too old BEAM file, the runtime system could crash.

  Own Id: OTP-19153
  Related Id(s): PR-8623

- A scheduler thread could get stuck when deleting a memory allocator carrier
  when adjacent carriers were deleted and/or inserted simultaneously by other
  schedulers. This in turn could cause the other schedulers to get stuck as
  well.

  Own Id: OTP-19154
  Related Id(s): GH-8613, PR-8627

- Statistics for number of carriers in a shared pool after calling
  `instrument:allocations` or `instrument:carriers` are now correct. Also, a
  potential bug in carrier block scanning was eliminated.

  Own Id: OTP-19166
  Related Id(s): PR-8636

- A race in the kTLS flavour of SSL distribution has been fixed so that
  `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS
  encryption to be activated too late when some encrypted data had already been
  read into the `inet_drv.c` buffer as unencrypted.

  Own Id: OTP-19175
  Related Id(s): GH-8561, PR-8690

- Fixed an emulator crash relating to compressed ETS tables.

  Own Id: OTP-19176
  Related Id(s): PR-8683

- A function (encode_sockaddr) was called with superfluous argument, on Windows,
  in the net nif.

  Own Id: OTP-19181

- Fixed a crash that could happen on reallocation failure.

  Own Id: OTP-19192

- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other
  programs that are included in Erlang/OTP.

  Own Id: OTP-19201
  Related Id(s): PR-8740

- A previous correction in the Erlang/OTP 27.0.1 emergency patch had the
  unfortunate side effect of sometimes causing an unnecessary fullsweep (major)
  garbage collection instead of a generation (minor) garbage collection. This
  has been corrected.

  Own Id: OTP-19209
  Related Id(s): PR-8539, PR-8751

- Fixed trace matchspec functions `trace` and `enable_trace` to use the session
  tracer when enabling trace flags on untraced processes.

  Own Id: OTP-19211
  Related Id(s): GH-8657

- Fixed a typo in the type spec for erlang:garbage_collection_defaults/0.

  Own Id: OTP-19215
  Related Id(s): PR-8757

- Corrected socket:ioctl for genaddr (SIOCGENADDR).

  Own Id: OTP-19216

- The support for Transparent Huge Pages has been disabled on non-amd64 Linux
  systems.

  Own Id: OTP-19219
  Related Id(s): PR-8702

- Fixed a race condition on Windows when upgrading from `-noshell` to a shell
  that would cause Erlang to crash with the error:

      {'GetOverlappedResult',
        'The I/O operation has been aborted because of either a thread exit or an application request.'}.

  Own Id: OTP-19220
  Related Id(s): GH-7621, PR-8774

## Improvements and New Features

- Added functions `getservbyname` and `getservbyport` to the `net` module.

  Own Id: OTP-19101
  Related Id(s): OTP-18835

- Introduced enet | esock variants of `inet` functions, either when called
  with sockets, with explicit inet_backend config or with the e inet_backend
  kernel config option.

  Own Id: OTP-19132
  Related Id(s): OTP-19101

- Optimize process and port creation when such tracing is not enabled by any
  trace session.

  Own Id: OTP-19167
  Related Id(s): PR-8655

- Compiler warnings for some removed functions have been corrected to point out
  the correct replacement functions.

  Own Id: OTP-19186
  Related Id(s): PR-8709

- A boolean option `read_ahead` has been implemented for `gen_tcp`, default
  `true`, to facilitate not reading past (caching data) the end of a packet. In
  particular, for kTLS, caching data could read in data that was supposed to be
  decrypted by the platform's network stack, before crypto parameters could be
  activated.

  Own Id: OTP-19199
  Related Id(s): GH-8561, GH-8690, GH-8785, OTP-19175

- 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`).

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

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

  Own Id: OTP-19214
  Related Id(s): PR-8765

  *** HIGHLIGHT ***

> #### Full runtime dependencies of erts-15.1
>
> kernel-9.0, sasl-3.3, stdlib-4.1

# ftp-1.2.3

The ftp-1.2.3 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Eliminated a race condition that sometimes resulted in ftp:recv_bin/2
  returning `ok` instead of `{ok, Data}`.

  Own Id: OTP-19119
  Related Id(s): GH-8454, PR-8543

> #### Full runtime dependencies of ftp-1.2.3
>
> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5

# inets-9.3

The inets-9.3 application can be applied independently of other applications on
a full OTP 27 installation.

## Improvements and New Features

- The documentation for the `httpd` module has been improved, along with
  correction of headings and types.

  Own Id: OTP-19171
  Related Id(s): PR-8578

- Userinfo is now properly percent-decoded before usage in headers.

  Own Id: OTP-19172
  Related Id(s): PR-8575

> #### Full runtime dependencies of inets-9.3
>
> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14,
> ssl-9.0, stdlib-5.0, stdlib-6.0

# kernel-10.1

Note! The kernel-10.1 application _cannot_ be applied independently of other
applications on an arbitrary OTP 27 installation.

       On a full OTP 27 installation, also the following runtime
       dependency has to be satisfied:
       -- erts-15.1 (first satisfied in OTP 27.1)

## Fixed Bugs and Malfunctions

- A faulty assertion was corrected in the `prim_tty` module. This assertion
  could trigger when invalid UTF-8 was read from stdin just as the mode was
  changed from unicode to latin1.

  Own Id: OTP-19097
  Related Id(s): PR-8503

- Opening a `disk_log` file and combining `head_func` with `rotate` options did
  not work.

  Own Id: OTP-19104
  Related Id(s): ERIERL-870

- Fixed an error info printout for erlang:is_process_alive/1 on non-local
  pids.

  Own Id: OTP-19134
  Related Id(s): PR-8560

- A race in the kTLS flavour of SSL distribution has been fixed so that
  `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS
  encryption to be activated too late when some encrypted data had already been
  read into the `inet_drv.c` buffer as unencrypted.

  Own Id: OTP-19175
  Related Id(s): GH-8561, PR-8690

- Fixed a deadlock when an application crashes during startup and log messages
  were sent to standard out. Logger would fail to print the messages to standard
  out and instead print them to standard error.

  Own Id: OTP-19205

- The `-proto_dist` init parameter will no longer be ignored when specified
  multiple times. It will now log a warning and use the first specified value.

  Own Id: OTP-19208
  Related Id(s): PR-8672

- Corrected socket:ioctl for genaddr (SIOCGENADDR).

  Own Id: OTP-19216

## Improvements and New Features

- Added functions `getservbyname` and `getservbyport` to the `net` module.

  Own Id: OTP-19101
  Related Id(s): OTP-18835

- Introduced enet | esock variants of `inet` functions, either when called
  with sockets, with explicit inet_backend config or with the e inet_backend
  kernel config option.

  Own Id: OTP-19132
  Related Id(s): OTP-19101

- The function socket:i/0 now uses the `net` module (instead of the `inet`
  module) for service translation.

  Own Id: OTP-19138
  Related Id(s): OTP-19101

- A boolean option `read_ahead` has been implemented for `gen_tcp`, default
  `true`, to facilitate not reading past (caching data) the end of a packet. In
  particular, for kTLS, caching data could read in data that was supposed to be
  decrypted by the platform's network stack, before crypto parameters could be
  activated.

  Own Id: OTP-19199
  Related Id(s): GH-8561, GH-8690, GH-8785, OTP-19175

> #### Full runtime dependencies of kernel-10.1
>
> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0

# odbc-2.15

The odbc-2.15 application can be applied independently of other applications on
a full OTP 27 installation.

## Improvements and New Features

- Figures in the documentation have been improved.

  Own Id: OTP-19130
  Related Id(s): PR-7226

> #### Full runtime dependencies of odbc-2.15
>
> erts-6.0, kernel-3.0, stdlib-2.0

# public_key-1.16.2

The public_key-1.16.2 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- For completeness handle rsa_pss implicit default value, although this will
  probably not be commonly used as it provides very weak security.

  Own Id: OTP-19179

- The `public_key:cacerts_load()` function could in some error cases return
  `undefined` instead of `{error, Reason}`.

  Own Id: OTP-19183
  Related Id(s): GH-8604

- Added support for DragonFly.

  Own Id: OTP-19191
  Related Id(s): PR-8703

## Improvements and New Features

- Deprecation of RSA encryption functions has been reverted, as there still
  exists legitimate use cases with other padding modes than PKCS-1.

  While use PCKS-1 padding with some versions of cryptolib could be considered
  secure, we still recommend using other algorithms that are less sensitive to
  oracle attacks.

  Own Id: OTP-19163

- It is now possible to use a verification fun of arity 4, giving the user fun
  access to both encoded and decoded versions of the certificate. This is
  desirable as a workaround for encoding errors preventing re-encoding from
  being reliable. This also saves some work load if the encoded version is
  needed.

  Note that calling public_key:pkix_path_validation/3 with only decoded certs
  is not recommended, due to the decoding workarounds, although it will work as
  long as the workarounds are not needed.

  If the decoded version is needed before thecall to `public_key` it is
  recommend to use the combined_cert- type to avoid double decoding. Note that
  the path validation algorithm itself always needs both the encoded and decoded
  versions of the certs.

  The ssl implementation will now benefit from using this function instead of
  emulating the verify_fun/4.

  Own Id: OTP-19169

> #### Full runtime dependencies of public_key-1.16.2
>
> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5

# runtime_tools-2.1.1

The runtime_tools-2.1.1 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Fixed a bug where dbg sessions on remote nodes were terminated prematurely.

  Own Id: OTP-19188
  Related Id(s): PR-8692

> #### Full runtime dependencies of runtime_tools-2.1.1
>
> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0

# snmp-5.17

The snmp-5.17 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other
  programs that are included in Erlang/OTP.

  Own Id: OTP-19201
  Related Id(s): PR-8740

## Improvements and New Features

- Figures in the documentation have been improved.

  Own Id: OTP-19130
  Related Id(s): PR-7226

> #### Full runtime dependencies of snmp-5.17
>
> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
> stdlib-5.0

# ssh-5.2.2

The ssh-5.2.2 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The SSh daemon started with a TCP port number argument will now re-try
  obtaining a listen socket before returning an error to the user.

  Own Id: OTP-19170
  Related Id(s): GH-7746

- Robustness has been improved by monitoring the connection handler process
  before casting the socket control notification.

  Own Id: OTP-19173
  Related Id(s): PR-8310

> #### Full runtime dependencies of ssh-5.2.2
>
> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1,
> stdlib-5.0, stdlib-6.0

# ssl-11.2.2

Note! The ssl-11.2.2 application _cannot_ be applied independently of other
applications on an arbitrary OTP 27 installation.

       On a full OTP 27 installation, also the following runtime
       dependency has to be satisfied:
       -- public_key-1.16.2 (first satisfied in OTP 27.1)

## Fixed Bugs and Malfunctions

- A race in the kTLS flavour of SSL distribution has been fixed so that
  `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS
  encryption to be activated too late when some encrypted data had already been
  read into the `inet_drv.c` buffer as unencrypted.

  Own Id: OTP-19175
  Related Id(s): GH-8561, PR-8690

## Improvements and New Features

- All TLS-1.3 terminations are now graceful (previous TLS version terminations
  already were).

  Own Id: OTP-17848

- It is now possible to use a verification fun of arity 4, giving the user fun
  access to both encoded and decoded versions of the certificate. This is
  desirable as a workaround for encoding errors preventing re-encoding from
  being reliable. This also saves some work load if the encoded version is
  needed.

  Note that calling public_key:pkix_path_validation/3 with only decoded certs
  is not recommended, due to the decoding workarounds, although it will work as
  long as the workarounds are not needed.

  If the decoded version is needed before thecall to `public_key` it is
  recommend to use the combined_cert- type to avoid double decoding. Note that
  the path validation algorithm itself always needs both the encoded and decoded
  versions of the certs.

  The ssl implementation will now benefit from using this function instead of
  emulating the verify_fun/4.

  Own Id: OTP-19169

- Compiler warnings for some removed functions have been corrected to point out
  the correct replacement functions.

  Own Id: OTP-19186
  Related Id(s): PR-8709

- Include more information in logging of SNI (Server Name Indication) mismatch
  error.

  Own Id: OTP-19187

> #### Full runtime dependencies of ssl-11.2.2
>
> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.2,
> runtime_tools-1.15.1, stdlib-6.0

# stdlib-6.1

The stdlib-6.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The help printout for incorrect io:format/0 strings now handles the `k`
  modifier correctly.

  Own Id: OTP-19146
  Related Id(s): GH-8568, PR-8611

- Fixed a bug that caused the shell completion to crash when keyword and tuple
  appeared on the same line.

  Own Id: OTP-19157
  Related Id(s): PR-8638

- Due to PR-7419/OTP-18671, the cached internal value of the `callback_mode`
  started leaking out to `logger` reports, which could cause `logger` handlers
  to crash. This has now been fixed to show the value that was set, as before
  caching.

  Own Id: OTP-19164
  Related Id(s): GH-8605, PR-7419, OTP-18671

- Fixed an emulator crash relating to compressed ETS tables.

  Own Id: OTP-19176
  Related Id(s): PR-8683

- The error description for maps:update/3 will no longer insist that the third
  argument is not a map when a key could not be found

  Own Id: OTP-19189

- Multiple issues have been corrected in the markdown parser that creates
  documentation for the shell.

  The parser was incorrectly parsing formatted markdown (either bold or italics)
  within parenthesis. This used to not be shown correctly in the shell
  documentation `(_Option._)`, which was displayed verbatim. This fix makes
  `Option.` to appear in italics.

  The markdown parser is also used in the creation of other documentation
  formats, so this was a bug that affected other generated documentation
  formats.

  Own Id: OTP-19200
  Related Id(s): GH-8738, PR-8739

- Fixed category for some codepoint ranges in `unicode_util`.

  Own Id: OTP-19210
  Related Id(s): GH-8748

- Fixed `argparse` to print sub-commands help when available.

  Own Id: OTP-19222
  Related Id(s): PR-8777

## Improvements and New Features

- Class annotation to HTML from fenced blocks have been added.

  Own Id: OTP-19105
  Related Id(s): PR-8499

- Added JSON formatting functions for indented output.

  Own Id: OTP-19112

- Improved illegal pattern error for accidental map associations.

  Own Id: OTP-19128
  Related Id(s): PR-8555

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

  Own Id: OTP-19202
  Related Id(s): GH-8715, PR-8261, PR-8741

  *** POTENTIAL INCOMPATIBILITY ***

- 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`).

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

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

  Own Id: OTP-19214
  Related Id(s): PR-8765

  *** HIGHLIGHT ***

> #### Full runtime dependencies of stdlib-6.1
>
> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0

# syntax_tools-3.2.1

The syntax_tools-3.2.1 application can be applied independently of other
applications on a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- The documentation for `syntax_tools` has been polished after the migration to
  the new documentation system.

  Own Id: OTP-19102
  Related Id(s): PR-8515

> #### Full runtime dependencies of syntax_tools-3.2.1
>
> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0

# tftp-1.2.1

The tftp-1.2.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Improvements and New Features

- The legacy dependency to `error_logger` has been removed. `logger` is now
  used.

  Own Id: OTP-19114

> #### Full runtime dependencies of tftp-1.2.1
>
> erts-6.0, kernel-6.0, stdlib-5.0

# tools-4.1

The tools-4.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- `m:tprof` no longer crashes when using pause/restart/continue when profiling
  all modules.

  Own Id: OTP-19136
  Related Id(s): GH-8472, PR-8472, PR-8541

- On systems supporting native coverage, calls to `cover` could hang or crash
  if cover-compiled module had been reloaded from outside `cover`. This has been
  corrected so that `cover` now recovers from the error and and sends a report
  to the logger about the failure to retrieve coverage information.

  Own Id: OTP-19203
  Related Id(s): GH-8661, PR-8742

## Improvements and New Features

- Figures in the documentation have been improved.

  Own Id: OTP-19130
  Related Id(s): PR-7226

> #### Full runtime dependencies of tools-4.1
>
> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0

# wx-2.4.3

The wx-2.4.3 application can be applied independently of other applications on a
full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Documentation has been improved.

  Own Id: OTP-19190

> #### Full runtime dependencies of wx-2.4.3
>
> erts-12.0, kernel-8.0, stdlib-5.0

# xmerl-2.1

The xmerl-2.1 application can be applied independently of other applications on
a full OTP 27 installation.

## Fixed Bugs and Malfunctions

- Corrected export functions from internal structure to XML so xmlText items of
  type cdata are handled correctly. They were just exported as normal text
  instead of output in a CDATA section.

  Own Id: OTP-19217
  Related Id(s): ERIERL-1104

## Improvements and New Features

- The type spec for xmerl_sax_parser:file/2 has been corrected to indicate
  that it can return an `{error, _}` tuple.

  Own Id: OTP-19129
  Related Id(s): PR-8583

> #### Full runtime dependencies of xmerl-2.1
>
> erts-6.0, kernel-3.0, stdlib-2.5

# Thanks to

Aaron Renner, Anders Ågren Thuné, Andrea Leopardi, Anupama Singh, Cesar Guzman,
Dániel Szoboszlay, Douglas Vought, Frej Drejhammar, jakob svenningsson, Jan
Uhlig, Janusz Woźniak, Johannes Christ, Jonatan Kłosko, José Valim, Kian-Meng
Ang, lexprfuncall, Loïc Hoguin, Louis Pilfold, Marcelino Alberdi Pereira, Maria
Scott, Michael Neumann, Michał Muskała, nixxquality, Peter Lemenkov, Roger
Lipscombe, Siim Liiser, Svilen Ivanov, Urban Koistinen, Wojtek Mach