aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci.yaml25
-rw-r--r--.github/workflows/unix-ci.yaml32
-rw-r--r--early-plugins.mk141
-rw-r--r--release-notes/OTP-22.3.4.27.README.txt145
-rw-r--r--release-notes/OTP-23.3.4.20.README.txt78
-rw-r--r--release-notes/OTP-24.3.4.15.README.txt218
-rw-r--r--release-notes/OTP-24.3.4.16.README.txt99
-rw-r--r--release-notes/OTP-24.3.4.17.README.txt231
-rw-r--r--release-notes/OTP-25.3.2.10.README.txt155
-rw-r--r--release-notes/OTP-25.3.2.11.README.txt365
-rw-r--r--release-notes/OTP-25.3.2.12.README.txt104
-rw-r--r--release-notes/OTP-25.3.2.13.README.txt127
-rw-r--r--release-notes/OTP-25.3.2.14.README.txt120
-rw-r--r--release-notes/OTP-25.3.2.15.README.txt291
-rw-r--r--release-notes/OTP-25.3.2.16.README.txt240
-rw-r--r--release-notes/OTP-25.3.2.17.README.txt145
-rw-r--r--release-notes/OTP-25.3.2.18.README.txt98
-rw-r--r--release-notes/OTP-25.3.2.19.README.txt135
-rw-r--r--release-notes/OTP-25.3.2.20.README.txt51
-rw-r--r--release-notes/OTP-25.3.2.8.README.txt348
-rw-r--r--release-notes/OTP-25.3.2.9.README.txt108
-rw-r--r--release-notes/OTP-26.2.1.README.txt101
-rw-r--r--release-notes/OTP-26.2.2.README.txt178
-rw-r--r--release-notes/OTP-26.2.3.README.txt436
-rw-r--r--release-notes/OTP-26.2.4.README.txt409
-rw-r--r--release-notes/OTP-26.2.5.1.README.txt221
-rw-r--r--release-notes/OTP-26.2.5.10.README.txt183
-rw-r--r--release-notes/OTP-26.2.5.11.README.txt77
-rw-r--r--release-notes/OTP-26.2.5.2.README.txt125
-rw-r--r--release-notes/OTP-26.2.5.3.README.txt251
-rw-r--r--release-notes/OTP-26.2.5.4.README.txt467
-rw-r--r--release-notes/OTP-26.2.5.5.README.txt143
-rw-r--r--release-notes/OTP-26.2.5.6.README.txt261
-rw-r--r--release-notes/OTP-26.2.5.7.README.txt187
-rw-r--r--release-notes/OTP-26.2.5.8.README.txt84
-rw-r--r--release-notes/OTP-26.2.5.9.README.txt69
-rw-r--r--release-notes/OTP-26.2.5.README.txt209
-rw-r--r--release-notes/OTP-26.2.README.txt1134
-rw-r--r--release-notes/OTP-27.0-rc1.README.txt2307
-rw-r--r--release-notes/OTP-27.0-rc2.README.txt3075
-rw-r--r--release-notes/OTP-27.0-rc3.README.txt2836
-rw-r--r--release-notes/OTP-27.0.1.README.txt259
-rw-r--r--release-notes/OTP-27.0.README.txt3092
-rw-r--r--release-notes/OTP-27.1.1.README.txt154
-rw-r--r--release-notes/OTP-27.1.2.README.txt238
-rw-r--r--release-notes/OTP-27.1.3.README.txt234
-rw-r--r--release-notes/OTP-27.1.README.txt1038
-rw-r--r--release-notes/OTP-27.2.1.README.txt155
-rw-r--r--release-notes/OTP-27.2.2.README.txt123
-rw-r--r--release-notes/OTP-27.2.3.README.txt65
-rw-r--r--release-notes/OTP-27.2.4.README.txt49
-rw-r--r--release-notes/OTP-27.2.README.txt766
-rw-r--r--release-notes/OTP-27.3.1.README.txt218
-rw-r--r--release-notes/OTP-27.3.2.README.txt196
-rw-r--r--release-notes/OTP-27.3.3.README.txt130
-rw-r--r--release-notes/OTP-27.3.README.txt346
-rw-r--r--release-notes/OTP-28.0-rc1.README.txt2440
-rw-r--r--release-notes/OTP-28.0-rc2.README.txt2831
-rw-r--r--release-notes/OTP-28.0-rc3.README.txt3332
-rw-r--r--release-notes/OTP-28.0-rc4.README.txt3652
60 files changed, 35251 insertions, 76 deletions
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index ec841e6..4421ba8 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -20,10 +20,10 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Checkout ci.erlang.mk repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
with:
repository: ninenines/ci.erlang.mk
path: deps/ci.erlang.mk
@@ -42,7 +42,7 @@ jobs:
run: |
{
echo "latest<<EOF"
- make ci-list AUTO_CI_MASTER=daily | grep -v rc | grep -v master | tail -n1
+ make ci-list | grep -v rc | grep -v master | tail -n1
echo EOF
} >> "$GITHUB_OUTPUT"
@@ -68,16 +68,16 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Checkout ci.erlang.mk repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
with:
repository: ninenines/ci.erlang.mk
path: deps/ci.erlang.mk
- name: Setup MSYS2
- uses: msys2/[email protected]
+ uses: msys2/setup-msys2@v2
with:
msystem: mingw64
update: true
@@ -104,19 +104,22 @@ jobs:
matrix:
erlang: ${{ fromJson(needs.prepare-windows.outputs.erlang) }}
runs-on: windows-latest
+ env:
+ COWBOY_QUICER: 0
+ GUN_QUICER: 0
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Install Erlang/OTP
- uses: erlef/[email protected]
+ uses: erlef/setup-beam@v1
with:
otp-version: '${{ matrix.erlang }}'
version-type: loose
- name: Setup MSYS2
- uses: msys2/[email protected]
+ uses: msys2/setup-msys2@v2
with:
msystem: mingw64
update: true
@@ -129,10 +132,10 @@ jobs:
run: PATH=$INSTALL_DIR_FOR_OTP/bin:$PATH make -k ci-windows-${{ matrix.erlang }}
- name: Upload logs
- uses: actions/[email protected]
+ uses: actions/upload-artifact@v4
if: always()
with:
name: Common Test logs (${{ matrix.erlang }} ${{ runner.os }})
path: |
logs/
- !logs/**/log_private
+# !logs/**/log_private
diff --git a/.github/workflows/unix-ci.yaml b/.github/workflows/unix-ci.yaml
index 5e2de38..77c6dfd 100644
--- a/.github/workflows/unix-ci.yaml
+++ b/.github/workflows/unix-ci.yaml
@@ -22,6 +22,8 @@ on:
env:
CI_ERLANG_MK: 1
AUTO_CI_MASTER: weekly
+ COWBOY_QUICER: ${{ vars.COWBOY_QUICER || 0 }}
+ GUN_QUICER: ${{ vars.GUN_QUICER || 0 }}
jobs:
@@ -31,19 +33,18 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Manage CI cache
id: cache
- uses: actions/[email protected]
+ uses: actions/cache@v4
with:
path: |
~/erlang/
- ~/.kerl/
key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
- name: Run ci-prepare
- if: steps.cache.outputs.cache-hit != 'true' || inputs.erlang == 'master'
+ if: steps.cache.outputs.cache-hit != 'true'
run: make -k ci-prepare CI_OTP=${{ inputs.erlang }}
test:
@@ -53,31 +54,33 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Restore CI cache
- uses: actions/cache/[email protected]
+ uses: actions/cache/restore@v4
with:
path: |
~/erlang/
- ~/.kerl/
key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.erlang }}
- - name: Install required software
+ - name: Run tests (macOS)
if: runner.os == 'macOS'
- run: brew install coreutils
+ run: >
+ brew install coreutils make &&
+ gmake -k ci-${{ inputs.erlang }}
- - name: Run tests
+ - name: Run tests (Unix)
+ if: runner.os != 'macOS'
run: make -k ci-${{ inputs.erlang }}
- name: Upload logs
- uses: actions/[email protected]
+ uses: actions/upload-artifact@v4
if: always()
with:
name: Common Test logs (${{ inputs.erlang }} ${{ runner.os }})
path: |
logs/
- !logs/**/log_private
+# !logs/**/log_private
dialyze:
name: Run Dialyzer using ${{ inputs.erlang }}
@@ -88,14 +91,13 @@ jobs:
steps:
- name: Checkout repository
- uses: actions/[email protected]
+ uses: actions/checkout@v4
- name: Restore CI cache
- uses: actions/cache/[email protected]
+ uses: actions/cache/restore@v4
with:
path: |
~/erlang/
- ~/.kerl/
key: ${{ runner.os }}-${{ runner.arch }}-Erlang-${{ inputs.latest }}
- name: Run Dialyzer
diff --git a/early-plugins.mk b/early-plugins.mk
index 1c0405e..e15c9ef 100644
--- a/early-plugins.mk
+++ b/early-plugins.mk
@@ -16,42 +16,55 @@ OTP-18 := OTP-18.0.3 OTP-18.1.5 OTP-18.2.4 OTP-18.3.4.11
OTP-19 := OTP-19.0.7 OTP-19.1.6 OTP-19.2.3 OTP-19.3.6.13
OTP-20 := OTP-20.0.5 OTP-20.1.7 OTP-20.2.4 OTP-20.3.8.26
OTP-21 := OTP-21.0.9 OTP-21.1.4 OTP-21.2.7 OTP-21.3.8.24
-OTP-22 := OTP-22.0.7 OTP-22.1.8 OTP-22.2.8 OTP-22.3.4.26
-OTP-23 := OTP-23.0.4 OTP-23.1.5 OTP-23.2.7.3 OTP-23.3.4.19
-OTP-24 := OTP-24.0.6 OTP-24.1.7 OTP-24.2.2 OTP-24.3.4.14
-OTP-25 := OTP-25.0.4 OTP-25.1.2.1 OTP-25.2.3 OTP-25.3.2.7
-OTP-26 := OTP-26.0.2 OTP-26.1.2
-
-OTP-18+ := $(OTP-18) $(OTP-19) $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-19+ := $(OTP-19) $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-20+ := $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-21+ := $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-22+ := $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-23+ := $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-24+ := $(OTP-24) $(OTP-25) $(OTP-26)
-OTP-25+ := $(OTP-25) $(OTP-26)
-OTP-26+ := $(OTP-26)
+OTP-22 := OTP-22.0.7 OTP-22.1.8 OTP-22.2.8 OTP-22.3.4.27
+OTP-23 := OTP-23.0.4 OTP-23.1.5 OTP-23.2.7.3 OTP-23.3.4.20
+OTP-24 := OTP-24.0.6 OTP-24.1.7 OTP-24.2.2 OTP-24.3.4.17
+OTP-25 := OTP-25.0.4 OTP-25.1.2.1 OTP-25.2.3 OTP-25.3.2.20
+OTP-26 := OTP-26.0.2 OTP-26.1.2 OTP-26.2.5.11
+OTP-27 := OTP-27.0.1 OTP-27.1.3 OTP-27.2.4 OTP-27.3.3
+OTP-28 := OTP-28.0-rc4
+
+OTP-18+ := $(OTP-18) $(OTP-19) $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-19+ := $(OTP-19) $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-20+ := $(OTP-20) $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-21+ := $(OTP-21) $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-22+ := $(OTP-22) $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-23+ := $(OTP-23) $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-24+ := $(OTP-24) $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-25+ := $(OTP-25) $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-26+ := $(OTP-26) $(OTP-27) $(OTP-28)
+OTP-27+ := $(OTP-27) $(OTP-28)
+OTP-28+ := $(OTP-28)
OTP-LATEST-18+ := $(lastword $(OTP-18)) $(lastword $(OTP-19)) \
$(lastword $(OTP-20)) $(lastword $(OTP-21)) $(lastword $(OTP-22)) \
$(lastword $(OTP-23)) $(lastword $(OTP-24)) $(lastword $(OTP-25)) \
- $(lastword $(OTP-26))
+ $(lastword $(OTP-26)) $(lastword $(OTP-27)) $(lastword $(OTP-28))
OTP-LATEST-19+ := $(lastword $(OTP-19)) $(lastword $(OTP-20)) \
$(lastword $(OTP-21)) $(lastword $(OTP-22)) $(lastword $(OTP-23)) \
- $(lastword $(OTP-24)) $(lastword $(OTP-25)) $(lastword $(OTP-26))
+ $(lastword $(OTP-24)) $(lastword $(OTP-25)) $(lastword $(OTP-26)) \
+ $(lastword $(OTP-27)) $(lastword $(OTP-28))
OTP-LATEST-20+ := $(lastword $(OTP-20)) $(lastword $(OTP-21)) \
$(lastword $(OTP-22)) $(lastword $(OTP-23)) $(lastword $(OTP-24)) \
- $(lastword $(OTP-25)) $(lastword $(OTP-26))
+ $(lastword $(OTP-25)) $(lastword $(OTP-26)) $(lastword $(OTP-27)) \
+ $(lastword $(OTP-28))
OTP-LATEST-21+ := $(lastword $(OTP-21)) $(lastword $(OTP-22)) \
$(lastword $(OTP-23)) $(lastword $(OTP-24)) $(lastword $(OTP-25)) \
- $(lastword $(OTP-26))
+ $(lastword $(OTP-26)) $(lastword $(OTP-27)) $(lastword $(OTP-28))
OTP-LATEST-22+ := $(lastword $(OTP-22)) $(lastword $(OTP-23)) \
- $(lastword $(OTP-24)) $(lastword $(OTP-25)) $(lastword $(OTP-26))
+ $(lastword $(OTP-24)) $(lastword $(OTP-25)) $(lastword $(OTP-26)) \
+ $(lastword $(OTP-27)) $(lastword $(OTP-28))
OTP-LATEST-23+ := $(lastword $(OTP-23)) $(lastword $(OTP-24)) \
- $(lastword $(OTP-25)) $(lastword $(OTP-26))
-OTP-LATEST-24+ := $(lastword $(OTP-24)) $(lastword $(OTP-25)) $(lastword $(OTP-26))
-OTP-LATEST-25+ := $(lastword $(OTP-25)) $(lastword $(OTP-26))
-OTP-LATEST-26+ := $(lastword $(OTP-26))
+ $(lastword $(OTP-25)) $(lastword $(OTP-26)) $(lastword $(OTP-27)) \
+ $(lastword $(OTP-28))
+OTP-LATEST-24+ := $(lastword $(OTP-24)) $(lastword $(OTP-25)) \
+ $(lastword $(OTP-26)) $(lastword $(OTP-27)) $(lastword $(OTP-28))
+OTP-LATEST-25+ := $(lastword $(OTP-25)) $(lastword $(OTP-26)) \
+ $(lastword $(OTP-27)) $(lastword $(OTP-28))
+OTP-LATEST-26+ := $(lastword $(OTP-26)) $(lastword $(OTP-27)) \
+ $(lastword $(OTP-28))
+OTP-LATEST-27+ := $(lastword $(OTP-27)) $(lastword $(OTP-28))
+OTP-LATEST-28+ := $(lastword $(OTP-28))
# We exclude release candidates here because they are not
# the latest release, they are the *next* one.
@@ -94,28 +107,32 @@ OTP-22-DROPPED := OTP-22.0-rc1 OTP-22.0-rc2 OTP-22.0-rc3 OTP-22.0 \
OTP-22.3.4.4 OTP-22.3.4.5 OTP-22.3.4.8 OTP-22.3.4.9 OTP-22.3.4.10 \
OTP-22.3.4.11 OTP-22.3.4.12 OTP-22.3.4.13 OTP-22.3.4.15 OTP-22.3.4.17 \
OTP-22.3.4.18 OTP-22.3.4.19 OTP-22.3.4.20 OTP-22.3.4.21 OTP-22.3.4.22 \
- OTP-22.3.4.23 OTP-22.3.4.24 OTP-22.3.4.25
+ OTP-22.3.4.23 OTP-22.3.4.24 OTP-22.3.4.25 OTP-22.3.4.26
OTP-23-DROPPED := OTP-23.0-rc1 OTP-23.0-rc2 OTP-23.0-rc3 OTP-23.0 OTP-23.0.1 \
OTP-23.0.2 OTP-23.0.3 OTP-23.1 OTP-23.1.1 OTP-23.1.2 OTP-23.1.3 OTP-23.1.4 \
OTP-23.2 OTP-23.2.1 OTP-23.2.3 OTP-23.2.4 OTP-23.3.1 OTP-23.3.2 OTP-23.2.7.2 \
OTP-23.3.3 OTP-23.3.4 OTP-23.3.4.1 OTP-23.3.4.5 OTP-23.3.4.6 OTP-23.3.4.7 \
OTP-23.3.4.8 OTP-23.3.4.9 OTP-23.3.4.10 OTP-23.3.4.11 OTP-23.3.4.12 \
- OTP-23.3.4.13 OTP-23.3.4.14 OTP-23.3.4.15 OTP-23.3.4.16 OTP-23.3.4.17 OTP-23.3.4.18
+ OTP-23.3.4.13 OTP-23.3.4.14 OTP-23.3.4.15 OTP-23.3.4.16 OTP-23.3.4.17 OTP-23.3.4.18 OTP-23.3.4.19
OTP-24-DROPPED := OTP-24.0-rc2 OTP-24.0-rc3 OTP-24.0 OTP-24.0.1 OTP-24.0.5 \
OTP-24.1 OTP-24.1.1 OTP-24.1.2 OTP-24.1.3 OTP-24.1.4 OTP-24.1.5 OTP-24.1.6 \
OTP-24.2 OTP-24.2.1 OTP-24.3 OTP-24.3.1 OTP-24.3.2 OTP-24.3.3 OTP-24.3.4 \
OTP-24.3.4.1 OTP-24.3.4.2 OTP-24.3.4.3 OTP-24.3.4.4 OTP-24.3.4.5 OTP-24.3.4.6 \
OTP-24.3.4.7 OTP-24.3.4.8 OTP-24.3.4.9 OTP-24.3.4.10 OTP-24.3.4.11 OTP-24.3.4.12 \
- OTP-24.3.4.13
+ OTP-24.3.4.13 OTP-24.3.4.14 OTP-24.3.4.15 OTP-24.3.4.16
OTP-25-DROPPED := OTP-25.0-rc1 OTP-25.0-rc2 OTP-25.0-rc3 OTP-25.0 \
OTP-25.0.1 OTP-25.0.2 OTP-25.0.3 OTP-25.1 OTP-25.1.1 OTP-25.1.2 OTP-25.2 \
OTP-25.2.1 OTP-25.2.2 OTP-25.3 OTP-25.3.1 OTP-25.3.2 OTP-25.3.2.1 OTP-25.3.2.2 \
- OTP-25.3.2.3 OTP-25.3.2.4 OTP-25.3.2.5 OTP-25.3.2.6
+ OTP-25.3.2.3 OTP-25.3.2.4 OTP-25.3.2.5 OTP-25.3.2.6 OTP-25.3.2.7 OTP-25.3.2.8 OTP-25.3.2.9 OTP-25.3.2.10 OTP-25.3.2.11 OTP-25.3.2.12 OTP-25.3.2.13 OTP-25.3.2.14 OTP-25.3.2.15 OTP-25.3.2.16 OTP-25.3.2.17 OTP-25.3.2.18 OTP-25.3.2.19
OTP-26-DROPPED := OTP-26.0-rc3 \
- OTP-26.0 OTP-26.0.1 OTP-26.1 OTP-26.1.1
+ OTP-26.0 OTP-26.0.1 OTP-26.1 OTP-26.1.1 OTP-26.2 OTP-26.2.1 OTP-26.2.2 OTP-26.2.3 OTP-26.2.4 OTP-26.2.5 OTP-26.2.5.1 OTP-26.2.5.2 OTP-26.2.5.3 OTP-26.2.5.4 OTP-26.2.5.5 OTP-26.2.5.6 OTP-26.2.5.7 OTP-26.2.5.8 OTP-26.2.5.9 OTP-26.2.5.10
+OTP-27-DROPPED := OTP-27.0-rc1 OTP-27.0-rc2 \
+ OTP-27.1.2 OTP-27.2 OTP-27.2.1 OTP-27.2.2 OTP-27.2.3 OTP-27.3 OTP-27.3.1 OTP-27.3.2
+OTP-28-DROPPED := OTP-28.0-rc1 OTP-28.0-rc2 OTP-28.0-rc3
OTP-DROPPED := $(OTP-18-DROPPED) $(OTP-19-DROPPED) $(OTP-20-DROPPED) \
- $(OTP-21-DROPPED) $(OTP-22-DROPPED) $(OTP-23-DROPPED) $(OTP-24-DROPPED)
+ $(OTP-21-DROPPED) $(OTP-22-DROPPED) $(OTP-23-DROPPED) $(OTP-24-DROPPED) \
+ $(OTP-25-DROPPED) $(OTP-26-DROPPED) $(OTP-27-DROPPED) $(OTP-28-DROPPED)
# Configure Erlang.mk's CI plugin.
@@ -141,7 +158,10 @@ endif
endif
ifdef AUTO_CI_MASTER_MINS
-ci:: $(KERL)
+ci::
+ $(verbose) $(MAKE) --no-print-directory ci-auto-master
+
+ci-auto-master: $(KERL)
ifneq ($(wildcard $(KERL_INSTALL_DIR)/master),)
$(verbose) if find $(KERL_INSTALL_DIR)/master/activate \
-mmin +$(AUTO_CI_MASTER_MINS) | grep -q master; then \
@@ -189,44 +209,60 @@ WINDOWS-OTP-22 := 22.0 22.1 22.2 22.3
WINDOWS-OTP-23 := 23.0 23.1 23.2 23.3
WINDOWS-OTP-24 := 24.0 24.1 24.2 24.3
WINDOWS-OTP-25 := 25.0 25.1 25.2 25.3
-WINDOWS-OTP-26 := 26.0 26.1
+WINDOWS-OTP-26 := 26.0 26.1 26.2
+WINDOWS-OTP-27 := 27.0 27.1 27.2
+WINDOWS-OTP-28 :=
WINDOWS-OTP-18+ := $(WINDOWS-OTP-18) $(WINDOWS-OTP-19) $(WINDOWS-OTP-20) $(WINDOWS-OTP-21) \
- $(WINDOWS-OTP-22) $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
+ $(WINDOWS-OTP-22) $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) \
+ $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
WINDOWS-OTP-19+ := $(WINDOWS-OTP-19) $(WINDOWS-OTP-20) $(WINDOWS-OTP-21) $(WINDOWS-OTP-22) \
- $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
+ $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) \
+ $(WINDOWS-OTP-28)
WINDOWS-OTP-20+ := $(WINDOWS-OTP-20) $(WINDOWS-OTP-21) $(WINDOWS-OTP-22) $(WINDOWS-OTP-23) \
- $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
+ $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
WINDOWS-OTP-21+ := $(WINDOWS-OTP-21) $(WINDOWS-OTP-22) $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) \
- $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
+ $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
WINDOWS-OTP-22+ := $(WINDOWS-OTP-22) $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) \
- $(WINDOWS-OTP-26)
-WINDOWS-OTP-23+ := $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
-WINDOWS-OTP-24+ := $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
-WINDOWS-OTP-25+ := $(WINDOWS-OTP-25) $(WINDOWS-OTP-26)
-WINDOWS-OTP-26+ := $(WINDOWS-OTP-26)
+ $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
+WINDOWS-OTP-23+ := $(WINDOWS-OTP-23) $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) \
+ $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
+WINDOWS-OTP-24+ := $(WINDOWS-OTP-24) $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) \
+ $(WINDOWS-OTP-28)
+WINDOWS-OTP-25+ := $(WINDOWS-OTP-25) $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
+WINDOWS-OTP-26+ := $(WINDOWS-OTP-26) $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
+WINDOWS-OTP-27+ := $(WINDOWS-OTP-27) $(WINDOWS-OTP-28)
+WINDOWS-OTP-28+ := $(WINDOWS-OTP-28)
WINDOWS-OTP-LATEST-18+ := $(lastword $(WINDOWS-OTP-18)) $(lastword $(WINDOWS-OTP-19)) \
$(lastword $(WINDOWS-OTP-20)) $(lastword $(WINDOWS-OTP-21)) $(lastword $(WINDOWS-OTP-22)) \
$(lastword $(WINDOWS-OTP-23)) $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) \
- $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-19+ := $(lastword $(WINDOWS-OTP-19)) $(lastword $(WINDOWS-OTP-20)) \
$(lastword $(WINDOWS-OTP-21)) $(lastword $(WINDOWS-OTP-22)) $(lastword $(WINDOWS-OTP-23)) \
- $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26)) \
+ $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-20+ := $(lastword $(WINDOWS-OTP-20)) $(lastword $(WINDOWS-OTP-21)) \
$(lastword $(WINDOWS-OTP-22)) $(lastword $(WINDOWS-OTP-23)) $(lastword $(WINDOWS-OTP-24)) \
- $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) \
+ $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-21+ := $(lastword $(WINDOWS-OTP-21)) $(lastword $(WINDOWS-OTP-22)) \
$(lastword $(WINDOWS-OTP-23)) $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) \
- $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-22+ := $(lastword $(WINDOWS-OTP-22)) $(lastword $(WINDOWS-OTP-23)) \
- $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26)) \
+ $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-23+ := $(lastword $(WINDOWS-OTP-23)) $(lastword $(WINDOWS-OTP-24)) \
- $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) \
+ $(lastword $(WINDOWS-OTP-28))
WINDOWS-OTP-LATEST-24+ := $(lastword $(WINDOWS-OTP-24)) $(lastword $(WINDOWS-OTP-25)) \
- $(lastword $(WINDOWS-OTP-26))
-WINDOWS-OTP-LATEST-25+ := $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26))
-WINDOWS-OTP-LATEST-26+ := $(lastword $(WINDOWS-OTP-26))
+ $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
+WINDOWS-OTP-LATEST-25+ := $(lastword $(WINDOWS-OTP-25)) $(lastword $(WINDOWS-OTP-26)) \
+ $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
+WINDOWS-OTP-LATEST-26+ := $(lastword $(WINDOWS-OTP-26)) $(lastword $(WINDOWS-OTP-27)) \
+ $(lastword $(WINDOWS-OTP-28))
+WINDOWS-OTP-LATEST-27+ := $(lastword $(WINDOWS-OTP-27)) $(lastword $(WINDOWS-OTP-28))
+WINDOWS-OTP-LATEST-28+ := $(lastword $(WINDOWS-OTP-28))
# @todo Add support for release candidates (we don't want them as the "latest").
WINDOWS-OTP-LATEST := $(lastword $(WINDOWS-OTP-18+))
@@ -275,6 +311,11 @@ WINDOWS-OTP-25.3-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-25.3/bin)
WINDOWS-OTP-26.0-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-26.0/bin)
WINDOWS-OTP-26.1-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-26.1/bin)
+WINDOWS-OTP-26.2-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-26.2/bin)
+
+WINDOWS-OTP-27.0-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-27.0/bin)
+WINDOWS-OTP-27.1-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-27.1/bin)
+WINDOWS-OTP-27.2-INSTALL-DIR := $(call msys2_path,$(PROGRAMFILES)/erl-27.2/bin)
# We have to duplicate this for it to work as
# it is not yet defined when we define this.
diff --git a/release-notes/OTP-22.3.4.27.README.txt b/release-notes/OTP-22.3.4.27.README.txt
new file mode 100644
index 0000000..3fc578b
--- /dev/null
+++ b/release-notes/OTP-22.3.4.27.README.txt
@@ -0,0 +1,145 @@
+Patch Package: OTP 22.3.4.27
+Git Tag: OTP-22.3.4.27
+Date: 2024-03-18
+Trouble Report Id: OTP-18169, OTP-18170, OTP-18175, OTP-18197,
+ OTP-18258, OTP-18897, OTP-19002
+Seq num: ERIERL-1041, GH-6165, GH-6309, PR-6134,
+ PR-6135, PR-6142, PR-6213, PR-6324
+System: OTP
+Release: 22
+Application: erts-10.7.2.19, ssh-4.9.1.5
+Predecessor: OTP 22.3.4.26
+
+ Check out the git tag OTP-22.3.4.27, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18897 Application(s): ssh
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH User's Guide.
+
+
+ ---------------------------------------------------------------------
+ --- erts-10.7.2.19 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-10.7.2.19 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 22
+ installation.
+
+ On a full OTP 22 installation, also the following runtime
+ dependency has to be satisfied:
+ -- kernel-6.5.2.5 (first satisfied in OTP 22.3.4.25)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18169 Application(s): erts
+ Related Id(s): PR-6134
+
+ A race could cause process_info(Pid, message_queue_len)
+ on other processes to return invalid results.
+
+
+ OTP-18170 Application(s): erts
+ Related Id(s): PR-6135
+
+ Fixed reduction counting for handling process system
+ tasks.
+
+
+ OTP-18175 Application(s): erts
+ Related Id(s): PR-6142
+
+ Priority elevation of terminating processes did not
+ work which could cause execution of such processes to
+ be delayed.
+
+
+ OTP-18197 Application(s): erts
+ Related Id(s): GH-6165, PR-6213
+
+ The erlang:monotonic_time/1, erlang:system_time/1,
+ erlang:time_offset/1, and os:system_time/1 BIFs
+ erroneously failed when passed the argument native.
+
+
+ OTP-18258 Application(s): erts
+ Related Id(s): GH-6309, PR-6324
+
+ Notifications about available distribution data sent to
+ distribution controller processes could be lost.
+ Distribution controller processes can be used when
+ implementing an alternative distribution carrier. The
+ default distribution over tcp was not effected and the
+ bug was also not present on x86/x86_64 platforms.
+
+
+ Full runtime dependencies of erts-10.7.2.19: kernel-6.5.2.5,
+ sasl-3.3, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.9.1.5 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssh-4.9.1.5 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 22 installation.
+
+ On a full OTP 22 installation, also the following runtime
+ dependency has to be satisfied:
+ -- crypto-4.6.4 (first satisfied in OTP 22.2.2)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18897 Application(s): ssh
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH User's Guide.
+
+
+ OTP-19002 Application(s): ssh
+ Related Id(s): ERIERL-1041
+
+ With this change, KEX strict terminal message is
+ emitted with debug verbosity.
+
+
+ Full runtime dependencies of ssh-4.9.1.5: crypto-4.6.4, erts-9.0,
+ kernel-5.3, public_key-1.6.1, stdlib-3.4.1
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-23.3.4.20.README.txt b/release-notes/OTP-23.3.4.20.README.txt
new file mode 100644
index 0000000..1a5d3e9
--- /dev/null
+++ b/release-notes/OTP-23.3.4.20.README.txt
@@ -0,0 +1,78 @@
+Patch Package: OTP 23.3.4.20
+Git Tag: OTP-23.3.4.20
+Date: 2024-03-18
+Trouble Report Id: OTP-18897, OTP-19002
+Seq num: ERIERL-1041
+System: OTP
+Release: 23
+Application: ssh-4.11.1.7
+Predecessor: OTP 23.3.4.19
+
+ Check out the git tag OTP-23.3.4.20, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18897 Application(s): ssh
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH User's Guide.
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.11.1.7 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.11.1.7 application can be applied independently of other
+ applications on a full OTP 23 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18897 Application(s): ssh
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH User's Guide.
+
+
+ OTP-19002 Application(s): ssh
+ Related Id(s): ERIERL-1041
+
+ With this change, KEX strict terminal message is
+ emitted with debug verbosity.
+
+
+ Full runtime dependencies of ssh-4.11.1.7: crypto-4.6.4, erts-9.0,
+ kernel-5.3, public_key-1.6.1, stdlib-3.4.1
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-24.3.4.15.README.txt b/release-notes/OTP-24.3.4.15.README.txt
new file mode 100644
index 0000000..8ef2b53
--- /dev/null
+++ b/release-notes/OTP-24.3.4.15.README.txt
@@ -0,0 +1,218 @@
+Patch Package: OTP 24.3.4.15
+Git Tag: OTP-24.3.4.15
+Date: 2023-12-18
+Trouble Report Id: OTP-18802, OTP-18830, OTP-18844, OTP-18850,
+ OTP-18869, OTP-18877, OTP-18885, OTP-18896,
+ OTP-18897, OTP-18899, OTP-18902
+Seq num: GH-7571, GH-7834, GH-7890
+System: OTP
+Release: 24
+Application: asn1-5.0.18.2, erl_interface-5.2.2.1,
+ erts-12.3.2.15, mnesia-4.20.4.4, ssh-4.13.2.4
+Predecessor: OTP 24.3.4.14
+
+ Check out the git tag OTP-24.3.4.15, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18897 Application(s): ssh
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ ---------------------------------------------------------------------
+ --- OTP-24.3.4.15 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18896 Application(s): otp
+
+ Updated copyright and license information.
+
+
+ ---------------------------------------------------------------------
+ --- asn1-5.0.18.2 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The asn1-5.0.18.2 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18844 Application(s): asn1
+
+ Fix benign warning from gcc 11 about mismatching call
+ to free().
+
+
+ Full runtime dependencies of asn1-5.0.18.2: erts-11.0, kernel-7.0,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- erl_interface-5.2.2.1 -------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erl_interface-5.2.2.1 application can be applied independently of
+ other applications on a full OTP 24 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ ---------------------------------------------------------------------
+ --- erts-12.3.2.15 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-12.3.2.15 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 24
+ installation.
+
+ On a full OTP 24 installation, also the following runtime
+ dependency has to be satisfied:
+ -- kernel-8.3 (first satisfied in OTP 24.3)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18802 Application(s): erts
+
+ Fix faulty debug assert when page size is larger than
+ 16kb, like on PowerPC. Did crash debug VM directly at
+ start.
+
+
+ OTP-18885 Application(s): erts
+ Related Id(s): GH-7834, GH-7890, PR-7915
+
+ On OTP 24 and OTP 25, incoming distributed messages
+ larger than 64 KiB sent using an alias leaked memory if
+ the alias had been removed prior to entering the node.
+ This issue was not present on OTP 26.
+
+ Incoming distributed messages larger than 64 KiB sent
+ using an alias which had been removed on the receiving
+ node could crash the node. This crash was quite
+ unlikely on OTP 24 and OTP 25, but very likely on OTP
+ 26.
+
+ 'DOWN' signals with exit reason larger than 64 KiB
+ directed towards a process on a node with a not
+ matching creation leaked memory on the receiving node.
+ Such signals should however be very rare.
+
+
+ OTP-18902 Application(s): erts
+
+ Removed unnecessary PCRE source tar-ball.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18830 Application(s): erts
+ Related Id(s): PR-7823
+
+ Removed unnecessary regexp library used when generating
+ yielding BIFs.
+
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ OTP-18899 Application(s): erts
+
+ Removed unused makewhatis script.
+
+
+ Full runtime dependencies of erts-12.3.2.15: kernel-8.3, sasl-3.3,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.20.4.4 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.20.4.4 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18850 Application(s): mnesia
+
+ mnesia:add_table_copy/3 no longer fails with reason
+ system_limit when the node is starting.
+
+
+ Full runtime dependencies of mnesia-4.20.4.4: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.13.2.4 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.13.2.4 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18869 Application(s): ssh
+ Related Id(s): GH-7571, PR-7849
+
+ With this change, connection handler does not execute
+ socket operations until it becomes socket owner.
+ Previously errors could occur if connection handler
+ tried to work with socket whose owner exited.
+
+
+ OTP-18897 Application(s): ssh
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ Full runtime dependencies of ssh-4.13.2.4: crypto-5.0, erts-9.0,
+ kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-24.3.4.16.README.txt b/release-notes/OTP-24.3.4.16.README.txt
new file mode 100644
index 0000000..17e43c7
--- /dev/null
+++ b/release-notes/OTP-24.3.4.16.README.txt
@@ -0,0 +1,99 @@
+Patch Package: OTP 24.3.4.16
+Git Tag: OTP-24.3.4.16
+Date: 2024-02-12
+Trouble Report Id: OTP-18911, OTP-18932, OTP-18964
+Seq num: ERIERL-1023
+System: OTP
+Release: 24
+Application: common_test-1.22.1.2, erts-12.3.2.16,
+ ssh-4.13.2.5
+Predecessor: OTP 24.3.4.15
+
+ Check out the git tag OTP-24.3.4.16, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.22.1.2 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.22.1.2 application can be applied independently of
+ other applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18932 Application(s): common_test
+
+ Fix how CT finds Erlang/OTP releases for compatability
+ testing. This functionality is only used to test
+ Erlang/OTP.
+
+
+ Full runtime dependencies of common_test-1.22.1.2: compiler-6.0,
+ crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0,
+ observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0,
+ stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8
+
+
+ ---------------------------------------------------------------------
+ --- erts-12.3.2.16 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-12.3.2.16 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 24
+ installation.
+
+ On a full OTP 24 installation, also the following runtime
+ dependency has to be satisfied:
+ -- kernel-8.3 (first satisfied in OTP 24.3)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18911 Application(s): erts
+ Related Id(s): ERIERL-1023, PR-7983
+
+ 32-bit runtime systems on most Unix like platforms
+ could crash if a BIF timer was set with a huge timeout
+ of more than 68 years into the future. In order for the
+ crash to occur, the huge timer (at a later time than
+ when it was set) had to become the nearest active timer
+ set on the specific scheduler on which it was set. This
+ could not happen on a system with only one scheduler
+ since there would always be shorter timers in the
+ system.
+
+ Setting a timer larger than 49 days on Windows could
+ under rare circumstances cause the timeout to be
+ delayed.
+
+
+ Full runtime dependencies of erts-12.3.2.16: kernel-8.3, sasl-3.3,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.13.2.5 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.13.2.5 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18964 Application(s): ssh
+
+ With this change, Curve25519 and Curve448 KEX methods
+ become most preferred (related to RFC8731).
+
+
+ Full runtime dependencies of ssh-4.13.2.5: crypto-5.0, erts-9.0,
+ kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-24.3.4.17.README.txt b/release-notes/OTP-24.3.4.17.README.txt
new file mode 100644
index 0000000..0beedff
--- /dev/null
+++ b/release-notes/OTP-24.3.4.17.README.txt
@@ -0,0 +1,231 @@
+Patch Package: OTP 24.3.4.17
+Git Tag: OTP-24.3.4.17
+Date: 2024-04-09
+Trouble Report Id: OTP-18960, OTP-18986, OTP-18996, OTP-19002,
+ OTP-19003, OTP-19006, OTP-19013, OTP-19015,
+ OTP-19019, OTP-19034, OTP-19036, OTP-19043,
+ OTP-19044, OTP-19048
+Seq num: ERIERL-1041, ERIERL-1043, ERIERL-682,
+ GH-7897, GH-8186, GH-8187, PR-8173, PR-8174,
+ PR-8189, PR-8220, PR-8342, PR-8343
+System: OTP
+Release: 24
+Application: common_test-1.22.1.3, compiler-8.1.1.6,
+ crypto-5.0.6.5, erts-12.3.2.17, ssh-4.13.2.6
+Predecessor: OTP 24.3.4.16
+
+ Check out the git tag OTP-24.3.4.17, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.22.1.3 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.22.1.3 application can be applied independently of
+ other applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18960 Application(s): common_test
+
+ With this change, the last column in common_test
+ testcase log file is modified to now show the total sum
+ of each time in the table rows, and Elapsed Time which
+ is a clock time spent to run above functions. The
+ Elapsed Time is the same time that was previously a
+ total.
+
+
+ Full runtime dependencies of common_test-1.22.1.3: compiler-6.0,
+ crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0,
+ observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0,
+ stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8
+
+
+ ---------------------------------------------------------------------
+ --- compiler-8.1.1.6 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.1.1.6 application can be applied independently of
+ other applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19003 Application(s): compiler
+ Related Id(s): GH-8187, PR-8189
+
+ In rare circumstances, an unsafe optimization could
+ cause the compiler to generate incorrect code for list
+ matching.
+
+
+ OTP-19019 Application(s): compiler
+
+ In rare circumstances, the compiler code generate
+ unsafe code for a bit syntax match.
+
+
+ Full runtime dependencies of compiler-8.1.1.6: crypto-3.6, erts-11.0,
+ kernel-7.0, stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.0.6.5 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.0.6.5 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18996 Application(s): crypto
+ Related Id(s): PR-8173, PR-8174
+
+ The function crypto:pbkdf2_hmac will no longer block
+ the main schedulers. If the iteration count or block
+ size parameters are such that the function is likely to
+ take a long time to execute, the function will be
+ scheduled to run on a dirty CPU scheduler.
+
+
+ Full runtime dependencies of crypto-5.0.6.5: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- erts-12.3.2.17 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-12.3.2.17 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 24
+ installation.
+
+ On a full OTP 24 installation, also the following runtime
+ dependency has to be satisfied:
+ -- kernel-8.3 (first satisfied in OTP 24.3)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19006 Application(s): erts
+
+ The code server could be hanging if a module with
+ on_load function was loaded at the same time as another
+ module was purged using erlang:purge_module directly.
+
+
+ OTP-19015 Application(s): erts
+ Related Id(s): ERIERL-682
+
+ Fix bug in re:run/3 where if an invalid UTF-8 subject
+ was given, re:run could get stuck in an infinite loop.
+ Bug was introduced in Erlang/OTP 22.1.
+
+
+ OTP-19034 Application(s): erts
+
+ Calling erlang:trace/3 with first argument one of
+ ports, processes, existing_ports, existing_processes,
+ existing or all, could cause emulator crash if a dirty
+ scheduler was executing a simultaneous trace action.
+
+
+ OTP-19036 Application(s): erts
+ Related Id(s): GH-8186
+
+ Fixed an integer overflow when the monotonic time unit
+ reported by the operating system was greater than 10
+ and lower than 100 microseconds.
+
+
+ OTP-19043 Application(s): erts
+ Related Id(s): PR-8342
+
+ When a traced process executing on a dirty scheduler
+ received an exit signal, the dirty scheduler could use
+ the wrong thread specific data which could lead to a
+ crash.
+
+
+ OTP-19048 Application(s): erts
+ Related Id(s): PR-8343
+
+ Fixed a more or less harmless bug that caused time
+ correction of Erlang monotonic time to become slightly
+ off on Windows platforms when QueryPerformanceCounter()
+ was used as OS monotonic time source.
+
+ erlang:system_info(os_monotonic_time_source) now also
+ returns information about used resolution which not
+ always corresponds to the resolution of the OS
+ monotonic time source.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19044 Application(s): erts
+ Related Id(s): ERIERL-1043, PR-8342
+
+ Checks for monotonicity of monotonic time have been
+ improved so that Erlang and OS monotonic time are
+ checked separately.
+
+ A new configure argument
+ --enable-ensure-os-monotonic-time has also been added.
+ It enables functionality ensuring the monotonicity of
+ monotonic timestamps delivered by the OS. When a
+ non-monotonic timestamp is detected, it will be
+ replaced by the last delivered monotonic timestamp
+ before being used by Erlang's time functionality. Note
+ that you do not want to enable this unless the OS
+ monotonic time source on the system fails to produce
+ monotonic timestamps. This since ensuring the
+ monotonicity of OS monotonic timestamps will hurt
+ scalability and performance of the system.
+
+
+ Full runtime dependencies of erts-12.3.2.17: kernel-8.3, sasl-3.3,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.13.2.6 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.13.2.6 application can be applied independently of other
+ applications on a full OTP 24 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18986 Application(s): ssh
+
+ With this change, more secure algorithms are preferred
+ by ssh and documentation is updated to reflect that.
+
+
+ OTP-19002 Application(s): ssh
+ Related Id(s): ERIERL-1041
+
+ With this change, KEX strict terminal message is
+ emitted with debug verbosity.
+
+
+ OTP-19013 Application(s): ssh
+ Related Id(s): GH-7897, PR-8220
+
+ With this change, owner and group file attributes
+ decoding is fixed and results with value of integer
+ type.
+
+
+ Full runtime dependencies of ssh-4.13.2.6: crypto-5.0, erts-9.0,
+ kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.10.README.txt b/release-notes/OTP-25.3.2.10.README.txt
new file mode 100644
index 0000000..2d8262b
--- /dev/null
+++ b/release-notes/OTP-25.3.2.10.README.txt
@@ -0,0 +1,155 @@
+Patch Package: OTP 25.3.2.10
+Git Tag: OTP-25.3.2.10
+Date: 2024-03-13
+Trouble Report Id: OTP-18971, OTP-18986, OTP-18996, OTP-19002,
+ OTP-19003, OTP-19006, OTP-19008, OTP-19015,
+ OTP-19019
+Seq num: ERIERL-1041, ERIERL-682, GH-8044, GH-8119,
+ GH-8187, PR-8173, PR-8174, PR-8189, PR-8201
+System: OTP
+Release: 25
+Application: compiler-8.2.6.4, crypto-5.1.4.2,
+ erts-13.2.2.7, ssh-4.15.3.3
+Predecessor: OTP 25.3.2.9
+
+ Check out the git tag OTP-25.3.2.10, 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.
+
+ ---------------------------------------------------------------------
+ --- compiler-8.2.6.4 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.2.6.4 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19003 Application(s): compiler
+ Related Id(s): GH-8187, PR-8189
+
+ In rare circumstances, an unsafe optimization could
+ cause the compiler to generate incorrect code for list
+ matching.
+
+
+ OTP-19019 Application(s): compiler
+
+ In rare circumstances, the compiler code generate
+ unsafe code for a bit syntax match.
+
+
+ Full runtime dependencies of compiler-8.2.6.4: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-4.0
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.1.4.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.1.4.2 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18996 Application(s): crypto
+ Related Id(s): PR-8173, PR-8174
+
+ The function crypto:pbkdf2_hmac will no longer block
+ the main schedulers. If the iteration count or block
+ size parameters are such that the function is likely to
+ take a long time to execute, the function will be
+ scheduled to run on a dirty CPU scheduler.
+
+
+ Full runtime dependencies of crypto-5.1.4.2: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.7 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.7 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18971 Application(s): erts
+ Related Id(s): GH-8044
+
+ Fix heap corruption bug that could cause runaway memory
+ consumption due to circular offheap list at process
+ exit. Other symptoms may also be possible. Bug exists
+ since OTP 25.0.
+
+
+ OTP-19006 Application(s): erts
+
+ The code server could be hanging if a module with
+ on_load function was loaded at the same time as another
+ module was purged using erlang:purge_module directly.
+
+
+ OTP-19008 Application(s): erts
+ Related Id(s): GH-8119, PR-8201
+
+ A process optimized for parallel signal delivery could
+ under some circumstances lose wakeup information. That
+ is, the processes was not woken up to take care of the
+ signal, so the signal would not be taken care of until
+ the process was woken by another signal. Only processes
+ configured with message_queue_data set to off_heap
+ utilize this optimization.
+
+
+ OTP-19015 Application(s): erts
+ Related Id(s): ERIERL-682
+
+ Fix bug in re:run/3 where if an invalid UTF-8 subject
+ was given, re:run could get stuck in an infinite loop.
+ Bug was introduced in Erlang/OTP 22.1.
+
+
+ Full runtime dependencies of erts-13.2.2.7: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.3 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18986 Application(s): ssh
+
+ With this change, more secure algorithms are preferred
+ by ssh and documentation is updated to reflect that.
+
+
+ OTP-19002 Application(s): ssh
+ Related Id(s): ERIERL-1041
+
+ With this change, KEX strict terminal message is
+ emitted with debug verbosity.
+
+
+ Full runtime dependencies of ssh-4.15.3.3: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.11.README.txt b/release-notes/OTP-25.3.2.11.README.txt
new file mode 100644
index 0000000..8a67776
--- /dev/null
+++ b/release-notes/OTP-25.3.2.11.README.txt
@@ -0,0 +1,365 @@
+Patch Package: OTP 25.3.2.11
+Git Tag: OTP-25.3.2.11
+Date: 2024-04-12
+Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013,
+ OTP-19014, OTP-19031, OTP-19034, OTP-19036,
+ OTP-19038, OTP-19040, OTP-19043, OTP-19044,
+ OTP-19048, OTP-19050, OTP-19058, OTP-19064
+Seq num: ERIERL-1043, ERIERL-1060, GH-7897, GH-7928,
+ GH-8120, GH-8186, GH-8268, GH-8271,
+ OTP-18990, PR-8220, PR-8275, PR-8277,
+ PR-8342, PR-8343
+System: OTP
+Release: 25
+Application: common_test-1.24.0.3, crypto-5.1.4.3,
+ debugger-5.3.1.3, diameter-2.2.7.1,
+ erts-13.2.2.8, inets-8.3.1.3, kernel-8.5.4.3,
+ observer-2.14.0.1, os_mon-2.8.2.1,
+ reltool-0.9.1.1, ssh-4.15.3.4, stdlib-4.3.1.4
+Predecessor: OTP 25.3.2.10
+
+ Check out the git tag OTP-25.3.2.11, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24.0.3 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.24.0.3 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18960 Application(s): common_test
+
+ With this change, the last column in common_test
+ testcase log file is modified to now show the total sum
+ of each time in the table rows, and Elapsed Time which
+ is a clock time spent to run above functions. The
+ Elapsed Time is the same time that was previously a
+ total.
+
+
+ Full runtime dependencies of common_test-1.24.0.3: 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
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.1.4.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.1.4.3 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19038 Application(s): crypto
+ Related Id(s): GH-8271, PR-8277
+
+ Fix building with --enable-fips with OpenSSL 3 on
+ MacOS.
+
+
+ Full runtime dependencies of crypto-5.1.4.3: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- debugger-5.3.1.3 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The debugger-5.3.1.3 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18958 Application(s): debugger
+ Related Id(s): GH-8120, PR-8275
+
+ Guards with nested record expression could wrongly
+ evaluate to false.
+
+
+ Full runtime dependencies of debugger-5.3.1.3: compiler-8.0,
+ erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- diameter-2.2.7.1 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.2.7.1 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19040 Application(s): diameter
+ Related Id(s): ERIERL-1060
+
+ Reduce the impact of calling service_info by not
+ counting the binaries (on the heap) info, This is done
+ by introducing an option, bins_info, which controls
+ this.
+
+
+ Full runtime dependencies of diameter-2.2.7.1: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-3.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.8 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.8 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18999 Application(s): erts
+ Related Id(s): GH-7928
+
+ Fixed CPU quota determination for cgroup version 2
+
+
+ OTP-19014 Application(s): erts
+
+ Fix faulty reduction counting in exiting process which
+ could cause it to do unnecessary yielding.
+
+
+ OTP-19034 Application(s): erts
+
+ Calling erlang:trace/3 with first argument one of
+ ports, processes, existing_ports, existing_processes,
+ existing or all, could cause emulator crash if a dirty
+ scheduler was executing a simultaneous trace action.
+
+
+ OTP-19036 Application(s): erts
+ Related Id(s): GH-8186
+
+ Fixed an integer overflow when the monotonic time unit
+ reported by the operating system was greater than 10
+ and lower than 100 microseconds.
+
+
+ OTP-19043 Application(s): erts
+ Related Id(s): PR-8342
+
+ When a traced process executing on a dirty scheduler
+ received an exit signal, the dirty scheduler could use
+ the wrong thread specific data which could lead to a
+ crash.
+
+
+ OTP-19048 Application(s): erts
+ Related Id(s): PR-8343
+
+ Fixed a more or less harmless bug that caused time
+ correction of Erlang monotonic time to become slightly
+ off on Windows platforms when QueryPerformanceCounter()
+ was used as OS monotonic time source.
+
+ erlang:system_info(os_monotonic_time_source) now also
+ returns information about used resolution which not
+ always corresponds to the resolution of the OS
+ monotonic time source.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19044 Application(s): erts
+ Related Id(s): ERIERL-1043, PR-8342
+
+ Checks for monotonicity of monotonic time have been
+ improved so that Erlang and OS monotonic time are
+ checked separately.
+
+ A new configure argument
+ --enable-ensure-os-monotonic-time has also been added.
+ It enables functionality ensuring the monotonicity of
+ monotonic timestamps delivered by the OS. When a
+ non-monotonic timestamp is detected, it will be
+ replaced by the last delivered monotonic timestamp
+ before being used by Erlang's time functionality. Note
+ that you do not want to enable this unless the OS
+ monotonic time source on the system fails to produce
+ monotonic timestamps. This since ensuring the
+ monotonicity of OS monotonic timestamps will hurt
+ scalability and performance of the system.
+
+
+ OTP-19058 Application(s): erts
+
+ For severe errors, when the `socket` module terminates
+ the Erlang VM, now an erl_crash.dump is produced, to
+ facilitate post mortem debugging.
+
+
+ Full runtime dependencies of erts-13.2.2.8: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-8.3.1.3 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-8.3.1.3 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19064 Application(s): inets, observer, os_mon, reltool
+
+ Fixed runtime dependencies.
+
+
+ Full runtime dependencies of inets-8.3.1.3: erts-13.0, kernel-6.0,
+ mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
+ stdlib-4.0
+
+
+ ---------------------------------------------------------------------
+ --- kernel-8.5.4.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The kernel-8.5.4.3 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1.3 (first satisfied in OTP 25.2)
+ -- stdlib-4.1.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19050 Application(s): kernel
+ Related Id(s): OTP-18990
+
+ Fixed gen_udp:open/2 type spec to include already
+ supported module socket address types.
+
+
+ Full runtime dependencies of kernel-8.5.4.3: crypto-5.0, erts-13.1.3,
+ sasl-3.0, stdlib-4.1.1
+
+
+ ---------------------------------------------------------------------
+ --- observer-2.14.0.1 -----------------------------------------------
+ ---------------------------------------------------------------------
+
+ The observer-2.14.0.1 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19064 Application(s): inets, observer, os_mon, reltool
+
+ Fixed runtime dependencies.
+
+
+ Full runtime dependencies of observer-2.14.0.1: erts-11.0, et-1.5,
+ kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-2.2
+
+
+ ---------------------------------------------------------------------
+ --- os_mon-2.8.2.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The os_mon-2.8.2.1 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19064 Application(s): inets, observer, os_mon, reltool
+
+ Fixed runtime dependencies.
+
+
+ Full runtime dependencies of os_mon-2.8.2.1: erts-13.0, kernel-3.0,
+ sasl-2.4, stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- reltool-0.9.1.1 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The reltool-0.9.1.1 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19064 Application(s): inets, observer, os_mon, reltool
+
+ Fixed runtime dependencies.
+
+
+ Full runtime dependencies of reltool-0.9.1.1: erts-7.0, kernel-8.4,
+ sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.4 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.4 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19013 Application(s): ssh
+ Related Id(s): GH-7897, PR-8220
+
+ With this change, owner and group file attributes
+ decoding is fixed and results with value of integer
+ type.
+
+
+ Full runtime dependencies of ssh-4.15.3.4: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-4.3.1.4 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The stdlib-4.3.1.4 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1 (first satisfied in OTP 25.1)
+ -- kernel-8.5.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19031 Application(s): stdlib
+ Related Id(s): GH-8268
+
+ Attempting to use the maybe construct in a macro
+ argument could crash the compiler.
+
+
+ Full runtime dependencies of stdlib-4.3.1.4: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.12.README.txt b/release-notes/OTP-25.3.2.12.README.txt
new file mode 100644
index 0000000..78c8ad9
--- /dev/null
+++ b/release-notes/OTP-25.3.2.12.README.txt
@@ -0,0 +1,104 @@
+Patch Package: OTP 25.3.2.12
+Git Tag: OTP-25.3.2.12
+Date: 2024-05-02
+Trouble Report Id: OTP-19065, OTP-19070, OTP-19071, OTP-19076
+Seq num: ERIERL-1073, GH-8356, GH-8385, OTP-18999,
+ PR-8367, PR-8380
+System: OTP
+Release: 25
+Application: erts-13.2.2.9, mnesia-4.21.4.3, ssl-10.9.1.4
+Predecessor: OTP 25.3.2.11
+
+ Check out the git tag OTP-25.3.2.12, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.9 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.9 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19070 Application(s): erts
+ Related Id(s): GH-8385
+
+ ETS functions did not properly handle keys containing
+ maps, sometimes matching too many or too few objects.
+
+
+ OTP-19071 Application(s): erts
+ Related Id(s): PR-8380, OTP-18999
+
+ Fix CPU quota determination for cgroups.
+
+ The bug was introduced through OTP-18999.
+
+
+ Full runtime dependencies of erts-13.2.2.9: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.21.4.3 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.21.4.3 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19076 Application(s): mnesia
+ Related Id(s): ERIERL-1073
+
+ Mnesia could crash during startup if del_table_copy/2
+ and add_table_copy/3 was invoked when the table was
+ loading.
+
+
+ Full runtime dependencies of mnesia-4.21.4.3: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- ssl-10.9.1.4 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssl-10.9.1.4 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependency has to be satisfied:
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19065 Application(s): ssl
+ Related Id(s): GH-8356, PR-8367
+
+ Fix certificate authorities check so that CA closest to
+ peer is not lost. It could manifest itself in a failed
+ connection as the client failed to realize it had a
+ valid certificate chain to send to the server.
+
+
+ Full runtime dependencies of ssl-10.9.1.4: crypto-5.0, erts-10.0,
+ inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.13.README.txt b/release-notes/OTP-25.3.2.13.README.txt
new file mode 100644
index 0000000..8e0e581
--- /dev/null
+++ b/release-notes/OTP-25.3.2.13.README.txt
@@ -0,0 +1,127 @@
+Patch Package: OTP 25.3.2.13
+Git Tag: OTP-25.3.2.13
+Date: 2024-07-08
+Trouble Report Id: OTP-19057, OTP-19109, OTP-19123, OTP-19140,
+ OTP-19147, OTP-19154
+Seq num: ERIERL-1043, ERIERL-1106, GH-7483, GH-8484,
+ GH-8613, PR-8345, PR-8546, PR-8619, PR-8627
+System: OTP
+Release: 25
+Application: erts-13.2.2.10, ssh-4.15.3.5, ssl-10.9.1.5
+Predecessor: OTP 25.3.2.12
+
+ Check out the git tag OTP-25.3.2.13, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.10 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.10 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19123 Application(s): erts
+ Related Id(s): GH-8484, PR-8546
+
+ 'DOWN' messages originating from a monitored port,
+ contained the atom process instead of the atom port as
+ the third element when the exit reason was not an
+ immediate term.
+
+
+ OTP-19147 Application(s): erts
+ Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619
+
+ When no time warp mode was enabled, a smaller Erlang
+ monotonic time could be read than a previously read
+ time, i.e., breaking the monotonic property. The
+ runtime system will abort when detecting an issue like
+ this since OTP 24.3.4.17 and OTP 25.0.
+
+ Up until OTP 25 no time warp mode is the default. As of
+ OTP 26 multi time warp mode is the default.
+
+
+ OTP-19154 Application(s): erts
+ Related Id(s): GH-8613, PR-8627
+
+ 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.
+
+
+ Full runtime dependencies of erts-13.2.2.10: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.5 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.5 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19057 Application(s): ssh
+ Related Id(s): GH-7483, PR-8345
+
+ With this change, ssh client will automatically adjust
+ transfer window size for commands executed remotely
+ over SSH.
+
+
+ OTP-19109 Application(s): ssh
+ Related Id(s): PR-8345
+
+ With this change, race condition between connection
+ closing and automatic window adjustment is fixed.
+
+
+ Full runtime dependencies of ssh-4.15.3.5: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- ssl-10.9.1.5 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssl-10.9.1.5 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependency has to be satisfied:
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19140 Application(s): ssl
+
+ TLS-1.3 negotiation now uses SNI based options
+ correctly instead of ignoring them.
+
+
+ Full runtime dependencies of ssl-10.9.1.5: crypto-5.0, erts-10.0,
+ inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.14.README.txt b/release-notes/OTP-25.3.2.14.README.txt
new file mode 100644
index 0000000..9e57046
--- /dev/null
+++ b/release-notes/OTP-25.3.2.14.README.txt
@@ -0,0 +1,120 @@
+Patch Package: OTP 25.3.2.14
+Git Tag: OTP-25.3.2.14
+Date: 2024-09-19
+Trouble Report Id: OTP-19170, OTP-19173, OTP-19179, OTP-19206,
+ OTP-19217
+Seq num: ERIERL-1102, ERIERL-1104, GH-7746, PR-8310
+System: OTP
+Release: 25
+Application: diameter-2.2.7.2, public_key-1.13.3.3,
+ ssh-4.15.3.6, xmerl-1.3.31.2
+Predecessor: OTP 25.3.2.13
+
+ Check out the git tag OTP-25.3.2.14, 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.
+
+ ---------------------------------------------------------------------
+ --- diameter-2.2.7.2 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.2.7.2 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19206 Application(s): diameter
+ Related Id(s): ERIERL-1102
+
+ `diameter:stop_service/1` has been made more
+ synchronous.
+
+
+ Full runtime dependencies of diameter-2.2.7.2: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-3.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.13.3.3 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.13.3.3 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19179 Application(s): public_key
+
+ For completeness handle rsa_pss implicit default value,
+ although this will probably not be commonly used as it
+ provides very weak security.
+
+
+ Full runtime dependencies of public_key-1.13.3.3: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.6 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.6 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19170 Application(s): ssh
+ Related Id(s): GH-7746
+
+ 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.
+
+
+ OTP-19173 Application(s): ssh
+ Related Id(s): PR-8310
+
+ Robustness has been improved by monitoring the
+ connection handler process before casting the socket
+ control notification.
+
+
+ Full runtime dependencies of ssh-4.15.3.6: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- xmerl-1.3.31.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The xmerl-1.3.31.2 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19217 Application(s): xmerl
+ Related Id(s): ERIERL-1104
+
+ 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.
+
+
+ Full runtime dependencies of xmerl-1.3.31.2: erts-6.0, kernel-3.0,
+ stdlib-2.5
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ jakob svenningsson
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.15.README.txt b/release-notes/OTP-25.3.2.15.README.txt
new file mode 100644
index 0000000..58725ea
--- /dev/null
+++ b/release-notes/OTP-25.3.2.15.README.txt
@@ -0,0 +1,291 @@
+Patch Package: OTP 25.3.2.15
+Git Tag: OTP-25.3.2.15
+Date: 2024-10-14
+Trouble Report Id: OTP-19124, OTP-19158, OTP-19221, OTP-19236,
+ OTP-19238, OTP-19246, OTP-19247, OTP-19252,
+ OTP-19256, OTP-19257, OTP-19265, OTP-19266,
+ OTP-19269, OTP-19274, OTP-19284
+Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1127,
+ ERIERL-1131, GH-7550, GH-8223, GH-8835,
+ PR-8226, PR-8261, PR-8766, PR-8780, PR-8788,
+ PR-8801, PR-8831, PR-8854, PR-8858, PR-8876,
+ PR-8890, PR-8897, PR-8901, PR-8909
+System: OTP
+Release: 25
+Application: common_test-1.24.0.4, erts-13.2.2.11,
+ inets-8.3.1.4, public_key-1.13.3.4,
+ ssh-4.15.3.7, ssl-10.9.1.6, stdlib-4.3.1.5
+Predecessor: OTP 25.3.2.14
+
+ Check out the git tag OTP-25.3.2.15, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-19158 Application(s): inets
+
+ With this change, HTTP client, when returning an
+ asynchronous request, now correctly takes into account
+ `OptionRequest - full_result`
+
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24.0.4 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.24.0.4 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19252 Application(s): common_test
+ Related Id(s): PR-8858
+
+ With this change, HTML reports include jQuery version
+ 3.7.1.
+
+
+ OTP-19265 Application(s): common_test
+ Related Id(s): PR-8876
+
+ With this change, jquery and tablesorter licenses are
+ added to COPYRIGHT file. Also tablesorter is updated to
+ version 2.32.
+
+
+ OTP-19284 Application(s): common_test
+ Related Id(s): ERIERL-1093, PR-8909
+
+ Fixed a bug where the sum of testcases' execution time
+ in HTML logs was sometimes miscalculated, and the table
+ was not fully printed.
+
+
+ Full runtime dependencies of common_test-1.24.0.4: 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
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.11 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.11 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19269 Application(s): erts
+ Related Id(s): GH-8835, PR-8897
+
+ Fixed beam crash that could happen if resetting
+ call_time or call_memory trace counters of a function
+ while it is called. Bug exists since OTP R16.
+
+
+ Full runtime dependencies of erts-13.2.2.11: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-8.3.1.4 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-8.3.1.4 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19158 Application(s): inets
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change, HTTP client, when returning an
+ asynchronous request, now correctly takes into account
+ `OptionRequest - full_result`
+
+
+ OTP-19221 Application(s): inets
+ Related Id(s): ERIERL-1091, PR-8788, PR-8801
+
+ With this change, synchronous httpc:request now
+ timeouts after `Timeout` specified in `HttpOption
+ {timeout, Timeout}`
+
+
+ Full runtime dependencies of inets-8.3.1.4: erts-13.0, kernel-6.0,
+ mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
+ stdlib-4.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.13.3.4 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.13.3.4 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19238 Application(s): public_key
+ Related Id(s): PR-8831
+
+ Do not hide crypto badarg reason, this error handling
+ enhancement facilitates debugging. These kind of
+ runtime errors are not documented and should never be
+ relied on for matching, they are intended for catching
+ input errors early.
+
+
+ Full runtime dependencies of public_key-1.13.3.4: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.7 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.7 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19124 Application(s): ssh
+ Related Id(s): GH-7550, PR-8766
+
+ With this change, a race condition is removed from ssh
+ client connection setup procedure.
+
+
+ OTP-19246 Application(s): ssh
+ Related Id(s): GH-8223, PR-8854
+
+ With this change, ssh:connect is not affected by
+ presence of EXIT message in queue.
+
+
+ OTP-19247 Application(s): ssh
+ Related Id(s): PR-8226
+
+ With this change, ssh appends {active, false} option
+ after socket options received from user - so that false
+ value is always used.
+
+
+ Full runtime dependencies of ssh-4.15.3.7: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- ssl-10.9.1.6 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssl-10.9.1.6 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependency has to be satisfied:
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19236 Application(s): ssl
+ Related Id(s): PR-8261
+
+ Starting from TLS-1.3 some server handshake alerts
+ might arrive after ssl:connection/2,3,4 has returned.
+ If the socket is in active mode the controlling process
+ will get the alert message, but passive sockets would
+ only get {error, closed} on next call to ssl:recv/2,3
+ or ssl/setopts/2. Passive sockets calls will now return
+ {error, error_alert()} instead.
+
+
+ OTP-19257 Application(s): ssl
+ Related Id(s): ERIERL-1131
+
+ Servers configured to support only version (pre
+ TLS-1.2) should ignore hello version extension, as it
+ is an unknown extension to them, this will result in
+ that new clients that do not support the old server
+ version will get an insufficient security alert from
+ the server and not a protocol version alert, this is
+ consistent with how old servers not able to support
+ higher protocol versions work.
+
+
+ OTP-19274 Application(s): ssl
+ Related Id(s): PR-8901
+
+ Correct timeout handling for termination code run for
+ own alerts, so that intended timeout is used instead of
+ falling back to OS TCP-stack timeout that is
+ unreasonably long on some platforms.
+
+
+ Full runtime dependencies of ssl-10.9.1.6: crypto-5.0, erts-10.0,
+ inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-4.3.1.5 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The stdlib-4.3.1.5 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1 (first satisfied in OTP 25.1)
+ -- kernel-8.5.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19256 Application(s): stdlib
+ Related Id(s): PR-8780
+
+ With this change, shutdown procedure handles a race
+ condition between supervisor executing a shutdown and
+ child process termination from other reason.
+
+
+ OTP-19266 Application(s): stdlib
+ Related Id(s): ERIERL-1127, PR-8890
+
+ With this change, uri_string:normalize assumes empty
+ path (do not crash) when no path is provided in the URI
+ map.
+
+
+ Full runtime dependencies of stdlib-4.3.1.5: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Jakub Witczak
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.16.README.txt b/release-notes/OTP-25.3.2.16.README.txt
new file mode 100644
index 0000000..8851d88
--- /dev/null
+++ b/release-notes/OTP-25.3.2.16.README.txt
@@ -0,0 +1,240 @@
+Patch Package: OTP 25.3.2.16
+Git Tag: OTP-25.3.2.16
+Date: 2024-12-05
+Trouble Report Id: OTP-19240, OTP-19311, OTP-19326, OTP-19330,
+ OTP-19350, OTP-19352, OTP-19365, OTP-19379,
+ OTP-19380
+Seq num: CVE-2024-53846, ERIERL-1157, GH-8755,
+ GH-8829, GH-8929, GH-8983, GH-9009,
+ OTP-19240, OTP-19532, PR-8840, PR-8878,
+ PR-8980, PR-8995, PR-9008, PR-9053, PR-9080,
+ PR-9130
+System: OTP
+Release: 25
+Application: common_test-1.24.0.5, erts-13.2.2.12,
+ inets-8.3.1.5, public_key-1.13.3.5,
+ ssh-4.15.3.8, ssl-10.9.1.7, stdlib-4.3.1.6
+Predecessor: OTP 25.3.2.15
+
+ Check out the git tag OTP-25.3.2.16, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24.0.5 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.24.0.5 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19365 Application(s): common_test
+ Related Id(s): ERIERL-1157, PR-9080
+
+ With this change, cth_surefire hook module handles
+ group path reduction for a skipped group. This fixes a
+ bug manifesting with improper group path for a group
+ executed after a group which was skipped.
+
+
+ Full runtime dependencies of common_test-1.24.0.5: 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
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.12 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.12 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19330 Application(s): erts
+ Related Id(s): GH-8983, PR-9008
+
+ Fix lock order violation if a NIF monitor down callback
+ calls enif_whereis_pid. Would cause debug emulator to
+ crash but could potentially lead to deadlocks in
+ optimized emulator.
+
+
+ Full runtime dependencies of erts-13.2.2.12: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-8.3.1.5 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-8.3.1.5 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19379 Application(s): inets
+ Related Id(s): GH-8829, PR-8878
+
+ Fixed a bug where calling httpc:set_options/2 when one
+ of keys: ipfamily or unix_socket, was not present,
+ would cause the other value to get overriden by the
+ default value. The validation of these options was also
+ improved.
+
+
+ Full runtime dependencies of inets-8.3.1.5: erts-13.0, kernel-6.0,
+ mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
+ stdlib-4.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.13.3.5 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.13.3.5 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19240 Application(s): public_key
+ Related Id(s): PR-8840, OTP-19532
+
+ If both ext-key-usage and key-usage are defined for a
+ certificate it should be checked that these usages are
+ consistent with each other. This will have the affect
+ that such certificates where the ext-key-usages is
+ marked as critical and the usages is consistent with
+ the key-use it can be considered valid without
+ mandatory application specific checks for the
+ ext-key-useage extension.
+
+
+ OTP-19350 Application(s): public_key
+ Related Id(s): GH-9009, PR-9053
+
+ Handle decoding of EDDSA key properly, when decoding a
+ PEM file that contains only the public EDDSA key.
+
+
+ Full runtime dependencies of public_key-1.13.3.5: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.8 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.8 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19326 Application(s): ssh
+ Related Id(s): GH-8929, PR-8995
+
+ With this change, ssh connection does not crash upon
+ receiving exit-signal message for an already terminated
+ channel.
+
+
+ Full runtime dependencies of ssh-4.15.3.8: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- ssl-10.9.1.7 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssl-10.9.1.7 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependency has to be satisfied:
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19311 Application(s): ssl
+ Related Id(s): PR-8980
+
+ Avoid generating an internal alert for case that should
+ have been an orderly shutdown by the supervisor.
+
+
+ OTP-19352 Application(s): ssl
+ Related Id(s): PR-9130, CVE-2024-53846, OTP-19240
+
+ If present, extended key-usage TLS (SSL) role check
+ (pk-clientAuth, pk-serverAuth) should always be
+ performed for peer-cert. An intermediate CA cert may
+ relax the requirement if AnyExtendedKeyUsage purpose is
+ present.
+
+ In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these
+ requirements became too relaxed. There where two
+ problems, firstly the peer cert extension was only
+ checked if it was marked critical, and secondly the CA
+ cert check did not assert the relaxed
+ AnyExtendedKeyUsage purpose.
+
+ This could result in that certificates might be misused
+ for purposes not intended by the certificate authority.
+
+ Thanks to Bryan Paxton for reporting the issue.
+
+
+ Full runtime dependencies of ssl-10.9.1.7: crypto-5.0, erts-10.0,
+ inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-4.3.1.6 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The stdlib-4.3.1.6 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1 (first satisfied in OTP 25.1)
+ -- kernel-8.5.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19380 Application(s): stdlib
+ Related Id(s): GH-8755
+
+ Fixed an error in uri_string:percent_decode spec
+
+
+ Full runtime dependencies of stdlib-4.3.1.6: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Marko Mindek, zmstone
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.17.README.txt b/release-notes/OTP-25.3.2.17.README.txt
new file mode 100644
index 0000000..5e71330
--- /dev/null
+++ b/release-notes/OTP-25.3.2.17.README.txt
@@ -0,0 +1,145 @@
+Patch Package: OTP 25.3.2.17
+Git Tag: OTP-25.3.2.17
+Date: 2025-02-12
+Trouble Report Id: OTP-19381, OTP-19385, OTP-19388, OTP-19392,
+ OTP-19435, OTP-19462
+Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1177,
+ GH-9065, GH-9112, GH-9117, PR-9139, PR-9155,
+ PR-9156, PR-9161, PR-9309, PR-9372, PR-9377
+System: OTP
+Release: 25
+Application: common_test-1.24.0.6, erts-13.2.2.13,
+ kernel-8.5.4.4, ssh-4.15.3.9
+Predecessor: OTP 25.3.2.16
+
+ Check out the git tag OTP-25.3.2.17, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24.0.6 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.24.0.6 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19385 Application(s): common_test
+ Related Id(s): ERIERL-1166, PR-9155, PR-9156
+
+ Common test will now not crash when running tests with
+ OTP-26 and earlier, while having previous test results
+ from OTP-27.
+
+
+ Full runtime dependencies of common_test-1.24.0.6: 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
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.13 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.13 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19462 Application(s): erts
+ Related Id(s): ERIERL-1177, PR-9372
+
+ Disabled an unsafe runtime optimization in binary
+ construction that caused silent memory corruption.
+
+
+ Full runtime dependencies of erts-13.2.2.13: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-8.5.4.4 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The kernel-8.5.4.4 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1.3 (first satisfied in OTP 25.2)
+ -- stdlib-4.1.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19381 Application(s): kernel
+ Related Id(s): GH-9112, GH-9117, PR-9377
+
+ Fixed a couple of bugs that could make global's
+ internal state inconsistent when a connection was
+ reconnected.
+
+
+ Full runtime dependencies of kernel-8.5.4.4: crypto-5.0, erts-13.1.3,
+ sasl-3.0, stdlib-4.1.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.9 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.9 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19388 Application(s): ssh
+ Related Id(s): ERIERL-1165, PR-9161
+
+ With this change, type specs for
+ ssh:connection_info/1,2 functions are fixed so they
+ include {error, term()} return value.
+
+
+ OTP-19392 Application(s): ssh
+ Related Id(s): GH-9065, PR-9139
+
+ With this change, ssh client accepts a banner sent
+ during processing keyboard interactive user
+ authentication.
+
+
+ OTP-19435 Application(s): ssh
+ Related Id(s): PR-9309
+
+ With this change, large sftp transfers does not hang.
+ Redundant window adjustment are not requested.
+
+
+ Full runtime dependencies of ssh-4.15.3.9: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Alexandre Rodrigues
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.18.README.txt b/release-notes/OTP-25.3.2.18.README.txt
new file mode 100644
index 0000000..a1818a7
--- /dev/null
+++ b/release-notes/OTP-25.3.2.18.README.txt
@@ -0,0 +1,98 @@
+Patch Package: OTP 25.3.2.18
+Git Tag: OTP-25.3.2.18
+Date: 2025-02-20
+Trouble Report Id: OTP-19240, OTP-19466, OTP-19495
+Seq num: CVE-2025-26618, ERIERL-1173, GH-8208,
+ GH-9208, PR-8209, PR-9286
+System: OTP
+Release: 25
+Application: erts-13.2.2.14, public_key-1.13.3.6,
+ ssh-4.15.3.10
+Predecessor: OTP 25.3.2.17
+
+ Check out the git tag OTP-25.3.2.18, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.14 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.14 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19495 Application(s): erts
+ Related Id(s): GH-8208, PR-8209
+
+ Fixed BEAM crash when a custom thread sends a large map
+ (>128 keys) externally encoded with for example
+ erl_drv_send_term().
+
+
+ Full runtime dependencies of erts-13.2.2.14: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.13.3.6 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.13.3.6 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19240 Application(s): public_key
+ Related Id(s): GH-9208, PR-9286
+
+ Consider keyCertSign to compatible with extended key
+ usage for TLS client/server auth in CAs, adhere to wide
+ spread implementations
+
+
+ Full runtime dependencies of public_key-1.13.3.6: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.10 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.10 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19466 Application(s): ssh
+ Related Id(s): ERIERL-1173, CVE-2025-26618
+
+ SFTP packets exceeding max packet size are not
+ processed and dropped.
+
+
+ Full runtime dependencies of ssh-4.15.3.10: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Simon Cornish
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.19.README.txt b/release-notes/OTP-25.3.2.19.README.txt
new file mode 100644
index 0000000..315b209
--- /dev/null
+++ b/release-notes/OTP-25.3.2.19.README.txt
@@ -0,0 +1,135 @@
+Patch Package: OTP 25.3.2.19
+Git Tag: OTP-25.3.2.19
+Date: 2025-03-28
+Trouble Report Id: OTP-19501, OTP-19527, OTP-19543, OTP-19545,
+ OTP-19559
+Seq num: CVE-2025-30211, ERIERL-1195, GH-9554,
+ OTP-19544, PR-9499, PR-9545, PR-9577, PR-9587
+System: OTP
+Release: 25
+Application: erts-13.2.2.15, kernel-8.5.4.5,
+ mnesia-4.21.4.4, ssh-4.15.3.11
+Predecessor: OTP 25.3.2.18
+
+ Check out the git tag OTP-25.3.2.19, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.15 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.15 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19527 Application(s): erts
+ Related Id(s): PR-9577
+
+ Trace messages due to receive tracing could potentially
+ be delayed a very long time if the traced process
+ waited in a receive expression without clauses matching
+ on messages (timed wait), or just did not enter a
+ receive expression for a very long time.
+
+
+ Full runtime dependencies of erts-13.2.2.15: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-8.5.4.5 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The kernel-8.5.4.5 application *cannot* be applied
+ independently of other applications on an arbitrary OTP 25
+ installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- erts-13.1.3 (first satisfied in OTP 25.2)
+ -- stdlib-4.1.1 (first satisfied in OTP 25.1.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19545 Application(s): kernel
+ Related Id(s): PR-9587, OTP-19544
+
+ An infinite loop in CNAME loop detection that can cause
+ Out Of Memory has been fixed. This affected CNAME
+ lookup with the internal DNS resolver.
+
+
+ Full runtime dependencies of kernel-8.5.4.5: crypto-5.0, erts-13.1.3,
+ sasl-3.0, stdlib-4.1.1
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.21.4.4 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.21.4.4 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19501 Application(s): mnesia
+ Related Id(s): ERIERL-1195, PR-9499
+
+ Mnesia could fail to load a table, if one of the copy
+ holders was moved during startup.
+
+
+ Full runtime dependencies of mnesia-4.21.4.4: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.11 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.11 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19543 Application(s): ssh
+ Related Id(s): CVE-2025-30211
+
+ Reception of malicious KEX init message does not result
+ with ssh daemon excessive memory usage.
+
+
+ OTP-19559 Application(s): ssh
+ Related Id(s): GH-9554, PR-9545
+
+ Call to ssh:daemon_replace_options does not crash when
+ argument is not a valid daemon ref.
+
+
+ Full runtime dependencies of ssh-4.15.3.11: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Alexandre Rodrigues, Sergei Shuvatov
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.20.README.txt b/release-notes/OTP-25.3.2.20.README.txt
new file mode 100644
index 0000000..1f21f44
--- /dev/null
+++ b/release-notes/OTP-25.3.2.20.README.txt
@@ -0,0 +1,51 @@
+Patch Package: OTP 25.3.2.20
+Git Tag: OTP-25.3.2.20
+Date: 2025-04-16
+Trouble Report Id: OTP-19582, OTP-19595
+Seq num: CVE-2025-32433, PR-9679
+System: OTP
+Release: 25
+Application: ssh-4.15.3.12
+Predecessor: OTP 25.3.2.19
+
+ Check out the git tag OTP-25.3.2.20, 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.
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.12 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.12 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19582 Application(s): ssh
+ Related Id(s): PR-9679
+
+ Reception of wrong Unicode does not cause unnecessary
+ processing. US-ASCII fields are not decoded as Unicode.
+
+
+ OTP-19595 Application(s): ssh
+ Related Id(s): CVE-2025-32433
+
+ SSH daemon disconnects upon receiving connection
+ protocol message for unauthenticated used.
+
+ Thanks to Fabian Bäumer, Marcel Maehren, Marcus
+ Brinkmann, Nurullah Erinola, Jörg Schwenk (Ruhr
+ University Bochum).
+
+
+ Full runtime dependencies of ssh-4.15.3.12: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.8.README.txt b/release-notes/OTP-25.3.2.8.README.txt
new file mode 100644
index 0000000..a2a876f
--- /dev/null
+++ b/release-notes/OTP-25.3.2.8.README.txt
@@ -0,0 +1,348 @@
+Patch Package: OTP 25.3.2.8
+Git Tag: OTP-25.3.2.8
+Date: 2023-12-18
+Trouble Report Id: OTP-18739, OTP-18768, OTP-18802, OTP-18830,
+ OTP-18838, OTP-18839, OTP-18841, OTP-18842,
+ OTP-18844, OTP-18850, OTP-18869, OTP-18877,
+ OTP-18885, OTP-18886, OTP-18896, OTP-18897,
+ OTP-18899, OTP-18902
+Seq num: GH-7571, GH-7801, GH-7834, GH-7890
+System: OTP
+Release: 25
+Application: asn1-5.0.21.1, erl_interface-5.3.2.1,
+ erts-13.2.2.5, mnesia-4.21.4.2,
+ public_key-1.13.3.2, ssh-4.15.3.1,
+ ssl-10.9.1.3, wx-2.2.2.1
+Predecessor: OTP 25.3.2.7
+
+ Check out the git tag OTP-25.3.2.8, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18897 Application(s): ssh
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ ---------------------------------------------------------------------
+ --- OTP-25.3.2.8 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18896 Application(s): otp
+
+ Updated copyright and license information.
+
+
+ ---------------------------------------------------------------------
+ --- asn1-5.0.21.1 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The asn1-5.0.21.1 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18844 Application(s): asn1
+
+ Fix benign warning from gcc 11 about mismatching call
+ to free().
+
+
+ Full runtime dependencies of asn1-5.0.21.1: erts-11.0, kernel-7.0,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- erl_interface-5.3.2.1 -------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erl_interface-5.3.2.1 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.5 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.5 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18802 Application(s): erts
+
+ Fix faulty debug assert when page size is larger than
+ 16kb, like on PowerPC. Did crash debug VM directly at
+ start.
+
+
+ OTP-18838 Application(s): erts
+ Related Id(s): GH-7801, PR-7822
+
+ A process with message_queue_data configured as
+ off_heap could end up in an inconsistent state when
+ being receive traced, inspected using process_info/2
+ with the message_queue_len item, or inspected using the
+ break menu (CTRL-C). When it ended up in this
+ inconsistent state, it was not enqueued into a run
+ queue even though it was set in a runnable state.This
+ also effected signals being sent to the process after
+ it had gotten into this inconsistent state, in such a
+ way that it was from this point not possible to
+ communicate with it.
+
+
+ OTP-18839 Application(s): erts
+ Related Id(s): GH-7801, PR-7822
+
+ A race occurring when a process was selected for dirty
+ execution simultaneously as it was scheduled for
+ handling a signal could cause the process to end up in
+ an inconsistent state. When it ended up in this
+ inconsistent state, it was not enqueued into a run
+ queue even though it was set in a runnable state. This
+ also effected signals being sent to the process after
+ it had gotten into this inconsistent state, in such a
+ way that it was from this point not possible to
+ communicate with it.
+
+
+ OTP-18841 Application(s): erts
+ Related Id(s): GH-7801, OTP-18737, PR-7822
+
+ When a process had to to wait in the run queue for a
+ long time before being selected for dirty execution, it
+ could not receive signals. This caused inspection of
+ such a process, for example using process_info/2, to
+ take a long time.
+
+ This issue was introduced in OTP 25.3.2.6 and 26.1 when
+ fixing an issue where a constant flow of signals
+ prevented a process from being able to execute dirty.
+
+
+ OTP-18842 Application(s): erts
+
+ Fixed a bug in the JIT that miscompiled large
+ select_val instructions.
+
+
+ OTP-18885 Application(s): erts
+ Related Id(s): GH-7834, GH-7890, PR-7915
+
+ On OTP 24 and OTP 25, incoming distributed messages
+ larger than 64 KiB sent using an alias leaked memory if
+ the alias had been removed prior to entering the node.
+ This issue was not present on OTP 26.
+
+ Incoming distributed messages larger than 64 KiB sent
+ using an alias which had been removed on the receiving
+ node could crash the node. This crash was quite
+ unlikely on OTP 24 and OTP 25, but very likely on OTP
+ 26.
+
+ 'DOWN' signals with exit reason larger than 64 KiB
+ directed towards a process on a node with a not
+ matching creation leaked memory on the receiving node.
+ Such signals should however be very rare.
+
+
+ OTP-18902 Application(s): erts
+
+ Removed unnecessary PCRE source tar-ball.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18830 Application(s): erts
+ Related Id(s): PR-7823
+
+ Removed unnecessary regexp library used when generating
+ yielding BIFs.
+
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ OTP-18899 Application(s): erts
+
+ Removed unused makewhatis script.
+
+
+ Full runtime dependencies of erts-13.2.2.5: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.21.4.2 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.21.4.2 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18850 Application(s): mnesia
+
+ mnesia:add_table_copy/3 no longer fails with reason
+ system_limit when the node is starting.
+
+
+ Full runtime dependencies of mnesia-4.21.4.2: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.13.3.2 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.13.3.2 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18739 Application(s): public_key, ssl
+
+ ssl application will validate id-kp-serverAuth and
+ id-kp-clientAuth extended key usage only in end entity
+ certificates. public_key application will disallow
+ "anyExtendedKeyUsage" for CA certificates that includes
+ the extended key usage extension and marks it critical.
+
+
+ Full runtime dependencies of public_key-1.13.3.2: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.1 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18869 Application(s): ssh
+ Related Id(s): GH-7571, PR-7849
+
+ With this change, connection handler does not execute
+ socket operations until it becomes socket owner.
+ Previously errors could occur if connection handler
+ tried to work with socket whose owner exited.
+
+
+ OTP-18897 Application(s): ssh
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ Full runtime dependencies of ssh-4.15.3.1: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ --- ssl-10.9.1.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The ssl-10.9.1.3 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependency has to be satisfied:
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18739 Application(s): public_key, ssl
+
+ ssl application will validate id-kp-serverAuth and
+ id-kp-clientAuth extended key usage only in end entity
+ certificates. public_key application will disallow
+ "anyExtendedKeyUsage" for CA certificates that includes
+ the extended key usage extension and marks it critical.
+
+
+ OTP-18886 Application(s): ssl
+
+ Add missing export for connection_info() API type.
+
+
+ Full runtime dependencies of ssl-10.9.1.3: crypto-5.0, erts-10.0,
+ inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- wx-2.2.2.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The wx-2.2.2.1 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18768 Application(s): wx
+ Related Id(s): PR-7670
+
+ The wx application would fail to build on macOS with
+ Xcode 15.
+
+
+ Full runtime dependencies of wx-2.2.2.1: erts-12.0, kernel-8.0,
+ stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-25.3.2.9.README.txt b/release-notes/OTP-25.3.2.9.README.txt
new file mode 100644
index 0000000..5cace9a
--- /dev/null
+++ b/release-notes/OTP-25.3.2.9.README.txt
@@ -0,0 +1,108 @@
+Patch Package: OTP 25.3.2.9
+Git Tag: OTP-25.3.2.9
+Date: 2024-02-08
+Trouble Report Id: OTP-18911, OTP-18932, OTP-18957, OTP-18964
+Seq num: ERIERL-1023, GH-8051
+System: OTP
+Release: 25
+Application: common_test-1.24.0.2, erts-13.2.2.6,
+ ssh-4.15.3.2
+Predecessor: OTP 25.3.2.8
+
+ Check out the git tag OTP-25.3.2.9, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24.0.2 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.24.0.2 application can be applied independently of
+ other applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18932 Application(s): common_test
+
+ Fix how CT finds Erlang/OTP releases for compatability
+ testing. This functionality is only used to test
+ Erlang/OTP.
+
+
+ Full runtime dependencies of common_test-1.24.0.2: 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
+
+
+ ---------------------------------------------------------------------
+ --- erts-13.2.2.6 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Note! The erts-13.2.2.6 application *cannot* be applied independently
+ of other applications on an arbitrary OTP 25 installation.
+
+ On a full OTP 25 installation, also the following runtime
+ dependencies have to be satisfied:
+ -- kernel-8.5 (first satisfied in OTP 25.1)
+ -- stdlib-4.1 (first satisfied in OTP 25.1)
+
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18911 Application(s): erts
+ Related Id(s): ERIERL-1023, PR-7983
+
+ 32-bit runtime systems on most Unix like platforms
+ could crash if a BIF timer was set with a huge timeout
+ of more than 68 years into the future. In order for the
+ crash to occur, the huge timer (at a later time than
+ when it was set) had to become the nearest active timer
+ set on the specific scheduler on which it was set. This
+ could not happen on a system with only one scheduler
+ since there would always be shorter timers in the
+ system.
+
+ Setting a timer larger than 49 days on Windows could
+ under rare circumstances cause the timeout to be
+ delayed.
+
+
+ OTP-18957 Application(s): erts
+ Related Id(s): GH-8051, OTP-18841, PR-8088
+
+ Garbage collection of a process on a dirty scheduler
+ could collide with signal handling for that process
+ causing a crash of the runtime system. This bug was
+ introduced in OTP 25.3.2.8 and OTP 26.2.
+
+
+ Full runtime dependencies of erts-13.2.2.6: kernel-8.5, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-4.15.3.2 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-4.15.3.2 application can be applied independently of other
+ applications on a full OTP 25 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18964 Application(s): ssh
+
+ With this change, Curve25519 and Curve448 KEX methods
+ become most preferred (related to RFC8731).
+
+
+ Full runtime dependencies of ssh-4.15.3.2: crypto-5.0, erts-11.0,
+ kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.1.README.txt b/release-notes/OTP-26.2.1.README.txt
new file mode 100644
index 0000000..cced400
--- /dev/null
+++ b/release-notes/OTP-26.2.1.README.txt
@@ -0,0 +1,101 @@
+Patch Package: OTP 26.2.1
+Git Tag: OTP-26.2.1
+Date: 2023-12-18
+Trouble Report Id: OTP-18897, OTP-18902, OTP-18903
+Seq num:
+System: OTP
+Release: 26
+Application: erts-14.2.1, ssh-5.1.1
+Predecessor: OTP 26.2
+
+ Check out the git tag OTP-26.2.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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18897 Application(s): ssh
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ ---------------------------------------------------------------------
+ --- OTP-26.2.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18903 Application(s): otp
+
+ Updated copyright and license information.
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.1 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18902 Application(s): erts
+
+ Removed unnecessary PCRE source tar-ball.
+
+
+ Full runtime dependencies of erts-14.2.1: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.1 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18897 Application(s): ssh
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change (being response to CVE-2023-48795),
+ ssh can negotiate "strict KEX" OpenSSH extension with
+ peers supporting it; also
+ '[email protected]' algorithm becomes a
+ less preferred cipher.
+
+ If strict KEX availability cannot be ensured on both
+ connection sides, affected encryption modes(CHACHA and
+ CBC) can be disabled with standard ssh configuration.
+ This will provide protection against vulnerability, but
+ at a cost of affecting interoperability. See
+ Configuring algorithms in SSH.
+
+
+ Full runtime dependencies of ssh-5.1.1: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.2.README.txt b/release-notes/OTP-26.2.2.README.txt
new file mode 100644
index 0000000..e73a91c
--- /dev/null
+++ b/release-notes/OTP-26.2.2.README.txt
@@ -0,0 +1,178 @@
+Patch Package: OTP 26.2.2
+Git Tag: OTP-26.2.2
+Date: 2024-02-08
+Trouble Report Id: OTP-18901, OTP-18911, OTP-18917, OTP-18931,
+ OTP-18932, OTP-18949, OTP-18957, OTP-18964
+Seq num: ERIERL-1023, GH-7978, GH-7987, GH-8051
+System: OTP
+Release: 26
+Application: common_test-1.26.1, erl_interface-5.5.1,
+ erts-14.2.2, kernel-9.2.1, ssh-5.1.2,
+ ssl-11.1.1
+Predecessor: OTP 26.2.1
+
+ Check out the git tag OTP-26.2.2, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.1 ----------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18932 Application(s): common_test
+
+ Fix how CT finds Erlang/OTP releases for compatability
+ testing. This functionality is only used to test
+ Erlang/OTP.
+
+
+ Full runtime dependencies of common_test-1.26.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
+
+
+ ---------------------------------------------------------------------
+ --- erl_interface-5.5.1 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erl_interface-5.5.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18931 Application(s): erl_interface, erts
+ Related Id(s): GH-7987, PR-7989
+
+ Fix bug where the system installed openssl/md5.h would
+ be confused with the vendored md5.h.
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.2 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18911 Application(s): erts
+ Related Id(s): ERIERL-1023, PR-7983
+
+ 32-bit runtime systems on most Unix like platforms
+ could crash if a BIF timer was set with a huge timeout
+ of more than 68 years into the future. In order for the
+ crash to occur, the huge timer (at a later time than
+ when it was set) had to become the nearest active timer
+ set on the specific scheduler on which it was set. This
+ could not happen on a system with only one scheduler
+ since there would always be shorter timers in the
+ system.
+
+ Setting a timer larger than 49 days on Windows could
+ under rare circumstances cause the timeout to be
+ delayed.
+
+
+ OTP-18931 Application(s): erl_interface, erts
+ Related Id(s): GH-7987, PR-7989
+
+ Fix bug where the system installed openssl/md5.h would
+ be confused with the vendored md5.h.
+
+
+ OTP-18949 Application(s): erts
+
+ The JIT has now been disabled on x86 Macs to prevent
+ annoying the "verifying shm-xyz" popups introduced in
+ MacOS Sonoma.
+
+ ARM Macs are unaffected.
+
+
+ OTP-18957 Application(s): erts
+ Related Id(s): GH-8051, OTP-18841, PR-8088
+
+ Garbage collection of a process on a dirty scheduler
+ could collide with signal handling for that process
+ causing a crash of the runtime system. This bug was
+ introduced in OTP 25.3.2.8 and OTP 26.2.
+
+
+ Full runtime dependencies of erts-14.2.2: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18901 Application(s): kernel
+
+ Fix group (that is the shell) to properly handle when
+ an get_until callback function returned {done, eof, []}
+ when an eof was detected.
+
+
+ Full runtime dependencies of kernel-9.2.1: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.2 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18964 Application(s): ssh
+
+ With this change, Curve25519 and Curve448 KEX methods
+ become most preferred (related to RFC8731).
+
+
+ Full runtime dependencies of ssh-5.1.2: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18917 Application(s): ssl
+ Related Id(s): GH-7978
+
+ Legacy name handling could cause interop problems
+ between TLS-1.3/1.2 client and TLS-1.2 server.
+
+
+ Full runtime dependencies of ssl-11.1.1: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.3.README.txt b/release-notes/OTP-26.2.3.README.txt
new file mode 100644
index 0000000..295f620
--- /dev/null
+++ b/release-notes/OTP-26.2.3.README.txt
@@ -0,0 +1,436 @@
+Patch Package: OTP 26.2.3
+Git Tag: OTP-26.2.3
+Date: 2024-03-07
+Trouble Report Id: OTP-18890, OTP-18900, OTP-18906, OTP-18907,
+ OTP-18909, OTP-18910, OTP-18919, OTP-18921,
+ OTP-18924, OTP-18926, OTP-18935, OTP-18936,
+ OTP-18937, OTP-18940, OTP-18948, OTP-18952,
+ OTP-18953, OTP-18962, OTP-18971, OTP-18974,
+ OTP-18979, OTP-18982, OTP-18985, OTP-18986,
+ OTP-18988, OTP-18990, OTP-18991, OTP-18996,
+ OTP-19002, OTP-19003, OTP-19006, OTP-19007,
+ OTP-19008, OTP-19009, OTP-19011
+Seq num: ERIERL-1041, ERIERL-1049, GH-7911, GH-7924,
+ GH-7934, GH-7968, GH-8016, GH-8021, GH-8024,
+ GH-8044, GH-8079, GH-8119, GH-8158, GH-8187,
+ PR-7750, PR-7930, PR-7932, PR-7933, PR-7945,
+ PR-7984, PR-8025, PR-8046, PR-8075, PR-8173,
+ PR-8174, PR-8181, PR-8189, PR-8201
+System: OTP
+Release: 26
+Application: compiler-8.4.2, crypto-5.4.1, erts-14.2.3,
+ kernel-9.2.2, odbc-2.14.2, public_key-1.15.1,
+ ssh-5.1.3, ssl-11.1.2, stdlib-5.2.1, wx-2.4.1
+Predecessor: OTP 26.2.2
+
+ Check out the git tag OTP-26.2.3, 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.
+
+ ---------------------------------------------------------------------
+ --- OTP-26.2.3 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18924 Application(s): otp
+
+ Quote uninstall path in registry when installing on
+ windows.
+
+
+ ---------------------------------------------------------------------
+ --- compiler-8.4.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.4.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19003 Application(s): compiler
+ Related Id(s): GH-8187, PR-8189
+
+ In rare circumstances, an unsafe optimization could
+ cause the compiler to generate incorrect code for list
+ matching.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18936 Application(s): compiler
+
+ Fix the compilation server to restart if the
+ applications in its lib dir changes inbetween erlc
+ invokations.
+
+
+ Full runtime dependencies of compiler-8.4.2: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18921 Application(s): crypto
+
+ Fix compile error when OPENSSL_NO_DES is defined.
+
+
+ OTP-18996 Application(s): crypto
+ Related Id(s): PR-8173, PR-8174
+
+ The function crypto:pbkdf2_hmac will no longer block
+ the main schedulers. If the iteration count or block
+ size parameters are such that the function is likely to
+ take a long time to execute, the function will be
+ scheduled to run on a dirty CPU scheduler.
+
+
+ Full runtime dependencies of crypto-5.4.1: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.3 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18906 Application(s): erts
+ Related Id(s): PR-7930
+
+ Fixed compile warning in erl_nif.c for gcc-13.
+
+
+ OTP-18907 Application(s): erts
+ Related Id(s): PR-7932
+
+ Fix C++ compile error for macros enif_select_read and
+ friends.
+
+
+ OTP-18940 Application(s): erts
+ Related Id(s): GH-8024
+
+ Fixed a name clash on Solaris that prevented the JIT
+ from being built.
+
+
+ OTP-18952 Application(s): erts
+ Related Id(s): PR-8025
+
+ Fix termcap detection on solaris.
+
+
+ OTP-18971 Application(s): erts
+ Related Id(s): GH-8044
+
+ Fix heap corruption bug that could cause runaway memory
+ consumption due to circular offheap list at process
+ exit. Other symptoms may also be possible. Bug exists
+ since OTP 25.0.
+
+
+ OTP-18979 Application(s): erts
+
+ Do not clear tracing in old module instance if load
+ fails with 'not_purged'.
+
+
+ OTP-18982 Application(s): erts
+
+ When exceeding the `max_heap_size` limit in a garbage
+ collection initiated by some bit syntax operations, the
+ process would not always terminate immediately.
+
+
+ OTP-19006 Application(s): erts
+
+ The code server could be hanging if a module with
+ on_load function was loaded at the same time as another
+ module was purged using erlang:purge_module directly.
+
+
+ OTP-19008 Application(s): erts
+ Related Id(s): GH-8119, PR-8201
+
+ A process optimized for parallel signal delivery could
+ under some circumstances lose wakeup information. That
+ is, the processes was not woken up to take care of the
+ signal, so the signal would not be taken care of until
+ the process was woken by another signal. Only processes
+ configured with message_queue_data set to off_heap
+ utilize this optimization.
+
+
+ OTP-19009 Application(s): erts
+ Related Id(s): PR-8181
+
+ Fix segfault when generating crashdump containing a fun
+ places in persistent_term storage.
+
+
+ OTP-19011 Application(s): erts
+
+ By default the JIT is disabled on Intel Macs, because
+ of annoying poups on macOS Sonoma. It is now possible
+ to explicitly enable the JIT on Intel Macs. Here is
+ how: ./configure --enable-jit
+
+
+ Full runtime dependencies of erts-14.2.3: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.2 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18910 Application(s): kernel
+ Related Id(s): GH-7924, PR-7933
+
+ Fix performance bug when using io:fread to read from
+ standard_io. This regression was introduced in OTP
+ 26.0.
+
+
+ OTP-18948 Application(s): kernel
+ Related Id(s): PR-8046
+
+ A bug in the code server could cause it to crash in
+ some concurrent scenarios. This bug was introduced in
+ 26.1.
+
+
+ OTP-18990 Application(s): kernel
+ Related Id(s): GH-8158
+
+ Fixed gen_udp:open/2 type spec to include already
+ supported module socket address types.
+
+
+ OTP-19007 Application(s): kernel, ssh
+ Related Id(s): ERIERL-1049
+
+ Fix reading of password for ssh client when in
+ user_interactive mode.
+
+
+ Full runtime dependencies of kernel-9.2.2: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- odbc-2.14.2 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The odbc-2.14.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-18926 Application(s): odbc
+
+ Use spec for API doc
+
+
+ Full runtime dependencies of odbc-2.14.2: erts-6.0, kernel-3.0,
+ stdlib-2.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1 -----------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18935 Application(s): public_key
+ Related Id(s): GH-8021
+
+ Hostname prefix with X number of dots should not be
+ accepted.
+
+
+ Full runtime dependencies of public_key-1.15.1: asn1-3.0, crypto-4.6,
+ erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.3 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18974 Application(s): ssh
+
+ With this change, acceptor_sup is not started for ssh
+ client as it is not needed in that role.
+
+
+ OTP-18986 Application(s): ssh
+
+ With this change, more secure algorithms are preferred
+ by ssh and documentation is updated to reflect that.
+
+
+ OTP-19002 Application(s): ssh
+ Related Id(s): ERIERL-1041
+
+ With this change, KEX strict terminal message is
+ emitted with debug verbosity.
+
+
+ OTP-19007 Application(s): kernel, ssh
+ Related Id(s): ERIERL-1049
+
+ Fix reading of password for ssh client when in
+ user_interactive mode.
+
+
+ Full runtime dependencies of ssh-5.1.3: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.2 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18890 Application(s): ssl
+ Related Id(s): GH-7911
+
+ ssl:prf/5, will start working instead of hanging in a
+ TLS-1.3 context if called appropriately. Note that the
+ implementation has changed and in OTP-27 a more
+ adequate API will be documented.
+
+
+ OTP-18909 Application(s): ssl
+ Related Id(s): GH-7968
+
+ Server name verification didn't work if a connection
+ was made with IP-address as a string.
+
+
+ OTP-18919 Application(s): ssl
+ Related Id(s): PR-7984
+
+ The fallback after "dh" ssl option was undefined was to
+ get "dh" from ssl options again. This is clearly wrong
+ and now changed to the documented fallback "dhfile" ssl
+ option.
+
+
+ OTP-18962 Application(s): ssl
+ Related Id(s): GH-8079
+
+ Correct default value selection for DTLS. Will only
+ affect users linked with really old version of
+ cryptolib library.
+
+
+ OTP-18991 Application(s): ssl
+
+ Adhere elliptic curves with RFC 8422 pre TLS-1.3, that
+ is Edwards curves are added to curves that can be used
+ for key exchange, and documentation and implementation
+ of eccs/0,1 are aligned.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18985 Application(s): ssl
+
+ Improve alert reason when ecdhe_rsa key_exchange does
+ not have any common curves to use
+
+
+ Full runtime dependencies of ssl-11.1.2: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18900 Application(s): stdlib
+ Related Id(s): GH-7934, PR-7945
+
+ The help texts shown by argparse will now display
+ sub-command arguments in the correct order.
+
+
+ OTP-18937 Application(s): stdlib
+
+ Clarified the argparse documentation regarding the
+ user-defined help template.
+
+
+ OTP-18953 Application(s): stdlib
+ Related Id(s): GH-8016, PR-8075
+
+ Fix shell expansion to not crash when expanding invalid
+ using invalid atoms.
+
+
+ Full runtime dependencies of stdlib-5.2.1: compiler-5.0, crypto-4.5,
+ erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- wx-2.4.1 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The wx-2.4.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18988 Application(s): wx
+ Related Id(s): PR-7750
+
+ Add option to silence wx depracation macros.
+
+
+ Full runtime dependencies of wx-2.4.1: erts-12.0, kernel-8.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.4.README.txt b/release-notes/OTP-26.2.4.README.txt
new file mode 100644
index 0000000..2b4c167
--- /dev/null
+++ b/release-notes/OTP-26.2.4.README.txt
@@ -0,0 +1,409 @@
+Patch Package: OTP 26.2.4
+Git Tag: OTP-26.2.4
+Date: 2024-04-12
+Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013,
+ OTP-19014, OTP-19015, OTP-19019, OTP-19021,
+ OTP-19031, OTP-19034, OTP-19035, OTP-19036,
+ OTP-19037, OTP-19038, OTP-19039, OTP-19040,
+ OTP-19041, OTP-19043, OTP-19044, OTP-19045,
+ OTP-19048, OTP-19049, OTP-19056, OTP-19058,
+ OTP-19059, OTP-19060
+Seq num: #8176, ERIERL-1043, ERIERL-1060, ERIERL-682,
+ GH-7897, GH-7928, GH-7951, GH-7955, GH-8120,
+ GH-8186, GH-8238, GH-8268, GH-8271, GH-8280,
+ GH-8291, GH-8316, GH-8338, OTP-17323,
+ PR-8220, PR-8248, PR-8275, PR-8277, PR-8284,
+ PR-8297, PR-8312, PR-8342, PR-8343
+System: OTP
+Release: 26
+Application: asn1-5.2.2, common_test-1.26.2,
+ compiler-8.4.3, crypto-5.4.2, debugger-5.3.4,
+ diameter-2.3.2, erts-14.2.4, kernel-9.2.3,
+ ssh-5.1.4, ssl-11.1.3, stdlib-5.2.2
+Predecessor: OTP 26.2.3
+
+ Check out the git tag OTP-26.2.4, 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.
+
+ ---------------------------------------------------------------------
+ --- asn1-5.2.2 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The asn1-5.2.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19039 Application(s): asn1
+ Related Id(s): GH-8291, PR-8297
+
+ An ASN.1 module that contains named BIT STRING values
+ would fail to compiled if both the BER and JER
+ back-ends were enabled.
+
+
+ Full runtime dependencies of asn1-5.2.2: erts-11.0, kernel-7.0,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.2 ----------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18960 Application(s): common_test
+
+ With this change, the last column in common_test
+ testcase log file is modified to now show the total sum
+ of each time in the table rows, and Elapsed Time which
+ is a clock time spent to run above functions. The
+ Elapsed Time is the same time that was previously a
+ total.
+
+
+ Full runtime dependencies of common_test-1.26.2: 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.4.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.4.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19019 Application(s): compiler
+
+ In rare circumstances, the compiler code generate
+ unsafe code for a bit syntax match.
+
+
+ OTP-19035 Application(s): compiler
+ Related Id(s): GH-8280, PR-8284
+
+ In rare circumstances, binary matches that were
+ supposed to succeed failed.
+
+
+ OTP-19045 Application(s): compiler
+ Related Id(s): GH-8316
+
+ Fixed a bug where a fun's environment could be
+ overridden by an argument if all of the following
+ conditions were met:
+
+ -- The fun was declared in the module that called it.
+
+ -- The fun's target was statically known.
+
+ -- The fun was called with a number of extra arguments
+ equal to the number of environment variables.
+
+
+ Full runtime dependencies of compiler-8.4.3: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4.2 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19038 Application(s): crypto
+ Related Id(s): GH-8271, PR-8277
+
+ Fix building with --enable-fips with OpenSSL 3 on
+ MacOS.
+
+
+ Full runtime dependencies of crypto-5.4.2: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- debugger-5.3.4 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The debugger-5.3.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18958 Application(s): debugger
+ Related Id(s): GH-8120, PR-8275
+
+ Guards with nested record expression could wrongly
+ evaluate to false.
+
+
+ Full runtime dependencies of debugger-5.3.4: compiler-8.0, erts-12.0,
+ kernel-8.0, stdlib-3.15, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- diameter-2.3.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.3.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19040 Application(s): diameter
+ Related Id(s): ERIERL-1060
+
+ Reduce the impact of calling service_info by not
+ counting the binaries (on the heap) info, This is done
+ by introducing an option, bins_info, which controls
+ this.
+
+
+ Full runtime dependencies of diameter-2.3.2: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.4 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18999 Application(s): erts
+ Related Id(s): GH-7928
+
+ Fixed CPU quota determination for cgroup version 2
+
+
+ OTP-19014 Application(s): erts
+
+ Fix faulty reduction counting in exiting process which
+ could cause it to do unnecessary yielding.
+
+
+ OTP-19015 Application(s): erts
+ Related Id(s): ERIERL-682
+
+ Fix bug in re:run/3 where if an invalid UTF-8 subject
+ was given, re:run could get stuck in an infinite loop.
+ Bug was introduced in Erlang/OTP 22.1.
+
+
+ OTP-19021 Application(s): erts
+ Related Id(s): GH-8238, PR-8248
+
+ On AArch64 (ARM64), Erlang code using bit syntax
+ construction compiled using Erlang/OTP 24 could crash
+ the runtime system when run in Erlang/OTP 26.2.3.
+
+
+ OTP-19034 Application(s): erts
+
+ Calling erlang:trace/3 with first argument one of
+ ports, processes, existing_ports, existing_processes,
+ existing or all, could cause emulator crash if a dirty
+ scheduler was executing a simultaneous trace action.
+
+
+ OTP-19036 Application(s): erts
+ Related Id(s): GH-8186
+
+ Fixed an integer overflow when the monotonic time unit
+ reported by the operating system was greater than 10
+ and lower than 100 microseconds.
+
+
+ OTP-19041 Application(s): erts
+
+ Fix option reuseaddr for FreeBSD 14
+
+
+ OTP-19043 Application(s): erts
+ Related Id(s): PR-8342
+
+ When a traced process executing on a dirty scheduler
+ received an exit signal, the dirty scheduler could use
+ the wrong thread specific data which could lead to a
+ crash.
+
+
+ OTP-19048 Application(s): erts
+ Related Id(s): PR-8343
+
+ Fixed a more or less harmless bug that caused time
+ correction of Erlang monotonic time to become slightly
+ off on Windows platforms when QueryPerformanceCounter()
+ was used as OS monotonic time source.
+
+ erlang:system_info(os_monotonic_time_source) now also
+ returns information about used resolution which not
+ always corresponds to the resolution of the OS
+ monotonic time source.
+
+
+ OTP-19049 Application(s): erts, kernel
+ Related Id(s): #8176
+
+ When using IPv6, classic gen_udp failed to add (group)
+ membership (drop was used instead).
+
+
+ OTP-19060 Application(s): erts
+
+ Fix bug on Windows where "Unknown event: 2" would be
+ printed to the console.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19044 Application(s): erts
+ Related Id(s): ERIERL-1043, PR-8342
+
+ Checks for monotonicity of monotonic time have been
+ improved so that Erlang and OS monotonic time are
+ checked separately.
+
+ A new configure argument
+ --enable-ensure-os-monotonic-time has also been added.
+ It enables functionality ensuring the monotonicity of
+ monotonic timestamps delivered by the OS. When a
+ non-monotonic timestamp is detected, it will be
+ replaced by the last delivered monotonic timestamp
+ before being used by Erlang's time functionality. Note
+ that you do not want to enable this unless the OS
+ monotonic time source on the system fails to produce
+ monotonic timestamps. This since ensuring the
+ monotonicity of OS monotonic timestamps will hurt
+ scalability and performance of the system.
+
+
+ OTP-19058 Application(s): erts
+
+ For severe errors, when the `socket` module terminates
+ the Erlang VM, now an erl_crash.dump is produced, to
+ facilitate post mortem debugging.
+
+
+ Full runtime dependencies of erts-14.2.4: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19049 Application(s): erts, kernel
+ Related Id(s): #8176
+
+ When using IPv6, classic gen_udp failed to add (group)
+ membership (drop was used instead).
+
+
+ OTP-19056 Application(s): kernel
+ Related Id(s): PR-8312, OTP-17323
+
+ The check in inet_res of the RD bit has been relaxed
+ slightly.
+
+
+ Full runtime dependencies of kernel-9.2.3: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19013 Application(s): ssh
+ Related Id(s): GH-7897, PR-8220
+
+ With this change, owner and group file attributes
+ decoding is fixed and results with value of integer
+ type.
+
+
+ Full runtime dependencies of ssh-5.1.4: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.3 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19037 Application(s): ssl
+ Related Id(s): GH-7951, GH-7955
+
+ Cleanup and close all connections in DTLS when the
+ listen socket owner dies.
+
+ Improved IPv6 handling in DTLS.
+
+
+ OTP-19059 Application(s): ssl
+ Related Id(s): GH-8338
+
+ Fixed a crash in dtls accept.
+
+
+ Full runtime dependencies of ssl-11.1.3: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.2 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19031 Application(s): stdlib
+ Related Id(s): GH-8268
+
+ Attempting to use the maybe construct in a macro
+ argument could crash the compiler.
+
+
+ Full runtime dependencies of stdlib-5.2.2: compiler-5.0, crypto-4.5,
+ erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.1.README.txt b/release-notes/OTP-26.2.5.1.README.txt
new file mode 100644
index 0000000..891093c
--- /dev/null
+++ b/release-notes/OTP-26.2.5.1.README.txt
@@ -0,0 +1,221 @@
+Patch Package: OTP 26.2.5.1
+Git Tag: OTP-26.2.5.1
+Date: 2024-06-25
+Trouble Report Id: OTP-19057, OTP-19063, OTP-19090, OTP-19091,
+ OTP-19092, OTP-19094, OTP-19100, OTP-19104,
+ OTP-19107, OTP-19109, OTP-19121, OTP-19123,
+ OTP-19140
+Seq num: ERIERL-870, GH-7483, GH-8376, GH-8482,
+ GH-8484, GH-8489, OTP-18835, PR-8345,
+ PR-8399, PR-8508, PR-8546
+System: OTP
+Release: 26
+Application: diameter-2.3.2.1, erts-14.2.5.1,
+ kernel-9.2.4.1, public_key-1.15.1.1,
+ ssh-5.1.4.1, ssl-11.1.4.1
+Predecessor: OTP 26.2.5
+
+ Check out the git tag OTP-26.2.5.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.
+
+ ---------------------------------------------------------------------
+ --- diameter-2.3.2.1 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.3.2.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19090 Application(s): diameter
+ Related Id(s): PR-8399
+
+ Pick peer can now also handle request of type
+ #diameter_packet{}.
+
+
+ Full runtime dependencies of diameter-2.3.2.1: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.1 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19063 Application(s): erts, kernel
+ Related Id(s): OTP-18835
+
+ A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
+ = 0 on Windows could cause a (case clause) crash if
+ data is immediately available.
+
+
+ OTP-19121 Application(s): erts
+ Related Id(s): GH-8484
+
+ When a port command crashed in the inet driver during
+ gen_tcp:send/2, a monitor 'DOWN' message could be left
+ lingering in the caller's mailbox. This has now been
+ fixed.
+
+
+ OTP-19123 Application(s): erts
+ Related Id(s): GH-8484, PR-8546
+
+ 'DOWN' messages originating from a monitored port,
+ contained the atom process instead of the atom port as
+ the third element when the exit reason was not an
+ immediate term.
+
+
+ Full runtime dependencies of erts-14.2.5.1: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19063 Application(s): erts, kernel
+ Related Id(s): OTP-18835
+
+ A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
+ = 0 on Windows could cause a (case clause) crash if
+ data is immediately available.
+
+
+ OTP-19104 Application(s): kernel
+ Related Id(s): ERIERL-870
+
+ Open a disk_log file and combining head_func with
+ rotate options did not work.
+
+
+ Full runtime dependencies of kernel-9.2.4.1: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1.1 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19100 Application(s): public_key
+ Related Id(s): GH-8482, PR-8508
+
+ Fix bug in dnsName constraint check, could cause valid
+ cert to be considered bad during path validation.
+
+
+ Full runtime dependencies of public_key-1.15.1.1: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.1 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19057 Application(s): ssh
+ Related Id(s): GH-7483, PR-8345
+
+ With this change, ssh client will automatically adjust
+ transfer window size for commands executed remotely
+ over SSH.
+
+
+ OTP-19109 Application(s): ssh
+ Related Id(s): PR-8345
+
+ With this change, race condition between connection
+ closing and automatic window adjustment is fixed.
+
+
+ Full runtime dependencies of ssh-5.1.4.1: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19094 Application(s): ssl
+ Related Id(s): GH-8489
+
+ Check for TLS-1.3 support should check minimum
+ requirements.
+
+
+ OTP-19107 Application(s): ssl
+ Related Id(s): GH-8376
+
+ If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2
+ negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2
+ hash and signature pairs for increased
+ interoperability.
+
+
+ OTP-19140 Application(s): ssl
+
+ TLS-1.3 negotiation now uses SNI based options
+ correctly instead of ignoring them.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19091 Application(s): ssl
+
+ Make it easier to distinguish between a invalid
+ signature and unsupported signature.
+
+
+ OTP-19092 Application(s): ssl
+ Related Id(s): GH-8482
+
+ Enhance ALERT logs to help understand what causes the
+ alert.
+
+
+ Full runtime dependencies of ssl-11.1.4.1: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Anupama Singh
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.10.README.txt b/release-notes/OTP-26.2.5.10.README.txt
new file mode 100644
index 0000000..5bb85e1
--- /dev/null
+++ b/release-notes/OTP-26.2.5.10.README.txt
@@ -0,0 +1,183 @@
+Patch Package: OTP 26.2.5.10
+Git Tag: OTP-26.2.5.10
+Date: 2025-03-28
+Trouble Report Id: OTP-19437, OTP-19469, OTP-19493, OTP-19501,
+ OTP-19527, OTP-19529, OTP-19543, OTP-19545,
+ OTP-19548, OTP-19559
+Seq num: #9172, CVE-2025-30211, ERIERL-1195, GH-9483,
+ GH-9554, OTP-19472, OTP-19544, PR-9443,
+ PR-9486, PR-9499, PR-9534, PR-9545, PR-9577,
+ PR-9587
+System: OTP
+Release: 26
+Application: erts-14.2.5.9, kernel-9.2.4.7,
+ mnesia-4.23.1.2, ssh-5.1.4.7, ssl-11.1.4.8
+Predecessor: OTP 26.2.5.9
+
+ Check out the git tag OTP-26.2.5.10, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.9 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.9 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19469 Application(s): erts, kernel
+ Related Id(s): #9172
+
+ Behavior for socket:recv/3 has been improved. The
+ behavior has also been clarified in the documentation.
+
+
+ OTP-19493 Application(s): erts
+ Related Id(s): PR-9443
+
+ Fix prim_inet:send/3 (and in extension
+ gen_tcp:send/2,3) to use the selective recive
+ optimization when waiting for a send acknowledgement.
+
+
+ OTP-19527 Application(s): erts
+ Related Id(s): PR-9577
+
+ Trace messages due to receive tracing could potentially
+ be delayed a very long time if the traced process
+ waited in a receive expression without clauses matching
+ on messages (timed wait), or just did not enter a
+ receive expression for a very long time.
+
+
+ OTP-19548 Application(s): erts
+ Related Id(s): OTP-19472
+
+ Improve the naming of the (internal) esock mutex(es).
+ It is now possible to configure (as in autoconf) the
+ use of simple names for the esock mutex(es).
+
+
+ Full runtime dependencies of erts-14.2.5.9: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.7 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.7 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19469 Application(s): erts, kernel
+ Related Id(s): #9172
+
+ Behavior for socket:recv/3 has been improved. The
+ behavior has also been clarified in the documentation.
+
+
+ OTP-19545 Application(s): kernel
+ Related Id(s): PR-9587, OTP-19544
+
+ An infinite loop in CNAME loop detection that can cause
+ Out Of Memory has been fixed. This affected CNAME
+ lookup with the internal DNS resolver.
+
+
+ Full runtime dependencies of kernel-9.2.4.7: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.23.1.2 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.23.1.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19437 Application(s): mnesia
+ Related Id(s): PR-9534
+
+ With this change mnesia will merge schema of tables
+ using external backends.
+
+
+ OTP-19501 Application(s): mnesia
+ Related Id(s): ERIERL-1195, PR-9499
+
+ Mnesia could fail to load a table, if one of the copy
+ holders was moved during startup.
+
+
+ Full runtime dependencies of mnesia-4.23.1.2: erts-9.0, kernel-5.3,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.7 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.7 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19543 Application(s): ssh
+ Related Id(s): CVE-2025-30211
+
+ Reception of malicious KEX init message does not result
+ with ssh daemon excessive memory usage.
+
+
+ OTP-19559 Application(s): ssh
+ Related Id(s): GH-9554, PR-9545
+
+ Call to ssh:daemon_replace_options does not crash when
+ argument is not a valid daemon ref.
+
+
+ Full runtime dependencies of ssh-5.1.4.7: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.8 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.8 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19529 Application(s): ssl
+ Related Id(s): GH-9483, PR-9486
+
+ Correct handling of unassigned signature algorithms to
+ properly ignore them instead of failing the handshake.
+
+
+ Full runtime dependencies of ssl-11.1.4.8: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Alexandre Rodrigues, Marc Worrell, Sergei Shuvatov, zmsone
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.11.README.txt b/release-notes/OTP-26.2.5.11.README.txt
new file mode 100644
index 0000000..3b799fe
--- /dev/null
+++ b/release-notes/OTP-26.2.5.11.README.txt
@@ -0,0 +1,77 @@
+Patch Package: OTP 26.2.5.11
+Git Tag: OTP-26.2.5.11
+Date: 2025-04-16
+Trouble Report Id: OTP-19496, OTP-19582, OTP-19595
+Seq num: CVE-2025-32433, GH-9190, PR-9463, PR-9679
+System: OTP
+Release: 26
+Application: ssh-5.1.4.8, xmerl-1.3.34.2
+Predecessor: OTP 26.2.5.10
+
+ Check out the git tag OTP-26.2.5.11, 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.
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.8 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.8 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19582 Application(s): ssh
+ Related Id(s): PR-9679
+
+ Reception of wrong Unicode does not cause unnecessary
+ processing. US-ASCII fields are not decoded as Unicode.
+
+
+ OTP-19595 Application(s): ssh
+ Related Id(s): CVE-2025-32433
+
+ SSH daemon disconnects upon receiving connection
+ protocol message for unauthenticated used.
+
+ Thanks to Fabian Bäumer, Marcel Maehren, Marcus
+ Brinkmann, Nurullah Erinola, Jörg Schwenk (Ruhr
+ University Bochum).
+
+
+ Full runtime dependencies of ssh-5.1.4.8: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- xmerl-1.3.34.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The xmerl-1.3.34.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19496 Application(s): xmerl
+ Related Id(s): GH-9190, PR-9463
+
+ Some old-style catch expressions in the
+ xmerl_sax_parser when the continuation fun was called
+ caused the stack to grow until all free memory was
+ exhausted. These parts have been rewritten so that the
+ parser now runs correctly without growing the stack. At
+ the same time all old-style catch expressions in xmerl
+ were replaced with try/catch.
+
+
+ Full runtime dependencies of xmerl-1.3.34.2: erts-6.0, kernel-8.4,
+ stdlib-2.5
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.2.README.txt b/release-notes/OTP-26.2.5.2.README.txt
new file mode 100644
index 0000000..cd19aee
--- /dev/null
+++ b/release-notes/OTP-26.2.5.2.README.txt
@@ -0,0 +1,125 @@
+Patch Package: OTP 26.2.5.2
+Git Tag: OTP-26.2.5.2
+Date: 2024-07-10
+Trouble Report Id: OTP-19143, OTP-19147, OTP-19152, OTP-19154,
+ OTP-19157
+Seq num: ERIERL-1043, ERIERL-1106, GH-8588, GH-8613,
+ PR-8619, PR-8627, PR-8638
+System: OTP
+Release: 26
+Application: crypto-5.4.2.1, erts-14.2.5.2, ssl-11.1.4.2,
+ stdlib-5.2.3.1
+Predecessor: OTP 26.2.5.1
+
+ Check out the git tag OTP-26.2.5.2, 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.
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4.2.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19143 Application(s): crypto
+
+ Add warning in documentation to avoid crypto:start/0 as
+ it does not work for FIPS mode. Use
+ application:start(crypto) instead.
+
+
+ Full runtime dependencies of crypto-5.4.2.1: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.2 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19147 Application(s): erts
+ Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619
+
+ When no time warp mode was enabled, a smaller Erlang
+ monotonic time could be read than a previously read
+ time, i.e., breaking the monotonic property. The
+ runtime system will abort when detecting an issue like
+ this since OTP 24.3.4.17 and OTP 25.0.
+
+ Up until OTP 25 no time warp mode is the default. As of
+ OTP 26 multi time warp mode is the default.
+
+
+ OTP-19154 Application(s): erts
+ Related Id(s): GH-8613, PR-8627
+
+ 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.
+
+
+ Full runtime dependencies of erts-14.2.5.2: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.2 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19152 Application(s): ssl
+ Related Id(s): GH-8588
+
+ When the default value for signature_algs is used,
+ default the signature_algs_cert to the default value +
+ rsa_pkcs1_sha1 to allow this algorithms for
+ certificates but not for the TLS protocol. This is for
+ better interoperability. If signature_algs is set
+ explicitly signature_algs_cert must also be set
+ explicitly if they should be different.
+
+
+ Full runtime dependencies of ssl-11.1.4.2: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.3.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.3.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19157 Application(s): stdlib
+ Related Id(s): PR-8638
+
+ Fixed a bug that caused the shell completion to crash
+ when keyword and tuple appeared on the same line.
+
+
+ Full runtime dependencies of stdlib-5.2.3.1: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.3.README.txt b/release-notes/OTP-26.2.5.3.README.txt
new file mode 100644
index 0000000..297f6f6
--- /dev/null
+++ b/release-notes/OTP-26.2.5.3.README.txt
@@ -0,0 +1,251 @@
+Patch Package: OTP 26.2.5.3
+Git Tag: OTP-26.2.5.3
+Date: 2024-09-05
+Trouble Report Id: OTP-17848, OTP-19119, OTP-19168, OTP-19170,
+ OTP-19173, OTP-19175, OTP-19178, OTP-19179,
+ OTP-19187, OTP-19205, OTP-19206, OTP-19213
+Seq num: ERIERL-1102, ERIERL-1108, GH-7746, GH-8454,
+ GH-8561, GH-8630, PR-8310, PR-8543, PR-8686,
+ PR-8690, PR-8763
+System: OTP
+Release: 26
+Application: compiler-8.4.3.1, diameter-2.3.2.2,
+ erts-14.2.5.3, ftp-1.2.1.1, kernel-9.2.4.2,
+ public_key-1.15.1.2, ssh-5.1.4.2,
+ ssl-11.1.4.3
+Predecessor: OTP 26.2.5.2
+
+ Check out the git tag OTP-26.2.5.3, 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.
+
+ ---------------------------------------------------------------------
+ --- compiler-8.4.3.1 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.4.3.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19168 Application(s): compiler
+ Related Id(s): GH-8630
+
+ Fixed a crash in an optimization pass relating to
+ appending binaries.
+
+
+ OTP-19178 Application(s): compiler
+ Related Id(s): PR-8686
+
+ Fixed a bug in the compiler's alias analysis pass that
+ could make it emit unsafe code.
+
+
+ Full runtime dependencies of compiler-8.4.3.1: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- diameter-2.3.2.2 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.3.2.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19206 Application(s): diameter
+ Related Id(s): ERIERL-1102
+
+ Stop service has been made more synchronous.
+
+
+ Full runtime dependencies of diameter-2.3.2.2: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.3 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19175 Application(s): erts, kernel, ssl
+ Related Id(s): GH-8561, PR-8690
+
+ A race in the kTLS flavour of SSL distribution has been
+ fixed so 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.
+
+
+ Full runtime dependencies of erts-14.2.5.3: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ftp-1.2.1.1 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ftp-1.2.1.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19119 Application(s): ftp
+ Related Id(s): GH-8454, PR-8543
+
+ Fix race condition that sometimes resulted in
+ ftp:recv_bin/2 returning ok instead of {ok, Data}.
+
+
+ Full runtime dependencies of ftp-1.2.1.1: erts-7.0, kernel-6.0,
+ runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19175 Application(s): erts, kernel, ssl
+ Related Id(s): GH-8561, PR-8690
+
+ A race in the kTLS flavour of SSL distribution has been
+ fixed so 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.
+
+
+ OTP-19205 Application(s): kernel
+
+ Fix 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.
+
+
+ OTP-19213 Application(s): kernel
+ Related Id(s): ERIERL-1108, PR-8763
+
+ Add the stdlib application parameters
+ shell_redraw_prompt_on_output which when set to false
+ disables redrawing of the shell prompt if any other
+ output is done.
+
+
+ Full runtime dependencies of kernel-9.2.4.2: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1.2 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19179 Application(s): public_key
+
+ For completeness handle rsa_pss implicit default value,
+ although this will probably not be commonly used as it
+ provides very weak security.
+
+
+ Full runtime dependencies of public_key-1.15.1.2: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.2 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19170 Application(s): ssh
+ Related Id(s): GH-7746
+
+ With this change, ssh daemon started with TCP port
+ number argument will re-try to obtain listen socket
+ before returning error to user.
+
+
+ OTP-19173 Application(s): ssh
+ Related Id(s): PR-8310
+
+ With this change, robustness is improved by monitoring
+ connection handler process before casting socket
+ control notification.
+
+
+ Full runtime dependencies of ssh-5.1.4.2: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19175 Application(s): erts, kernel, ssl
+ Related Id(s): GH-8561, PR-8690
+
+ A race in the kTLS flavour of SSL distribution has been
+ fixed so 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.
+
+
+ --- Improvements and New Features ---
+
+ OTP-17848 Application(s): ssl
+
+ Make sure all TLS-1.3 terminations are graceful
+ (previous TLS version terminations already are).
+
+
+ OTP-19187 Application(s): ssl
+
+ Include more information in logging of SNI (Server Name
+ Indication) mismatch error.
+
+
+ Full runtime dependencies of ssl-11.1.4.3: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Frej Drejhammar, jakob svenningsson
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.4.README.txt b/release-notes/OTP-26.2.5.4.README.txt
new file mode 100644
index 0000000..11d0393
--- /dev/null
+++ b/release-notes/OTP-26.2.5.4.README.txt
@@ -0,0 +1,467 @@
+Patch Package: OTP 26.2.5.4
+Git Tag: OTP-26.2.5.4
+Date: 2024-10-09
+Trouble Report Id: OTP-19124, OTP-19158, OTP-19212, OTP-19217,
+ OTP-19221, OTP-19223, OTP-19235, OTP-19236,
+ OTP-19238, OTP-19246, OTP-19247, OTP-19249,
+ OTP-19251, OTP-19252, OTP-19254, OTP-19256,
+ OTP-19257, OTP-19258, OTP-19265, OTP-19266,
+ OTP-19267, OTP-19269, OTP-19270, OTP-19274,
+ OTP-19284
+Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1104,
+ ERIERL-1127, ERIERL-1131, ERIERL-1133,
+ ERIERL-1134, ERIERL-1137, ERIERL-1138,
+ GH-6455, GH-7550, GH-8223, GH-8562, GH-8769,
+ GH-8783, GH-8835, GH-8848, GH-8853,
+ OTP-18520, OTP-19061, PR-8226, PR-8261,
+ PR-8762, PR-8766, PR-8780, PR-8788, PR-8800,
+ PR-8801, PR-8831, PR-8837, PR-8854, PR-8858,
+ PR-8866, PR-8876, PR-8890, PR-8892, PR-8897,
+ PR-8898, PR-8901, PR-8909
+System: OTP
+Release: 26
+Application: common_test-1.26.2.1, compiler-8.4.3.2,
+ crypto-5.4.2.2, erts-14.2.5.4, inets-9.1.0.1,
+ kernel-9.2.4.3, public_key-1.15.1.3,
+ ssh-5.1.4.3, ssl-11.1.4.4, stdlib-5.2.3.2,
+ xmerl-1.3.34.1
+Predecessor: OTP 26.2.5.3
+
+ Check out the git tag OTP-26.2.5.4, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-19158 Application(s): inets
+
+ With this change, HTTP client, when returning an
+ asynchronous request, now correctly takes into account
+ `OptionRequest - full_result`
+
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.2.1 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.2.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19252 Application(s): common_test
+ Related Id(s): PR-8858
+
+ With this change, HTML reports include jQuery version
+ 3.7.1.
+
+
+ OTP-19265 Application(s): common_test
+ Related Id(s): PR-8876
+
+ With this change, jquery and tablesorter licenses are
+ added to COPYRIGHT file. Also tablesorter is updated to
+ version 2.32.
+
+
+ OTP-19284 Application(s): common_test
+ Related Id(s): ERIERL-1093, PR-8909
+
+ Fixed a bug where the sum of testcases' execution time
+ in HTML logs was sometimes miscalculated, and the table
+ was not fully printed.
+
+
+ Full runtime dependencies of common_test-1.26.2.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.4.3.2 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The compiler-8.4.3.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19270 Application(s): compiler
+ Related Id(s): GH-8783, PR-8898
+
+ Fixed a bug where bogus code was generated for
+ consecutive calls to erlang:setelement/2, potentially
+ crashing the emulator.
+
+
+ Full runtime dependencies of compiler-8.4.3.2: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4.2.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4.2.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19212 Application(s): crypto
+ Related Id(s): GH-8562, PR-8762
+
+ crypto built with --enable-fips will now accept an
+ OpenSSL 3 lib without fips provider as long as fips
+ mode is not enabled.
+
+
+ OTP-19223 Application(s): crypto
+ Related Id(s): GH-8769, PR-8800
+
+ crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro
+ with installed FIPS support.
+
+
+ Full runtime dependencies of crypto-5.4.2.2: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.4 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19235 Application(s): erts, kernel
+ Related Id(s): ERIERL-1133, PR-8837
+
+ A bug has been fixed where receiving an SCTP message
+ with `gen_sctp` could waste the first fragments of a
+ message and only deliver the last fragment.
+
+ This happened with low probability when the OS signaled
+ that the socket was ready for reading in combination
+ with an internal time-out retry.
+
+ A bug has been fixed with a lingering time-out from
+ after an SCTP connect that could stop the flow of
+ incoming messages on an active `gen_tcp` socket.
+
+
+ OTP-19251 Application(s): erts
+ Related Id(s): GH-8853
+
+ On Windows, successive failed socket calls caused
+ socket to become "uninitialized".
+
+
+ OTP-19254 Application(s): erts
+ Related Id(s): GH-8848
+
+ The socket framework fails to start on a IPv6-only
+ Windows machine.
+
+
+ OTP-19258 Application(s): erts, kernel
+ Related Id(s): ERIERL-1134, OTP-19061
+
+ An boolean option `non_block_send` for SCTP, has ben
+ added to be able to achieve the old behaviour to avoid
+ blocking send operations by passing the OS network
+ stack error message (`{error,eagain}` through.
+
+
+ OTP-19267 Application(s): erts
+ Related Id(s): ERIERL-1138, GH-6455, PR-8892, OTP-18520
+
+ The call `gen_tcp:send/2` could hang indefinitely
+ despite having set the `send_timeout` option for the
+ following unfortunate combination of circumstances:
+
+ * The socket has to be in passive mode. * All output
+ buffers had to be filled util the `high_watermark` was
+ hit, causing the `gen_tcp:send/2` operation to block. *
+ While the send operation was blocked, a
+ `gen_tcp:recv/2,3` call had to be done from a different
+ process. It had to block, waiting for data for a while
+ before completing the operation, and the received
+ packet had to fill at least 75% of the receive buffer.
+
+ Under these circumstances he information that a send
+ operation was waiting got lost, so the send operation
+ that blocked in the first placed would never return.
+ The data it had would be sent, though, and send
+ operations from other processes, still work.
+
+ This bug has been fixed.
+
+
+ OTP-19269 Application(s): erts
+ Related Id(s): GH-8835, PR-8897
+
+ Fixed beam crash that could happen if resetting
+ call_time or call_memory trace counters of a function
+ while it is called. Bug exists since OTP R16.
+
+
+ Full runtime dependencies of erts-14.2.5.4: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-9.1.0.1 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-9.1.0.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19158 Application(s): inets
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change, HTTP client, when returning an
+ asynchronous request, now correctly takes into account
+ `OptionRequest - full_result`
+
+
+ OTP-19221 Application(s): inets
+ Related Id(s): ERIERL-1091, PR-8788, PR-8801
+
+ With this change, synchronous httpc:request now
+ timeouts after `Timeout` specified in `HttpOption
+ {timeout, Timeout}`
+
+
+ Full runtime dependencies of inets-9.1.0.1: 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-5.0
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19235 Application(s): erts, kernel
+ Related Id(s): ERIERL-1133, PR-8837
+
+ A bug has been fixed where receiving an SCTP message
+ with `gen_sctp` could waste the first fragments of a
+ message and only deliver the last fragment.
+
+ This happened with low probability when the OS signaled
+ that the socket was ready for reading in combination
+ with an internal time-out retry.
+
+ A bug has been fixed with a lingering time-out from
+ after an SCTP connect that could stop the flow of
+ incoming messages on an active `gen_tcp` socket.
+
+
+ OTP-19258 Application(s): erts, kernel
+ Related Id(s): ERIERL-1134, OTP-19061
+
+ An boolean option `non_block_send` for SCTP, has ben
+ added to be able to achieve the old behaviour to avoid
+ blocking send operations by passing the OS network
+ stack error message (`{error,eagain}` through.
+
+
+ Full runtime dependencies of kernel-9.2.4.3: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1.3 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1.3 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19238 Application(s): public_key
+ Related Id(s): PR-8831
+
+ Do not hide crypto badarg reason, this error handling
+ enhancement facilitates debugging. These kind of
+ runtime errors are not documented and should never be
+ relied on for matching, they are intended for catching
+ input errors early.
+
+
+ Full runtime dependencies of public_key-1.15.1.3: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.3 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19124 Application(s): ssh
+ Related Id(s): GH-7550, PR-8766
+
+ With this change, a race condition is removed from ssh
+ client connection setup procedure.
+
+
+ OTP-19246 Application(s): ssh
+ Related Id(s): GH-8223, PR-8854
+
+ With this change, ssh:connect is not affected by
+ presence of EXIT message in queue.
+
+
+ OTP-19247 Application(s): ssh
+ Related Id(s): PR-8226
+
+ With this change, ssh appends {active, false} option
+ after socket options received from user - so that false
+ value is always used.
+
+
+ Full runtime dependencies of ssh-5.1.4.3: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.4 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19236 Application(s): ssl
+ Related Id(s): PR-8261
+
+ Starting from TLS-1.3 some server handshake alerts
+ might arrive after ssl:connection/2,3,4 has returned.
+ If the socket is in active mode the controlling process
+ will get the alert message, but passive sockets would
+ only get {error, closed} on next call to ssl:recv/2,3
+ or ssl/setopts/2. Passive sockets calls will now return
+ {error, error_alert()} instead.
+
+
+ OTP-19249 Application(s): ssl
+ Related Id(s): ERIERL-1137, PR-8866
+
+ Refactor trying to also make some optimizations
+ introduced a bug in signature algorithms checks in
+ OTP-26.2.1. This could manifest itself in not being
+ able to negotiate connections using certificates
+ needing to use some TLS-1.2 compatibility legacy
+ signature schemes.
+
+
+ OTP-19257 Application(s): ssl
+ Related Id(s): ERIERL-1131
+
+ Servers configured to support only version (pre
+ TLS-1.2) should ignore hello version extension, as it
+ is an unknown extension to them, this will result in
+ that new clients that do not support the old server
+ version will get an insufficient security alert from
+ the server and not a protocol version alert, this is
+ consistent with how old servers not able to support
+ higher protocol versions work.
+
+
+ OTP-19274 Application(s): ssl
+ Related Id(s): PR-8901
+
+ Correct timeout handling for termination code run for
+ own alerts, so that intended timeout is used instead of
+ falling back to OS TCP-stack timeout that is
+ unreasonably long on some platforms.
+
+
+ Full runtime dependencies of ssl-11.1.4.4: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.3.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.3.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19256 Application(s): stdlib
+ Related Id(s): PR-8780
+
+ With this change, shutdown procedure handles a race
+ condition between supervisor executing a shutdown and
+ child process termination from other reason.
+
+
+ OTP-19266 Application(s): stdlib
+ Related Id(s): ERIERL-1127, PR-8890
+
+ With this change, uri_string:normalize assumes empty
+ path (do not crash) when no path is provided in the URI
+ map.
+
+
+ Full runtime dependencies of stdlib-5.2.3.2: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- xmerl-1.3.34.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The xmerl-1.3.34.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19217 Application(s): xmerl
+ Related Id(s): ERIERL-1104
+
+ 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.
+
+
+ Full runtime dependencies of xmerl-1.3.34.1: erts-6.0, kernel-3.0,
+ stdlib-2.5
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Jakub Witczak
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.5.README.txt b/release-notes/OTP-26.2.5.5.README.txt
new file mode 100644
index 0000000..218ae48
--- /dev/null
+++ b/release-notes/OTP-26.2.5.5.README.txt
@@ -0,0 +1,143 @@
+Patch Package: OTP 26.2.5.5
+Git Tag: OTP-26.2.5.5
+Date: 2024-11-01
+Trouble Report Id: OTP-19293, OTP-19311, OTP-19316, OTP-19325,
+ OTP-19326, OTP-19329
+Seq num: ERIERL-1139, ERIERL-1147, GH-8929, GH-8971,
+ GH-8997, PR-8924, PR-8931, PR-8979, PR-8980,
+ PR-8995, PR-9001, PR-9002
+System: OTP
+Release: 26
+Application: common_test-1.26.2.2, crypto-5.4.2.3,
+ ssh-5.1.4.4, ssl-11.1.4.5
+Predecessor: OTP 26.2.5.4
+
+ Check out the git tag OTP-26.2.5.5, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.2.2 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.2.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-19293 Application(s): common_test
+ Related Id(s): ERIERL-1139, PR-8924, PR-8931
+
+ With this change, prefix option can be specified in
+ cth_conn_log option list. Option allows to specify how
+ much of additional information is added in raw log
+ output.
+
+
+ Full runtime dependencies of common_test-1.26.2.2: 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
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4.2.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4.2.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19316 Application(s): crypto
+ Related Id(s): GH-8971, PR-8979
+
+ Fixed bug that could cause blocking scheduler threads
+ in crypto:supports(curves) if called the first time by
+ more than one Erlang process. Bug exists only in
+ OTP-26.2.5.4.
+
+
+ OTP-19329 Application(s): crypto
+ Related Id(s): GH-8997, PR-9002
+
+ Fixed crypto:hash_final/1 for digest types shake128 and
+ shake256 when using OpenSSL 3.4 or newer.
+
+
+ Full runtime dependencies of crypto-5.4.2.3: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.4 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19326 Application(s): ssh
+ Related Id(s): GH-8929, PR-8995
+
+ With this change, ssh connection does not crash upon
+ receiving exit-signal message for an already terminated
+ channel.
+
+
+ Full runtime dependencies of ssh-5.1.4.4: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.5 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.5 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19311 Application(s): ssl
+ Related Id(s): PR-8980
+
+ Avoid generating an internal alert for case that should
+ have been an orderly shutdown by the supervisor.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19325 Application(s): ssl
+ Related Id(s): ERIERL-1147, PR-9001
+
+ Back port certificate_authorities option for TLS-1.3
+ servers to pre TLS-1.3 servers to enable them to
+ disable the sending of certificate authorities in their
+ certificate request. This will have same affect as the
+ the TLS-1.3 server option although it is handled by a
+ different mechanism in these versions, where the
+ functionality is described to be more of a guidance,
+ although some pre TLS clients have proven to make it
+ mandatory as in TLS-1.3 extension handling.
+
+
+ Full runtime dependencies of ssl-11.1.4.5: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ zmstone
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.6.README.txt b/release-notes/OTP-26.2.5.6.README.txt
new file mode 100644
index 0000000..13aada9
--- /dev/null
+++ b/release-notes/OTP-26.2.5.6.README.txt
@@ -0,0 +1,261 @@
+Patch Package: OTP 26.2.5.6
+Git Tag: OTP-26.2.5.6
+Date: 2024-12-05
+Trouble Report Id: OTP-19240, OTP-19330, OTP-19332, OTP-19350,
+ OTP-19352, OTP-19357, OTP-19365, OTP-19366,
+ OTP-19368, OTP-19379, OTP-19380
+Seq num: #8989, CVE-2024-53846, ERIERL-1134,
+ ERIERL-1154, ERIERL-1157, GH-8755, GH-8829,
+ GH-8983, GH-9009, OTP-19061, OTP-19240,
+ OTP-19532, PR-8840, PR-8878, PR-9008,
+ PR-9053, PR-9080, PR-9093, PR-9130
+System: OTP
+Release: 26
+Application: common_test-1.26.2.3, erts-14.2.5.5,
+ inets-9.1.0.2, kernel-9.2.4.4,
+ mnesia-4.23.1.1, public_key-1.15.1.4,
+ ssl-11.1.4.6, stdlib-5.2.3.3
+Predecessor: OTP 26.2.5.5
+
+ Check out the git tag OTP-26.2.5.6, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.2.3 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.2.3 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19365 Application(s): common_test
+ Related Id(s): ERIERL-1157, PR-9080
+
+ With this change, cth_surefire hook module handles
+ group path reduction for a skipped group. This fixes a
+ bug manifesting with improper group path for a group
+ executed after a group which was skipped.
+
+
+ Full runtime dependencies of common_test-1.26.2.3: 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
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.5 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.5 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19330 Application(s): erts
+ Related Id(s): GH-8983, PR-9008
+
+ Fix lock order violation if a NIF monitor down callback
+ calls enif_whereis_pid. Would cause debug emulator to
+ crash but could potentially lead to deadlocks in
+ optimized emulator.
+
+
+ OTP-19332 Application(s): erts, kernel
+ Related Id(s): #8989
+
+ gen_udp:send on domain local can leak inet_reply
+ messages.
+
+
+ OTP-19366 Application(s): erts, kernel
+ Related Id(s): ERIERL-1134, OTP-19061
+
+ net:getifaddrs does not properly report the running
+ flag on windows.
+
+
+ Full runtime dependencies of erts-14.2.5.5: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-9.1.0.2 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-9.1.0.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19379 Application(s): inets
+ Related Id(s): GH-8829, PR-8878
+
+ Fixed a bug where calling httpc:set_options/2 when one
+ of keys: ipfamily or unix_socket, was not present,
+ would cause the other value to get overriden by the
+ default value. The validation of these options was also
+ improved.
+
+
+ Full runtime dependencies of inets-9.1.0.2: 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-5.0
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.4 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19332 Application(s): erts, kernel
+ Related Id(s): #8989
+
+ gen_udp:send on domain local can leak inet_reply
+ messages.
+
+
+ OTP-19357 Application(s): kernel
+
+ Failure to create an UDP IPv6 socket when inet_backend
+ = socket with certain IPv6 socket options.
+
+
+ OTP-19366 Application(s): erts, kernel
+ Related Id(s): ERIERL-1134, OTP-19061
+
+ net:getifaddrs does not properly report the running
+ flag on windows.
+
+
+ Full runtime dependencies of kernel-9.2.4.4: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.23.1.1 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.23.1.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19368 Application(s): mnesia
+ Related Id(s): ERIERL-1154, PR-9093
+
+ Mnesia could crash if table was deleted during
+ checkpoint initialization.
+
+
+ Full runtime dependencies of mnesia-4.23.1.1: erts-9.0, kernel-5.3,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1.4 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1.4 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19240 Application(s): public_key
+ Related Id(s): PR-8840, OTP-19532
+
+ If both ext-key-usage and key-usage are defined for a
+ certificate it should be checked that these usages are
+ consistent with each other. This will have the affect
+ that such certificates where the ext-key-usages is
+ marked as critical and the usages is consistent with
+ the key-use it can be considered valid without
+ mandatory application specific checks for the
+ ext-key-useage extension.
+
+
+ OTP-19350 Application(s): public_key
+ Related Id(s): GH-9009, PR-9053
+
+ Handle decoding of EDDSA key properly, when decoding a
+ PEM file that contains only the public EDDSA key.
+
+
+ Full runtime dependencies of public_key-1.15.1.4: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.6 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.6 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19352 Application(s): ssl
+ Related Id(s): PR-9130, CVE-2024-53846, OTP-19240
+
+ If present, extended key-usage TLS (SSL) role check
+ (pk-clientAuth, pk-serverAuth) should always be
+ performed for peer-cert. An intermediate CA cert may
+ relax the requirement if AnyExtendedKeyUsage purpose is
+ present.
+
+ In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these
+ requirements became too relaxed. There where two
+ problems, firstly the peer cert extension was only
+ checked if it was marked critical, and secondly the CA
+ cert check did not assert the relaxed
+ AnyExtendedKeyUsage purpose.
+
+ This could result in that certificates might be misused
+ for purposes not intended by the certificate authority.
+
+ Thanks to Bryan Paxton for reporting the issue.
+
+
+ Full runtime dependencies of ssl-11.1.4.6: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.3.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.3.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19380 Application(s): stdlib
+ Related Id(s): GH-8755
+
+ Fixed an error in uri_string:percent_decode spec
+
+
+ Full runtime dependencies of stdlib-5.2.3.3: compiler-5.0,
+ crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Marko Mindek
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.7.README.txt b/release-notes/OTP-26.2.5.7.README.txt
new file mode 100644
index 0000000..0385331
--- /dev/null
+++ b/release-notes/OTP-26.2.5.7.README.txt
@@ -0,0 +1,187 @@
+Patch Package: OTP 26.2.5.7
+Git Tag: OTP-26.2.5.7
+Date: 2025-01-27
+Trouble Report Id: OTP-19385, OTP-19388, OTP-19392, OTP-19407,
+ OTP-19411, OTP-19418, OTP-19435, OTP-19439,
+ OTP-19445
+Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1174,
+ ERIERL-1183, GH-9065, GH-9163, GH-9177,
+ GH-9211, PR-9139, PR-9155, PR-9156, PR-9161,
+ PR-9234, PR-9273, PR-9274, PR-9309, PR-9314,
+ PR-9322
+System: OTP
+Release: 26
+Application: common_test-1.26.2.4, dialyzer-5.1.3.1,
+ erts-14.2.5.6, kernel-9.2.4.5, ssh-5.1.4.5,
+ ssl-11.1.4.7
+Predecessor: OTP 26.2.5.6
+
+ Check out the git tag OTP-26.2.5.7, 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.
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26.2.4 --------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26.2.4 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19385 Application(s): common_test
+ Related Id(s): ERIERL-1166, PR-9155, PR-9156
+
+ Common test will now not crash when running tests with
+ OTP-26 and earlier, while having previous test results
+ from OTP-27.
+
+
+ Full runtime dependencies of common_test-1.26.2.4: 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
+
+
+ ---------------------------------------------------------------------
+ --- dialyzer-5.1.3.1 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The dialyzer-5.1.3.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19439 Application(s): dialyzer
+ Related Id(s): ERIERL-1183, PR-9314
+
+ Fixed a crash caused by the use of opaque types.
+
+
+ Full runtime dependencies of dialyzer-5.1.3.1: compiler-8.0,
+ erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.6 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.6 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19407 Application(s): erts
+ Related Id(s): GH-9211, PR-9234
+
+ Fixed configure tests for GCC 14
+
+
+ Full runtime dependencies of erts-14.2.5.6: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.5 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.5 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19418 Application(s): kernel
+ Related Id(s): GH-9163, PR-9274
+
+ Fix bug where log printouts would go missing when
+ application_controller is stopping while log messages
+ are being sent.
+
+ This bug was introduced by OTP-19078 in Erlang/OTP
+ 26.2.5.
+
+
+ Full runtime dependencies of kernel-9.2.4.5: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.5 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.5 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19388 Application(s): ssh
+ Related Id(s): ERIERL-1165, PR-9161
+
+ With this change, type specs for
+ ssh:connection_info/1,2 functions are fixed so they
+ include {error, term()} return value.
+
+
+ OTP-19392 Application(s): ssh
+ Related Id(s): GH-9065, PR-9139
+
+ With this change, ssh client accepts a banner sent
+ during processing keyboard interactive user
+ authentication.
+
+
+ OTP-19435 Application(s): ssh
+ Related Id(s): PR-9309
+
+ With this change, large sftp transfers does not hang.
+ Redundant window adjustment are not requested.
+
+
+ Full runtime dependencies of ssh-5.1.4.5: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4.7 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4.7 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19411 Application(s): ssl
+ Related Id(s): ERIERL-1174, PR-9273
+
+ An initiated handshake should always be closed with an
+ alert, some corner cases have been fixed so that this
+ should always be the case.
+
+
+ OTP-19445 Application(s): ssl
+ Related Id(s): GH-9177, PR-9322
+
+ Correct option handling to work properly for paused
+ handshaking. Could result in unwanted alerts or or
+ error messages.
+
+
+ Full runtime dependencies of ssl-11.1.4.7: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Alexandre Rodrigues, Luke Bakken
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.8.README.txt b/release-notes/OTP-26.2.5.8.README.txt
new file mode 100644
index 0000000..a01d8f8
--- /dev/null
+++ b/release-notes/OTP-26.2.5.8.README.txt
@@ -0,0 +1,84 @@
+Patch Package: OTP 26.2.5.8
+Git Tag: OTP-26.2.5.8
+Date: 2025-02-12
+Trouble Report Id: OTP-19240, OTP-19381, OTP-19462
+Seq num: ERIERL-1177, GH-9112, GH-9117, GH-9208,
+ PR-9286, PR-9372, PR-9377
+System: OTP
+Release: 26
+Application: erts-14.2.5.7, kernel-9.2.4.6,
+ public_key-1.15.1.5
+Predecessor: OTP 26.2.5.7
+
+ Check out the git tag OTP-26.2.5.8, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.7 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.7 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19462 Application(s): erts
+ Related Id(s): ERIERL-1177, PR-9372
+
+ Disabled an unsafe runtime optimization in binary
+ construction that caused silent memory corruption.
+
+
+ Full runtime dependencies of erts-14.2.5.7: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4.6 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4.6 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19381 Application(s): kernel
+ Related Id(s): GH-9112, GH-9117, PR-9377
+
+ Fixed a couple of bugs that could make global's
+ internal state inconsistent when a connection was
+ reconnected.
+
+
+ Full runtime dependencies of kernel-9.2.4.6: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15.1.5 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15.1.5 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19240 Application(s): public_key
+ Related Id(s): GH-9208, PR-9286
+
+ Consider keyCertSign to compatible with extended key
+ usage for TLS client/server auth in CAs, adhere to wide
+ spread implementations
+
+
+ Full runtime dependencies of public_key-1.15.1.5: asn1-3.0,
+ crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.9.README.txt b/release-notes/OTP-26.2.5.9.README.txt
new file mode 100644
index 0000000..cc749c1
--- /dev/null
+++ b/release-notes/OTP-26.2.5.9.README.txt
@@ -0,0 +1,69 @@
+Patch Package: OTP 26.2.5.9
+Git Tag: OTP-26.2.5.9
+Date: 2025-02-20
+Trouble Report Id: OTP-19466, OTP-19495
+Seq num: CVE-2025-26618, ERIERL-1173, GH-8208, PR-8209
+System: OTP
+Release: 26
+Application: erts-14.2.5.8, ssh-5.1.4.6
+Predecessor: OTP 26.2.5.8
+
+ Check out the git tag OTP-26.2.5.9, 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.
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5.8 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5.8 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19495 Application(s): erts
+ Related Id(s): GH-8208, PR-8209
+
+ Fixed BEAM crash when a custom thread sends a large map
+ (>128 keys) externally encoded with for example
+ erl_drv_send_term().
+
+
+ Full runtime dependencies of erts-14.2.5.8: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1.4.6 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1.4.6 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19466 Application(s): ssh
+ Related Id(s): ERIERL-1173, CVE-2025-26618
+
+ SFTP packets exceeding max packet size are not
+ processed and dropped.
+
+
+ Full runtime dependencies of ssh-5.1.4.6: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- Thanks to -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ Simon Cornish
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.5.README.txt b/release-notes/OTP-26.2.5.README.txt
new file mode 100644
index 0000000..5f3ce63
--- /dev/null
+++ b/release-notes/OTP-26.2.5.README.txt
@@ -0,0 +1,209 @@
+Patch Package: OTP 26.2.5
+Git Tag: OTP-26.2.5
+Date: 2024-05-02
+Trouble Report Id: OTP-19061, OTP-19062, OTP-19065, OTP-19067,
+ OTP-19068, OTP-19069, OTP-19070, OTP-19071,
+ OTP-19072, OTP-19076, OTP-19078
+Seq num: ERIERL-1073, GH-8356, GH-8383, GH-8385,
+ OTP-18999, PR-8367, PR-8379, PR-8380,
+ PR-8391, PR-8422
+System: OTP
+Release: 26
+Application: dialyzer-5.1.3, erts-14.2.5, kernel-9.2.4,
+ mnesia-4.23.1, ssl-11.1.4, stdlib-5.2.3
+Predecessor: OTP 26.2.4
+
+ Check out the git tag OTP-26.2.5, 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 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-19069 Application(s): erts
+
+ Added a warning to open_port/2 regarding the BadBatBut
+ attack affecting Windows.
+
+
+ ---------------------------------------------------------------------
+ --- dialyzer-5.1.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The dialyzer-5.1.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19068 Application(s): dialyzer
+ Related Id(s): GH-8383
+
+ Fixed an issue with bitstring type inference on
+ segments following UTF-8/16/32 segments.
+
+
+ Full runtime dependencies of dialyzer-5.1.3: compiler-8.0, erts-12.0,
+ kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2.5 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2.5 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19061 Application(s): erts
+
+ gen_sctp:send/3,4 now waits for the send to complete
+ instead of returning an OS result such as
+ {error, ewouldblock}.
+
+
+ OTP-19070 Application(s): erts
+ Related Id(s): GH-8385
+
+ ETS functions did not properly handle keys containing
+ maps, sometimes matching too many or too few objects.
+
+
+ OTP-19071 Application(s): erts
+ Related Id(s): PR-8380, OTP-18999
+
+ Fix CPU quota determination for cgroups.
+
+ The bug was introduced through OTP-18999.
+
+
+ --- Improvements and New Features ---
+
+ OTP-19069 Application(s): erts
+
+ *** HIGHLIGHT ***
+
+ Added a warning to open_port/2 regarding the BadBatBut
+ attack affecting Windows.
+
+
+ Full runtime dependencies of erts-14.2.5: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2.4 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19072 Application(s): kernel, stdlib
+ Related Id(s): PR-8391
+
+ Fix the shell Job Control Mode to not crash when typing
+ TAB or CTRL+R.
+
+
+ OTP-19078 Application(s): kernel
+ Related Id(s): PR-8422
+
+ Fix calls to blocking application APIs to throw an
+ exception with reason terminating if called when the
+ system is terminating.
+
+ This is done in order to avoid deadlocks during
+ shutdown or restart.
+
+
+ Full runtime dependencies of kernel-9.2.4: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.23.1 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.23.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19076 Application(s): mnesia
+ Related Id(s): ERIERL-1073
+
+ Mnesia could crash during startup if del_table_copy/2
+ and add_table_copy/3 was invoked when the table was
+ loading.
+
+
+ Full runtime dependencies of mnesia-4.23.1: erts-9.0, kernel-5.3,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1.4 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19065 Application(s): ssl
+ Related Id(s): GH-8356, PR-8367
+
+ Fix certificate authorities check so that CA closest to
+ peer is not lost. It could manifest itself in a failed
+ connection as the client failed to realize it had a
+ valid certificate chain to send to the server.
+
+
+ OTP-19067 Application(s): ssl
+ Related Id(s): PR-8379
+
+ ssl:signature_algs/2 did not list some legacy algorithm
+ schemes correctly when listing all algorithms
+ available.
+
+
+ Full runtime dependencies of ssl-11.1.4: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-19062 Application(s): stdlib
+
+ Fix shell expansion of -type a() :: $a. in the erlang
+ shell.
+
+
+ OTP-19072 Application(s): kernel, stdlib
+ Related Id(s): PR-8391
+
+ Fix the shell Job Control Mode to not crash when typing
+ TAB or CTRL+R.
+
+
+ Full runtime dependencies of stdlib-5.2.3: compiler-5.0, crypto-4.5,
+ erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-26.2.README.txt b/release-notes/OTP-26.2.README.txt
new file mode 100644
index 0000000..8a6328a
--- /dev/null
+++ b/release-notes/OTP-26.2.README.txt
@@ -0,0 +1,1134 @@
+Patch Package: OTP 26.2
+Git Tag: OTP-26.2
+Date: 2023-12-13
+Trouble Report Id: OTP-16607, OTP-17844, OTP-18728, OTP-18730,
+ OTP-18735, OTP-18739, OTP-18749, OTP-18751,
+ OTP-18760, OTP-18762, OTP-18764, OTP-18765,
+ OTP-18767, OTP-18771, OTP-18772, OTP-18775,
+ OTP-18776, OTP-18777, OTP-18782, OTP-18798,
+ OTP-18799, OTP-18800, OTP-18802, OTP-18810,
+ OTP-18811, OTP-18812, OTP-18814, OTP-18815,
+ OTP-18817, OTP-18818, OTP-18821, OTP-18822,
+ OTP-18823, OTP-18824, OTP-18826, OTP-18827,
+ OTP-18828, OTP-18829, OTP-18830, OTP-18832,
+ OTP-18833, OTP-18836, OTP-18838, OTP-18839,
+ OTP-18840, OTP-18841, OTP-18842, OTP-18843,
+ OTP-18844, OTP-18850, OTP-18853, OTP-18854,
+ OTP-18855, OTP-18857, OTP-18858, OTP-18861,
+ OTP-18866, OTP-18867, OTP-18868, OTP-18869,
+ OTP-18871, OTP-18872, OTP-18873, OTP-18877,
+ OTP-18880, OTP-18882, OTP-18883, OTP-18885,
+ OTP-18886, OTP-18888, OTP-18891, OTP-18893,
+ OTP-18895, OTP-18896, OTP-18899
+Seq num: ERIERL-738, ERIERL-994, ERIERL-997, GH-7515,
+ GH-7548, GH-7571, GH-7580, GH-7591, GH-7608,
+ GH-7621, GH-7625, GH-7676, GH-7685, GH-7735,
+ GH-7736, GH-7766, GH-7795, GH-7801, GH-7827,
+ GH-7832, GH-7834, GH-7838, GH-7875, GH-7890,
+ GH-7914
+System: OTP
+Release: 26
+Application: asn1-5.2.1, common_test-1.26, crypto-5.4,
+ debugger-5.3.3, dialyzer-5.1.2,
+ diameter-2.3.1, edoc-1.2.1, eldap-1.2.12,
+ erl_docgen-1.5.2, erl_interface-5.5,
+ erts-14.2, eunit-2.9, ftp-1.2.1, inets-9.1,
+ kernel-9.2, mnesia-4.23, os_mon-2.9.1,
+ public_key-1.15, runtime_tools-2.0.1,
+ ssh-5.1, ssl-11.1, stdlib-5.2, tftp-1.1.1,
+ wx-2.4, xmerl-1.3.34
+Predecessor: OTP 26.1.2
+
+ Check out the git tag OTP-26.2, 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.
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-18728 Application(s): common_test
+ Related Id(s): PR-7487, PR-7674
+
+ With this change, common_test returns an error when
+ suite with a badly defined group is executed.
+
+
+ ---------------------------------------------------------------------
+ --- OTP-26.2 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18840 Application(s): otp, stdlib
+ Related Id(s): PR-7629
+
+ The removal of the deprecated slave module, originally
+ planned for OTP 27, has been postponed to OTP 29.
+
+
+ OTP-18896 Application(s): otp
+
+ Updated copyright and license information.
+
+
+ ---------------------------------------------------------------------
+ --- asn1-5.2.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The asn1-5.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18844 Application(s): asn1
+
+ Fix benign warning from gcc 11 about mismatching call
+ to free().
+
+
+ Full runtime dependencies of asn1-5.2.1: erts-11.0, kernel-7.0,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- common_test-1.26 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The common_test-1.26 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18728 Application(s): common_test
+ Related Id(s): PR-7487, PR-7674
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change, common_test returns an error when
+ suite with a badly defined group is executed.
+
+
+ OTP-18760 Application(s): common_test
+
+ With this change, stylesheet option is applied to all
+ HTML report pages.
+
+
+ OTP-18799 Application(s): common_test, erl_docgen, xmerl
+ Related Id(s): PR-7695
+
+ Update all <tt> html tags to be <code> instead.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18858 Application(s): common_test
+ Related Id(s): PR-7825
+
+ This change fixes docs, so that historically deprecated
+ ?config macro is no longer recommended to be used.
+
+
+ Full runtime dependencies of common_test-1.26: 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
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.4 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The crypto-5.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18895 Application(s): crypto, erl_interface, os_mon,
+ runtime_tools
+
+ Fixed some benign compile warnings on Windows.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18832 Application(s): crypto
+ Related Id(s): PR-7763
+
+ Enable engine support for OpenSSL versions 3.
+
+
+ Full runtime dependencies of crypto-5.4: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- debugger-5.3.3 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The debugger-5.3.3 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18888 Application(s): debugger
+ Related Id(s): GH-7914
+
+ Map comprehensions now work in the Debugger.
+
+
+ Full runtime dependencies of debugger-5.3.3: compiler-8.0, erts-12.0,
+ kernel-8.0, stdlib-3.15, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- dialyzer-5.1.2 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The dialyzer-5.1.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18767 Application(s): dialyzer
+ Related Id(s): PR-7657
+
+ Fix dialyzer --output flag to work. This option was
+ accidentally removed in OTP 26.0.
+
+
+ OTP-18772 Application(s): dialyzer
+ Related Id(s): GH-7676
+
+ Fixed a crash in contract checking relating to opaque
+ types.
+
+
+ Full runtime dependencies of dialyzer-5.1.2: compiler-8.0, erts-12.0,
+ kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- diameter-2.3.1 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The diameter-2.3.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ Full runtime dependencies of diameter-2.3.1: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- edoc-1.2.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The edoc-1.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18782 Application(s): edoc
+ Related Id(s): PR-7643
+
+ Emit <code> instead of <tt>.
+
+
+ Full runtime dependencies of edoc-1.2.1: erts-6.0, inets-5.10,
+ kernel-3.0, stdlib-3.15, syntax_tools-2.0, xmerl-1.3.7
+
+
+ ---------------------------------------------------------------------
+ --- eldap-1.2.12 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The eldap-1.2.12 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18810 Application(s): eldap
+
+ Add missing dependency to asn1 application
+
+
+ Full runtime dependencies of eldap-1.2.12: asn1-3.0, erts-6.0,
+ kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- erl_docgen-1.5.2 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erl_docgen-1.5.2 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18775 Application(s): erl_docgen
+ Related Id(s): PR-7663
+
+ Fix erl_docgen dtd to only allow a single
+ datatype_title within a datatypes block.
+
+
+ OTP-18776 Application(s): erl_docgen
+ Related Id(s): PR-7663
+
+ Fix so that EEP-48 doc chunks include the module
+ summary and generates equiv tags in the correct order.
+
+ The function/type group title is now also included in
+ the entry metadata.
+
+
+ OTP-18799 Application(s): common_test, erl_docgen, xmerl
+ Related Id(s): PR-7695
+
+ Update all <tt> html tags to be <code> instead.
+
+
+ Full runtime dependencies of erl_docgen-1.5.2: edoc-1.0, erts-11.0,
+ kernel-8.0, stdlib-3.15, xmerl-1.3.7
+
+
+ ---------------------------------------------------------------------
+ --- erl_interface-5.5 -----------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erl_interface-5.5 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18895 Application(s): crypto, erl_interface, os_mon,
+ runtime_tools
+
+ Fixed some benign compile warnings on Windows.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18764 Application(s): erl_interface
+ Related Id(s): PR-7602
+
+ Add support to encode maps with ei_x_format.
+
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ --- Known Bugs and Problems ---
+
+ OTP-16607 Application(s): erl_interface
+ Related Id(s): OTP-16608
+
+ The ei API for decoding/encoding terms is not fully
+ 64-bit compatible since terms that have a
+ representation on the external term format larger than
+ 2 GB cannot be handled.
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.2 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The erts-14.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18751 Application(s): erts
+ Related Id(s): GH-7548, GH-7621
+
+ Fix erl.exe to to restore the console to its original
+ state when exiting. This bug was introduced in OTP 26.0
+ and only happens when erl.exe is run in cmd.exe.
+
+
+ OTP-18802 Application(s): erts
+
+ Fix faulty debug assert when page size is larger than
+ 16kb, like on PowerPC. Did crash debug VM directly at
+ start.
+
+
+ OTP-18811 Application(s): erts
+ Related Id(s): ERIERL-994
+
+ zlib will no longer randomly return garbage (negative)
+ Adler32 checksums.
+
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18838 Application(s): erts
+ Related Id(s): GH-7801, PR-7822
+
+ A process with message_queue_data configured as
+ off_heap could end up in an inconsistent state when
+ being receive traced, inspected using process_info/2
+ with the message_queue_len item, or inspected using the
+ break menu (CTRL-C). When it ended up in this
+ inconsistent state, it was not enqueued into a run
+ queue even though it was set in a runnable state.This
+ also effected signals being sent to the process after
+ it had gotten into this inconsistent state, in such a
+ way that it was from this point not possible to
+ communicate with it.
+
+
+ OTP-18839 Application(s): erts
+ Related Id(s): GH-7801, PR-7822
+
+ A race occurring when a process was selected for dirty
+ execution simultaneously as it was scheduled for
+ handling a signal could cause the process to end up in
+ an inconsistent state. When it ended up in this
+ inconsistent state, it was not enqueued into a run
+ queue even though it was set in a runnable state. This
+ also effected signals being sent to the process after
+ it had gotten into this inconsistent state, in such a
+ way that it was from this point not possible to
+ communicate with it.
+
+
+ OTP-18841 Application(s): erts
+ Related Id(s): GH-7801, OTP-18737, PR-7822
+
+ When a process had to to wait in the run queue for a
+ long time before being selected for dirty execution, it
+ could not receive signals. This caused inspection of
+ such a process, for example using process_info/2, to
+ take a long time.
+
+ This issue was introduced in OTP 25.3.2.6 and 26.1 when
+ fixing an issue where a constant flow of signals
+ prevented a process from being able to execute dirty.
+
+
+ OTP-18842 Application(s): erts
+
+ Fixed a bug in the JIT that miscompiled large
+ select_val instructions.
+
+
+ OTP-18871 Application(s): erts
+ Related Id(s): GH-7838
+
+ Fix bug on Windows where large writes to standard_io
+ could cause duplicate data to be written.
+
+
+ OTP-18880 Application(s): erts
+ Related Id(s): GH-7736, PR-7761
+
+ The struct ip_mreqn field imr_ifindex had got an
+ incorrect byte order conversion that has been
+ corrected.
+
+
+ OTP-18885 Application(s): erts
+ Related Id(s): GH-7834, GH-7890, PR-7915
+
+ On OTP 24 and OTP 25, incoming distributed messages
+ larger than 64 KiB sent using an alias leaked memory if
+ the alias had been removed prior to entering the node.
+ This issue was not present on OTP 26.
+
+ Incoming distributed messages larger than 64 KiB sent
+ using an alias which had been removed on the receiving
+ node could crash the node. This crash was quite
+ unlikely on OTP 24 and OTP 25, but very likely on OTP
+ 26.
+
+ 'DOWN' signals with exit reason larger than 64 KiB
+ directed towards a process on a node with a not
+ matching creation leaked memory on the receiving node.
+ Such signals should however be very rare.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18762 Application(s): erts, kernel
+
+ Add Windows support for DGRAM socket connect.
+
+
+ OTP-18765 Application(s): erts
+ Related Id(s): PR-7707
+
+ process_info/2 now supports lookup of values for
+ specific keys in the process dictionary. For example,
+ {{dictionary, Key}, Value} = process_info(Pid,
+ {dictionary, Key}).
+
+
+ OTP-18830 Application(s): erts
+ Related Id(s): PR-7823
+
+ Removed unnecessary regexp library used when generating
+ yielding BIFs.
+
+
+ OTP-18872 Application(s): erts
+ Related Id(s): GH-7832
+
+ Fix tty restore when +Bc is used.
+
+
+ OTP-18877 Application(s): erl_interface, erts
+
+ Replaced old md5 implementation with an implementation
+ from OpenSSL.
+
+
+ OTP-18899 Application(s): erts
+
+ Removed unused makewhatis script.
+
+
+ Full runtime dependencies of erts-14.2: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- eunit-2.9 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The eunit-2.9 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-18771 Application(s): eunit
+ Related Id(s): PR-7635
+
+ With this change, EUnit timetraps can be scaled with
+ the use of scale_timeouts option.
+
+
+ Full runtime dependencies of eunit-2.9: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- ftp-1.2.1 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ftp-1.2.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ Full runtime dependencies of ftp-1.2.1: erts-7.0, kernel-6.0,
+ runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- inets-9.1 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The inets-9.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18855 Application(s): inets
+
+ Correct IP protocol handling so that redirects always
+ uses correct IP-family options and not fails.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18735 Application(s): inets
+ Related Id(s): GH-7580, PR-7596
+
+ inets app starts ssl by default
+
+
+ OTP-18882 Application(s): inets
+
+ Avoid httpd returning 500 internal server error when
+ unable to open a file. 404 or 503 will be returned
+ instead.
+
+
+ OTP-18891 Application(s): inets
+ Related Id(s): GH-7827, PR-7843
+
+ Properly handle documented option mime_type, for
+ backwards compatibility fallback to undocumented option
+ default_type if mime_type is not set.
+
+
+ Full runtime dependencies of inets-9.1: 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-5.0
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.2 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The kernel-9.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18749 Application(s): kernel
+ Related Id(s): GH-7608
+
+ For inet_backend = socket, an unexpected receive error
+ such as etimedout caused the receiving state machine
+ server to crash. This bug has now been fixed.
+
+
+ OTP-18800 Application(s): kernel
+ Related Id(s): GH-7591, PR-7714
+
+ Fix bug where reading using file from a unicode enabled
+ standard_io, standard_error or any other group backed
+ device would result in incorrect values being returned
+ or a crash.
+
+ Now instead a no_translation error is returned to the
+ caller when unicode data is read using file. See Using
+ Unicode in the STDLIB User's Guide for more details on
+ how to correctly read from standard_io.
+
+
+ OTP-18812 Application(s): kernel
+ Related Id(s): ERIERL-997
+
+ The native resolver interface module has gotten a
+ rewrite of its ETS table handling to minimize term
+ copying, and also to move the handling of client
+ time-outs to the clients, which helps the native
+ resolver name server from digging itself into a tar pit
+ when heavily loaded.
+
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18833 Application(s): kernel
+ Related Id(s): GH-7625, PR-7659
+
+ Fix bug in pg if a client process both monitored a
+ group/scope and joined a group. The termination of such
+ process resulted in crash of the pg server process.
+
+
+ OTP-18873 Application(s): kernel
+ Related Id(s): PR-7831
+
+ Fix crash when using file:consult and the underlying
+ file read returns an error while reading.
+
+
+ OTP-18883 Application(s): kernel
+ Related Id(s): #7764
+
+ Corrected gen_tcp_socket listen option handling.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18762 Application(s): erts, kernel
+
+ Add Windows support for DGRAM socket connect.
+
+
+ OTP-18818 Application(s): kernel
+ Related Id(s): #7337
+
+ Document the, previously opaque, types select_tag() and
+ completion_tag().
+
+
+ Full runtime dependencies of kernel-9.2: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.23 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The mnesia-4.23 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18798 Application(s): mnesia
+
+ Document mnesia:foldl/4 and mnesia:foldr/4.
+
+
+ OTP-18850 Application(s): mnesia
+
+ mnesia:add_table_copy/3 no longer fails with reason
+ system_limit when the node is starting.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18843 Application(s): mnesia
+ Related Id(s): GH-7766
+
+ Restore recreate of disc_only tables could crash if
+ they had an index.
+
+
+ Full runtime dependencies of mnesia-4.23: erts-9.0, kernel-5.3,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- os_mon-2.9.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The os_mon-2.9.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18895 Application(s): crypto, erl_interface, os_mon,
+ runtime_tools
+
+ Fixed some benign compile warnings on Windows.
+
+
+ Full runtime dependencies of os_mon-2.9.1: erts-14.0, kernel-9.0,
+ sasl-4.2.1, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.15 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The public_key-1.15 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18739 Application(s): public_key, ssl
+
+ ssl application will validate id-kp-serverAuth and
+ id-kp-clientAuth extended key usage only in end entity
+ certificates. public_key application will disallow
+ "anyExtendedKeyUsage" for CA certificates that includes
+ the extended key usage extension and marks it critical.
+
+
+ OTP-18854 Application(s): public_key
+
+ Modernize ECC handling so that crypto FIPS support
+ works as expected.
+
+
+ --- Improvements and New Features ---
+
+ OTP-17844 Application(s): public_key
+ Related Id(s): ERIERL-738
+
+ Support certificate policies in path_validation - as
+ described by RFC 5280.
+
+
+ OTP-18814 Application(s): public_key
+ Related Id(s): PR-7435
+
+ Add more search paths for cacerts on Illumos.
+
+
+ OTP-18867 Application(s): public_key
+ Related Id(s): GH-7515
+
+ Make it possible to handle invalid date formats in the
+ verify_fun for pkix_path_validation/3
+
+
+ Full runtime dependencies of public_key-1.15: asn1-3.0, crypto-4.6,
+ erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- runtime_tools-2.0.1 ---------------------------------------------
+ ---------------------------------------------------------------------
+
+ The runtime_tools-2.0.1 application can be applied independently of
+ other applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18868 Application(s): runtime_tools
+ Related Id(s): GH-7735
+
+ Fixed issue with fetching port information for observer
+ could crash if port had died.
+
+
+ OTP-18895 Application(s): crypto, erl_interface, os_mon,
+ runtime_tools
+
+ Fixed some benign compile warnings on Windows.
+
+
+ Full runtime dependencies of runtime_tools-2.0.1: erts-11.0,
+ kernel-8.1, mnesia-4.12, stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.1 ---------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssh-5.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18861 Application(s): ssh
+ Related Id(s): PR-7627
+
+ Avoid outputting ansi escape sequences to dumb ssh
+ clients.
+
+
+ OTP-18869 Application(s): ssh
+ Related Id(s): GH-7571, PR-7849
+
+ With this change, connection handler does not execute
+ socket operations until it becomes socket owner.
+ Previously errors could occur if connection handler
+ tried to work with socket whose owner exited.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18730 Application(s): ssh
+ Related Id(s): PR-7499
+
+ With this change, reverse search works with ssh shell
+ and non dumb terminals.
+
+
+ Full runtime dependencies of ssh-5.1: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.1 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The ssl-11.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18739 Application(s): public_key, ssl
+
+ ssl application will validate id-kp-serverAuth and
+ id-kp-clientAuth extended key usage only in end entity
+ certificates. public_key application will disallow
+ "anyExtendedKeyUsage" for CA certificates that includes
+ the extended key usage extension and marks it critical.
+
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18817 Application(s): ssl
+
+ Correct handling of TLS-1.3 legacy scheme names, could
+ cause interop failures for TLS-1.2 clients.
+
+
+ OTP-18886 Application(s): ssl
+
+ Add missing export for connection_info() API type.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18836 Application(s): ssl
+ Related Id(s): GH-7795
+
+ Fixed server name indication which was not handled
+ properly.
+
+
+ OTP-18853 Application(s): ssl
+ Related Id(s): PR-7841
+
+ Align documentation and implementation
+
+
+ OTP-18893 Application(s): ssl
+ Related Id(s): PR-7920, PR-7921
+
+ Improve connection setup by optimizing certificate
+ lookup.
+
+
+ Full runtime dependencies of ssl-11.1: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.2 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The stdlib-5.2 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18777 Application(s): stdlib
+ Related Id(s): PR-7663
+
+ Make shell_docs correctly trim the newline at the end
+ of code blocks.
+
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ OTP-18822 Application(s): stdlib
+ Related Id(s): PR-7796
+
+ Fixed a bug where autocompletion could crash the shell
+ when trying to expand a nested tuple.
+
+
+ OTP-18823 Application(s): stdlib
+
+ Removed auto closing feature, in autocompletion, for
+ function arguments, tuples, records and maps, since
+ this could interfere with autocompletion of atoms.
+
+
+ OTP-18824 Application(s): stdlib
+
+ Fixed a bug where autocompletion string formatting
+ would remove suggestions that had the same name but
+ different case.
+
+
+ OTP-18826 Application(s): stdlib
+ Related Id(s): PR-7797
+
+ Fix so that ctrl+h, ctrl+backspace in the shell only
+ removes one character instead of a whole word.
+
+
+ OTP-18827 Application(s): stdlib
+ Related Id(s): PR-7797
+
+ Fix so that its possible to override the default
+ keyboard shortcuts for the shell.
+
+
+ OTP-18828 Application(s): stdlib
+ Related Id(s): PR-7799
+
+ Allow shell local func v(), in a restricted shell
+
+
+ OTP-18829 Application(s): stdlib
+ Related Id(s): PR-7799
+
+ Report syntax error when writing an invalid attribute
+ like '1> -hej.'
+
+
+ OTP-18866 Application(s): stdlib
+ Related Id(s): GH-7875, PR-7878
+
+ When attempting to match part of a record in the key of
+ a map generator, the entire record would be matched.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18821 Application(s): stdlib
+ Related Id(s): OTP-18746
+
+ The warning for accidental use of a future
+ triple-quoted string delimiter has been upgraded to
+ instead warn for adjacent strings without intervening
+ white space, which effectively is the same at a string
+ start, but also covers the same situation at a string
+ end.
+
+
+ OTP-18840 Application(s): otp, stdlib
+ Related Id(s): PR-7629
+
+ The removal of the deprecated slave module, originally
+ planned for OTP 27, has been postponed to OTP 29.
+
+
+ OTP-18857 Application(s): stdlib, wx
+ Related Id(s): GH-7685
+
+ Guards have been added to gen_*:start* API functions to
+ catch bad arguments earlier. Before this change, in
+ some cases, a bad argument could tag along and cause
+ the server to fail later, right after start.
+
+
+ Full runtime dependencies of stdlib-5.2: compiler-5.0, crypto-4.5,
+ erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- tftp-1.1.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The tftp-1.1.1 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18815 Application(s): diameter, erts, ftp, inets, kernel,
+ otp, ssh, ssl, stdlib, tftp
+ Related Id(s): PR-7780
+
+ Replaced unintentional Erlang Public License 1.1
+ headers in some files with the intended Apache License
+ 2.0 header.
+
+
+ Full runtime dependencies of tftp-1.1.1: erts-6.0, kernel-6.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- wx-2.4 ----------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The wx-2.4 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Improvements and New Features ---
+
+ OTP-18857 Application(s): stdlib, wx
+ Related Id(s): GH-7685
+
+ Guards have been added to gen_*:start* API functions to
+ catch bad arguments earlier. Before this change, in
+ some cases, a bad argument could tag along and cause
+ the server to fail later, right after start.
+
+
+ Full runtime dependencies of wx-2.4: erts-12.0, kernel-8.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- xmerl-1.3.34 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ The xmerl-1.3.34 application can be applied independently of other
+ applications on a full OTP 26 installation.
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18799 Application(s): common_test, erl_docgen, xmerl
+ Related Id(s): PR-7695
+
+ Update all <tt> html tags to be <code> instead.
+
+
+ Full runtime dependencies of xmerl-1.3.34: erts-6.0, kernel-3.0,
+ stdlib-2.5
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+
diff --git a/release-notes/OTP-27.0-rc1.README.txt b/release-notes/OTP-27.0-rc1.README.txt
new file mode 100644
index 0000000..017c55b
--- /dev/null
+++ b/release-notes/OTP-27.0-rc1.README.txt
@@ -0,0 +1,2307 @@
+Inital Release: OTP 27.0
+Git Tag: OTP-27.0
+Date: 2024-02-14
+Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589,
+ OTP-18590, OTP-18594, OTP-18606, OTP-18608,
+ OTP-18609, OTP-18622, OTP-18639, OTP-18641,
+ OTP-18642, OTP-18648, OTP-18658, OTP-18667,
+ OTP-18668, OTP-18671, OTP-18673, OTP-18680,
+ OTP-18682, OTP-18684, OTP-18699, OTP-18703,
+ OTP-18709, OTP-18713, OTP-18714, OTP-18715,
+ OTP-18716, OTP-18717, OTP-18727, OTP-18741,
+ OTP-18742, OTP-18743, OTP-18744, OTP-18750,
+ OTP-18756, OTP-18761, OTP-18766, OTP-18774,
+ OTP-18778, OTP-18779, OTP-18781, OTP-18783,
+ OTP-18784, OTP-18785, OTP-18786, OTP-18787,
+ OTP-18788, OTP-18789, OTP-18793, OTP-18794,
+ OTP-18795, OTP-18796, OTP-18801, OTP-18804,
+ OTP-18805, OTP-18806, OTP-18807, OTP-18808,
+ OTP-18809, OTP-18813, OTP-18816, OTP-18819,
+ OTP-18820, OTP-18825, OTP-18831, OTP-18834,
+ OTP-18835, OTP-18846, OTP-18847, OTP-18848,
+ OTP-18849, OTP-18852, OTP-18856, OTP-18859,
+ OTP-18860, OTP-18865, OTP-18870, OTP-18874,
+ OTP-18875, OTP-18876, OTP-18878, OTP-18879,
+ OTP-18881, OTP-18887, OTP-18892, OTP-18894,
+ OTP-18898, OTP-18904, OTP-18908, OTP-18912,
+ OTP-18913, OTP-18914, OTP-18916, OTP-18918,
+ OTP-18920, OTP-18922, OTP-18923, OTP-18927,
+ OTP-18928, OTP-18929, OTP-18930, OTP-18934,
+ OTP-18941, OTP-18942, OTP-18944, OTP-18945,
+ OTP-18946, OTP-18947, OTP-18950, OTP-18951,
+ OTP-18954, OTP-18955, OTP-18959, OTP-18961,
+ OTP-18963, OTP-18967, OTP-18972, OTP-18973,
+ OTP-18976, OTP-18977, OTP-18978, OTP-18980
+Seq num: #312, 7809, BL-322, ERIERL-43, ERIERL-964,
+ ERIERL-967, ERIERL-985, GH-4992, GH-6152,
+ GH-6692, GH-6985, GH-7183, GH-7232, GH-7266,
+ GH-7295, GH-7397, GH-7432, GH-7493, GH-7494,
+ GH-7706, GH-7718, GH-8061, OTP-16448,
+ OTP-16608, OTP-16875, OTP-17734, OTP-18746,
+ OTP-18750, PR-6510, PR-6639, PR-6791,
+ PR-6985, PR-7110, PR-7125, PR-7174, PR-7202,
+ PR-7220, PR-7236, PR-7243, PR-7267, PR-7274,
+ PR-7299, PR-7313, PR-7316, PR-7348, PR-7380,
+ PR-7383, PR-7388, PR-7398, PR-7419, PR-7428,
+ PR-7441, PR-7443, PR-7451, PR-7465, PR-7470,
+ PR-7474, PR-7475, PR-7481, PR-7491, PR-7496,
+ PR-7528, PR-7534, PR-7535, PR-7538, PR-7556,
+ PR-7585, PR-7590, PR-7592, PR-7607, PR-7628,
+ PR-7639, PR-7649, PR-7651, PR-7675, PR-7684,
+ PR-7697, PR-7699, PR-7700, PR-7701, PR-7702,
+ PR-7703, PR-7711, PR-7720, PR-7726, PR-7728,
+ PR-7732, PR-7738, PR-7739, PR-7740, PR-7745,
+ PR-7779, PR-7781, PR-7782, PR-7790, PR-7809,
+ PR-7816, PR-7824, PR-7844, PR-7845, PR-7846,
+ PR-7847, PR-7856, PR-7857, PR-7869, PR-7879,
+ PR-7891, PR-7898, PR-7917, PR-7918, PR-7936,
+ PR-7942, PR-7952, PR-7957, PR-7960, PR-7963,
+ PR-7973, PR-7981, PR-7993, PR-8003, PR-8004,
+ PR-8006, PR-8026, PR-8042, PR-8063, PR-8067,
+ PR-8069, PR-8076, PR-8086, PR-8090, PR-8092
+System: OTP
+Release: 27
+Application: asn1-5.3, common_test-1.27, compiler-8.5,
+ crypto-5.5, debugger-5.4, dialyzer-5.2,
+ diameter-2.4, edoc-1.3, eldap-1.3,
+ erl_interface-5.6, erts-14.3, et-1.8,
+ eunit-2.10, ftp-1.3, inets-9.2,
+ jinterface-1.15, kernel-9.3, megaco-4.6,
+ mnesia-4.24, observer-2.16, odbc-2.15,
+ os_mon-2.10, parsetools-2.6, public_key-1.16,
+ reltool-1.1, runtime_tools-2.1, sasl-4.3,
+ snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0,
+ syntax_tools-3.2, tftp-1.2, tools-4.0,
+ wx-2.5, xmerl-1.4
+Predecessor: OTP
+
+Check out the git tag OTP-27.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Related Id(s): GH-7183, GH-7232
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative
+ comparison operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): PR-7728
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Related Id(s): PR-7470
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a 0-ary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Related Id(s): PR-7649
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Related Id(s): PR-7684, OTP-18750
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when doc.
+ attributes are missing in exported functions, types, and callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Related Id(s): PR-6791
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+- Multiple trace sessions.
+
+ Own Id: OTP-18980
+
+# POTENTIAL INCOMPATIBILITIES
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Related Id(s): PR-7274
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Related Id(s): PR-7348
+
+- Introduce default value for httpd_server name configuration to improve ease of
+ use.
+
+ Own Id: OTP-18641
+ Related Id(s): PR-7316
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and <c>/=</c>) and all relative
+ comparison operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+# OTP-27.0
+
+## Fixed Bugs and Malfunctions
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and <c>/=</c>) and all relative
+ comparison operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+# asn1-5.3
+
+## Fixed Bugs and Malfunctions
+
+- Multiple bugs has been eliminated in the specialized decode feature.
+
+ Own Id: OTP-18813
+ Related Id(s): PR-7790
+
+## Improvements and New Features
+
+- Specs have been added to all `asn1ct` API functions.
+
+ Own Id: OTP-18804
+ Related Id(s): PR-7738
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of asn1-5.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.27
+
+## Improvements and New Features
+
+- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to
+ ensure that all output is captured.
+
+ Own Id: OTP-18658
+ Related Id(s): PR-7380
+
+- The order in which multiple hooks are executed can now be reversed after each
+ config function. See CTH Execution Order.
+
+ Own Id: OTP-18682
+ Related Id(s): ERIERL-43, GH-7397, PR-7496
+
+- The default CSS will now include a basic dark mode handling if it is preferred
+ by the browser.
+
+ Own Id: OTP-18761
+ Related Id(s): PR-7428
+
+- `-callback` attributes have been added to `ct_suite` and `ct_hooks`.
+
+ Own Id: OTP-18781
+ Related Id(s): PR-7701
+
+- The built-in cth_log_redirect hook can now be configured to replace default
+ logger reports in terminal with HTML logs.
+
+ Own Id: OTP-18875
+ Related Id(s): PR-7891
+
+- Error handling for the `ct_property_test` framework has been enhanced.
+
+ Own Id: OTP-18881
+ Related Id(s): PR-7824
+
+- Enhance test case documentation, making it clear how a test case can be
+ failed.
+
+ Own Id: OTP-18892
+ Related Id(s): PR-7869
+
+- The failing line in the test source code is now colored to make it easier to
+ find on the screen.
+
+ Own Id: OTP-18898
+ Related Id(s): PR-7917
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of common_test-1.27
+>
+> 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
+
+## Fixed Bugs and Malfunctions
+
+- Generators for binary comprehensions could be evaluated before it was known
+ that they would be needed. That could result in a binary comprehensions
+ failing if a generator that should not be evaluated until later failed.
+
+ As an example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+
+ f() ->
+ <<0 || _ <- [], _ <- ok, false>>.
+
+ In Erlang/OTP 26 it would fail like so:
+
+ > t:f().
+ ** exception error: bad generator ok
+ in function t:f/0 (t.erl, line 6)
+
+ In Erlang/OTP 27 it returns an empty binary:
+
+ > t:f().
+ <<>>
+
+ Own Id: OTP-18703
+ Related Id(s): GH-7494, PR-7538
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- The compiler now optimizes creation of binaries that are known to be constant.
+
+ Consider this example:
+
+ bin() ->
+ C = char(),
+ <<C>>.
+
+ char() -> $*.
+
+ Essentially, the compiler rewrites the example to the slightly more efficient:
+
+ bin() ->
+ _ = char(),
+ <<$*>>.
+
+ char() -> $*.
+
+ Own Id: OTP-18673
+ Related Id(s): ERIERL-964, PR-7474
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+ *** HIGHLIGHT ***
+
+- Improved the performance of the alias analysis pass.
+
+ Own Id: OTP-18714
+ Related Id(s): GH-7432, PR-7528
+
+- `-spec` attributes are now used for documentation.
+
+ Own Id: OTP-18801
+ Related Id(s): PR-7739
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when doc.
+ attributes are missing in exported functions, types, and callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of compiler-8.5
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which
+ were marked as deprecated since OTP 25.
+
+ Own Id: OTP-18973
+
+- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread
+ specific data.
+
+ Own Id: OTP-18978
+ Related Id(s): 7809
+
+> #### Full runtime dependencies of crypto-5.5
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# debugger-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- Type specs have been added to all API functions.
+
+ Own Id: OTP-18819
+ Related Id(s): PR-7781
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of debugger-5.4
+>
+> compiler-8.0, erts-14.3, kernel-8.0, stdlib-3.15, wx-2.0
+
+# dialyzer-5.2
+
+## Improvements and New Features
+
+- The `--gui` option for Dialyzer has been removed.
+
+ Own Id: OTP-18667
+ Related Id(s): PR-7443
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of dialyzer-5.2
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.4
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `diameter_app` and
+ `diameter_transport`.
+
+ Own Id: OTP-18783
+ Related Id(s): PR-7699
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of diameter-2.4
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.3
+
+## Fixed Bugs and Malfunctions
+
+- EEP 48 doc chunks now properly include links within `{@type }` macros.
+
+ Own Id: OTP-18945
+ Related Id(s): PR-8063
+
+- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`.
+
+ Own Id: OTP-18946
+ Related Id(s): PR-8063
+
+## Improvements and New Features
+
+- There is a new `edoc_html_to_markdown` module that can be used to convert
+ EEP-48 `application/html+erlang` to Markdown.
+
+ Own Id: OTP-18947
+ Related Id(s): PR-8063
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of edoc-1.3
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.3
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eldap-1.3
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.6
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-14.3
+
+## Fixed Bugs and Malfunctions
+
+- Fix bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or
+ `-args_file`.
+
+ Own Id: OTP-18766
+ Related Id(s): PR-7639
+
+- Fixed a bug that prevented the emulator from building on recent versions of
+ Yocto Linux.
+
+ Own Id: OTP-18918
+ Related Id(s): PR-7952
+
+- Fix spectre mitigation configure test to work with GCC patches to always add
+ `-fcf-protection=full`.
+
+ Own Id: OTP-18928
+ Related Id(s): PR-8006
+
+## Improvements and New Features
+
+- Refactored how the JIT handles POSIX signals and how they affect thread
+ stacks, allowing us to use the native stack register for Erlang stacks on more
+ platforms.
+
+ Notably, containers built on 64-bit x86 Alpine Linux images will now perform
+ much better in sequential code. As an example, running `dialyzer` over the OTP
+ code base finishes about 15% quicker.
+
+ Own Id: OTP-18568
+ Related Id(s): PR-7174
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Related Id(s): PR-7274
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Related Id(s): PR-7348
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A binary returned from the `socket` receive functions is no longer created
+ as a sub binary of an often large receive buffer binary (socket option
+ `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement
+ reallocation efficiently.
+
+ Own Id: OTP-18642
+ Related Id(s): GH-6152, PR-7465
+
+- The default process limit has been raised to `1048576` processes.
+
+ Own Id: OTP-18699
+ Related Id(s): PR-7388
+
+- The erlang:system_monitor/2 functionality is now able to monitor long
+ message queues in the system.
+
+ Own Id: OTP-18709
+ Related Id(s): PR-7651
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Related Id(s): PR-7470
+
+ *** HIGHLIGHT ***
+
+- When implementing an alternative carrier for the Erlang distribution, a
+ separate input handler process may now be registered, using
+ erlang:dist_ctrl_input_handler/2, also in the case when the distribution
+ controller is a port.
+
+ Own Id: OTP-18774
+ Related Id(s): PR-7110
+
+- Add call stack trace to the error reported by erlang:process_flag/2 when
+ `max_heap_size` has been exceeded.
+
+ Own Id: OTP-18779
+ Related Id(s): PR-7592
+
+- `-callback` attributes have been added to `erl_tracer`.
+
+ Own Id: OTP-18794
+ Related Id(s): PR-7703
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N`, has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- Socket options that take string now also accept binaries.
+
+ Own Id: OTP-18849
+ Related Id(s): PR-6510
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Changed the default value of the command line flag `-code_path_choice Choice`
+ to `strict`.
+
+ Own Id: OTP-18894
+ Related Id(s): PR-7243
+
+- Added module loading to `erl -init_debug` printouts.
+
+ Own Id: OTP-18929
+ Related Id(s): PR-8004
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d
+
+ Own Id: OTP-18942
+
+- The deprecated functions in `zlib` have been removed. That includes
+ `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and
+ the Adler checksum functions.
+
+ Own Id: OTP-18950
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+- The obsolete and undocumented support for opening a port to an external
+ resource by passing an atom (or a string) as first argument to `open_port()`,
+ implemented by the vanilla driver, has been removed. This feature has been
+ scheduled for removal in OTP 27 since the release of OTP 26.
+
+ Own Id: OTP-18976
+ Related Id(s): PR-7125
+
+- Add optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all
+ scheduler thread when a NIF library is unloaded. Used for releasing thread
+ specific data. Can be set with function `enif_set_option`.
+
+ Own Id: OTP-18977
+ Related Id(s): PR-7809
+
+- Multiple trace sessions.
+
+ Own Id: OTP-18980
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of erts-14.3
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.8
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of et-1.8
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.10
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eunit-2.10
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.3
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of ftp-1.3
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.2
+
+## Improvements and New Features
+
+- Introduce default value for httpd_server name configuration to improve ease of
+ use.
+
+ Own Id: OTP-18641
+ Related Id(s): PR-7316
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- With this change, `erl -S httpd` command can be used for serving current
+ directory content over HTTP.
+
+ Own Id: OTP-18727
+ Related Id(s): PR-7299
+
+- Add `-callback` attributes to `httpd`, `mod_esi` and `mod_security`.
+
+ Own Id: OTP-18786
+ Related Id(s): PR-7700
+
+- Use a relative redirect with an absolute path to prevent whoever is running
+ inets from having to configure the ServerName to match the network-reachable
+ hostname of the server.
+
+ Own Id: OTP-18809
+
+- Use proc_lib:set_label/1 to increase observability of inets processes.
+
+ Own Id: OTP-18927
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of inets-9.2
+>
+> 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
+
+# jinterface-1.15
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+# kernel-9.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash when calling file:delete/2 with an empty option list.
+
+ Own Id: OTP-18590
+ Related Id(s): PR-7220
+
+- New functions have been added to the undocumented module `inet_dns` that
+ take a flag to specify if encode/decode is for mDNS. This affects how CLASS
+ values in the private range, with the top bit set, are handled.
+
+ Own Id: OTP-18878
+ Related Id(s): GH-7718, OTP-17734
+
+- The error information for erlang:phash/2 has been corrected.
+
+ Own Id: OTP-18904
+ Related Id(s): PR-7960
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+- Calling logger:add_handlers/1 with config option now works.
+
+ Own Id: OTP-18954
+ Related Id(s): GH-8061, PR-8076
+
+- The code:del_path/1 function now also works on paths added through `-pa`,
+ `-pz` , `-path` and the boot script.
+
+ Own Id: OTP-18959
+ Related Id(s): GH-6692, PR-7697
+
+## Improvements and New Features
+
+- Added file:read_file/2 with a `raw` option for reading files without going
+ through the file server.
+
+ Own Id: OTP-18589
+ Related Id(s): PR-7220
+
+- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has
+ been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some
+ bug fixes and code cleanup has been done, and the resolver used in the test
+ suite has been changed to Knot DNS. See the source code.
+
+ Kudos to Alexander Clouter that did almost all the work!
+
+ Own Id: OTP-18713
+ Related Id(s): GH-6985, PR-6985
+
+- The `ebin` directories for escripts are now cached.
+
+ Own Id: OTP-18778
+ Related Id(s): PR-7556
+
+- Add `-callback` attributes to `application`, `logger_handler` and
+ `logger_formatter`.
+
+ Own Id: OTP-18795
+ Related Id(s): PR-7703
+
+- Progress reports from before logger is started are now logged when log level
+ is set to debug.
+
+ Own Id: OTP-18807
+ Related Id(s): ERIERL-985, PR-7732
+
+- The code:where_is_file/2 and code:which/1 functions now check for
+ existence of the file directly instead of listing the content of each
+ directory in the code path.
+
+ Own Id: OTP-18816
+ Related Id(s): PR-7711
+
+- Type specs has been added to the `logger:Level/1,2,3` functions.
+
+ Own Id: OTP-18820
+ Related Id(s): PR-7779
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N`, has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Application startup has been optimized by removing an intermediary process.
+
+ Own Id: OTP-18963
+ Related Id(s): PR-8042
+
+- The undocumented and deprecated `file:pid2name` function has been removed.
+
+ Own Id: OTP-18967
+ Related Id(s): PR-8092
+
+> #### Full runtime dependencies of kernel-9.3
+>
+> crypto-5.0, erts-14.3, sasl-3.0, stdlib-6.0
+
+# megaco-4.6
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `megaco_transport`.
+
+ Own Id: OTP-18806
+ Related Id(s): PR-7740
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18920
+ Related Id(s): BL-322
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of megaco-4.6
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.24
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of mnesia-4.24
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.16
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of observer-2.16
+>
+> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3
+
+# odbc-2.15
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of odbc-2.15
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.10
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of os_mon-2.10
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.6
+
+## Improvements and New Features
+
+- The `leex` documentation has been updated to use specs for documenting the
+ generated interface.
+
+ Own Id: OTP-18796
+ Related Id(s): PR-7703
+
+- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl`
+ source file.
+
+ Own Id: OTP-18912
+ Related Id(s): PR-7963
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of parsetools-2.6
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.16
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- Improved exception reason when public_key:cacerts_get/0 failed.
+
+ Own Id: OTP-18609
+ Related Id(s): GH-7295, PR-7202
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of public_key-1.16
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# reltool-1.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of reltool-1.1
+>
+> erts-14.3, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.1
+
+## Improvements and New Features
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- Type specs had been added to all `dbg` functions.
+
+ Own Id: OTP-18859
+ Related Id(s): PR-7782
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of runtime_tools-2.1
+>
+> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0
+
+# sasl-4.3
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of sasl-4.3
+>
+> erts-14.3, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.16
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to modules
+ `snmpa_network_interface_filter`, `snmpa_notification_filter`,
+ `snmpm_network_interface_filter`, `snmpm_user`, and
+ `snmpa_notification_delivery_info_receiver`.
+
+ New `-type` attributes have also been added to modules `snmp`, `snmpa`,
+ `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks.
+
+ Own Id: OTP-18785
+ Related Id(s): PR-7702
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18934
+ Related Id(s): #312
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of snmp-5.16
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2
+
+## Improvements and New Features
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18961
+
+> #### Full runtime dependencies of ssh-5.2
+>
+> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1,
+> stdlib-5.0, stdlib-5.0
+
+# ssl-11.2
+
+## Fixed Bugs and Malfunctions
+
+- Starting a TLS server without sufficient credentials (certificate or anonymous
+ cipher) would work, but it was impossible to connect to it.
+
+ This has been corrected to return an error instead of starting the server.
+
+ Own Id: OTP-18887
+ Related Id(s): GH-7493, PR-7918
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute.
+
+ Own Id: OTP-18788
+ Related Id(s): PR-7700
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The proc_lib:set_label/1 function is now used to increase observability of
+ `ssl` processes.
+
+ Own Id: OTP-18879
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of ssl-11.2
+>
+> crypto-5.0, erts-14.3, inets-5.10.7, kernel-9.0, public_key-1.16,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.0
+
+## Fixed Bugs and Malfunctions
+
+- The specs in module `binary` has been updated to reflect what is allowed by
+ the documentation.
+
+ Own Id: OTP-18684
+ Related Id(s): PR-7481
+
+- Several functions in the `binary` module would accept arguments of the wrong
+ type under certain circumstances. In this release, they now raise an exception
+ when incorrect types are given.
+
+ The following functions would accept an invalid pattern if the subject binary
+ was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`,
+ `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3`
+
+ The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of
+ raising an exception. Similarly, calls to `binary:part/2,3` attempting to
+ extract 0 bytes at position 0 of a bitstring would return an empty binary
+ instead of raising an exception.
+
+ Own Id: OTP-18743
+ Related Id(s): PR-7607, PR-7628
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+## Improvements and New Features
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Related Id(s): GH-7183, GH-7232
+
+ *** HIGHLIGHT ***
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- `zip:create/2,3` will now tolerate POSIX timestamps in the provided
+ `file_info` records.
+
+ Own Id: OTP-18668
+
+- The callback function gen_statem:handle_event/4 has been cached in the
+ `gen_statem` engine to optimize callback call speed.
+
+ Own Id: OTP-18671
+ Related Id(s): PR-7419
+
+- The type beam_lib:beam/0 is now exported.
+
+ Own Id: OTP-18716
+ Related Id(s): PR-7534
+
+- The documentation for the `binary` module has been improved.
+
+ Own Id: OTP-18741
+ Related Id(s): PR-7585
+
+- `binary:replace/3,4` now supports using a fun for supplying the replacement
+ binary.
+
+ Own Id: OTP-18742
+ Related Id(s): PR-7590
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- `-callback` attributes has been added to modules `sys` and `erl_error`.
+
+ Own Id: OTP-18793
+ Related Id(s): PR-7703
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a 0-ary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Related Id(s): PR-7649
+
+ *** HIGHLIGHT ***
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Related Id(s): PR-7684, OTP-18750
+
+ *** HIGHLIGHT ***
+
+- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1,
+ and shell:prompt_width/1 have been exported to help with custom prompt
+ implementations.
+
+ Own Id: OTP-18834
+ Related Id(s): PR-7675, PR-7816
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function
+ directly before the cursor.
+
+ Own Id: OTP-18847
+ Related Id(s): PR-7846
+
+- Added support for adding a custom code formatter that formats your multi-line
+ shell commands in your preferred formatting on submission. See
+ `shell:format_shell_func/` and shell:erl_pp_format_func/1.
+
+ Own Id: OTP-18848
+ Related Id(s): PR-7847
+
+- Added shell functions for viewing, forgetting and saving locally defined
+ functions, types and records.
+
+ Own Id: OTP-18852
+ Related Id(s): PR-7844
+
+- Added string:jaro_similarity/2, which can be used to calculate the
+ similarity between two strings.
+
+ Own Id: OTP-18865
+ Related Id(s): PR-7879
+
+- The new function ets:update_element/4 is similar to ets:update_element/3,
+ but takes a default tuple as the fourth argument, which will be inserted if no
+ previous record with that key exists.
+
+ Own Id: OTP-18870
+ Related Id(s): PR-7857
+
+- Added functions to retrieve the next higher or lower key/element from
+ `gb_trees` and `gb_sets`, as well as returning iterators that start at
+ given keys/elements.
+
+ Own Id: OTP-18874
+ Related Id(s): PR-7745
+
+- When he shell built-in function `c/1,2` is used to re-compile a module,
+ the current working directory of the original compilation is now added to the
+ include path.
+
+
+ Own Id: OTP-18908
+ Related Id(s): PR-7957
+
+- The `timer` module now uses a private table for its internal state, slightly
+ improving its performance.
+
+ Own Id: OTP-18914
+ Related Id(s): PR-7973
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when doc.
+ attributes are missing in exported functions, types, and callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Related Id(s): PR-6791
+
+ *** HIGHLIGHT ***
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+- The compiler will now raise a warning when updating record/map literals. As an
+ example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+ -record(r, {a,b,c}).
+
+ f() ->
+ #r{a=1}#r{b=2}.
+
+ The compiler raises the following warning:
+
+ 1> c(t).
+ t.erl:6:12: Warning: expression updates a literal
+ % 6| #r{a=1}#r{b=2}.
+ % | ^
+
+ Own Id: OTP-18951
+ Related Id(s): PR-8069
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of stdlib-6.0
+>
+> compiler-5.0, crypto-4.5, erts-14.3, kernel-9.3, sasl-3.0
+
+# syntax_tools-3.2
+
+## Fixed Bugs and Malfunctions
+
+- The `epp_dodger` module can now handle the `maybe` and `else` keywords.
+
+ Own Id: OTP-18608
+ Related Id(s): GH-7266, PR-7267
+
+- Reverting a `#wrapper` will no longer throw away changes made to
+ positions/annotations.
+
+ Own Id: OTP-18805
+ Related Id(s): PR-7398
+
+## Improvements and New Features
+
+- The type erl_syntax:annotation_or_location/0 is now exported.
+
+ Own Id: OTP-18715
+ Related Id(s): PR-7535
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of syntax_tools-3.2
+>
+> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0
+
+# tftp-1.2
+
+## Improvements and New Features
+
+- There is now a new `tftp_logger` callback behavior module.
+
+ Own Id: OTP-18787
+ Related Id(s): PR-7700
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of tftp-1.2
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new tool `tprof`, which combines the functionality of `eprof`
+ and `cprof` under one interface. It also adds heap profiling.
+
+ Own Id: OTP-18756
+ Related Id(s): PR-6639
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of tools-4.0
+>
+> compiler-8.5, erts-14.3, erts-14.3, kernel-9.3, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.5
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of wx-2.5
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-1.4
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that
+ provides out-of-the box indented output has been added.
+
+ Own Id: OTP-18922
+ Related Id(s): PR-7942
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of xmerl-1.4
+>
+> erts-6.0, kernel-3.0, stdlib-2.5
+
diff --git a/release-notes/OTP-27.0-rc2.README.txt b/release-notes/OTP-27.0-rc2.README.txt
new file mode 100644
index 0000000..b44a5f0
--- /dev/null
+++ b/release-notes/OTP-27.0-rc2.README.txt
@@ -0,0 +1,3075 @@
+```
+Inital Release: OTP 27.0
+Git Tag: OTP-27.0
+Date: 2024-03-21
+Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589,
+ OTP-18590, OTP-18594, OTP-18606, OTP-18608,
+ OTP-18609, OTP-18622, OTP-18639, OTP-18641,
+ OTP-18642, OTP-18648, OTP-18658, OTP-18665,
+ OTP-18667, OTP-18668, OTP-18671, OTP-18673,
+ OTP-18680, OTP-18682, OTP-18684, OTP-18699,
+ OTP-18703, OTP-18709, OTP-18713, OTP-18714,
+ OTP-18715, OTP-18716, OTP-18717, OTP-18727,
+ OTP-18741, OTP-18742, OTP-18743, OTP-18744,
+ OTP-18750, OTP-18756, OTP-18761, OTP-18766,
+ OTP-18774, OTP-18778, OTP-18779, OTP-18781,
+ OTP-18783, OTP-18784, OTP-18785, OTP-18786,
+ OTP-18787, OTP-18788, OTP-18789, OTP-18793,
+ OTP-18794, OTP-18795, OTP-18796, OTP-18801,
+ OTP-18804, OTP-18805, OTP-18806, OTP-18807,
+ OTP-18808, OTP-18809, OTP-18813, OTP-18816,
+ OTP-18819, OTP-18820, OTP-18825, OTP-18831,
+ OTP-18834, OTP-18835, OTP-18846, OTP-18847,
+ OTP-18848, OTP-18849, OTP-18852, OTP-18856,
+ OTP-18859, OTP-18860, OTP-18865, OTP-18870,
+ OTP-18874, OTP-18875, OTP-18876, OTP-18878,
+ OTP-18879, OTP-18881, OTP-18884, OTP-18887,
+ OTP-18892, OTP-18894, OTP-18898, OTP-18904,
+ OTP-18908, OTP-18912, OTP-18913, OTP-18914,
+ OTP-18916, OTP-18918, OTP-18920, OTP-18922,
+ OTP-18923, OTP-18927, OTP-18928, OTP-18929,
+ OTP-18930, OTP-18934, OTP-18938, OTP-18941,
+ OTP-18942, OTP-18943, OTP-18944, OTP-18945,
+ OTP-18946, OTP-18947, OTP-18950, OTP-18951,
+ OTP-18954, OTP-18955, OTP-18959, OTP-18961,
+ OTP-18963, OTP-18965, OTP-18966, OTP-18967,
+ OTP-18968, OTP-18969, OTP-18972, OTP-18973,
+ OTP-18975, OTP-18976, OTP-18977, OTP-18978,
+ OTP-18980, OTP-18981, OTP-18984, OTP-18987,
+ OTP-18989, OTP-18992, OTP-18993, OTP-18994,
+ OTP-18995, OTP-18998, OTP-19001, OTP-19004,
+ OTP-19005, OTP-19010, OTP-19014, OTP-19016,
+ OTP-19017, OTP-19018, OTP-19020, OTP-19022,
+ OTP-19025, OTP-19026, OTP-19027, OTP-19029,
+ OTP-19030
+Seq num: BL-312, BL-322, ERIERL-43, ERIERL-964,
+ ERIERL-967, ERIERL-985, GH-4992, GH-6152,
+ GH-6692, GH-6979, GH-6985, GH-7183, GH-7232,
+ GH-7266, GH-7295, GH-7397, GH-7432, GH-7438,
+ GH-7493, GH-7494, GH-7706, GH-7718, GH-7972,
+ GH-8058, GH-8061, GH-8066, GH-8159, GH-8166,
+ OTP-16448, OTP-16608, OTP-16875, OTP-17734,
+ OTP-18746, OTP-18750, OTP-18835, PR-6510,
+ PR-6639, PR-6658, PR-6791, PR-6985, PR-7110,
+ PR-7125, PR-7174, PR-7202, PR-7220, PR-7236,
+ PR-7243, PR-7267, PR-7274, PR-7299, PR-7313,
+ PR-7316, PR-7348, PR-7380, PR-7383, PR-7388,
+ PR-7398, PR-7419, PR-7428, PR-7441, PR-7443,
+ PR-7447, PR-7451, PR-7465, PR-7470, PR-7474,
+ PR-7475, PR-7481, PR-7491, PR-7496, PR-7528,
+ PR-7534, PR-7535, PR-7538, PR-7556, PR-7585,
+ PR-7590, PR-7592, PR-7607, PR-7628, PR-7639,
+ PR-7649, PR-7651, PR-7675, PR-7684, PR-7697,
+ PR-7699, PR-7700, PR-7701, PR-7702, PR-7703,
+ PR-7711, PR-7720, PR-7726, PR-7728, PR-7732,
+ PR-7738, PR-7739, PR-7740, PR-7745, PR-7779,
+ PR-7781, PR-7782, PR-7790, PR-7809, PR-7816,
+ PR-7824, PR-7844, PR-7845, PR-7846, PR-7847,
+ PR-7856, PR-7857, PR-7869, PR-7879, PR-7891,
+ PR-7898, PR-7917, PR-7918, PR-7936, PR-7942,
+ PR-7952, PR-7957, PR-7960, PR-7963, PR-7973,
+ PR-7977, PR-7981, PR-7993, PR-8003, PR-8004,
+ PR-8006, PR-8026, PR-8035, PR-8042, PR-8048,
+ PR-8063, PR-8067, PR-8069, PR-8076, PR-8086,
+ PR-8090, PR-8091, PR-8092, PR-8093, PR-8095,
+ PR-8103, PR-8111, PR-8112, PR-8155, PR-8156,
+ PR-8164, PR-8168, PR-8177, PR-8182, PR-8205,
+ PR-8241
+System: OTP
+Release: 27
+Application: asn1-5.3, common_test-1.27, compiler-8.5,
+ crypto-5.5, debugger-5.4, dialyzer-5.2,
+ diameter-2.4, edoc-1.3, eldap-1.2.13,
+ erl_interface-5.5.2, erts-14.3, et-1.7.1,
+ eunit-2.9.1, ftp-1.2.2, inets-9.2,
+ jinterface-1.14.1, kernel-9.3, megaco-4.6,
+ mnesia-4.23.1, observer-2.16, odbc-2.14.3,
+ os_mon-2.10, parsetools-2.6, public_key-1.16,
+ reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2,
+ snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0,
+ syntax_tools-3.2, tftp-1.2, tools-4.0,
+ wx-2.4.2, xmerl-1.4
+Predecessor: OTP
+```
+
+Check out the git tag OTP-27.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules [`sets`], [`ordsets`], and [`gb_sets`].
+
+ Own Id: OTP-18622
+ Application(s): stdlib
+ Related Id(s): [GH-7183], [GH-7232]
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ ```erlang
+ a() -> ok;
+ a(_) -> error.
+ ```
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ ```text
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ ```text
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ Own Id: OTP-18648
+ Application(s): compiler, stdlib
+ Related Id(s): [PR-7383]
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ ```erlang
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+ ```
+
+ Own Id: OTP-18680
+ Application(s): compiler
+ Related Id(s): ERIERL-967, [PR-7491], [PR-8086]
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): [PR-7728]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Application(s): erts
+ Related Id(s): [PR-7470]
+
+- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the
+ Reference Manual.
+
+ Example:
+
+ ```erlang
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+ ```
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ ```text
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+ ```
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): [PR-7313], [PR-7451], OTP-18746
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- Several new functions that accept funs have been added to module [`timer`].
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Application(s): stdlib
+ Related Id(s): [PR-7649]
+
+- Sigils on string literals have been implemented as per [EEP 66], that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ ```erlang
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+ ```
+
+ Own Id: OTP-18825
+ Application(s): stdlib
+ Related Id(s): [PR-7684], OTP-18750
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the [`cover`] tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ [`line_coverage`] option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ ```text
+ $ erl +JPcover true
+ ```
+
+ There are also the following new functions for supporting native coverage:
+
+ - `code:coverage_support/0`
+ - `code:get_coverage/2`
+ - `code:reset_coverage/1`
+ - `code:get_coverage_mode/0`
+ - `code:get_coverage_mode/1`
+ - `code:set_coverage_mode/1`
+
+ Own Id: OTP-18856
+ Application(s): compiler, erts, kernel, tools
+ Related Id(s): [PR-7856]
+
+- [EEP-59 - Documentation Attributes] has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of [EEP-48].
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Application(s): compiler, stdlib
+ Related Id(s): [PR-7936]
+
+- New [`ets`] functions `ets:first_lookup/1`, `ets:next_lookup/2`,
+ `ets:prev_lookup/2` and `ets:last_lookup/1`. Example: `ets:next_lookup/1` is
+ equivalent to `ets:next/2` followed by `ets:lookup/2` with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Application(s): stdlib
+ Related Id(s): [PR-6791]
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ ```erlang
+ -feature(maybe_expr, disable).
+ ```
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ ```text
+ erlc -disable-feature maybe_expr some_file.erl
+ ```
+
+ Own Id: OTP-18944
+ Application(s): otp, stdlib
+ Related Id(s): [PR-8067]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer,
+ diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface,
+ kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key,
+ reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp,
+ tools, wx, xmerl
+ Related Id(s): [PR-8026]
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ ```erlang
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+ ```
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Application(s): compiler, erts
+ Related Id(s): [PR-8090]
+
+- Multiple trace sessions.
+
+ Own Id: OTP-18980
+ Application(s): erts
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new [`json`] module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Application(s): asn1
+ Related Id(s): [PR-8241]
+
+- There is a new module [`json`] for encoding and decoding [JSON].
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Application(s): stdlib
+ Related Id(s): [PR-8111]
+
+# POTENTIAL INCOMPATIBILITIES
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Application(s): erts
+ Related Id(s): [PR-7274]
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Application(s): erts
+ Related Id(s): [PR-7348]
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Application(s): inets
+ Related Id(s): [PR-7316]
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): [PR-7728]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the
+ Reference Manual.
+
+ Example:
+
+ ```erlang
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+ ```
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ ```text
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+ ```
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): [PR-7313], [PR-7451], OTP-18746
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Application(s): compiler, otp, stdlib
+ Related Id(s): [GH-7706], [PR-7726]
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice`
+ flag, and using [`erl_prim_loader`] for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use `escript:extract/2`
+ instead of `erl_prim_loader` and `code:lib_dir/2`.
+
+ Own Id: OTP-18966
+ Application(s): kernel, otp
+ Related Id(s): [PR-8091]
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ ```erlang
+ -compile([nowarn_missing_spec]).
+ ```
+
+ and the compiler is invoked like so:
+
+ ```text
+ % erlc +warn_missing_spec some_module.erl
+ ```
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Application(s): compiler
+ Related Id(s): [GH-6979], [PR-8093]
+
+- The implementations of `http_uri:encode/1` and `http_uri:decode/1` are now
+ replaced with their equivalent, but bug free versions from module
+ [`uri_string`], namely `uri_string:quote/1` and `uri_string:unquote/1`.
+
+ Own Id: OTP-19022
+ Application(s): inets
+
+- For security reasons remove CBC ciphers form default supported cipher suites
+ in TLS-1.2
+
+ Own Id: OTP-19025
+ Application(s): ssl
+
+- Enhance simple_one_for_one error handling. Avoid crash of transient child
+ returning ignore for init-function. Also disallow automatic shutdown as it
+ does not make sense for this supervisor type, may potentially be backwards
+ incompatible for no intended uses, that is supervisors will not remain
+ bug-compatible.
+
+ Own Id: OTP-19029
+ Application(s): stdlib
+
+# OTP-27.0
+
+## Fixed Bugs and Malfunctions
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): [PR-7728]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): [GH-7706], [PR-7726]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+## Improvements and New Features
+
+- `configure` scripts of the OTP build system are now generated using Autoconf
+ 2.72.
+
+ Own Id: OTP-18943
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ ```erlang
+ -feature(maybe_expr, disable).
+ ```
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ ```text
+ erlc -disable-feature maybe_expr some_file.erl
+ ```
+
+ Own Id: OTP-18944
+ Related Id(s): [PR-8067]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- By default `configure` scripts used when building OTP will now try to enable
+ support for timestamps that will work after mid-January 2038. This has
+ typically only been an issue on 32-bit platforms.
+
+ If `configure` cannot figure out how to enable such timestamps, it will abort
+ with an error message. If you want to build the system anyway, knowing that
+ the system will not function properly after mid-January 2038, you can pass the
+ `--disable-year2038` option to `configure`, which will enable `configure` to
+ continue without support for timestamps after mid-January 2038.
+
+ Own Id: OTP-18965
+ Related Id(s): [PR-8095]
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice`
+ flag, and using [`erl_prim_loader`] for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use `escript:extract/2`
+ instead of `erl_prim_loader` and `code:lib_dir/2`.
+
+ Own Id: OTP-18966
+ Related Id(s): [PR-8091]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The restriction for the expression that gives a default value for a record
+ field is now documented.
+
+ Own Id: OTP-18995
+ Related Id(s): [GH-8166], [PR-8177]
+
+# asn1-5.3
+
+## Fixed Bugs and Malfunctions
+
+- Multiple bugs has been eliminated in the [specialized decode feature].
+
+ Own Id: OTP-18813
+ Related Id(s): [PR-7790]
+
+## Improvements and New Features
+
+- Specs have been added to all `asn1ct` API functions.
+
+ Own Id: OTP-18804
+ Related Id(s): [PR-7738]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new [`json`] module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Related Id(s): [PR-8241]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of asn1-5.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.27
+
+## Improvements and New Features
+
+- Calls to `ct:capture_start/0` and `ct:capture_stop/0` are now synchronous to
+ ensure that all output is captured.
+
+ Own Id: OTP-18658
+ Related Id(s): [PR-7380]
+
+- The order in which multiple hooks are executed can now be reversed after each
+ config function. See [CTH Execution Order].
+
+ Own Id: OTP-18682
+ Related Id(s): ERIERL-43, [GH-7397], [PR-7496]
+
+- The default CSS will now include a basic dark mode handling if it is preferred
+ by the browser.
+
+ Own Id: OTP-18761
+ Related Id(s): [PR-7428]
+
+- `-callback` attributes have been added to [`ct_suite`] and [`ct_hooks`].
+
+ Own Id: OTP-18781
+ Related Id(s): [PR-7701]
+
+- The built-in [cth_log_redirect] hook can now be configured to replace default
+ logger reports in terminal with HTML logs.
+
+ Own Id: OTP-18875
+ Related Id(s): [PR-7891]
+
+- Error handling for the [`ct_property_test`] framework has been enhanced.
+
+ Own Id: OTP-18881
+ Related Id(s): [PR-7824]
+
+- Enhance test case documentation, making it clear how a test case can be
+ failed.
+
+ Own Id: OTP-18892
+ Related Id(s): [PR-7869]
+
+- The failing line in the test source code is now colored to make it easier to
+ find on the screen.
+
+ Own Id: OTP-18898
+ Related Id(s): [PR-7917]
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- With this change, suite execution elapsed time is included in index page.
+
+ Own Id: OTP-18981
+ Related Id(s): [GH-7972], [PR-8112]
+
+> #### Full runtime dependencies of common_test-1.27
+>
+> 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
+
+## Fixed Bugs and Malfunctions
+
+- Generators for binary comprehensions could be evaluated before it was known
+ that they would be needed. That could result in a binary comprehensions
+ failing if a generator that should not be evaluated until later failed.
+
+ As an example, consider this module:
+
+ ```erlang
+ -module(t).
+ -export([f/0]).
+
+ f() ->
+ <<0 || _ <- [], _ <- ok, false>>.
+ ```
+
+ In Erlang/OTP 26 it would fail like so:
+
+ ```text
+ > t:f().
+ ** exception error: bad generator ok
+ in function t:f/0 (t.erl, line 6)
+ ```
+
+ In Erlang/OTP 27 it returns an empty binary:
+
+ ```text
+ > t:f().
+ <<>>
+ ```
+
+ Own Id: OTP-18703
+ Related Id(s): [GH-7494], [PR-7538]
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): [GH-7706], [PR-7726]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+## Improvements and New Features
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ ```erlang
+ a() -> ok;
+ a(_) -> error.
+ ```
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ ```text
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ ```text
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ Own Id: OTP-18648
+ Related Id(s): [PR-7383]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The compiler now optimizes creation of binaries that are known to be constant.
+
+ Consider this example:
+
+ ```erlang
+ bin() ->
+ C = char(),
+ <<C>>.
+
+ char() -> $*.
+ ```
+
+ Essentially, the compiler rewrites the example to the slightly more efficient:
+
+ ```erlang
+ bin() ->
+ _ = char(),
+ <<$*>>.
+
+ char() -> $*.
+ ```
+
+ Own Id: OTP-18673
+ Related Id(s): ERIERL-964, [PR-7474]
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ ```erlang
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+ ```
+
+ Own Id: OTP-18680
+ Related Id(s): ERIERL-967, [PR-7491], [PR-8086]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Improved the performance of the alias analysis pass.
+
+ Own Id: OTP-18714
+ Related Id(s): [GH-7432], [PR-7528]
+
+- `-spec` attributes are now used for documentation.
+
+ Own Id: OTP-18801
+ Related Id(s): [PR-7739]
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the [`cover`] tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ [`line_coverage`] option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ ```text
+ $ erl +JPcover true
+ ```
+
+ There are also the following new functions for supporting native coverage:
+
+ - `code:coverage_support/0`
+ - `code:get_coverage/2`
+ - `code:reset_coverage/1`
+ - `code:get_coverage_mode/0`
+ - `code:get_coverage_mode/1`
+ - `code:set_coverage_mode/1`
+
+ Own Id: OTP-18856
+ Related Id(s): [PR-7856]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- [EEP-59 - Documentation Attributes] has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of [EEP-48].
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): [PR-7936]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ ```erlang
+ -compile([nowarn_missing_spec]).
+ ```
+
+ and the compiler is invoked like so:
+
+ ```text
+ % erlc +warn_missing_spec some_module.erl
+ ```
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Related Id(s): [GH-6979], [PR-8093]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ ```erlang
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+ ```
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): [PR-8090]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Improved the match context reuse optimization slightly, allowing match
+ contexts to be passed as-is to `bit_size/1` and `byte_size/1`.
+
+ Own Id: OTP-18987
+
+- `m:erl_lint` (and by extension the [`compiler`]) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): [PR-8205]
+
+> #### Full runtime dependencies of compiler-8.5
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which
+ were marked as deprecated since OTP 25.
+
+ Own Id: OTP-18973
+
+- Add support for sm3 hash and hmac.
+
+ Own Id: OTP-18975
+ Related Id(s): [PR-6658]
+
+- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread
+ specific data.
+
+ Own Id: OTP-18978
+ Related Id(s): [PR-7809]
+
+- Add SM4 block cipher implemented according to GB/T 32907-2016.
+
+ Own Id: OTP-19005
+ Related Id(s): [PR-8168]
+
+> #### Full runtime dependencies of crypto-5.5
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# debugger-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): [PR-7441]
+
+## Improvements and New Features
+
+- Type specs have been added to all API functions.
+
+ Own Id: OTP-18819
+ Related Id(s): [PR-7781]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of debugger-5.4
+>
+> compiler-8.0, erts-14.3, kernel-8.0, stdlib-3.15, wx-2.0
+
+# dialyzer-5.2
+
+## Improvements and New Features
+
+- The `--gui` option for Dialyzer has been removed.
+
+ Own Id: OTP-18667
+ Related Id(s): [PR-7443]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of dialyzer-5.2
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.4
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to [`diameter_app`] and
+ [`diameter_transport`].
+
+ Own Id: OTP-18783
+ Related Id(s): [PR-7699]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of diameter-2.4
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.3
+
+## Fixed Bugs and Malfunctions
+
+- [EEP 48] doc chunks now properly include links within `{@type }` macros.
+
+ Own Id: OTP-18945
+ Related Id(s): [PR-8063]
+
+- `@hidden` now means `hidden` in [EEP 48] doc chunks instead of `none`.
+
+ Own Id: OTP-18946
+ Related Id(s): [PR-8063]
+
+## Improvements and New Features
+
+- There is a new `edoc_html_to_markdown` module that can be used to convert
+ EEP-48 `application/html+erlang` to Markdown.
+
+ Own Id: OTP-18947
+ Related Id(s): [PR-8063]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of edoc-1.3
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.13
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of eldap-1.2.13
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.5.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-14.3
+
+## Fixed Bugs and Malfunctions
+
+- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or
+ `-args_file` have been fixed.
+
+ Own Id: OTP-18766
+ Related Id(s): [PR-7639]
+
+- Fixed a bug that prevented the emulator from building on recent versions of
+ Yocto Linux.
+
+ Own Id: OTP-18918
+ Related Id(s): [PR-7952]
+
+- Fix spectre mitigation configure test to work with GCC patches to always add
+ `-fcf-protection=full`.
+
+ Own Id: OTP-18928
+ Related Id(s): [PR-8006]
+
+- Fix faulty reduction counting in exiting process which could cause it to do
+ unnecessary yielding.
+
+ Own Id: OTP-19014
+
+## Improvements and New Features
+
+- Refactored how the JIT handles POSIX signals and how they affect thread
+ stacks, allowing us to use the native stack register for Erlang stacks on more
+ platforms.
+
+ Notably, containers built on 64-bit x86 Alpine Linux images will now perform
+ much better in sequential code. As an example, running `dialyzer` over the OTP
+ code base finishes about 15% quicker.
+
+ Own Id: OTP-18568
+ Related Id(s): [PR-7174]
+
+- The [`instrument`] module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): [PR-7236]
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Related Id(s): [PR-7274]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Related Id(s): [PR-7348]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- A binary returned from the [`socket`] receive functions is no longer created
+ as a sub binary of an often large receive buffer binary (socket option
+ `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement
+ reallocation efficiently.
+
+ Own Id: OTP-18642
+ Related Id(s): [GH-6152], [PR-7465]
+
+- The default process limit has been raised to `1048576` processes.
+
+ Own Id: OTP-18699
+ Related Id(s): [PR-7388]
+
+- The `erlang:system_monitor/2` functionality is now able to monitor long
+ message queues in the system.
+
+ Own Id: OTP-18709
+ Related Id(s): [PR-7651]
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Related Id(s): [PR-7470]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- When implementing an alternative carrier for the Erlang distribution, a
+ separate input handler process may now be registered, using
+ `erlang:dist_ctrl_input_handler/2`, also in the case when the distribution
+ controller is a port.
+
+ Own Id: OTP-18774
+ Related Id(s): [PR-7110]
+
+- The call stack trace has now been added to the error reported by
+ `erlang:process_flag/2` when `max_heap_size` limit has been exceeded.
+
+ Own Id: OTP-18779
+ Related Id(s): [PR-7592]
+
+- `-callback` attributes have been added to [`erl_tracer`].
+
+ Own Id: OTP-18794
+ Related Id(s): [PR-7703]
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N`, has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- Socket options that take string now also accept binaries.
+
+ Own Id: OTP-18849
+ Related Id(s): [PR-6510]
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the [`cover`] tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ [`line_coverage`] option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ ```text
+ $ erl +JPcover true
+ ```
+
+ There are also the following new functions for supporting native coverage:
+
+ - `code:coverage_support/0`
+ - `code:get_coverage/2`
+ - `code:reset_coverage/1`
+ - `code:get_coverage_mode/0`
+ - `code:get_coverage_mode/1`
+ - `code:set_coverage_mode/1`
+
+ Own Id: OTP-18856
+ Related Id(s): [PR-7856]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Changed the default value of the command line flag `-code_path_choice Choice`
+ to `strict`.
+
+ Own Id: OTP-18894
+ Related Id(s): [PR-7243]
+
+- Added module loading to `erl -init_debug` printouts.
+
+ Own Id: OTP-18929
+ Related Id(s): [PR-8004]
+
+- When the runtime system halts, it performs various flush operations before
+ terminating. By default there is no limit on how much time the flush
+ operations are allowed to take. A new _halt flush timeout_ functionality has
+ been introduced which can be used for limiting the amount of time that the
+ flushing operations are allowed to take. For more information see the
+ documentation of the [`flush_timeout`] option of the `erlang:halt/2` BIF and
+ the documentation of the `erl` [`+zhft <Timeout>`] command line flag.
+
+ Own Id: OTP-18938
+ Related Id(s): [GH-7438], [PR-8035]
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): [PR-7981]
+
+- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d
+
+ Own Id: OTP-18942
+
+- The deprecated functions in [`zlib`] have been removed. That includes
+ `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and
+ the Adler checksum functions.
+
+ Own Id: OTP-18950
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ ```erlang
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+ ```
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): [PR-8090]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The obsolete and undocumented support for opening a port to an external
+ resource by passing an atom (or a string) as first argument to `open_port()`,
+ implemented by the vanilla driver, has been removed. This feature has been
+ scheduled for removal in OTP 27 since the release of OTP 26.
+
+ Own Id: OTP-18976
+ Related Id(s): [PR-7125]
+
+- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all
+ scheduler threads when a NIF library is unloaded. Used for releasing thread
+ specific data. Can be set with function `enif_set_option`.
+
+ Own Id: OTP-18977
+ Related Id(s): [PR-7809]
+
+- Multiple trace sessions.
+
+ Own Id: OTP-18980
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use
+ "large pages" (sometimes known as "huge pages" or "super pages"). This
+ currently only affects super-carrier allocations, but may be extended in the
+ future.
+
+ Own Id: OTP-18984
+ Related Id(s): [PR-7977]
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+> #### Full runtime dependencies of erts-14.3
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.7.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): [PR-7441]
+
+- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of et-1.7.1
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.9.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of eunit-2.9.1
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.2.2
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of ftp-1.2.2
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.2
+
+## Improvements and New Features
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Related Id(s): [PR-7316]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The `httpd` module has been extended with an API for simple serving directory
+ content over HTTP. With this change, the current working directory can be
+ served like this:
+
+ ```
+ erl -S httpd
+ ```
+
+ An arbitrary directory can be served like this:
+
+ ```
+ erl -S httpd serve path/to/dir
+ ```
+
+ Own Id: OTP-18727
+ Related Id(s): [PR-7299]
+
+- Add `-callback` attributes to [`httpd`], [`mod_esi`] and [`mod_security`].
+
+ Own Id: OTP-18786
+ Related Id(s): [PR-7700]
+
+- Use a relative redirect with an absolute path to prevent whoever is running
+ inets from having to configure the ServerName to match the network-reachable
+ hostname of the server.
+
+ Own Id: OTP-18809
+
+- `inets` processes now use `proc_lib:set_label/1` to improve observeability.
+
+ Own Id: OTP-18927
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The implementations of `http_uri:encode/1` and `http_uri:decode/1` are now
+ replaced with their equivalent, but bug free versions from module
+ [`uri_string`], namely `uri_string:quote/1` and `uri_string:unquote/1`.
+
+ Own Id: OTP-19022
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+> #### Full runtime dependencies of inets-9.2
+>
+> 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
+
+# jinterface-1.14.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+# kernel-9.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash when calling `file:delete/2` with an empty option list.
+
+ Own Id: OTP-18590
+ Related Id(s): [PR-7220]
+
+- New functions have been added to the undocumented module [`inet_dns`] that
+ take a flag to specify if encode/decode is for mDNS. This affects how CLASS
+ values in the private range, with the top bit set, are handled.
+
+ Own Id: OTP-18878
+ Related Id(s): [GH-7718], OTP-17734
+
+- The error information for `erlang:phash/2` has been corrected.
+
+ Own Id: OTP-18904
+ Related Id(s): [PR-7960]
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): [GH-4992], [PR-7993]
+
+- Calling `logger:add_handlers/1` with config option now works.
+
+ Own Id: OTP-18954
+ Related Id(s): [GH-8061], [PR-8076]
+
+- The `code:del_path/1` function now also works on paths added through `-pa`,
+ `-pz` , `-path` and the boot script.
+
+ Own Id: OTP-18959
+ Related Id(s): [GH-6692], [PR-7697]
+
+## Improvements and New Features
+
+- Added `file:read_file/2` with a `raw` option for reading files without going
+ through the file server.
+
+ Own Id: OTP-18589
+ Related Id(s): [PR-7220]
+
+- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has
+ been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some
+ bug fixes and code cleanup has been done, and the resolver used in the test
+ suite has been changed to Knot DNS. See the source code.
+
+ Kudos to Alexander Clouter that did almost all the work!
+
+ Own Id: OTP-18713
+ Related Id(s): [GH-6985], [PR-6985]
+
+- The `ebin` directories for escripts are now cached.
+
+ Own Id: OTP-18778
+ Related Id(s): [PR-7556]
+
+- `-callback` attributes haven been added to [`application`],
+ [`logger_handler`], and [`logger_formatter`].
+
+ Own Id: OTP-18795
+ Related Id(s): [PR-7703]
+
+- Progress reports from before logger is started are now logged when log level
+ is set to debug.
+
+ Own Id: OTP-18807
+ Related Id(s): ERIERL-985, [PR-7732]
+
+- The `code:where_is_file/2` and `code:which/1` functions now check for
+ existence of the file directly instead of listing the content of each
+ directory in the code path.
+
+ Own Id: OTP-18816
+ Related Id(s): [PR-7711]
+
+- Type specs has been added to the [`logger:Level/1,2,3`] functions.
+
+ Own Id: OTP-18820
+ Related Id(s): [PR-7779]
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N`, has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): [PR-7845]
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the [`cover`] tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ [`line_coverage`] option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ ```text
+ $ erl +JPcover true
+ ```
+
+ There are also the following new functions for supporting native coverage:
+
+ - `code:coverage_support/0`
+ - `code:get_coverage/2`
+ - `code:reset_coverage/1`
+ - `code:get_coverage_mode/0`
+ - `code:get_coverage_mode/1`
+ - `code:set_coverage_mode/1`
+
+ Own Id: OTP-18856
+ Related Id(s): [PR-7856]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): [PR-7981]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Application startup has been optimized by removing an intermediary process.
+
+ Own Id: OTP-18963
+ Related Id(s): [PR-8042]
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice`
+ flag, and using [`erl_prim_loader`] for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use `escript:extract/2`
+ instead of `erl_prim_loader` and `code:lib_dir/2`.
+
+ Own Id: OTP-18966
+ Related Id(s): [PR-8091]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The undocumented and deprecated `file:pid2name` function has been removed.
+
+ Own Id: OTP-18967
+ Related Id(s): [PR-8092]
+
+- Improve error logging when the standard_io reader and/or writer terminate with
+ an error.
+
+ Own Id: OTP-18989
+ Related Id(s): [PR-8103]
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+> #### Full runtime dependencies of kernel-9.3
+>
+> crypto-5.0, erts-14.3, sasl-3.0, stdlib-6.0
+
+# megaco-4.6
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to [`megaco_transport`].
+
+ Own Id: OTP-18806
+ Related Id(s): [PR-7740]
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18920
+ Related Id(s): BL-322
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of megaco-4.6
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.23.1
+
+## Fixed Bugs and Malfunctions
+
+- The `mnesia_registry` module have been deprecated.
+
+ Own Id: OTP-18994
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of mnesia-4.23.1
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.16
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): [PR-7441]
+
+## Improvements and New Features
+
+- The new function `proc_lib:set_label/1` can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, [`observer`], and it will be included in crash reports
+ produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and
+ [`gen_fsm`].
+
+ The label for a process can be retrieved by calling `proc_lib:get_label/1`.
+
+ Note that those functions work on any process, not only processes that use
+ [`proc_lib`].
+
+ Example:
+
+ ```text
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+ ```
+
+ Own Id: OTP-18789
+ Related Id(s): [PR-7720], [PR-8003]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of observer-2.16
+>
+> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3
+
+# odbc-2.14.3
+
+## Fixed Bugs and Malfunctions
+
+- Change liborder in makefile to avoid finding system libei instead of erlang
+ libei.
+
+ Own Id: OTP-19030
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of odbc-2.14.3
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.10
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of os_mon-2.10
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.6
+
+## Improvements and New Features
+
+- The `leex` documentation has been updated to use specs for documenting the
+ generated interface.
+
+ Own Id: OTP-18796
+ Related Id(s): [PR-7703]
+
+- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl`
+ source file.
+
+ Own Id: OTP-18912
+ Related Id(s): [PR-7963]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of parsetools-2.6
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.16
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- Improved exception reason when `public_key:cacerts_get/0` failed.
+
+ Own Id: OTP-18609
+ Related Id(s): [GH-7295], [PR-7202]
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): [PR-7475], [PR-7898]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of public_key-1.16
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# reltool-1.0.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): [PR-7441]
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of reltool-1.0.1
+>
+> erts-14.3, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.1
+
+## Improvements and New Features
+
+- The [`instrument`] module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): [PR-7236]
+
+- The new function `proc_lib:set_label/1` can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, [`observer`], and it will be included in crash reports
+ produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and
+ [`gen_fsm`].
+
+ The label for a process can be retrieved by calling `proc_lib:get_label/1`.
+
+ Note that those functions work on any process, not only processes that use
+ [`proc_lib`].
+
+ Example:
+
+ ```text
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+ ```
+
+ Own Id: OTP-18789
+ Related Id(s): [PR-7720], [PR-8003]
+
+- Type specs had been added to all [`dbg`] functions.
+
+ Own Id: OTP-18859
+ Related Id(s): [PR-7782]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of runtime_tools-2.1
+>
+> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0
+
+# sasl-4.2.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of sasl-4.2.2
+>
+> erts-14.3, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.16
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to modules
+ [`snmpa_network_interface_filter`], [`snmpa_notification_filter`],
+ [`snmpm_network_interface_filter`], [`snmpm_user`], and
+ [`snmpa_notification_delivery_info_receiver`].
+
+ New `-type` attributes have also been added to modules [`snmp`], [`snmpa`],
+ [`snmpm`], and [`snmpa_conf`] to support the previously mentioned callbacks.
+
+ Own Id: OTP-18785
+ Related Id(s): [PR-7702]
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18934
+ Related Id(s): BL-312
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of snmp-5.16
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2
+
+## Fixed Bugs and Malfunctions
+
+- With this change, ssh processes are assigned labels for troubleshooting
+ purposes.
+
+ Own Id: OTP-19017
+
+## Improvements and New Features
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): [PR-7845]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18961
+
+> #### Full runtime dependencies of ssh-5.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
+
+## Fixed Bugs and Malfunctions
+
+- Starting a TLS server without sufficient credentials (certificate or anonymous
+ cipher) would work, but it was impossible to connect to it.
+
+ This has been corrected to return an error instead of starting the server.
+
+ Own Id: OTP-18887
+ Related Id(s): [GH-7493], [PR-7918]
+
+- Handle ASN.1 decode errors in more places, to improve user error handling.
+
+ Own Id: OTP-18969
+ Related Id(s): [GH-8058]
+
+- Improved error checking on the API functions.
+
+ Own Id: OTP-18992
+ Related Id(s): [GH-8066], [PR-8156]
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- Memory consumption has been reduced and performance increased by refactoring
+ internal data structures and their usage.
+
+ Own Id: OTP-18665
+ Related Id(s): [PR-7447]
+
+- Added `ssl_crl_cache_api:lookup/2` as an optional `-callback` attribute.
+
+ Own Id: OTP-18788
+ Related Id(s): [PR-7700]
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): [PR-7475], [PR-7898]
+
+- The `proc_lib:set_label/1` function is now used to increase observability of
+ `ssl` processes.
+
+ Own Id: OTP-18879
+
+- Add support for brainpool elliptic curves in TLS-1.3.
+
+ Own Id: OTP-18884
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Make ssl:key_exporter_materials/4 a documented and supported API function.
+
+ Own Id: OTP-19016
+
+- For security reasons remove CBC ciphers form default supported cipher suites
+ in TLS-1.2
+
+ Own Id: OTP-19025
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- Add cert_policy_opts option to configure certificate policy options for the
+ certificate path validation.
+
+ Own Id: OTP-19027
+
+> #### Full runtime dependencies of ssl-11.2
+>
+> crypto-5.0, erts-14.3, inets-5.10.7, kernel-9.0, public_key-1.15,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.0
+
+## Fixed Bugs and Malfunctions
+
+- The specs in module [`binary`] has been updated to reflect what is allowed by
+ the documentation.
+
+ Own Id: OTP-18684
+ Related Id(s): [PR-7481]
+
+- Several functions in the [`binary`] module would accept arguments of the wrong
+ type under certain circumstances. In this release, they now raise an exception
+ when incorrect types are given.
+
+ The following functions would accept an invalid pattern if the subject binary
+ was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`,
+ `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3`
+
+ The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of
+ raising an exception. Similarly, calls to `binary:part/2,3` attempting to
+ extract 0 bytes at position 0 of a bitstring would return an empty binary
+ instead of raising an exception.
+
+ Own Id: OTP-18743
+ Related Id(s): [PR-7607], [PR-7628]
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): [GH-7706], [PR-7726]
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): [GH-4992], [PR-7993]
+
+- Enhance simple_one_for_one error handling. Avoid crash of transient child
+ returning ignore for init-function. Also disallow automatic shutdown as it
+ does not make sense for this supervisor type, may potentially be backwards
+ incompatible for no intended uses, that is supervisors will not remain
+ bug-compatible.
+
+ Own Id: OTP-19029
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+## Improvements and New Features
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules [`sets`], [`ordsets`], and [`gb_sets`].
+
+ Own Id: OTP-18622
+ Related Id(s): [GH-7183], [GH-7232]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ ```erlang
+ a() -> ok;
+ a(_) -> error.
+ ```
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ ```text
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ ```text
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+ ```
+
+ Own Id: OTP-18648
+ Related Id(s): [PR-7383]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- `zip:create/2,3` will now tolerate POSIX timestamps in the provided
+ `file_info` records.
+
+ Own Id: OTP-18668
+
+- The callback function `gen_statem:handle_event/4` has been cached in the
+ `gen_statem` engine to optimize callback call speed.
+
+ Own Id: OTP-18671
+ Related Id(s): [PR-7419]
+
+- The type `beam_lib:beam/0` is now exported.
+
+ Own Id: OTP-18716
+ Related Id(s): [PR-7534]
+
+- The documentation for the [`binary`] module has been improved.
+
+ Own Id: OTP-18741
+ Related Id(s): [PR-7585]
+
+- `binary:replace/3,4` now supports using a fun for supplying the replacement
+ binary.
+
+ Own Id: OTP-18742
+ Related Id(s): [PR-7590]
+
+- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the
+ Reference Manual.
+
+ Example:
+
+ ```erlang
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+ ```
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ ```text
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+ ```
+
+ Own Id: OTP-18750
+ Related Id(s): [PR-7313], [PR-7451], OTP-18746
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- The new function `proc_lib:set_label/1` can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, [`observer`], and it will be included in crash reports
+ produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and
+ [`gen_fsm`].
+
+ The label for a process can be retrieved by calling `proc_lib:get_label/1`.
+
+ Note that those functions work on any process, not only processes that use
+ [`proc_lib`].
+
+ Example:
+
+ ```text
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+ ```
+
+ Own Id: OTP-18789
+ Related Id(s): [PR-7720], [PR-8003]
+
+- `-callback` attributes has been added to modules [`sys`] and [`erl_error`].
+
+ Own Id: OTP-18793
+ Related Id(s): [PR-7703]
+
+- Several new functions that accept funs have been added to module [`timer`].
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Related Id(s): [PR-7649]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Sigils on string literals have been implemented as per [EEP 66], that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ ```erlang
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+ ```
+
+ Own Id: OTP-18825
+ Related Id(s): [PR-7684], OTP-18750
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Functions `shell:default_multiline_prompt/1`, `shell:inverted_space_prompt/1`,
+ and `shell:prompt_width/1` have been exported to help with custom prompt
+ implementations.
+
+ Own Id: OTP-18834
+ Related Id(s): [PR-7675], [PR-7816]
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): [PR-7845]
+
+- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function
+ directly before the cursor.
+
+ Own Id: OTP-18847
+ Related Id(s): [PR-7846]
+
+- Added support for adding a custom code formatter that formats your multi-line
+ shell commands in your preferred formatting on submission. See
+ `shell:format_shell_func/` and `shell:erl_pp_format_func/1`.
+
+ Own Id: OTP-18848
+ Related Id(s): [PR-7847]
+
+- Added shell functions for viewing, forgetting and saving locally defined
+ functions, types and records.
+
+ Own Id: OTP-18852
+ Related Id(s): [PR-7844]
+
+- Added `string:jaro_similarity/2`, which can be used to calculate the
+ similarity between two strings.
+
+ Own Id: OTP-18865
+ Related Id(s): [PR-7879]
+
+- The new function `ets:update_element/4` is similar to `ets:update_element/3`,
+ but takes a default tuple as the fourth argument, which will be inserted if no
+ previous record with that key exists.
+
+ Own Id: OTP-18870
+ Related Id(s): [PR-7857]
+
+- Added functions to retrieve the next higher or lower key/element from
+ [`gb_trees`] and [`gb_sets`], as well as returning iterators that start at
+ given keys/elements.
+
+ Own Id: OTP-18874
+ Related Id(s): [PR-7745]
+
+- When the shell built-in function [`c/1,2`][c12] is used to re-compile a
+ module, the current working directory of the original compilation is now added
+ to the include path.
+
+ [c12]: `\c:c/1`
+
+ Own Id: OTP-18908
+ Related Id(s): [PR-7957]
+
+- The `timer` module now uses a private table for its internal state, slightly
+ improving its performance.
+
+ Own Id: OTP-18914
+ Related Id(s): [PR-7973]
+
+- [EEP-59 - Documentation Attributes] has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of [EEP-48].
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): [PR-7936]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- New [`ets`] functions `ets:first_lookup/1`, `ets:next_lookup/2`,
+ `ets:prev_lookup/2` and `ets:last_lookup/1`. Example: `ets:next_lookup/1` is
+ equivalent to `ets:next/2` followed by `ets:lookup/2` with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Related Id(s): [PR-6791]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ ```erlang
+ -feature(maybe_expr, disable).
+ ```
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ ```text
+ erlc -disable-feature maybe_expr some_file.erl
+ ```
+
+ Own Id: OTP-18944
+ Related Id(s): [PR-8067]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The compiler will now raise a warning when updating record/map literals. As an
+ example, consider this module:
+
+ ```erlang
+ -module(t).
+ -export([f/0]).
+ -record(r, {a,b,c}).
+
+ f() ->
+ #r{a=1}#r{b=2}.
+ ```
+
+ The compiler raises the following warning:
+
+ ```text
+ 1> c(t).
+ t.erl:6:12: Warning: expression updates a literal
+ % 6| #r{a=1}#r{b=2}.
+ % | ^
+ ```
+
+ Own Id: OTP-18951
+ Related Id(s): [PR-8069]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made
+ them immune against table renaming.
+
+ Own Id: OTP-18993
+ Related Id(s): [PR-8048]
+
+- Windows now supports all functions in [`math`].
+
+ Own Id: OTP-19001
+ Related Id(s): [PR-8164]
+
+- `m:erl_lint` (and by extension the [`compiler`]) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): [PR-8205]
+
+- There is a new module [`json`] for encoding and decoding [JSON].
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Related Id(s): [PR-8111]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of stdlib-6.0
+>
+> compiler-5.0, crypto-4.5, erts-14.3, kernel-9.3, sasl-3.0
+
+# syntax_tools-3.2
+
+## Fixed Bugs and Malfunctions
+
+- The [`epp_dodger`] module can now handle the `maybe` and `else` keywords.
+
+ Own Id: OTP-18608
+ Related Id(s): [GH-7266], [PR-7267]
+
+- Reverting a `#wrapper` will no longer throw away changes made to
+ positions/annotations.
+
+ Own Id: OTP-18805
+ Related Id(s): [PR-7398]
+
+## Improvements and New Features
+
+- The type `erl_syntax:annotation_or_location/0` is now exported.
+
+ Own Id: OTP-18715
+ Related Id(s): [PR-7535]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of syntax_tools-3.2
+>
+> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0
+
+# tftp-1.2
+
+## Improvements and New Features
+
+- There is a new [`tftp_logger`] callback behavior module.
+
+ Own Id: OTP-18787
+ Related Id(s): [PR-7700]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of tftp-1.2
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated.
+
+ Own Id: OTP-18860
+
+- In Erlang/OTP 26, doing a [`cover`] analysis on the `line` level would return
+ multiple entries for lines on which multiple functions were defined.
+
+ For example, consider this module:
+
+ -module(foo).
+ -export([bar/0, baz/0]).
+
+ bar() -> ok. baz() -> not_ok.
+
+ In Erlang/OTP 26, analysing on the `line` level would return two entries for
+ line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,[{{foo,4},{1,0}},{{foo,4},{0,1}}]}
+ 4> cover:analyse(foo, calls, line).
+ {ok,[{{foo,4},1},{{foo,4},0}]}
+
+ In Erlang/OTP 27, there will only be a single entry for line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,[{{foo,4},{1,0}}]}
+ 4> cover:analyse(foo, calls, line).
+ {ok,[{{foo,4},1}]}
+
+ Own Id: OTP-18998
+ Related Id(s): [GH-8159], [PR-8182]
+
+- Fixed align command in emacs mode.
+
+ Own Id: OTP-19026
+ Related Id(s): [PR-8155]
+
+## Improvements and New Features
+
+- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the
+ Reference Manual.
+
+ Example:
+
+ ```erlang
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+ ```
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ ```text
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+ ```
+
+ Own Id: OTP-18750
+ Related Id(s): [PR-7313], [PR-7451], OTP-18746
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+ \*\*\* POTENTIAL INCOMPATIBILITY \*\*\*
+
+- There is a new tool [`tprof`], which combines the functionality of [`eprof`]
+ and [`cprof`] under one interface. It also adds heap profiling.
+
+ Own Id: OTP-18756
+ Related Id(s): [PR-6639]
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the [`cover`] tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ [`line_coverage`] option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ ```text
+ $ erl +JPcover true
+ ```
+
+ There are also the following new functions for supporting native coverage:
+
+ - `code:coverage_support/0`
+ - `code:get_coverage/2`
+ - `code:reset_coverage/1`
+ - `code:get_coverage_mode/0`
+ - `code:get_coverage_mode/1`
+ - `code:set_coverage_mode/1`
+
+ Own Id: OTP-18856
+ Related Id(s): [PR-7856]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of tools-4.0
+>
+> compiler-8.5, erts-14.3, erts-14.3, kernel-9.3, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.4.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of wx-2.4.2
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-1.4
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that
+ provides out-of-the box indented output has been added.
+
+ Own Id: OTP-18922
+ Related Id(s): [PR-7942]
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): [PR-8026]
+
+ \*\*\* HIGHLIGHT \*\*\*
+
+> #### Full runtime dependencies of xmerl-1.4
+>
+> erts-6.0, kernel-3.0, stdlib-2.5
+
+[CTH Execution Order]:
+ https://erlang.org/doc/apps/common_test/ct_hooks_chapter.html#cth_execution_order
+[EEP 48]: https://www.erlang.org/eeps/eep-0048
+[EEP 64]: https://www.erlang.org/eeps/eep-0064
+[EEP 66]: https://www.erlang.org/eeps/eep-0066
+[EEP-48]: https://www.erlang.org/eeps/eep-0048
+[EEP-59 - Documentation Attributes]: https://www.erlang.org/eeps/eep-0059
+[GH-4992]: https://github.com/erlang/otp/issues/4992
+[GH-6152]: https://github.com/erlang/otp/issues/6152
+[GH-6692]: https://github.com/erlang/otp/issues/6692
+[GH-6979]: https://github.com/erlang/otp/issues/6979
+[GH-6985]: https://github.com/erlang/otp/issues/6985
+[GH-7183]: https://github.com/erlang/otp/issues/7183
+[GH-7232]: https://github.com/erlang/otp/issues/7232
+[GH-7266]: https://github.com/erlang/otp/issues/7266
+[GH-7295]: https://github.com/erlang/otp/issues/7295
+[GH-7397]: https://github.com/erlang/otp/issues/7397
+[GH-7432]: https://github.com/erlang/otp/issues/7432
+[GH-7438]: https://github.com/erlang/otp/issues/7438
+[GH-7493]: https://github.com/erlang/otp/issues/7493
+[GH-7494]: https://github.com/erlang/otp/issues/7494
+[GH-7706]: https://github.com/erlang/otp/issues/7706
+[GH-7718]: https://github.com/erlang/otp/issues/7718
+[GH-7972]: https://github.com/erlang/otp/issues/7972
+[GH-8058]: https://github.com/erlang/otp/issues/8058
+[GH-8061]: https://github.com/erlang/otp/issues/8061
+[GH-8066]: https://github.com/erlang/otp/issues/8066
+[GH-8159]: https://github.com/erlang/otp/issues/8159
+[GH-8166]: https://github.com/erlang/otp/issues/8166
+[JSON]: https://en.wikipedia.org/wiki/JSON
+[PR-6510]: https://github.com/erlang/otp/pull/6510
+[PR-6639]: https://github.com/erlang/otp/pull/6639
+[PR-6658]: https://github.com/erlang/otp/pull/6658
+[PR-6791]: https://github.com/erlang/otp/pull/6791
+[PR-6985]: https://github.com/erlang/otp/pull/6985
+[PR-7110]: https://github.com/erlang/otp/pull/7110
+[PR-7125]: https://github.com/erlang/otp/pull/7125
+[PR-7174]: https://github.com/erlang/otp/pull/7174
+[PR-7202]: https://github.com/erlang/otp/pull/7202
+[PR-7220]: https://github.com/erlang/otp/pull/7220
+[PR-7236]: https://github.com/erlang/otp/pull/7236
+[PR-7243]: https://github.com/erlang/otp/pull/7243
+[PR-7267]: https://github.com/erlang/otp/pull/7267
+[PR-7274]: https://github.com/erlang/otp/pull/7274
+[PR-7299]: https://github.com/erlang/otp/pull/7299
+[PR-7313]: https://github.com/erlang/otp/pull/7313
+[PR-7316]: https://github.com/erlang/otp/pull/7316
+[PR-7348]: https://github.com/erlang/otp/pull/7348
+[PR-7380]: https://github.com/erlang/otp/pull/7380
+[PR-7383]: https://github.com/erlang/otp/pull/7383
+[PR-7388]: https://github.com/erlang/otp/pull/7388
+[PR-7398]: https://github.com/erlang/otp/pull/7398
+[PR-7419]: https://github.com/erlang/otp/pull/7419
+[PR-7428]: https://github.com/erlang/otp/pull/7428
+[PR-7441]: https://github.com/erlang/otp/pull/7441
+[PR-7443]: https://github.com/erlang/otp/pull/7443
+[PR-7447]: https://github.com/erlang/otp/pull/7447
+[PR-7451]: https://github.com/erlang/otp/pull/7451
+[PR-7465]: https://github.com/erlang/otp/pull/7465
+[PR-7470]: https://github.com/erlang/otp/pull/7470
+[PR-7474]: https://github.com/erlang/otp/pull/7474
+[PR-7475]: https://github.com/erlang/otp/pull/7475
+[PR-7481]: https://github.com/erlang/otp/pull/7481
+[PR-7491]: https://github.com/erlang/otp/pull/7491
+[PR-7496]: https://github.com/erlang/otp/pull/7496
+[PR-7528]: https://github.com/erlang/otp/pull/7528
+[PR-7534]: https://github.com/erlang/otp/pull/7534
+[PR-7535]: https://github.com/erlang/otp/pull/7535
+[PR-7538]: https://github.com/erlang/otp/pull/7538
+[PR-7556]: https://github.com/erlang/otp/pull/7556
+[PR-7585]: https://github.com/erlang/otp/pull/7585
+[PR-7590]: https://github.com/erlang/otp/pull/7590
+[PR-7592]: https://github.com/erlang/otp/pull/7592
+[PR-7607]: https://github.com/erlang/otp/pull/7607
+[PR-7628]: https://github.com/erlang/otp/pull/7628
+[PR-7639]: https://github.com/erlang/otp/pull/7639
+[PR-7649]: https://github.com/erlang/otp/pull/7649
+[PR-7651]: https://github.com/erlang/otp/pull/7651
+[PR-7675]: https://github.com/erlang/otp/pull/7675
+[PR-7684]: https://github.com/erlang/otp/pull/7684
+[PR-7697]: https://github.com/erlang/otp/pull/7697
+[PR-7699]: https://github.com/erlang/otp/pull/7699
+[PR-7700]: https://github.com/erlang/otp/pull/7700
+[PR-7701]: https://github.com/erlang/otp/pull/7701
+[PR-7702]: https://github.com/erlang/otp/pull/7702
+[PR-7703]: https://github.com/erlang/otp/pull/7703
+[PR-7711]: https://github.com/erlang/otp/pull/7711
+[PR-7720]: https://github.com/erlang/otp/pull/7720
+[PR-7726]: https://github.com/erlang/otp/pull/7726
+[PR-7728]: https://github.com/erlang/otp/pull/7728
+[PR-7732]: https://github.com/erlang/otp/pull/7732
+[PR-7738]: https://github.com/erlang/otp/pull/7738
+[PR-7739]: https://github.com/erlang/otp/pull/7739
+[PR-7740]: https://github.com/erlang/otp/pull/7740
+[PR-7745]: https://github.com/erlang/otp/pull/7745
+[PR-7779]: https://github.com/erlang/otp/pull/7779
+[PR-7781]: https://github.com/erlang/otp/pull/7781
+[PR-7782]: https://github.com/erlang/otp/pull/7782
+[PR-7790]: https://github.com/erlang/otp/pull/7790
+[PR-7809]: https://github.com/erlang/otp/pull/7809
+[PR-7816]: https://github.com/erlang/otp/pull/7816
+[PR-7824]: https://github.com/erlang/otp/pull/7824
+[PR-7844]: https://github.com/erlang/otp/pull/7844
+[PR-7845]: https://github.com/erlang/otp/pull/7845
+[PR-7846]: https://github.com/erlang/otp/pull/7846
+[PR-7847]: https://github.com/erlang/otp/pull/7847
+[PR-7856]: https://github.com/erlang/otp/pull/7856
+[PR-7857]: https://github.com/erlang/otp/pull/7857
+[PR-7869]: https://github.com/erlang/otp/pull/7869
+[PR-7879]: https://github.com/erlang/otp/pull/7879
+[PR-7891]: https://github.com/erlang/otp/pull/7891
+[PR-7898]: https://github.com/erlang/otp/pull/7898
+[PR-7917]: https://github.com/erlang/otp/pull/7917
+[PR-7918]: https://github.com/erlang/otp/pull/7918
+[PR-7936]: https://github.com/erlang/otp/pull/7936
+[PR-7942]: https://github.com/erlang/otp/pull/7942
+[PR-7952]: https://github.com/erlang/otp/pull/7952
+[PR-7957]: https://github.com/erlang/otp/pull/7957
+[PR-7960]: https://github.com/erlang/otp/pull/7960
+[PR-7963]: https://github.com/erlang/otp/pull/7963
+[PR-7973]: https://github.com/erlang/otp/pull/7973
+[PR-7977]: https://github.com/erlang/otp/pull/7977
+[PR-7981]: https://github.com/erlang/otp/pull/7981
+[PR-7993]: https://github.com/erlang/otp/pull/7993
+[PR-8003]: https://github.com/erlang/otp/pull/8003
+[PR-8004]: https://github.com/erlang/otp/pull/8004
+[PR-8006]: https://github.com/erlang/otp/pull/8006
+[PR-8026]: https://github.com/erlang/otp/pull/8026
+[PR-8035]: https://github.com/erlang/otp/pull/8035
+[PR-8042]: https://github.com/erlang/otp/pull/8042
+[PR-8048]: https://github.com/erlang/otp/pull/8048
+[PR-8063]: https://github.com/erlang/otp/pull/8063
+[PR-8067]: https://github.com/erlang/otp/pull/8067
+[PR-8069]: https://github.com/erlang/otp/pull/8069
+[PR-8076]: https://github.com/erlang/otp/pull/8076
+[PR-8086]: https://github.com/erlang/otp/pull/8086
+[PR-8090]: https://github.com/erlang/otp/pull/8090
+[PR-8091]: https://github.com/erlang/otp/pull/8091
+[PR-8092]: https://github.com/erlang/otp/pull/8092
+[PR-8093]: https://github.com/erlang/otp/pull/8093
+[PR-8095]: https://github.com/erlang/otp/pull/8095
+[PR-8103]: https://github.com/erlang/otp/pull/8103
+[PR-8111]: https://github.com/erlang/otp/pull/8111
+[PR-8112]: https://github.com/erlang/otp/pull/8112
+[PR-8155]: https://github.com/erlang/otp/pull/8155
+[PR-8156]: https://github.com/erlang/otp/pull/8156
+[PR-8164]: https://github.com/erlang/otp/pull/8164
+[PR-8168]: https://github.com/erlang/otp/pull/8168
+[PR-8177]: https://github.com/erlang/otp/pull/8177
+[PR-8182]: https://github.com/erlang/otp/pull/8182
+[PR-8205]: https://github.com/erlang/otp/pull/8205
+[PR-8241]: https://github.com/erlang/otp/pull/8241
+[`+zhft <Timeout>`]: erl_cmd.md#+zhft
+[`application`]: https://erlang.org/doc/man/application
+[`binary`]: https://erlang.org/doc/man/binary
+[`compiler`]: https://erlang.org/doc/man/compile
+[`cover`]: https://erlang.org/doc/man/cover
+[`cprof`]: https://erlang.org/doc/man/cprof
+[`ct_hooks`]: https://erlang.org/doc/man/ct_hooks
+[`ct_property_test`]: https://erlang.org/doc/man/ct_property_test
+[`ct_suite`]: https://erlang.org/doc/man/ct_suite
+[`dbg`]: https://erlang.org/doc/man/dbg
+[`diameter_app`]: https://erlang.org/doc/man/diameter_app
+[`diameter_transport`]: https://erlang.org/doc/man/diameter_transport
+[`epp_dodger`]: https://erlang.org/doc/man/epp_dodger
+[`eprof`]: https://erlang.org/doc/man/eprof
+[`erl_error`]: https://erlang.org/doc/man/erl_error
+[`erl_prim_loader`]: https://erlang.org/doc/man/erl_prim_loader
+[`erl_tracer`]: https://erlang.org/doc/man/erl_tracer
+[`ets`]: https://erlang.org/doc/man/ets
+[`flush_timeout`]: https://erlang.org/doc/man/erlang#halt_flush_timeout
+[`gb_sets`]: https://erlang.org/doc/man/gb_sets
+[`gb_trees`]: https://erlang.org/doc/man/gb_trees
+[`gen_event`]: https://erlang.org/doc/man/gen_event
+[`gen_fsm`]: https://erlang.org/doc/man/gen_fsm
+[`gen_server`]: https://erlang.org/doc/man/gen_server
+[`gen_statem`]: https://erlang.org/doc/man/gen_statem
+[`httpd`]: https://erlang.org/doc/man/httpd
+[`inet_dns`]: https://erlang.org/doc/man/inet_dns
+[`instrument`]: https://erlang.org/doc/man/instrument
+[`json`]: https://erlang.org/doc/man/json
+[`line_coverage`]: https://erlang.org/doc/man/compile#line_coverage
+[`logger:Level/1,2,3`]: https://erlang.org/doc/man/logger
+[`logger_formatter`]: https://erlang.org/doc/man/logger_formatter
+[`logger_handler`]: https://erlang.org/doc/man/logger_handler
+[`math`]: https://erlang.org/doc/man/math
+[`megaco_transport`]: https://erlang.org/doc/man/megaco_transport
+[`mod_esi`]: https://erlang.org/doc/man/mod_esi
+[`mod_security`]: https://erlang.org/doc/man/mod_security
+[`observer`]: https://erlang.org/doc/man/observer
+[`ordsets`]: https://erlang.org/doc/man/ordsets
+[`proc_lib`]: https://erlang.org/doc/man/proc_lib
+[`sets`]: https://erlang.org/doc/man/sets
+[`snmp`]: https://erlang.org/doc/man/snmp
+[`snmpa_conf`]: https://erlang.org/doc/man/snmpa_conf
+[`snmpa_network_interface_filter`]:
+ https://erlang.org/doc/man/snmpa_network_interface_filter
+[`snmpa_notification_delivery_info_receiver`]:
+ https://erlang.org/doc/man/snmpa_notification_delivery_info_receiver
+[`snmpa_notification_filter`]:
+ https://erlang.org/doc/man/snmpa_notification_filter
+[`snmpa`]: https://erlang.org/doc/man/snmpa
+[`snmpm_network_interface_filter`]:
+ https://erlang.org/doc/man/snmpm_network_interface_filter
+[`snmpm_user`]: https://erlang.org/doc/man/snmpm_user
+[`snmpm`]: https://erlang.org/doc/man/snmpm
+[`socket`]: https://erlang.org/doc/man/socket
+[`sys`]: https://erlang.org/doc/man/sys
+[`tftp_logger`]: https://erlang.org/doc/man/tftp_logger
+[`timer`]: https://erlang.org/doc/man/timer
+[`tprof`]: https://erlang.org/doc/man/tprof
+[`uri_string`]: https://erlang.org/doc/man/uri_string
+[`zlib`]: https://erlang.org/doc/man/zlib
+[cth_log_redirect]:
+ https://erlang.org/doc/apps/common_test/ct_hooks_chapter.html#built-in-cths
+[specialized decode feature]: https://erlang.org/doc/apps/asn1/asn1_spec.html
diff --git a/release-notes/OTP-27.0-rc3.README.txt b/release-notes/OTP-27.0-rc3.README.txt
new file mode 100644
index 0000000..42d2dec
--- /dev/null
+++ b/release-notes/OTP-27.0-rc3.README.txt
@@ -0,0 +1,2836 @@
+Inital Release: OTP 27.0
+Git Tag: OTP-27.0
+Date: 2024-04-18
+Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589,
+ OTP-18590, OTP-18594, OTP-18606, OTP-18608,
+ OTP-18609, OTP-18622, OTP-18639, OTP-18641,
+ OTP-18642, OTP-18648, OTP-18658, OTP-18665,
+ OTP-18667, OTP-18668, OTP-18671, OTP-18673,
+ OTP-18680, OTP-18682, OTP-18684, OTP-18699,
+ OTP-18703, OTP-18709, OTP-18713, OTP-18714,
+ OTP-18715, OTP-18716, OTP-18717, OTP-18727,
+ OTP-18741, OTP-18742, OTP-18743, OTP-18744,
+ OTP-18750, OTP-18756, OTP-18761, OTP-18766,
+ OTP-18774, OTP-18778, OTP-18779, OTP-18781,
+ OTP-18783, OTP-18784, OTP-18785, OTP-18786,
+ OTP-18787, OTP-18788, OTP-18789, OTP-18793,
+ OTP-18794, OTP-18795, OTP-18796, OTP-18801,
+ OTP-18804, OTP-18805, OTP-18806, OTP-18807,
+ OTP-18808, OTP-18809, OTP-18813, OTP-18816,
+ OTP-18819, OTP-18820, OTP-18825, OTP-18831,
+ OTP-18834, OTP-18835, OTP-18845, OTP-18846,
+ OTP-18847, OTP-18848, OTP-18849, OTP-18852,
+ OTP-18856, OTP-18859, OTP-18860, OTP-18865,
+ OTP-18870, OTP-18874, OTP-18875, OTP-18876,
+ OTP-18878, OTP-18879, OTP-18881, OTP-18884,
+ OTP-18887, OTP-18892, OTP-18894, OTP-18898,
+ OTP-18904, OTP-18908, OTP-18912, OTP-18913,
+ OTP-18914, OTP-18916, OTP-18918, OTP-18920,
+ OTP-18922, OTP-18923, OTP-18927, OTP-18928,
+ OTP-18929, OTP-18930, OTP-18934, OTP-18938,
+ OTP-18941, OTP-18942, OTP-18943, OTP-18944,
+ OTP-18945, OTP-18946, OTP-18947, OTP-18950,
+ OTP-18951, OTP-18954, OTP-18955, OTP-18959,
+ OTP-18961, OTP-18963, OTP-18965, OTP-18966,
+ OTP-18967, OTP-18968, OTP-18969, OTP-18972,
+ OTP-18973, OTP-18975, OTP-18976, OTP-18977,
+ OTP-18978, OTP-18980, OTP-18981, OTP-18984,
+ OTP-18987, OTP-18989, OTP-18992, OTP-18993,
+ OTP-18994, OTP-18995, OTP-18998, OTP-19001,
+ OTP-19004, OTP-19005, OTP-19010, OTP-19016,
+ OTP-19017, OTP-19018, OTP-19020, OTP-19022,
+ OTP-19025, OTP-19026, OTP-19027, OTP-19029,
+ OTP-19030, OTP-19042, OTP-19052, OTP-19053,
+ OTP-19054, OTP-19062, OTP-19063
+Seq num: #6724, BL-312, BL-322, ERIERL-43, ERIERL-964,
+ ERIERL-967, ERIERL-985, GH-4992, GH-6152,
+ GH-6692, GH-6979, GH-6985, GH-7266, GH-7295,
+ GH-7397, GH-7432, GH-7438, GH-7493, GH-7494,
+ GH-7617, GH-7706, GH-7718, GH-7972, GH-8058,
+ GH-8061, GH-8066, GH-8159, GH-8166, GH-8244,
+ OTP-16448, OTP-16608, OTP-16875, OTP-17734,
+ OTP-18746, OTP-18750, OTP-18835, PR-6510,
+ PR-6639, PR-6658, PR-6791, PR-6985, PR-7110,
+ PR-7125, PR-7174, PR-7183, PR-7220, PR-7232,
+ PR-7236, PR-7243, PR-7267, PR-7274, PR-7299,
+ PR-7302, PR-7313, PR-7316, PR-7348, PR-7380,
+ PR-7383, PR-7388, PR-7398, PR-7419, PR-7428,
+ PR-7441, PR-7443, PR-7447, PR-7451, PR-7465,
+ PR-7470, PR-7474, PR-7475, PR-7481, PR-7491,
+ PR-7496, PR-7528, PR-7534, PR-7535, PR-7538,
+ PR-7556, PR-7585, PR-7590, PR-7592, PR-7607,
+ PR-7628, PR-7639, PR-7649, PR-7651, PR-7675,
+ PR-7678, PR-7684, PR-7697, PR-7699, PR-7700,
+ PR-7701, PR-7702, PR-7703, PR-7711, PR-7720,
+ PR-7726, PR-7728, PR-7732, PR-7738, PR-7739,
+ PR-7740, PR-7745, PR-7779, PR-7781, PR-7782,
+ PR-7790, PR-7809, PR-7816, PR-7824, PR-7844,
+ PR-7845, PR-7846, PR-7847, PR-7856, PR-7857,
+ PR-7869, PR-7879, PR-7891, PR-7898, PR-7917,
+ PR-7918, PR-7936, PR-7942, PR-7952, PR-7957,
+ PR-7960, PR-7963, PR-7973, PR-7977, PR-7981,
+ PR-7993, PR-8003, PR-8004, PR-8006, PR-8026,
+ PR-8029, PR-8035, PR-8042, PR-8048, PR-8056,
+ PR-8063, PR-8067, PR-8069, PR-8076, PR-8086,
+ PR-8090, PR-8091, PR-8092, PR-8093, PR-8095,
+ PR-8103, PR-8111, PR-8112, PR-8155, PR-8156,
+ PR-8164, PR-8168, PR-8177, PR-8182, PR-8205,
+ PR-8230, PR-8233, PR-8241, PR-8249, PR-8250,
+ PR-8255, PR-8256, PR-8258, PR-8308
+System: OTP
+Release: 27
+Application: asn1-5.3, common_test-1.27, compiler-8.5,
+ crypto-5.5, debugger-5.4, dialyzer-5.2,
+ diameter-2.4, edoc-1.3, eldap-1.2.13,
+ erl_interface-5.5.2, erts-15.0, et-1.7.1,
+ eunit-2.9.1, ftp-1.2.2, inets-9.2,
+ jinterface-1.14.1, kernel-9.3, megaco-4.6,
+ mnesia-4.23.1, observer-2.16, odbc-2.14.3,
+ os_mon-2.10, parsetools-2.6, public_key-1.16,
+ reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2,
+ snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0,
+ syntax_tools-3.2, tftp-1.2, tools-4.0,
+ wx-2.4.2, xmerl-1.4
+Predecessor: OTP
+
+Check out the git tag OTP-27.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Application(s): stdlib
+ Related Id(s): PR-7183, PR-7232
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Application(s): compiler, stdlib
+ Related Id(s): PR-7383
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Application(s): compiler
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): PR-7728
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Application(s): erts
+ Related Id(s): PR-7470
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Application(s): stdlib
+ Related Id(s): PR-7649
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Application(s): stdlib
+ Related Id(s): PR-7684, OTP-18750
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Application(s): compiler, erts, kernel, tools
+ Related Id(s): PR-7856
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Application(s): compiler, stdlib
+ Related Id(s): PR-7936
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Application(s): stdlib
+ Related Id(s): PR-6791
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Application(s): otp, stdlib
+ Related Id(s): PR-8067
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer,
+ diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface,
+ kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key,
+ reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp,
+ tools, wx, xmerl
+ Related Id(s): PR-8026
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Application(s): compiler, erts
+ Related Id(s): PR-8090
+
+- New module `trace` providing the same trace functionality as
+ erlang:trace/3 and erlang:trace_pattern/3, but with the addition of
+ **dynamic isolated trace sessions**.
+
+ Own Id: OTP-18980
+ Application(s): erts
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Application(s): asn1
+ Related Id(s): PR-8241
+
+- There is a new module `json` for encoding and decoding JSON.
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Application(s): stdlib
+ Related Id(s): PR-8111
+
+# POTENTIAL INCOMPATIBILITIES
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Application(s): erts
+ Related Id(s): PR-7274
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Application(s): erts
+ Related Id(s): PR-7348
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Application(s): inets
+ Related Id(s): PR-7316
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Application(s): compiler, otp, stdlib
+ Related Id(s): GH-7706, PR-7726
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Application(s): kernel, otp
+ Related Id(s): PR-8091
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ -compile([nowarn_missing_spec]).
+
+ and the compiler is invoked like so:
+
+ % erlc +warn_missing_spec some_module.erl
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Application(s): compiler
+ Related Id(s): GH-6979, PR-8093
+
+- The implementations of http_uri:encode/1 and http_uri:decode/1 are now
+ replaced with their equivalent, but bug free versions from module
+ `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1.
+
+ Own Id: OTP-19022
+ Application(s): inets
+
+- For security reasons, the CBC ciphers are now longer included in the list of
+ default ciphers for TLS-1.2.
+
+ Own Id: OTP-19025
+ Application(s): ssl
+ Related Id(s): PR-8250
+
+- The error handling the `simple_one_for_one` supervisor has been enhanced. A
+ transient child returning `ignore` will no longer cause a crash.
+
+ Also, automatic shutdown has been disabled because it does not make sense for
+ this supervisor type. That is was allowed is considered a bug. Therefore, we
+ don't consider this an incompatible change.
+
+ Own Id: OTP-19029
+ Application(s): stdlib
+ Related Id(s): PR-8230
+
+# OTP-27.0
+
+## Fixed Bugs and Malfunctions
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- `configure` scripts of the OTP build system are now generated using Autoconf
+ 2.72.
+
+ Own Id: OTP-18943
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+- By default `configure` scripts used when building OTP will now try to enable
+ support for timestamps that will work after mid-January 2038. This has
+ typically only been an issue on 32-bit platforms.
+
+ If `configure` cannot figure out how to enable such timestamps, it will abort
+ with an error message. If you want to build the system anyway, knowing that
+ the system will not function properly after mid-January 2038, you can pass the
+ `--disable-year2038` option to `configure`, which will enable `configure` to
+ continue without support for timestamps after mid-January 2038.
+
+ Own Id: OTP-18965
+ Related Id(s): PR-8095
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Related Id(s): PR-8091
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The restriction for the expression that gives a default value for a record
+ field is now documented.
+
+ Own Id: OTP-18995
+ Related Id(s): GH-8166, PR-8177
+
+# asn1-5.3
+
+## Fixed Bugs and Malfunctions
+
+- Multiple bugs has been eliminated in the specialized decode feature.
+
+ Own Id: OTP-18813
+ Related Id(s): PR-7790
+
+## Improvements and New Features
+
+- Specs have been added to all `asn1ct` API functions.
+
+ Own Id: OTP-18804
+ Related Id(s): PR-7738
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Related Id(s): PR-8241
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of asn1-5.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.27
+
+## Improvements and New Features
+
+- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to
+ ensure that all output is captured.
+
+ Own Id: OTP-18658
+ Related Id(s): PR-7380
+
+- The order in which multiple hooks are executed can now be reversed after each
+ config function. See CTH Execution Order.
+
+ Own Id: OTP-18682
+ Related Id(s): ERIERL-43, GH-7397, PR-7496
+
+- The default CSS will now include a basic dark mode handling if it is preferred
+ by the browser.
+
+ Own Id: OTP-18761
+ Related Id(s): PR-7428
+
+- `-callback` attributes have been added to `ct_suite` and `ct_hooks`.
+
+ Own Id: OTP-18781
+ Related Id(s): PR-7701
+
+- The built-in cth_log_redirect hook can now be configured to replace default
+ logger reports in terminal with HTML logs.
+
+ Own Id: OTP-18875
+ Related Id(s): PR-7891
+
+- Error handling for the `ct_property_test` framework has been enhanced.
+
+ Own Id: OTP-18881
+ Related Id(s): PR-7824
+
+- Enhance test case documentation, making it clear how a test case can be
+ failed.
+
+ Own Id: OTP-18892
+ Related Id(s): PR-7869
+
+- The failing line in the test source code is now colored to make it easier to
+ find on the screen.
+
+ Own Id: OTP-18898
+ Related Id(s): PR-7917
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The suite execution elapsed time is now included in the index page.
+
+ Own Id: OTP-18981
+ Related Id(s): GH-7972, PR-8112
+
+> #### Full runtime dependencies of common_test-1.27
+>
+> 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
+
+## Fixed Bugs and Malfunctions
+
+- Generators for binary comprehensions could be evaluated before it was known
+ that they would be needed. That could result in a binary comprehensions
+ failing if a generator that should not be evaluated until later failed.
+
+ As an example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+
+ f() ->
+ <<0 || _ <- [], _ <- ok, false>>.
+
+ In Erlang/OTP 26 it would fail like so:
+
+ 1> t:f().
+ ** exception error: bad generator ok
+ in function t:f/0 (t.erl, line 6)
+
+ In Erlang/OTP 27 it returns an empty binary:
+
+ 1> t:f().
+ <<>>
+
+ Own Id: OTP-18703
+ Related Id(s): GH-7494, PR-7538
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- The compiler now optimizes creation of binaries that are known to be constant.
+
+ Consider this example:
+
+ bin() ->
+ C = char(),
+ <<C>>.
+
+ char() -> $*.
+
+ Essentially, the compiler rewrites the example to the slightly more efficient:
+
+ bin() ->
+ _ = char(),
+ <<$*>>.
+
+ char() -> $*.
+
+ Own Id: OTP-18673
+ Related Id(s): ERIERL-964, PR-7474
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+ *** HIGHLIGHT ***
+
+- Improved the performance of the alias analysis pass.
+
+ Own Id: OTP-18714
+ Related Id(s): GH-7432, PR-7528
+
+- `-spec` attributes are now used for documentation.
+
+ Own Id: OTP-18801
+ Related Id(s): PR-7739
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ -compile([nowarn_missing_spec]).
+
+ and the compiler is invoked like so:
+
+ % erlc +warn_missing_spec some_module.erl
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Related Id(s): GH-6979, PR-8093
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+- Improved the match context reuse optimization slightly, allowing match
+ contexts to be passed as-is to `bit_size/1` and `byte_size/1`.
+
+ Own Id: OTP-18987
+
+- `m:erl_lint` (and by extension the `compiler`) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): PR-8205
+
+> #### Full runtime dependencies of compiler-8.5
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which
+ were marked as deprecated since OTP 25.
+
+ Own Id: OTP-18973
+
+- Add support for sm3 hash and hmac.
+
+ Own Id: OTP-18975
+ Related Id(s): PR-6658
+
+- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread
+ specific data.
+
+ Own Id: OTP-18978
+ Related Id(s): PR-7809
+
+- Add SM4 block cipher implemented according to GB/T 32907-2016.
+
+ Own Id: OTP-19005
+ Related Id(s): PR-8168
+
+> #### Full runtime dependencies of crypto-5.5
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# debugger-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- Type specs have been added to all API functions.
+
+ Own Id: OTP-18819
+ Related Id(s): PR-7781
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of debugger-5.4
+>
+> compiler-8.0, erts-15.0, kernel-8.0, stdlib-3.15, wx-2.0
+
+# dialyzer-5.2
+
+## Improvements and New Features
+
+- The `--gui` option for Dialyzer has been removed.
+
+ Own Id: OTP-18667
+ Related Id(s): PR-7443
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of dialyzer-5.2
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.4
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `diameter_app` and
+ `diameter_transport`.
+
+ Own Id: OTP-18783
+ Related Id(s): PR-7699
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of diameter-2.4
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.3
+
+## Fixed Bugs and Malfunctions
+
+- EEP 48 doc chunks now properly include links within `{@type }` macros.
+
+ Own Id: OTP-18945
+ Related Id(s): PR-8063
+
+- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`.
+
+ Own Id: OTP-18946
+ Related Id(s): PR-8063
+
+## Improvements and New Features
+
+- There is a new `edoc_html_to_markdown` module that can be used to convert
+ EEP-48 `application/html+erlang` to Markdown.
+
+ Own Id: OTP-18947
+ Related Id(s): PR-8063
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Added module `edoc_doclet_markdown` that can be used to convert EDoc style
+ documentation to Markdown documentation attributes.
+
+ Own Id: OTP-19052
+ Related Id(s): PR-8308
+
+> #### Full runtime dependencies of edoc-1.3
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.13
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eldap-1.2.13
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.5.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-15.0
+
+## Fixed Bugs and Malfunctions
+
+- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or
+ `-args_file` have been fixed.
+
+ Own Id: OTP-18766
+ Related Id(s): PR-7639
+
+- Fixed a bug that prevented the emulator from building on recent versions of
+ Yocto Linux.
+
+ Own Id: OTP-18918
+ Related Id(s): PR-7952
+
+- Fixed spectre mitigation configure test to work with GCC patches to always add
+ `-fcf-protection=full`.
+
+ Own Id: OTP-18928
+ Related Id(s): PR-8006
+
+- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could
+ cause a (case clause) crash if data is immediately available.
+
+ Own Id: OTP-19063
+ Related Id(s): OTP-18835
+
+## Improvements and New Features
+
+- Refactored how the JIT handles POSIX signals and how they affect thread
+ stacks, allowing us to use the native stack register for Erlang stacks on more
+ platforms.
+
+ Notably, containers built on 64-bit x86 Alpine Linux images will now perform
+ much better in sequential code. As an example, running `dialyzer` over the OTP
+ code base finishes about 15% quicker.
+
+ Own Id: OTP-18568
+ Related Id(s): PR-7174
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The `pid` field has been removed from `erlang:fun_info/1,2`.
+
+ Own Id: OTP-18594
+ Related Id(s): PR-7274
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Related Id(s): PR-7348
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A binary returned from the `socket` receive functions is no longer created
+ as a sub binary of an often large receive buffer binary (socket option
+ `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement
+ reallocation efficiently.
+
+ Own Id: OTP-18642
+ Related Id(s): GH-6152, PR-7465
+
+- The default process limit has been raised to `1048576` processes.
+
+ Own Id: OTP-18699
+ Related Id(s): PR-7388
+
+- The erlang:system_monitor/2 functionality is now able to monitor long
+ message queues in the system.
+
+ Own Id: OTP-18709
+ Related Id(s): PR-7651
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Related Id(s): PR-7470
+
+ *** HIGHLIGHT ***
+
+- When implementing an alternative carrier for the Erlang distribution, a
+ separate input handler process may now be registered, using
+ erlang:dist_ctrl_input_handler/2, also in the case when the distribution
+ controller is a port.
+
+ Own Id: OTP-18774
+ Related Id(s): PR-7110
+
+- The call stack trace has now been added to the error reported by
+ erlang:process_flag/2 when `max_heap_size` limit has been exceeded.
+
+ Own Id: OTP-18779
+ Related Id(s): PR-7592
+
+- `-callback` attributes have been added to `erl_tracer`.
+
+ Own Id: OTP-18794
+ Related Id(s): PR-7703
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N` has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- New functions `socket:sendv/*` for sending I/O vectors have been added.
+
+ Own Id: OTP-18845
+
+- Socket options that take string now also accept binaries.
+
+ Own Id: OTP-18849
+ Related Id(s): PR-6510
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Changed the default value of the command line flag `-code_path_choice` to
+ `strict`.
+
+ Note that for application systems using archives, it is necessary to add the
+ `code_path_choice relaxed` to the command line that invokes `erl`.
+
+ Own Id: OTP-18894
+ Related Id(s): PR-7243
+
+- Added module loading to `erl -init_debug` printouts.
+
+ Own Id: OTP-18929
+ Related Id(s): PR-8004
+
+- When the runtime system halts, it performs various flush operations before
+ terminating. By default there is no limit on how much time the flush
+ operations are allowed to take. A new _halt flush timeout_ functionality has
+ been introduced which can be used for limiting the amount of time that the
+ flushing operations are allowed to take. For more information see the
+ documentation of the `flush_timeout` option of the erlang:halt/2 BIF and
+ the documentation of the `erl` `+zhft <Timeout>` command line flag.
+
+ Own Id: OTP-18938
+ Related Id(s): GH-7438, PR-8035
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d
+
+ Own Id: OTP-18942
+
+- The deprecated functions in `zlib` have been removed. That includes
+ `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and
+ the Adler checksum functions.
+
+ Own Id: OTP-18950
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+- The obsolete and undocumented support for opening a port to an external
+ resource by passing an atom (or a string) as first argument to `open_port()`,
+ implemented by the vanilla driver, has been removed. This feature has been
+ scheduled for removal in OTP 27 since the release of OTP 26.
+
+ Own Id: OTP-18976
+ Related Id(s): PR-7125
+
+- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all
+ scheduler threads when a NIF library is unloaded. Used for releasing thread
+ specific data. Can be set with function `enif_set_option`.
+
+ Own Id: OTP-18977
+ Related Id(s): PR-7809
+
+- New module `trace` providing the same trace functionality as
+ erlang:trace/3 and erlang:trace_pattern/3, but with the addition of
+ **dynamic isolated trace sessions**.
+
+ Own Id: OTP-18980
+ *** HIGHLIGHT ***
+
+- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use
+ "large pages" (sometimes known as "huge pages" or "super pages"). This
+ currently only affects super-carrier allocations, but may be extended in the
+ future.
+
+ Own Id: OTP-18984
+ Related Id(s): PR-7977
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+- The `socket` documentation has been reworked, and due to that a few details
+ were fixed:
+
+ - socket:is_supported/1 now returns `true` for example for `protocols` that
+ is a "category", not an item.
+ - socket:cancel_monitor/1 no longer badargs for a monitor that was set by
+ another process, instead it returns `false` as for other unknown
+ `reference()`s.
+
+ Own Id: OTP-19054
+
+> #### Full runtime dependencies of erts-15.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.7.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of et-1.7.1
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.9.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eunit-2.9.1
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.2.2
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of ftp-1.2.2
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.2
+
+## Improvements and New Features
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Related Id(s): PR-7316
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The `httpd` module has been extended with an API for simple serving directory
+ content over HTTP. With this change, the current working directory can be
+ served like this:
+
+ erl -S httpd
+
+ An arbitrary directory can be served like this:
+
+ erl -S httpd serve path/to/dir
+
+ Own Id: OTP-18727
+ Related Id(s): PR-7299
+
+- Added `-callback` attributes to `httpd`, `mod_esi`, and `mod_security`.
+
+ Own Id: OTP-18786
+ Related Id(s): PR-7700
+
+- Inets now uses a relative redirect with an absolute path to prevent whoever is
+ running Inets from having to configure the `ServerName` to match the
+ network-reachable host name of the server.
+
+ Own Id: OTP-18809
+ Related Id(s): GH-7617, PR-7678
+
+- `inets` processes now use proc_lib:set_label/1 to improve observeability.
+
+ Own Id: OTP-18927
+ Related Id(s): PR-8029
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The implementations of http_uri:encode/1 and http_uri:decode/1 are now
+ replaced with their equivalent, but bug free versions from module
+ `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1.
+
+ Own Id: OTP-19022
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of inets-9.2
+>
+> 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
+
+# jinterface-1.14.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+# kernel-9.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash when calling file:delete/2 with an empty option list.
+
+ Own Id: OTP-18590
+ Related Id(s): PR-7220
+
+- New functions have been added to the undocumented module `inet_dns` that
+ take a flag to specify if encode/decode is for mDNS. This affects how CLASS
+ values in the private range, with the top bit set, are handled.
+
+ Own Id: OTP-18878
+ Related Id(s): GH-7718, OTP-17734
+
+- The error information for erlang:phash/2 has been corrected.
+
+ Own Id: OTP-18904
+ Related Id(s): PR-7960
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+- Calling logger:add_handlers/1 with config option now works.
+
+ Own Id: OTP-18954
+ Related Id(s): GH-8061, PR-8076
+
+- The code:del_path/1 function now also works on paths added through `-pa`,
+ `-pz` , `-path` and the boot script.
+
+ Own Id: OTP-18959
+ Related Id(s): GH-6692, PR-7697
+
+- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could
+ cause a (case clause) crash if data is immediately available.
+
+ Own Id: OTP-19063
+ Related Id(s): OTP-18835
+
+## Improvements and New Features
+
+- Added file:read_file/2 with a `raw` option for reading files without going
+ through the file server.
+
+ Own Id: OTP-18589
+ Related Id(s): PR-7220
+
+- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has
+ been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some
+ bug fixes and code cleanup has been done, and the resolver used in the test
+ suite has been changed to Knot DNS. See the source code.
+
+ Kudos to Alexander Clouter that did almost all the work!
+
+ Own Id: OTP-18713
+ Related Id(s): GH-6985, PR-6985
+
+- The `ebin` directories for escripts are now cached.
+
+ Own Id: OTP-18778
+ Related Id(s): PR-7556
+
+- `-callback` attributes haven been added to `application`,
+ `logger_handler`, and `logger_formatter`.
+
+ Own Id: OTP-18795
+ Related Id(s): PR-7703
+
+- Progress reports from before logger is started are now logged when log level
+ is set to debug.
+
+ Own Id: OTP-18807
+ Related Id(s): ERIERL-985, PR-7732
+
+- The code:where_is_file/2 and code:which/1 functions now check for
+ existence of the file directly instead of listing the content of each
+ directory in the code path.
+
+ Own Id: OTP-18816
+ Related Id(s): PR-7711
+
+- Type specs has been added to the `logger:Level/1,2,3` functions.
+
+ Own Id: OTP-18820
+ Related Id(s): PR-7779
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N` has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- New functions `socket:sendv/*` for sending I/O vectors have been added.
+
+ Own Id: OTP-18845
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Application startup has been optimized by removing an intermediary process.
+
+ Own Id: OTP-18963
+ Related Id(s): PR-8042
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Related Id(s): PR-8091
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The undocumented and deprecated `file:pid2name` function has been removed.
+
+ Own Id: OTP-18967
+ Related Id(s): PR-8092
+
+- Error logging has been improved when the `standard_io` reader and/or writer
+ terminates with an error.
+
+ Own Id: OTP-18989
+ Related Id(s): PR-8103
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+- Add an simple example (echo server) )to the socket users guide.
+
+ Own Id: OTP-19042
+
+- `inet:i/0,1,2` has been improved to allow port numbers to be shown explicitly.
+
+ Own Id: OTP-19053
+ Related Id(s): #6724
+
+- The `socket` documentation has been reworked, and due to that a few details
+ were fixed:
+
+ - socket:is_supported/1 now returns `true` for example for `protocols` that
+ is a "category", not an item.
+ - socket:cancel_monitor/1 no longer badargs for a monitor that was set by
+ another process, instead it returns `false` as for other unknown
+ `reference()`s.
+
+ Own Id: OTP-19054
+
+> #### Full runtime dependencies of kernel-9.3
+>
+> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0
+
+# megaco-4.6
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `megaco_transport`.
+
+ Own Id: OTP-18806
+ Related Id(s): PR-7740
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18920
+ Related Id(s): BL-322
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of megaco-4.6
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.23.1
+
+## Fixed Bugs and Malfunctions
+
+- The `mnesia_registry` module have been deprecated.
+
+ Own Id: OTP-18994
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of mnesia-4.23.1
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.16
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of observer-2.16
+>
+> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3
+
+# odbc-2.14.3
+
+## Fixed Bugs and Malfunctions
+
+- The order of libs in the Makefile has been changed to avoid finding the
+ system's `libei` instead of Erlang's `libei`.
+
+ Own Id: OTP-19030
+ Related Id(s): GH-8244, PR-8258
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of odbc-2.14.3
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.10
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of os_mon-2.10
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.6
+
+## Improvements and New Features
+
+- The `leex` documentation has been updated to use specs for documenting the
+ generated interface.
+
+ Own Id: OTP-18796
+ Related Id(s): PR-7703
+
+- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl`
+ source file.
+
+ Own Id: OTP-18912
+ Related Id(s): PR-7963
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of parsetools-2.6
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.16
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- The exception reason when public_key:cacerts_get/0 failed has been improved.
+
+ Own Id: OTP-18609
+ Related Id(s): GH-7295, PR-7302
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of public_key-1.16
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# reltool-1.0.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of reltool-1.0.1
+>
+> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.1
+
+## Improvements and New Features
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- Type specs had been added to all `dbg` functions.
+
+ Own Id: OTP-18859
+ Related Id(s): PR-7782
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of runtime_tools-2.1
+>
+> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0
+
+# sasl-4.2.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of sasl-4.2.2
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.16
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to modules
+ `snmpa_network_interface_filter`, `snmpa_notification_filter`,
+ `snmpm_network_interface_filter`, `snmpm_user`, and
+ `snmpa_notification_delivery_info_receiver`.
+
+ New `-type` attributes have also been added to modules `snmp`, `snmpa`,
+ `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks.
+
+ Own Id: OTP-18785
+ Related Id(s): PR-7702
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18934
+ Related Id(s): BL-312
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of snmp-5.16
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2
+
+## Fixed Bugs and Malfunctions
+
+- SSH processes are now assigned labels for troubleshooting purposes.
+
+ Own Id: OTP-19017
+ Related Id(s): PR-8249
+
+## Improvements and New Features
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18961
+
+> #### Full runtime dependencies of ssh-5.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
+
+## Fixed Bugs and Malfunctions
+
+- Starting a TLS server without sufficient credentials (certificate or anonymous
+ cipher) would work, but it was impossible to connect to it.
+
+ This has been corrected to return an error instead of starting the server.
+
+ Own Id: OTP-18887
+ Related Id(s): GH-7493, PR-7918
+
+- ASN.1 decoding errors are handled in more places to ensure that errors are
+ returned instead of cause a crash.
+
+ Own Id: OTP-18969
+ Related Id(s): GH-8058, PR-8256
+
+- Improved error checking on the API functions.
+
+ Own Id: OTP-18992
+ Related Id(s): GH-8066, PR-8156
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+- Memory consumption has been reduced and performance increased by refactoring
+ internal data structures and their usage.
+
+ Own Id: OTP-18665
+ Related Id(s): PR-7447
+
+- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute.
+
+ Own Id: OTP-18788
+ Related Id(s): PR-7700
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The proc_lib:set_label/1 function is now used to increase observability of
+ `ssl` processes.
+
+ Own Id: OTP-18879
+
+- Brainpool elliptic curves are now supported in TLS-1.3.
+
+ Own Id: OTP-18884
+ Related Id(s): PR-8056
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The existing function ssl:key_exporter_materials/4 is now documented and
+ supported.
+
+ Own Id: OTP-19016
+ Related Id(s): PR-8233
+
+- For security reasons, the CBC ciphers are now longer included in the list of
+ default ciphers for TLS-1.2.
+
+ Own Id: OTP-19025
+ Related Id(s): PR-8250
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new `cert_policy_opts` option to configure certificate policy
+ options for the certificate path validation.
+
+ Own Id: OTP-19027
+ Related Id(s): PR-8255
+
+> #### Full runtime dependencies of ssl-11.2
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.0
+
+## Fixed Bugs and Malfunctions
+
+- The specs in module `binary` has been updated to reflect what is allowed by
+ the documentation.
+
+ Own Id: OTP-18684
+ Related Id(s): PR-7481
+
+- Several functions in the `binary` module would accept arguments of the wrong
+ type under certain circumstances. In this release, they now raise an exception
+ when incorrect types are given.
+
+ The following functions would accept an invalid pattern if the subject binary
+ was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`,
+ `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3`
+
+ The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of
+ raising an exception. Similarly, calls to `binary:part/2,3` attempting to
+ extract 0 bytes at position 0 of a bitstring would return an empty binary
+ instead of raising an exception.
+
+ Own Id: OTP-18743
+ Related Id(s): PR-7607, PR-7628
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+- The error handling the `simple_one_for_one` supervisor has been enhanced. A
+ transient child returning `ignore` will no longer cause a crash.
+
+ Also, automatic shutdown has been disabled because it does not make sense for
+ this supervisor type. That is was allowed is considered a bug. Therefore, we
+ don't consider this an incompatible change.
+
+ Own Id: OTP-19029
+ Related Id(s): PR-8230
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fix shell expansion of <c>-type a() :: $a.</c> in the erlang shell.
+
+ Own Id: OTP-19062
+
+## Improvements and New Features
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Related Id(s): PR-7183, PR-7232
+
+ *** HIGHLIGHT ***
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- `zip:create/2,3` will now tolerate POSIX timestamps in the provided
+ `file_info` records.
+
+ Own Id: OTP-18668
+
+- The callback function gen_statem:handle_event/4 has been cached in the
+ `gen_statem` engine to optimize callback call speed.
+
+ Own Id: OTP-18671
+ Related Id(s): PR-7419
+
+- The type beam_lib:beam/0 is now exported.
+
+ Own Id: OTP-18716
+ Related Id(s): PR-7534
+
+- The documentation for the `binary` module has been improved.
+
+ Own Id: OTP-18741
+ Related Id(s): PR-7585
+
+- `binary:replace/3,4` now supports using a fun for supplying the replacement
+ binary.
+
+ Own Id: OTP-18742
+ Related Id(s): PR-7590
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- `-callback` attributes has been added to modules `sys` and `erl_error`.
+
+ Own Id: OTP-18793
+ Related Id(s): PR-7703
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Related Id(s): PR-7649
+
+ *** HIGHLIGHT ***
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Related Id(s): PR-7684, OTP-18750
+
+ *** HIGHLIGHT ***
+
+- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1,
+ and shell:prompt_width/1 have been exported to help with custom prompt
+ implementations.
+
+ Own Id: OTP-18834
+ Related Id(s): PR-7675, PR-7816
+
+- The shell now pages long output from the help command (`h(Module)`), auto
+ completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function
+ directly before the cursor.
+
+ Own Id: OTP-18847
+ Related Id(s): PR-7846
+
+- Added support for adding a custom code formatter that formats your multi-line
+ shell commands in your preferred formatting on submission. See
+ `shell:format_shell_func/` and shell:erl_pp_format_func/1.
+
+ Own Id: OTP-18848
+ Related Id(s): PR-7847
+
+- Added shell functions for viewing, forgetting and saving locally defined
+ functions, types and records.
+
+ Own Id: OTP-18852
+ Related Id(s): PR-7844
+
+- Added string:jaro_similarity/2, which can be used to calculate the
+ similarity between two strings.
+
+ Own Id: OTP-18865
+ Related Id(s): PR-7879
+
+- The new function ets:update_element/4 is similar to ets:update_element/3,
+ but takes a default tuple as the fourth argument, which will be inserted if no
+ previous record with that key exists.
+
+ Own Id: OTP-18870
+ Related Id(s): PR-7857
+
+- Added functions to retrieve the next higher or lower key/element from
+ `gb_trees` and `gb_sets`, as well as returning iterators that start at
+ given keys/elements.
+
+ Own Id: OTP-18874
+ Related Id(s): PR-7745
+
+- When the shell built-in function `c/1,2` is used to re-compile a
+ module, the current working directory of the original compilation is now added
+ to the include path.
+
+
+ Own Id: OTP-18908
+ Related Id(s): PR-7957
+
+- The `timer` module now uses a private table for its internal state, slightly
+ improving its performance.
+
+ Own Id: OTP-18914
+ Related Id(s): PR-7973
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Related Id(s): PR-6791
+
+ *** HIGHLIGHT ***
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+- The compiler will now raise a warning when updating record/map literals. As an
+ example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+ -record(r, {a,b,c}).
+
+ f() ->
+ #r{a=1}#r{b=2}.
+
+ The compiler raises the following warning:
+
+ 1> c(t).
+ t.erl:6:12: Warning: expression updates a literal
+ % 6| #r{a=1}#r{b=2}.
+ % | ^
+
+ Own Id: OTP-18951
+ Related Id(s): PR-8069
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made
+ them immune against table renaming.
+
+ Own Id: OTP-18993
+ Related Id(s): PR-8048
+
+- Windows now supports all functions in `math`.
+
+ Own Id: OTP-19001
+ Related Id(s): PR-8164
+
+- `m:erl_lint` (and by extension the `compiler`) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): PR-8205
+
+- There is a new module `json` for encoding and decoding JSON.
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Related Id(s): PR-8111
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of stdlib-6.0
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-9.3, sasl-3.0
+
+# syntax_tools-3.2
+
+## Fixed Bugs and Malfunctions
+
+- The `epp_dodger` module can now handle the `maybe` and `else` keywords.
+
+ Own Id: OTP-18608
+ Related Id(s): GH-7266, PR-7267
+
+- Reverting a `#wrapper` will no longer throw away changes made to
+ positions/annotations.
+
+ Own Id: OTP-18805
+ Related Id(s): PR-7398
+
+## Improvements and New Features
+
+- The type erl_syntax:annotation_or_location/0 is now exported.
+
+ Own Id: OTP-18715
+ Related Id(s): PR-7535
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of syntax_tools-3.2
+>
+> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0
+
+# tftp-1.2
+
+## Improvements and New Features
+
+- There is a new `tftp_logger` callback behavior module.
+
+ Own Id: OTP-18787
+ Related Id(s): PR-7700
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of tftp-1.2
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+- In Erlang/OTP 26, doing a `cover` analysis on the `line` level would return
+ multiple entries for lines on which multiple functions were defined.
+
+ For example, consider this module:
+
+ -module(foo).
+ -export(bar/0, baz/0).
+
+ bar() -> ok. baz() -> not_ok.
+
+ In Erlang/OTP 26, analysing on the `line` level would return two entries for
+ line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,{{foo,4},{1,0}},{{foo,4},{0,1}}}
+ 4> cover:analyse(foo, calls, line).
+ {ok,{{foo,4},1},{{foo,4},0}}
+
+ In Erlang/OTP 27, there will only be a single entry for line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,{{foo,4},{1,0}}}
+ 4> cover:analyse(foo, calls, line).
+ {ok,{{foo,4},1}}
+
+ Own Id: OTP-18998
+ Related Id(s): GH-8159, PR-8182
+
+- Fixed align command in emacs mode.
+
+ Own Id: OTP-19026
+ Related Id(s): PR-8155
+
+## Improvements and New Features
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new tool `tprof`, which combines the functionality of `eprof`
+ and `cprof` under one interface. It also adds heap profiling.
+
+ Own Id: OTP-18756
+ Related Id(s): PR-6639
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of tools-4.0
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-9.3, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.4.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of wx-2.4.2
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-1.4
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that
+ provides out-of-the box indented output has been added.
+
+ Own Id: OTP-18922
+ Related Id(s): PR-7942
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of xmerl-1.4
+>
+> erts-6.0, kernel-3.0, stdlib-2.5
+
diff --git a/release-notes/OTP-27.0.1.README.txt b/release-notes/OTP-27.0.1.README.txt
new file mode 100644
index 0000000..aba4af5
--- /dev/null
+++ b/release-notes/OTP-27.0.1.README.txt
@@ -0,0 +1,259 @@
+Patch Package: OTP 27.0.1
+Git Tag: OTP-27.0.1
+Date: 2024-07-10
+Trouble Report Id: OTP-19091, OTP-19092, OTP-19094, OTP-19095,
+ OTP-19099, OTP-19100, OTP-19106, OTP-19107,
+ OTP-19108, OTP-19109, OTP-19116, OTP-19118,
+ OTP-19121, OTP-19123, OTP-19131, OTP-19137,
+ OTP-19140, OTP-19142, OTP-19147, OTP-19151,
+ OTP-19152
+Seq num: ERIERL-1043, ERIERL-1106, GH-8376, GH-8482,
+ GH-8484, GH-8489, GH-8574, GH-8579, GH-8580,
+ GH-8588, GH-8614, PR-8345, PR-8507, PR-8508,
+ PR-8519, PR-8534, PR-8539, PR-8542, PR-8546,
+ PR-8567, PR-8581, PR-8585, PR-8616, PR-8619
+System: OTP
+Release: 27
+Application: compiler-8.5.1, edoc-1.3.1, erts-15.0.1,
+ kernel-10.0.1, public_key-1.16.1, ssh-5.2.1,
+ ssl-11.2.1, stdlib-6.0.1
+Predecessor: OTP 27.0
+
+Check out the git tag OTP-27.0.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.
+
+# OTP-27.0.1
+
+## Improvements and New Features
+
+- Bump ex_doc version to v0.34.1 and fix copyright in published docs to have
+ correct year.
+
+ Own Id: OTP-19095
+ Related Id(s): PR-8507
+
+# compiler-8.5.1
+
+The compiler-8.5.1 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- One of the compiler's optimization passes would get very slow when compiling
+ certain modules. The compiler will now automatically disable that pass for
+ input that would trigger the slowdown.
+
+ Own Id: OTP-19131
+ Related Id(s): PR-8567
+
+- Fix `+deterministic` to work properly with documentation attributes.
+
+ Own Id: OTP-19142
+ Related Id(s): GH-8579, PR-8585
+
+> #### Full runtime dependencies of compiler-8.5.1
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# edoc-1.3.1
+
+The edoc-1.3.1 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fix broken makefile dependency when building HTML documentation.
+
+ Own Id: OTP-19116
+ Related Id(s): PR-8534
+
+> #### Full runtime dependencies of edoc-1.3.1
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# erts-15.0.1
+
+The erts-15.0.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- In rare circumstances the JIT could do an unsafe in-place update of a tuple.
+
+ Own Id: OTP-19108
+ Related Id(s): PR-8539
+
+- When a port command crashed in the inet driver during gen_tcp:send/2, a
+ monitor `'DOWN'` message could be left lingering in the caller's mailbox. This
+ has now been fixed.
+
+ Own Id: OTP-19121
+ Related Id(s): GH-8484
+
+- `'DOWN'` messages originating from a monitored port, contained the atom
+ `process` instead of the atom `port` as the third element when the exit reason
+ was not an immediate term.
+
+ Own Id: OTP-19123
+ Related Id(s): GH-8484, PR-8546
+
+- Fix so that the options to enable Transparent Huge Page alignment of the
+ Erlang VM executable are only applied to the Erlang VM and not other native
+ programs such as `erlc` and `dialyzer`. This bug was introduced in Erlang/OTP
+ 27.0.
+
+ Own Id: OTP-19137
+ Related Id(s): GH-8574
+
+- When *no time warp mode* was enabled, a smaller Erlang monotonic time could
+ be read than a previously read time, i.e., breaking the monotonic property.
+ The runtime system will abort when detecting an issue like this since OTP
+ 24.3.4.17 and OTP 25.0.
+
+ Up until OTP 25 _no time warp mode_ is the default. As of OTP 26 [*multi time
+ warp mode*] is the default.
+
+ Own Id: OTP-19147
+ Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619
+
+- When calling `trace:function(Session, _, true, meta)` the meta tracer was
+ incorrectly set to be the calling process. Now it's set to the session tracer
+ as expected.
+
+ Own Id: OTP-19151
+ Related Id(s): GH-8614, PR-8616
+
+> #### Full runtime dependencies of erts-15.0.1
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.0.1
+
+The kernel-10.0.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Improvements and New Features
+
+- Polish the `logger` documentation.
+
+ Own Id: OTP-19118
+ Related Id(s): PR-8534
+
+> #### Full runtime dependencies of kernel-10.0.1
+>
+> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0
+
+# public_key-1.16.1
+
+The public_key-1.16.1 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fix bug in dnsName constraint check, could cause valid cert to be considered
+ bad during path validation.
+
+ Own Id: OTP-19100
+ Related Id(s): GH-8482, PR-8508
+
+> #### Full runtime dependencies of public_key-1.16.1
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# ssh-5.2.1
+
+The ssh-5.2.1 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, race condition between connection closing and automatic
+ window adjustment is fixed.
+
+ Own Id: OTP-19109
+ Related Id(s): PR-8345
+
+> #### Full runtime dependencies of ssh-5.2.1
+>
+> 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.1
+
+The ssl-11.2.1 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Check for TLS-1.3 support should check minimum requirements.
+
+ Own Id: OTP-19094
+ Related Id(s): GH-8489
+
+- If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2 negotiated convert
+ TLS-1.3 ECDSA schemes to TLS-1.2 hash and signature pairs for increased
+ interoperability.
+
+ Own Id: OTP-19107
+ Related Id(s): GH-8376
+
+- TLS-1.3 negotiation now uses SNI based options correctly instead of ignoring
+ them.
+
+ Own Id: OTP-19140
+
+## Improvements and New Features
+
+- Make it easier to distinguish between a invalid signature and unsupported
+ signature.
+
+ Own Id: OTP-19091
+
+- Enhance ALERT logs to help understand what causes the alert.
+
+ Own Id: OTP-19092
+ Related Id(s): GH-8482
+
+- When the default value for signature_algs is used, default the
+ signature_algs_cert to the default value + rsa_pkcs1_sha1 to allow this
+ algorithms for certificates but not for the TLS protocol. This is for better
+ interoperability. If signature_algs is set explicitly signature_algs_cert must
+ also be set explicitly if they should be different.
+
+ Own Id: OTP-19152
+ Related Id(s): GH-8588
+
+> #### Full runtime dependencies of ssl-11.2.1
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.0.1
+
+The stdlib-6.0.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fix so that missing `-doc({file, File})` files only result in a warning and
+ not an error.
+
+ Own Id: OTP-19099
+ Related Id(s): PR-8542
+
+- Fixed `json` bugs, json:encode_key_value_list/2 did not generate arrays
+ and json:decode/3 did not invoke the user callback for `0`.
+
+ Own Id: OTP-19106
+ Related Id(s): GH-8580, PR-8519, PR-8581
+
+> #### Full runtime dependencies of stdlib-6.0.1
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# Thanks to
+
+Frej Drejhammar, Igor Goryachev, Michał Muskała
+
diff --git a/release-notes/OTP-27.0.README.txt b/release-notes/OTP-27.0.README.txt
new file mode 100644
index 0000000..24ac93a
--- /dev/null
+++ b/release-notes/OTP-27.0.README.txt
@@ -0,0 +1,3092 @@
+Inital Release: OTP 27.0
+Git Tag: OTP-27.0
+Date: 2024-05-20
+Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589,
+ OTP-18590, OTP-18594, OTP-18606, OTP-18608,
+ OTP-18609, OTP-18622, OTP-18639, OTP-18641,
+ OTP-18642, OTP-18648, OTP-18658, OTP-18665,
+ OTP-18667, OTP-18668, OTP-18671, OTP-18673,
+ OTP-18680, OTP-18682, OTP-18684, OTP-18699,
+ OTP-18703, OTP-18709, OTP-18713, OTP-18714,
+ OTP-18715, OTP-18716, OTP-18717, OTP-18727,
+ OTP-18741, OTP-18742, OTP-18743, OTP-18744,
+ OTP-18750, OTP-18756, OTP-18761, OTP-18766,
+ OTP-18774, OTP-18778, OTP-18779, OTP-18781,
+ OTP-18783, OTP-18784, OTP-18785, OTP-18786,
+ OTP-18787, OTP-18788, OTP-18789, OTP-18793,
+ OTP-18794, OTP-18795, OTP-18796, OTP-18801,
+ OTP-18804, OTP-18805, OTP-18806, OTP-18807,
+ OTP-18808, OTP-18809, OTP-18813, OTP-18816,
+ OTP-18819, OTP-18820, OTP-18825, OTP-18831,
+ OTP-18834, OTP-18835, OTP-18845, OTP-18846,
+ OTP-18847, OTP-18848, OTP-18849, OTP-18852,
+ OTP-18856, OTP-18859, OTP-18860, OTP-18865,
+ OTP-18870, OTP-18874, OTP-18875, OTP-18876,
+ OTP-18878, OTP-18879, OTP-18881, OTP-18884,
+ OTP-18887, OTP-18892, OTP-18894, OTP-18898,
+ OTP-18904, OTP-18908, OTP-18912, OTP-18913,
+ OTP-18914, OTP-18916, OTP-18918, OTP-18920,
+ OTP-18922, OTP-18923, OTP-18927, OTP-18928,
+ OTP-18929, OTP-18930, OTP-18934, OTP-18938,
+ OTP-18941, OTP-18942, OTP-18943, OTP-18944,
+ OTP-18945, OTP-18946, OTP-18947, OTP-18950,
+ OTP-18951, OTP-18954, OTP-18955, OTP-18959,
+ OTP-18961, OTP-18963, OTP-18965, OTP-18966,
+ OTP-18967, OTP-18968, OTP-18969, OTP-18972,
+ OTP-18973, OTP-18975, OTP-18976, OTP-18977,
+ OTP-18978, OTP-18980, OTP-18981, OTP-18984,
+ OTP-18987, OTP-18989, OTP-18992, OTP-18993,
+ OTP-18994, OTP-18995, OTP-18998, OTP-19001,
+ OTP-19004, OTP-19005, OTP-19010, OTP-19016,
+ OTP-19017, OTP-19018, OTP-19020, OTP-19022,
+ OTP-19025, OTP-19026, OTP-19027, OTP-19029,
+ OTP-19030, OTP-19033, OTP-19042, OTP-19052,
+ OTP-19053, OTP-19054, OTP-19057, OTP-19063,
+ OTP-19073, OTP-19074, OTP-19075, OTP-19077,
+ OTP-19079, OTP-19080, OTP-19081, OTP-19082,
+ OTP-19086, OTP-19087, OTP-19088, OTP-19089,
+ OTP-19090
+Seq num: #6724, BL-312, BL-322, ERIERL-43, ERIERL-964,
+ ERIERL-967, ERIERL-985, GH-4992, GH-6152,
+ GH-6692, GH-6979, GH-6985, GH-7266, GH-7295,
+ GH-7397, GH-7432, GH-7438, GH-7483, GH-7493,
+ GH-7494, GH-7539, GH-7617, GH-7706, GH-7718,
+ GH-7972, GH-8058, GH-8061, GH-8066, GH-8159,
+ GH-8166, GH-8244, GH-8360, GH-8364, GH-8365,
+ GH-8366, GH-8452, OTP-16448, OTP-16608,
+ OTP-16875, OTP-17734, OTP-18746, OTP-18750,
+ OTP-18835, PR-6510, PR-6639, PR-6658,
+ PR-6791, PR-6985, PR-7110, PR-7125, PR-7174,
+ PR-7183, PR-7220, PR-7232, PR-7236, PR-7243,
+ PR-7267, PR-7274, PR-7299, PR-7302, PR-7313,
+ PR-7316, PR-7348, PR-7380, PR-7383, PR-7388,
+ PR-7398, PR-7419, PR-7428, PR-7441, PR-7443,
+ PR-7447, PR-7451, PR-7465, PR-7470, PR-7474,
+ PR-7475, PR-7481, PR-7491, PR-7496, PR-7528,
+ PR-7534, PR-7535, PR-7538, PR-7556, PR-7585,
+ PR-7590, PR-7592, PR-7607, PR-7628, PR-7639,
+ PR-7649, PR-7651, PR-7675, PR-7678, PR-7684,
+ PR-7697, PR-7699, PR-7700, PR-7701, PR-7702,
+ PR-7703, PR-7711, PR-7720, PR-7726, PR-7728,
+ PR-7732, PR-7738, PR-7739, PR-7740, PR-7745,
+ PR-7779, PR-7781, PR-7782, PR-7790, PR-7809,
+ PR-7816, PR-7824, PR-7844, PR-7845, PR-7846,
+ PR-7847, PR-7856, PR-7857, PR-7869, PR-7879,
+ PR-7891, PR-7898, PR-7917, PR-7918, PR-7936,
+ PR-7942, PR-7952, PR-7957, PR-7960, PR-7963,
+ PR-7973, PR-7977, PR-7981, PR-7993, PR-8003,
+ PR-8004, PR-8006, PR-8026, PR-8029, PR-8035,
+ PR-8042, PR-8048, PR-8056, PR-8063, PR-8067,
+ PR-8069, PR-8076, PR-8086, PR-8090, PR-8091,
+ PR-8092, PR-8093, PR-8095, PR-8103, PR-8111,
+ PR-8112, PR-8155, PR-8156, PR-8164, PR-8168,
+ PR-8177, PR-8182, PR-8205, PR-8230, PR-8233,
+ PR-8241, PR-8249, PR-8250, PR-8255, PR-8256,
+ PR-8258, PR-8288, PR-8308, PR-8324, PR-8345,
+ PR-8363, PR-8375, PR-8382, PR-8389, PR-8396,
+ PR-8399
+System: OTP
+Release: 27
+Application: asn1-5.3, common_test-1.27, compiler-8.5,
+ crypto-5.5, debugger-5.4, dialyzer-5.2,
+ diameter-2.4, edoc-1.3, eldap-1.2.13,
+ erl_interface-5.5.2, erts-15.0, et-1.7.1,
+ eunit-2.9.1, ftp-1.2.2, inets-9.2,
+ jinterface-1.14.1, kernel-10.0, megaco-4.6,
+ mnesia-4.23.2, observer-2.16, odbc-2.14.3,
+ os_mon-2.10, parsetools-2.6, public_key-1.16,
+ reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2,
+ snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0,
+ syntax_tools-3.2, tftp-1.2, tools-4.0,
+ wx-2.4.2, xmerl-2.0
+Predecessor: OTP
+
+Check out the git tag OTP-27.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Thanks to voltone for interop testing and related discussions.
+
+ Own Id: OTP-18606
+ Application(s): public_key, ssl
+ Related Id(s): OTP-16448, OTP-16875
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Application(s): stdlib
+ Related Id(s): PR-7183, PR-7232
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Application(s): compiler, stdlib
+ Related Id(s): PR-7383
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Application(s): compiler
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): PR-7728
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Application(s): erts
+ Related Id(s): PR-7470
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new tool `tprof`, which combines the functionality of `eprof`
+ and `cprof` under one interface and adds heap profiling. It also has
+ functionality to help with profiling process hierarchies.
+
+ _Example_:
+
+ 1> tprof:profile(lists, seq, [1, 16], #{type => call_memory}).
+
+ ****** Process <0.92.0> -- 100.00% of total ***
+ FUNCTION CALLS WORDS PER CALL [ %]
+ lists:seq_loop/3 5 32 6.40 [100.00]
+ 32 [ 100.0]
+ ok
+
+ Own Id: OTP-18756
+ Application(s): tools
+ Related Id(s): PR-6639
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Application(s): stdlib
+ Related Id(s): PR-7649
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Application(s): stdlib
+ Related Id(s): PR-7684, OTP-18750
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Application(s): compiler, erts, kernel, tools
+ Related Id(s): PR-7856
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Application(s): compiler, stdlib
+ Related Id(s): PR-7936
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Application(s): stdlib
+ Related Id(s): PR-6791
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Application(s): otp, stdlib
+ Related Id(s): PR-8067
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer,
+ diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface,
+ kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key,
+ reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp,
+ tools, wx, xmerl
+ Related Id(s): PR-8026
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Application(s): compiler, erts
+ Related Id(s): PR-8090
+
+- There is a new module `trace` in Kernel providing the same trace
+ functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the
+ addition of **dynamic isolated trace sessions**.
+
+ Own Id: OTP-18980
+ Application(s): erts, kernel
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Application(s): asn1
+ Related Id(s): PR-8241
+
+- There is a new module `json` for encoding and decoding JSON.
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Application(s): stdlib
+ Related Id(s): PR-8111
+
+- For security reasons, the CBC ciphers are now longer included in the list of
+ default ciphers for TLS-1.2.
+
+ Own Id: OTP-19025
+ Application(s): ssl
+ Related Id(s): PR-8250
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+# POTENTIAL INCOMPATIBILITIES
+
+- The `pid` field returned from `erlang:fun_info/1,2` is now always the pid for
+ the `init` process of the local node, not the pid for the actual process that
+ created the fun.
+
+ Own Id: OTP-18594
+ Application(s): erts
+ Related Id(s): PR-7274
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Application(s): erts
+ Related Id(s): PR-7348
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Application(s): inets
+ Related Id(s): PR-7316
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Application(s): otp
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Application(s): stdlib, tools
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Application(s): compiler, otp, stdlib
+ Related Id(s): GH-7706, PR-7726
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Application(s): kernel, otp
+ Related Id(s): PR-8091
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ -compile([nowarn_missing_spec]).
+
+ and the compiler is invoked like so:
+
+ % erlc +warn_missing_spec some_module.erl
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Application(s): compiler
+ Related Id(s): GH-6979, PR-8093
+
+- The existing function ssl:key_exporter_materials/4 is now documented and
+ supported.
+
+ Own Id: OTP-19016
+ Application(s): crypto, public_key
+ Related Id(s): PR-8233
+
+- The implementations of http_uri:encode/1 and http_uri:decode/1 are now
+ replaced with their equivalent, but bug free versions from module
+ `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1.
+
+ Own Id: OTP-19022
+ Application(s): inets
+
+- For security reasons, the CBC ciphers are now longer included in the list of
+ default ciphers for TLS-1.2.
+
+ Own Id: OTP-19025
+ Application(s): ssl
+ Related Id(s): PR-8250
+
+ *** HIGHLIGHT ***
+
+- The error handling the `simple_one_for_one` supervisor has been enhanced. A
+ transient child returning `ignore` will no longer cause a crash.
+
+ Also, automatic shutdown has been disabled because it does not make sense for
+ this supervisor type. That is was allowed is considered a bug. Therefore, we
+ don't consider this an incompatible change.
+
+ Own Id: OTP-19029
+ Application(s): stdlib
+ Related Id(s): PR-8230
+
+- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack,
+ about which we were alerted by Hubert Kario from Red Hat. You can find more
+ details about the attack at https://people.redhat.com/~hkario/marvin/
+ Functions that may be vulnerable are now deprecated.
+
+ Note that you might mitigate the problem by using appropriate versions of
+ OpenSSL together with our software, but we recommend not using them at all.
+
+ Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and
+ do not enable RSA-key exchange cipher suites (not supported by default).
+
+ Own Id: OTP-19075
+ Application(s): crypto, public_key
+
+- Some default values in Xmerl has been changed to avoid XML External Entity
+ (XXE) vulnerabilities if you're parsing untrusted XML.
+
+ xmerl_scan: the default value for allow_entities has changed to false.
+ xmerl_sax_parser: the default value for external_entities has changed to none.
+
+ Own Id: OTP-19079
+ Application(s): xmerl
+ Related Id(s): GH-7539
+
+# OTP-27.0
+
+## Fixed Bugs and Malfunctions
+
+- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0`
+ when using the term equivalence operators (`=:=` and `=/=`).
+
+ The arithmetic equality operators (`==` and `/=`) and all relative comparison
+ operations still consider `0.0` equal to `-0.0`.
+
+ Own Id: OTP-18717
+ Related Id(s): PR-7728
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- `configure` scripts of the OTP build system are now generated using Autoconf
+ 2.72.
+
+ Own Id: OTP-18943
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+- By default `configure` scripts used when building OTP will now try to enable
+ support for timestamps that will work after mid-January 2038. This has
+ typically only been an issue on 32-bit platforms.
+
+ If `configure` cannot figure out how to enable such timestamps, it will abort
+ with an error message. If you want to build the system anyway, knowing that
+ the system will not function properly after mid-January 2038, you can pass the
+ `--disable-year2038` option to `configure`, which will enable `configure` to
+ continue without support for timestamps after mid-January 2038.
+
+ Own Id: OTP-18965
+ Related Id(s): PR-8095
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Related Id(s): PR-8091
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The restriction for the expression that gives a default value for a record
+ field is now documented.
+
+ Own Id: OTP-18995
+ Related Id(s): GH-8166, PR-8177
+
+# asn1-5.3
+
+## Fixed Bugs and Malfunctions
+
+- Multiple bugs has been eliminated in the specialized decode feature.
+
+ Own Id: OTP-18813
+ Related Id(s): PR-7790
+
+## Improvements and New Features
+
+- Specs have been added to all `asn1ct` API functions.
+
+ Own Id: OTP-18804
+ Related Id(s): PR-7738
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for
+ encoding and decoding JSON. Thus, there is no longer any need for an external
+ JSON library.
+
+ Own Id: OTP-19018
+ Related Id(s): PR-8241
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of asn1-5.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.27
+
+## Improvements and New Features
+
+- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to
+ ensure that all output is captured.
+
+ Own Id: OTP-18658
+ Related Id(s): PR-7380
+
+- The order in which multiple hooks are executed can now be reversed after each
+ config function. See CTH Execution Order.
+
+ Own Id: OTP-18682
+ Related Id(s): ERIERL-43, GH-7397, PR-7496
+
+- The default CSS will now include a basic dark mode handling if it is preferred
+ by the browser.
+
+ Own Id: OTP-18761
+ Related Id(s): PR-7428
+
+- `-callback` attributes have been added to `ct_suite` and `ct_hooks`.
+
+ Own Id: OTP-18781
+ Related Id(s): PR-7701
+
+- The built-in cth_log_redirect hook can now be configured to replace default
+ logger reports in terminal with HTML logs.
+
+ Own Id: OTP-18875
+ Related Id(s): PR-7891
+
+- Error handling for the `ct_property_test` framework has been enhanced.
+
+ Own Id: OTP-18881
+ Related Id(s): PR-7824
+
+- Enhance test case documentation, making it clear how a test case can be
+ failed.
+
+ Own Id: OTP-18892
+ Related Id(s): PR-7869
+
+- The failing line in the test source code is now colored to make it easier to
+ find on the screen.
+
+ Own Id: OTP-18898
+ Related Id(s): PR-7917
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The suite execution elapsed time is now included in the index page.
+
+ Own Id: OTP-18981
+ Related Id(s): GH-7972, PR-8112
+
+> #### Full runtime dependencies of common_test-1.27
+>
+> 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
+
+## Fixed Bugs and Malfunctions
+
+- Generators for binary comprehensions could be evaluated before it was known
+ that they would be needed. That could result in a binary comprehensions
+ failing if a generator that should not be evaluated until later failed.
+
+ As an example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+
+ f() ->
+ <<0 || _ <- [], _ <- ok, false>>.
+
+ In Erlang/OTP 26 it would fail like so:
+
+ 1> t:f().
+ ** exception error: bad generator ok
+ in function t:f/0 (t.erl, line 6)
+
+ In Erlang/OTP 27 it returns an empty binary:
+
+ 1> t:f().
+ <<>>
+
+ Own Id: OTP-18703
+ Related Id(s): GH-7494, PR-7538
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- The compiler now optimizes creation of binaries that are known to be constant.
+
+ Consider this example:
+
+ bin() ->
+ C = char(),
+ <<C>>.
+
+ char() -> $*.
+
+ Essentially, the compiler rewrites the example to the slightly more efficient:
+
+ bin() ->
+ _ = char(),
+ <<$*>>.
+
+ char() -> $*.
+
+ Own Id: OTP-18673
+ Related Id(s): ERIERL-964, PR-7474
+
+- The compiler will now merge consecutive updates of the same record.
+
+ As an example, the body of the following function will be combined into a
+ single tuple creation instruction:
+
+ -record(r, {a,b,c,d}).
+
+ update(Value) ->
+ R0 = #r{},
+ R1 = R0#r{a=Value},
+ R2 = R1#r{b=2},
+ R2#r{c=3}.
+
+ Own Id: OTP-18680
+ Related Id(s): ERIERL-967, PR-7491, PR-8086
+
+ *** HIGHLIGHT ***
+
+- Improved the performance of the alias analysis pass.
+
+ Own Id: OTP-18714
+ Related Id(s): GH-7432, PR-7528
+
+- `-spec` attributes are now used for documentation.
+
+ Own Id: OTP-18801
+ Related Id(s): PR-7739
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The order in which the compiler looks up options has changed.
+
+ When there is a conflict in the compiler options given in the `-compile()`
+ attribute and options given to the compiler, the options given in the
+ `-compile()` attribute overrides the option given to the compiler, which in
+ turn overrides options given in the `ERL_COMPILER_OPTIONS` environment
+ variable.
+
+ Example:
+
+ If `some_module.erl` has the following attribute:
+
+ -compile([nowarn_missing_spec]).
+
+ and the compiler is invoked like so:
+
+ % erlc +warn_missing_spec some_module.erl
+
+ no warnings will be issued for functions that do not have any specs.
+
+ Own Id: OTP-18968
+ Related Id(s): GH-6979, PR-8093
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+- Improved the match context reuse optimization slightly, allowing match
+ contexts to be passed as-is to `bit_size/1` and `byte_size/1`.
+
+ Own Id: OTP-18987
+
+- `m:erl_lint` (and by extension the `compiler`) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): PR-8205
+
+> #### Full runtime dependencies of compiler-8.5
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which
+ were marked as deprecated since OTP 25.
+
+ Own Id: OTP-18973
+
+- Add support for sm3 hash and hmac.
+
+ Own Id: OTP-18975
+ Related Id(s): PR-6658
+
+- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread
+ specific data.
+
+ Own Id: OTP-18978
+ Related Id(s): PR-7809
+
+- Add SM4 block cipher implemented according to GB/T 32907-2016.
+
+ Own Id: OTP-19005
+ Related Id(s): PR-8168
+
+- The existing function ssl:key_exporter_materials/4 is now documented and
+ supported.
+
+ Own Id: OTP-19016
+ Related Id(s): PR-8233
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack,
+ about which we were alerted by Hubert Kario from Red Hat. You can find more
+ details about the attack at https://people.redhat.com/~hkario/marvin/
+ Functions that may be vulnerable are now deprecated.
+
+ Note that you might mitigate the problem by using appropriate versions of
+ OpenSSL together with our software, but we recommend not using them at all.
+
+ Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and
+ do not enable RSA-key exchange cipher suites (not supported by default).
+
+ Own Id: OTP-19075
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of crypto-5.5
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# debugger-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- Type specs have been added to all API functions.
+
+ Own Id: OTP-18819
+ Related Id(s): PR-7781
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The Debugger now use a trace session for its internal use of tracing to avoid
+ interfering with the user's use of tracing.
+
+ Own Id: OTP-19074
+ Related Id(s): PR-8389
+
+> #### Full runtime dependencies of debugger-5.4
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0
+
+# dialyzer-5.2
+
+## Improvements and New Features
+
+- The `--gui` option for Dialyzer has been removed.
+
+ Own Id: OTP-18667
+ Related Id(s): PR-7443
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of dialyzer-5.2
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.4
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `diameter_app` and
+ `diameter_transport`.
+
+ Own Id: OTP-18783
+ Related Id(s): PR-7699
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Pick peer can now also handle request of type `#diameter_packet{}`.
+
+ Own Id: OTP-19090
+ Related Id(s): PR-8399
+
+> #### Full runtime dependencies of diameter-2.4
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.3
+
+## Fixed Bugs and Malfunctions
+
+- EEP 48 doc chunks now properly include links within `{@type }` macros.
+
+ Own Id: OTP-18945
+ Related Id(s): PR-8063
+
+- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`.
+
+ Own Id: OTP-18946
+ Related Id(s): PR-8063
+
+## Improvements and New Features
+
+- There is a new `edoc_html_to_markdown` module that can be used to convert
+ EEP-48 `application/html+erlang` to Markdown.
+
+ Own Id: OTP-18947
+ Related Id(s): PR-8063
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Added module `edoc_doclet_markdown` that can be used to convert EDoc style
+ documentation to Markdown documentation attributes.
+
+ Own Id: OTP-19052
+ Related Id(s): PR-8308
+
+> #### Full runtime dependencies of edoc-1.3
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.13
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eldap-1.2.13
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.5.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-15.0
+
+## Fixed Bugs and Malfunctions
+
+- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or
+ `-args_file` have been fixed.
+
+ Own Id: OTP-18766
+ Related Id(s): PR-7639
+
+- Fixed a bug that prevented the emulator from building on recent versions of
+ Yocto Linux.
+
+ Own Id: OTP-18918
+ Related Id(s): PR-7952
+
+- Fixed spectre mitigation configure test to work with GCC patches to always add
+ `-fcf-protection=full`.
+
+ Own Id: OTP-18928
+ Related Id(s): PR-8006
+
+- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could
+ cause a (case clause) crash if data is immediately available.
+
+ Own Id: OTP-19063
+ Related Id(s): OTP-18835
+
+- Fix bug on Windows where `exit_status` would not be sent when a port exits
+ after the stdin/stdout handles have been closed.
+
+ Own Id: OTP-19077
+ Related Id(s): PR-8324
+
+## Improvements and New Features
+
+- Refactored how the JIT handles POSIX signals and how they affect thread
+ stacks, allowing us to use the native stack register for Erlang stacks on more
+ platforms.
+
+ Notably, containers built on 64-bit x86 Alpine Linux images will now perform
+ much better in sequential code. As an example, running `dialyzer` over the OTP
+ code base finishes about 15% quicker.
+
+ Own Id: OTP-18568
+ Related Id(s): PR-7174
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The `pid` field returned from `erlang:fun_info/1,2` is now always the pid for
+ the `init` process of the local node, not the pid for the actual process that
+ created the fun.
+
+ Own Id: OTP-18594
+ Related Id(s): PR-7274
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- By default, escripts will now be compiled instead of interpreted. That means
+ that the `compiler` application must be installed.
+
+ Own Id: OTP-18639
+ Related Id(s): PR-7348
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A binary returned from the `socket` receive functions is no longer created
+ as a sub binary of an often large receive buffer binary (socket option
+ `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement
+ reallocation efficiently.
+
+ Own Id: OTP-18642
+ Related Id(s): GH-6152, PR-7465
+
+- The default process limit has been raised to `1048576` processes.
+
+ Own Id: OTP-18699
+ Related Id(s): PR-7388
+
+- The erlang:system_monitor/2 functionality is now able to monitor long
+ message queues in the system.
+
+ Own Id: OTP-18709
+ Related Id(s): PR-7651
+
+- The `erl` command now supports the `-S` flag, which is similar to the `-run`
+ flag, except that it will pass all arguments up to end of the command line to
+ the called function. (The `-run` flag will not pass arguments beginning with a
+ hyphen.) Another difference is that `-S` will always call a function with one
+ argument, passing an empty list if no arguments were given.
+
+ Own Id: OTP-18744
+ Related Id(s): PR-7470
+
+ *** HIGHLIGHT ***
+
+- When implementing an alternative carrier for the Erlang distribution, a
+ separate input handler process may now be registered, using
+ erlang:dist_ctrl_input_handler/2, also in the case when the distribution
+ controller is a port.
+
+ Own Id: OTP-18774
+ Related Id(s): PR-7110
+
+- The call stack trace has now been added to the error reported by
+ erlang:process_flag/2 when `max_heap_size` limit has been exceeded.
+
+ Own Id: OTP-18779
+ Related Id(s): PR-7592
+
+- `-callback` attributes have been added to `erl_tracer`.
+
+ Own Id: OTP-18794
+ Related Id(s): PR-7703
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N` has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- New functions `socket:sendv/*` for sending I/O vectors have been added.
+
+ Own Id: OTP-18845
+
+- Socket options that take string now also accept binaries.
+
+ Own Id: OTP-18849
+ Related Id(s): PR-6510
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Changed the default value of the command line flag `-code_path_choice` to
+ `strict`.
+
+ Note that for application systems using archives, it is necessary to add the
+ `code_path_choice relaxed` to the command line that invokes `erl`.
+
+ Own Id: OTP-18894
+ Related Id(s): PR-7243
+
+- Added module loading to `erl -init_debug` printouts.
+
+ Own Id: OTP-18929
+ Related Id(s): PR-8004
+
+- When the runtime system halts, it performs various flush operations before
+ terminating. By default there is no limit on how much time the flush
+ operations are allowed to take. A new _halt flush timeout_ functionality has
+ been introduced which can be used for limiting the amount of time that the
+ flushing operations are allowed to take. For more information see the
+ documentation of the `flush_timeout` option of the erlang:halt/2 BIF and
+ the documentation of the `erl` `+zhft <Timeout>` command line flag.
+
+ Own Id: OTP-18938
+ Related Id(s): GH-7438, PR-8035
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d
+
+ Own Id: OTP-18942
+
+- The deprecated functions in `zlib` have been removed. That includes
+ `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and
+ the Adler checksum functions.
+
+ Own Id: OTP-18950
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Safe destructive update of tuples has been implemented in the compiler and
+ runtime system. This allows the VM to update tuples in-place when it is safe
+ to do so, thus improving performance by doing less copying but also by
+ producing less garbage.
+
+ Example:
+
+ -record(rec, {a,b,c}).
+
+ update(#rec{a=needs_update,b=N}=R0) ->
+ R = R0#rec{a=up_to_date},
+ if
+ N < 0 ->
+ R#rec{c=negative};
+ N == 0 ->
+ R#rec{c=zero};
+ N > 0 ->
+ R#rec{c=positive}
+ end.
+
+ The record updates in each of the three clauses of the `if` can safely be done
+ in-place, because variable `R` is not used again.
+
+ Own Id: OTP-18972
+ Related Id(s): PR-8090
+
+ *** HIGHLIGHT ***
+
+- The obsolete and undocumented support for opening a port to an external
+ resource by passing an atom (or a string) as first argument to `open_port()`,
+ implemented by the vanilla driver, has been removed. This feature has been
+ scheduled for removal in OTP 27 since the release of OTP 26.
+
+ Own Id: OTP-18976
+ Related Id(s): PR-7125
+
+- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all
+ scheduler threads when a NIF library is unloaded. Used for releasing thread
+ specific data. Can be set with function `enif_set_option`.
+
+ Own Id: OTP-18977
+ Related Id(s): PR-7809
+
+- There is a new module `trace` in Kernel providing the same trace
+ functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the
+ addition of **dynamic isolated trace sessions**.
+
+ Own Id: OTP-18980
+ *** HIGHLIGHT ***
+
+- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use
+ "large pages" (sometimes known as "huge pages" or "super pages"). This
+ currently only affects super-carrier allocations, but may be extended in the
+ future.
+
+ Own Id: OTP-18984
+ Related Id(s): PR-7977
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+- The `socket` documentation has been reworked, and due to that a few details
+ were fixed:
+
+ - socket:is_supported/1 now returns `true` for example for `protocols` that
+ is a "category", not an item.
+ - socket:cancel_monitor/1 no longer badargs for a monitor that was set by
+ another process, instead it returns `false` as for other unknown
+ `reference()`s.
+
+ Own Id: OTP-19054
+
+> #### Full runtime dependencies of erts-15.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.7.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of et-1.7.1
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.9.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of eunit-2.9.1
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.2.2
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of ftp-1.2.2
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.2
+
+## Improvements and New Features
+
+- Introduced a default value for httpd_server name configuration to improve ease
+ of use.
+
+ Own Id: OTP-18641
+ Related Id(s): PR-7316
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The `httpd` module has been extended with an API for simple serving directory
+ content over HTTP. With this change, the current working directory can be
+ served like this:
+
+ erl -S httpd
+
+ An arbitrary directory can be served like this:
+
+ erl -S httpd serve path/to/dir
+
+ Own Id: OTP-18727
+ Related Id(s): PR-7299
+
+- Added `-callback` attributes to `httpd`, `mod_esi`, and `mod_security`.
+
+ Own Id: OTP-18786
+ Related Id(s): PR-7700
+
+- Inets now uses a relative redirect with an absolute path to prevent whoever is
+ running Inets from having to configure the `ServerName` to match the
+ network-reachable host name of the server.
+
+ Own Id: OTP-18809
+ Related Id(s): GH-7617, PR-7678
+
+- `inets` processes now use proc_lib:set_label/1 to improve observeability.
+
+ Own Id: OTP-18927
+ Related Id(s): PR-8029
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The implementations of http_uri:encode/1 and http_uri:decode/1 are now
+ replaced with their equivalent, but bug free versions from module
+ `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1.
+
+ Own Id: OTP-19022
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- With this change, the API specs are updated.
+
+ Own Id: OTP-19033
+
+> #### Full runtime dependencies of inets-9.2
+>
+> 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
+
+# jinterface-1.14.1
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+# kernel-10.0
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash when calling file:delete/2 with an empty option list.
+
+ Own Id: OTP-18590
+ Related Id(s): PR-7220
+
+- New functions have been added to the undocumented module `inet_dns` that
+ take a flag to specify if encode/decode is for mDNS. This affects how CLASS
+ values in the private range, with the top bit set, are handled.
+
+ Own Id: OTP-18878
+ Related Id(s): GH-7718, OTP-17734
+
+- The error information for erlang:phash/2 has been corrected.
+
+ Own Id: OTP-18904
+ Related Id(s): PR-7960
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+- Calling logger:add_handlers/1 with config option now works.
+
+ Own Id: OTP-18954
+ Related Id(s): GH-8061, PR-8076
+
+- The code:del_path/1 function now also works on paths added through `-pa`,
+ `-pz` , `-path` and the boot script.
+
+ Own Id: OTP-18959
+ Related Id(s): GH-6692, PR-7697
+
+- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could
+ cause a (case clause) crash if data is immediately available.
+
+ Own Id: OTP-19063
+ Related Id(s): OTP-18835
+
+- Improve heuristic for when a characters is wide in the shell for systems with
+ old libc versions.
+
+ Own Id: OTP-19087
+ Related Id(s): PR-8382
+
+- Fix reading a line when reading from io:user/0 to not consider `\r` without
+ `\n` to be a new line when `erl` is started with `-noshell`.
+
+ Own Id: OTP-19088
+ Related Id(s): GH-8360, PR-8396
+
+## Improvements and New Features
+
+- Added file:read_file/2 with a `raw` option for reading files without going
+ through the file server.
+
+ Own Id: OTP-18589
+ Related Id(s): PR-7220
+
+- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has
+ been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some
+ bug fixes and code cleanup has been done, and the resolver used in the test
+ suite has been changed to Knot DNS. See the source code.
+
+ Kudos to Alexander Clouter that did almost all the work!
+
+ Own Id: OTP-18713
+ Related Id(s): GH-6985, PR-6985
+
+- The `ebin` directories for escripts are now cached.
+
+ Own Id: OTP-18778
+ Related Id(s): PR-7556
+
+- `-callback` attributes haven been added to `application`,
+ `logger_handler`, and `logger_formatter`.
+
+ Own Id: OTP-18795
+ Related Id(s): PR-7703
+
+- Progress reports from before logger is started are now logged when log level
+ is set to debug.
+
+ Own Id: OTP-18807
+ Related Id(s): ERIERL-985, PR-7732
+
+- The code:where_is_file/2 and code:which/1 functions now check for
+ existence of the file directly instead of listing the content of each
+ directory in the code path.
+
+ Own Id: OTP-18816
+ Related Id(s): PR-7711
+
+- Type specs has been added to the `logger:Level/1,2,3` functions.
+
+ Own Id: OTP-18820
+ Related Id(s): PR-7779
+
+- For `inet_backend = socket`, setting the `active` socket option alone, to
+ `once`, `true` or `N` has been optimized, as well as the corresponding data
+ delivery.
+
+ Own Id: OTP-18835
+
+- New functions `socket:sendv/*` for sending I/O vectors have been added.
+
+ Own Id: OTP-18845
+
+- The shell now pages long output from the documentation help command
+ (`h(Module)`), auto completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- Optimized code loading by moving certain operations from the code server to
+ the caller.
+
+ Own Id: OTP-18941
+ Related Id(s): PR-7981
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Application startup has been optimized by removing an intermediary process.
+
+ Own Id: OTP-18963
+ Related Id(s): PR-8042
+
+- The existing experimental support for archive files will be changed in a
+ future release. The support for having an archive in an escript will remain,
+ but the support for using archives in a release will either become more
+ limited or completely removed.
+
+ As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice`
+ flag, and using `erl_prim_loader` for reading members of an archive are
+ deprecated.
+
+ To remain compatible with future version of Erlang/OTP `escript` scripts that
+ need to retrieve data files from its archive should use escript:extract/2
+ instead of `erl_prim_loader` and code:lib_dir/2.
+
+ Own Id: OTP-18966
+ Related Id(s): PR-8091
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The undocumented and deprecated `file:pid2name` function has been removed.
+
+ Own Id: OTP-18967
+ Related Id(s): PR-8092
+
+- There is a new module `trace` in Kernel providing the same trace
+ functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the
+ addition of **dynamic isolated trace sessions**.
+
+ Own Id: OTP-18980
+ *** HIGHLIGHT ***
+
+- Error logging has been improved when the io:standard_io/0 reader and/or
+ writer terminates with an error.
+
+ Own Id: OTP-18989
+ Related Id(s): PR-8103
+
+- `inet_backend = socket` has been optimized and reworked to be more compatible
+ with the original `inet_backend = inet`.
+
+ Own Id: OTP-19004
+ Related Id(s): OTP-18835
+
+- Add an simple example (echo server) )to the socket users guide.
+
+ Own Id: OTP-19042
+
+- `inet:i/0,1,2` has been improved to allow port numbers to be shown explicitly.
+
+ Own Id: OTP-19053
+ Related Id(s): #6724
+
+- The `socket` documentation has been reworked, and due to that a few details
+ were fixed:
+
+ - socket:is_supported/1 now returns `true` for example for `protocols` that
+ is a "category", not an item.
+ - socket:cancel_monitor/1 no longer badargs for a monitor that was set by
+ another process, instead it returns `false` as for other unknown
+ `reference()`s.
+
+ Own Id: OTP-19054
+
+- Add `stdin`, `stdout` and `stderr` keys to io:getopts/1 on
+ io:standard_io/0 to indicate if the respective I/O device is backed by a
+ terminal.
+
+ Own Id: OTP-19089
+ Related Id(s): PR-8396
+
+> #### Full runtime dependencies of kernel-10.0
+>
+> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0
+
+# megaco-4.6
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to `megaco_transport`.
+
+ Own Id: OTP-18806
+ Related Id(s): PR-7740
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18920
+ Related Id(s): BL-322
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of megaco-4.6
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.23.2
+
+## Fixed Bugs and Malfunctions
+
+- The `mnesia_registry` module have been deprecated.
+
+ Own Id: OTP-18994
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of mnesia-4.23.2
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.16
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- `m:etop` has been updated to use dbg:session/2 in order to not interfere
+ with any other tracing.
+
+ Own Id: OTP-19082
+ Related Id(s): PR-8363
+
+> #### Full runtime dependencies of observer-2.16
+>
+> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3
+
+# odbc-2.14.3
+
+## Fixed Bugs and Malfunctions
+
+- The order of libs in the Makefile has been changed to avoid finding the
+ system's `libei` instead of Erlang's `libei`.
+
+ Own Id: OTP-19030
+ Related Id(s): GH-8244, PR-8258
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of odbc-2.14.3
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.10
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of os_mon-2.10
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.6
+
+## Improvements and New Features
+
+- The `leex` documentation has been updated to use specs for documenting the
+ generated interface.
+
+ Own Id: OTP-18796
+ Related Id(s): PR-7703
+
+- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl`
+ source file.
+
+ Own Id: OTP-18912
+ Related Id(s): PR-7963
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of parsetools-2.6
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.16
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Thanks to voltone for interop testing and related discussions.
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+ *** HIGHLIGHT ***
+
+- The exception reason when public_key:cacerts_get/0 failed has been improved.
+
+ Own Id: OTP-18609
+ Related Id(s): GH-7295, PR-7302
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- The existing function ssl:key_exporter_materials/4 is now documented and
+ supported.
+
+ Own Id: OTP-19016
+ Related Id(s): PR-8233
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack,
+ about which we were alerted by Hubert Kario from Red Hat. You can find more
+ details about the attack at https://people.redhat.com/~hkario/marvin/
+ Functions that may be vulnerable are now deprecated.
+
+ Note that you might mitigate the problem by using appropriate versions of
+ OpenSSL together with our software, but we recommend not using them at all.
+
+ Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and
+ do not enable RSA-key exchange cipher suites (not supported by default).
+
+ Own Id: OTP-19075
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of public_key-1.16
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# reltool-1.0.1
+
+## Fixed Bugs and Malfunctions
+
+- The dependencies for this application are now listed in the app file.
+
+ Own Id: OTP-18831
+ Related Id(s): PR-7441
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of reltool-1.0.1
+>
+> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.1
+
+## Improvements and New Features
+
+- The `instrument` module can now track allocations on a per-process or
+ per-port basis.
+
+ Own Id: OTP-18577
+ Related Id(s): PR-7236
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- Type specs had been added to all `dbg` functions.
+
+ Own Id: OTP-18859
+ Related Id(s): PR-7782
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- `m:dbg` have been updated to use trace sessions.
+
+ dbg:session_create/1, dbg:session/2, and dbg:session_destroy/1 have been
+ added to work sessions. See the documentation for details.
+
+ Own Id: OTP-19081
+ Related Id(s): PR-8363
+
+> #### Full runtime dependencies of runtime_tools-2.1
+>
+> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0
+
+# sasl-4.2.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of sasl-4.2.2
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.16
+
+## Improvements and New Features
+
+- `-callback` attributes have been added to modules
+ `snmpa_network_interface_filter`, `snmpa_notification_filter`,
+ `snmpm_network_interface_filter`, `snmpm_user`, and
+ `snmpa_notification_delivery_info_receiver`.
+
+ New `-type` attributes have also been added to modules `snmp`, `snmpa`,
+ `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks.
+
+ Own Id: OTP-18785
+ Related Id(s): PR-7702
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18934
+ Related Id(s): BL-312
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of snmp-5.16
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2
+
+## Fixed Bugs and Malfunctions
+
+- SSH processes are now assigned labels for troubleshooting purposes.
+
+ Own Id: OTP-19017
+ Related Id(s): PR-8249
+
+- With this change, ssh client will automatically adjust transfer window size
+ for commands executed remotely over SSH.
+
+ Own Id: OTP-19057
+ Related Id(s): GH-7483, PR-8345
+
+## Improvements and New Features
+
+- The shell now pages long output from the documentation help command
+ (`h(Module)`), auto completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Updated types and specs for all API modules.
+
+ Own Id: OTP-18961
+
+> #### Full runtime dependencies of ssh-5.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
+
+## Fixed Bugs and Malfunctions
+
+- Starting a TLS server without sufficient credentials (certificate or anonymous
+ cipher) would work, but it was impossible to connect to it.
+
+ This has been corrected to return an error instead of starting the server.
+
+ Own Id: OTP-18887
+ Related Id(s): GH-7493, PR-7918
+
+- ASN.1 decoding errors are handled in more places to ensure that errors are
+ returned instead of cause a crash.
+
+ Own Id: OTP-18969
+ Related Id(s): GH-8058, PR-8256
+
+- Improved error checking on the API functions.
+
+ Own Id: OTP-18992
+ Related Id(s): GH-8066, PR-8156
+
+## Improvements and New Features
+
+- The `ssl` client can negotiate and handle certificate status request (OCSP
+ stapling support on the client side).
+
+ Thanks to voltone for interop testing and related discussions.
+
+ Own Id: OTP-18606
+ Related Id(s): OTP-16448, OTP-16875
+
+ *** HIGHLIGHT ***
+
+- Memory consumption has been reduced and performance increased by refactoring
+ internal data structures and their usage.
+
+ Own Id: OTP-18665
+ Related Id(s): PR-7447
+
+- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute.
+
+ Own Id: OTP-18788
+ Related Id(s): PR-7700
+
+- Key customization support has been extended to allow flexibility for
+ implementers of for instance hardware security modules (HSM) or trusted
+ platform modules (TPM).
+
+ Own Id: OTP-18876
+ Related Id(s): PR-7475, PR-7898
+
+- The proc_lib:set_label/1 function is now used to increase observability of
+ `ssl` processes.
+
+ Own Id: OTP-18879
+
+- Brainpool elliptic curves are now supported in TLS-1.3.
+
+ Own Id: OTP-18884
+ Related Id(s): PR-8056
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- For security reasons, the CBC ciphers are now longer included in the list of
+ default ciphers for TLS-1.2.
+
+ Own Id: OTP-19025
+ Related Id(s): PR-8250
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new `cert_policy_opts` option to configure certificate policy
+ options for the certificate path validation.
+
+ Own Id: OTP-19027
+ Related Id(s): PR-8255
+
+> #### Full runtime dependencies of ssl-11.2
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.0
+
+## Fixed Bugs and Malfunctions
+
+- The specs in module `binary` has been updated to reflect what is allowed by
+ the documentation.
+
+ Own Id: OTP-18684
+ Related Id(s): PR-7481
+
+- Several functions in the `binary` module would accept arguments of the wrong
+ type under certain circumstances. In this release, they now raise an exception
+ when incorrect types are given.
+
+ The following functions would accept an invalid pattern if the subject binary
+ was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`,
+ `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3`
+
+ The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of
+ raising an exception. Similarly, calls to `binary:part/2,3` attempting to
+ extract 0 bytes at position 0 of a bitstring would return an empty binary
+ instead of raising an exception.
+
+ Own Id: OTP-18743
+ Related Id(s): PR-7607, PR-7628
+
+- The documentation for the preprocessor now mentions that `defined(Name)` can
+ be called in the condition for an `-if` or `-elif` directive to test whether
+ `Name` is the name of a defined macro. (This feature was implemented in OTP
+ 21.)
+
+ If a function call in an `-if` or `-elif` with a name that is not the name of
+ a guard BIF, there would not be a compilation error, but would instead cause
+ the lines following the directive to be skipped. This has now been changed to
+ be a compilation error.
+
+ Own Id: OTP-18784
+ Related Id(s): GH-7706, PR-7726
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- `get_until` requests using the I/O protocol now correctly return a binary or
+ list when `eof` is the last item returned by the callback.
+
+ Own Id: OTP-18930
+ Related Id(s): GH-4992, PR-7993
+
+- The error handling the `simple_one_for_one` supervisor has been enhanced. A
+ transient child returning `ignore` will no longer cause a crash.
+
+ Also, automatic shutdown has been disabled because it does not make sense for
+ this supervisor type. That is was allowed is considered a bug. Therefore, we
+ don't consider this an incompatible change.
+
+ Own Id: OTP-19029
+ Related Id(s): PR-8230
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fix shell expansion to not crash when expanding a map with non-atom keys and
+ to not list zero arity functions when an argument has been given.
+
+ Own Id: OTP-19073
+ Related Id(s): GH-8364, GH-8365, GH-8366, PR-8375
+
+## Improvements and New Features
+
+- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the
+ modules `sets`, `ordsets`, and `gb_sets`.
+
+ Own Id: OTP-18622
+ Related Id(s): PR-7183, PR-7232
+
+ *** HIGHLIGHT ***
+
+- The compiler now emits nicer error message for function head mismatches. For
+ example, given:
+
+ a() -> ok;
+ a(_) -> error.
+
+ Erlang/OTP 26 and earlier would emit a diagnostic similar to:
+
+ t.erl:6:1: head mismatch
+ % 6| a(_) -> error.
+ % | ^
+
+ while in Erlang/OTP 27 the diagnostic is similar to:
+
+ t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted?
+ % 6| a(_) -> error.
+ % | ^
+
+ Own Id: OTP-18648
+ Related Id(s): PR-7383
+
+ *** HIGHLIGHT ***
+
+- `zip:create/2,3` will now tolerate POSIX timestamps in the provided
+ `file_info` records.
+
+ Own Id: OTP-18668
+
+- The callback function gen_statem:handle_event/4 has been cached in the
+ `gen_statem` engine to optimize callback call speed.
+
+ Own Id: OTP-18671
+ Related Id(s): PR-7419
+
+- The type beam_lib:beam/0 is now exported.
+
+ Own Id: OTP-18716
+ Related Id(s): PR-7534
+
+- The documentation for the `binary` module has been improved.
+
+ Own Id: OTP-18741
+ Related Id(s): PR-7585
+
+- `binary:replace/3,4` now supports using a fun for supplying the replacement
+ binary.
+
+ Own Id: OTP-18742
+ Related Id(s): PR-7590
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The new function proc_lib:set_label/1 can be used to add a descriptive term
+ to any process that does not have a registered name. The name will be shown by
+ tools such as `\c:i/0`, `observer`, and it will be included in crash reports
+ produced by processes using `gen_server`, `gen_statem`, `gen_event`, and
+ `gen_fsm`.
+
+ The label for a process can be retrieved by calling proc_lib:get_label/1.
+
+ Note that those functions work on any process, not only processes that use
+ `proc_lib`.
+
+ Example:
+
+ 1> self().
+ <0.90.0>
+ 2> proc_lib:set_label(my_label).
+ ok
+ 3> i().
+ .
+ .
+ .
+ <0.90.0> erlang:apply/2 2586 75011 0
+ my_label c:pinfo/2 51
+ 4> proc_lib:get_label(self()).
+ my_label
+
+ Own Id: OTP-18789
+ Related Id(s): PR-7720, PR-8003
+
+- `-callback` attributes has been added to modules `sys` and `erl_error`.
+
+ Own Id: OTP-18793
+ Related Id(s): PR-7703
+
+- Several new functions that accept funs have been added to module `timer`.
+
+ Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept
+ a nullary fun as the second argument, while functions `apply_after/3`,
+ `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second
+ and a list of n arguments for the fun as the third argument.
+
+ Own Id: OTP-18808
+ Related Id(s): PR-7649
+
+ *** HIGHLIGHT ***
+
+- Sigils on string literals have been implemented as per EEP 66, that is:
+ binary and string sigils in verbatim and escape characters variants, as well
+ as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted
+ strings (EEP 64). See Sigils in the Reference Manual.
+
+ Examples:
+
+ 1> ~"Björn".
+ <<"Björn"/utf8>>
+ 2> ~b"Björn".
+ <<"Björn"/utf8>>
+ 3> ~S"\s*(\w+)".
+ "\\s*(\\w+)"
+ 4> ~B"\s*(\w+)".
+ <<"\\s*(\\w+)">>
+
+ Own Id: OTP-18825
+ Related Id(s): PR-7684, OTP-18750
+
+ *** HIGHLIGHT ***
+
+- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1,
+ and shell:prompt_width/1 have been exported to help with custom prompt
+ implementations.
+
+ Own Id: OTP-18834
+ Related Id(s): PR-7675, PR-7816
+
+- The shell now pages long output from the documentation help command
+ (`h(Module)`), auto completions and the search command.
+
+ Own Id: OTP-18846
+ Related Id(s): PR-7845
+
+- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function
+ directly before the cursor.
+
+ Own Id: OTP-18847
+ Related Id(s): PR-7846
+
+- Added support for adding a custom code formatter that formats your multi-line
+ shell commands in your preferred formatting on submission. See
+ `shell:format_shell_func/` and shell:erl_pp_format_func/1.
+
+ Own Id: OTP-18848
+ Related Id(s): PR-7847
+
+- Added shell functions for viewing, forgetting and saving locally defined
+ functions, types and records.
+
+ Own Id: OTP-18852
+ Related Id(s): PR-7844
+
+- Added string:jaro_similarity/2, which can be used to calculate the
+ similarity between two strings.
+
+ Own Id: OTP-18865
+ Related Id(s): PR-7879
+
+- The new function ets:update_element/4 is similar to ets:update_element/3,
+ but takes a default tuple as the fourth argument, which will be inserted if no
+ previous record with that key exists.
+
+ Own Id: OTP-18870
+ Related Id(s): PR-7857
+
+- Added functions to retrieve the next higher or lower key/element from
+ `gb_trees` and `gb_sets`, as well as returning iterators that start at
+ given keys/elements.
+
+ Own Id: OTP-18874
+ Related Id(s): PR-7745
+
+- When the shell built-in function `c/1,2` is used to re-compile a
+ module, the current working directory of the original compilation is now added
+ to the include path.
+
+
+ Own Id: OTP-18908
+ Related Id(s): PR-7957
+
+- The `timer` module now uses a private table for its internal state, slightly
+ improving its performance.
+
+ Own Id: OTP-18914
+ Related Id(s): PR-7973
+
+- EEP-59 - Documentation Attributes has been implemented.
+
+ Documentation attributes can be used to document functions, types, callbacks,
+ and modules. The keyword `-moduledoc "Documentation here".` is used to
+ document modules, while `-doc "Documentation here".` can be used on top of
+ functions, types, and callbacks to document them, respectively.
+
+ - Types, callbacks, and function documentation can be set to `hidden` either
+ via `-doc false` or `-doc hidden`. When documentation attributes mark a type
+ as hidden, they will not be part of the documentation.
+ - The documentation from `moduledoc` and `doc` gets added by default to the
+ binary beam file, following the format of EEP-48.
+ - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc`
+ attributes are missing in exported functions, types, and callbacks.
+ - Using the compiler flag `warn_missing_spec_documented` will raise a warning
+ when spec attributes are missing in documented functions, types, and
+ callbacks.
+ - `moduledoc`s and `doc`s may refer to external files to be embedded, such as
+ `-doc {file, "README.md"}.`, which refers to the file `README.md` found in
+ the current working directory.
+ - The compiler warns about exported functions whose specs refer to hidden
+ types. Thus, there will be warnings when a hidden type (meaning, the type is
+ not part of the documentation) gets used in an exported function.
+
+ Own Id: OTP-18916
+ Related Id(s): PR-7936
+
+ *** HIGHLIGHT ***
+
+- New `ets` functions ets:first_lookup/1, ets:next_lookup/2,
+ ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is
+ equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The
+ new combined functions are more efficient and with guaranteed atomicity.
+
+ Own Id: OTP-18923
+ Related Id(s): PR-6791
+
+ *** HIGHLIGHT ***
+
+- The `maybe` expression is now enabled by default.
+
+ To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the
+ `maybe` expression can be disabled by disabling the `maybe_expr` feature. That
+ can be done by placing the following the line at the beginning of an Erlang
+ source file:
+
+ -feature(maybe_expr, disable).
+
+ Another way to disable the `maybe_expr` feature is by passing the
+ `-disable-feature` option to `erlc`:
+
+ erlc -disable-feature maybe_expr some_file.erl
+
+ Own Id: OTP-18944
+ Related Id(s): PR-8067
+
+ *** HIGHLIGHT ***
+
+- The compiler will now raise a warning when updating record/map literals. As an
+ example, consider this module:
+
+ -module(t).
+ -export([f/0]).
+ -record(r, {a,b,c}).
+
+ f() ->
+ #r{a=1}#r{b=2}.
+
+ The compiler raises the following warning:
+
+ 1> c(t).
+ t.erl:6:12: Warning: expression updates a literal
+ % 6| #r{a=1}#r{b=2}.
+ % | ^
+
+ Own Id: OTP-18951
+ Related Id(s): PR-8069
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made
+ them immune against table renaming.
+
+ Own Id: OTP-18993
+ Related Id(s): PR-8048
+
+- Windows now supports all functions in `math`.
+
+ Own Id: OTP-19001
+ Related Id(s): PR-8164
+
+- `m:erl_lint` (and by extension the `compiler`) will now warn for code using
+ deprecated callbacks.
+
+ The only callback currenly deprecated is `format_status/2` in `gen_server`,
+ `gen_event` and `gen_statem`.
+
+ You can use `nowarn_deprecated_callback` to silence the warning.
+
+ Own Id: OTP-19010
+ Related Id(s): PR-8205
+
+- There is a new module `json` for encoding and decoding JSON.
+
+ Both encoding and decoding can be customized. Decoding can be done in a
+ SAX-like fashion and handle multiple documents and streams of data.
+
+ Own Id: OTP-19020
+ Related Id(s): PR-8111
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of stdlib-6.0
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# syntax_tools-3.2
+
+## Fixed Bugs and Malfunctions
+
+- The `epp_dodger` module can now handle the `maybe` and `else` keywords.
+
+ Own Id: OTP-18608
+ Related Id(s): GH-7266, PR-7267
+
+- Reverting a `#wrapper` will no longer throw away changes made to
+ positions/annotations.
+
+ Own Id: OTP-18805
+ Related Id(s): PR-7398
+
+## Improvements and New Features
+
+- The type erl_syntax:annotation_or_location/0 is now exported.
+
+ Own Id: OTP-18715
+ Related Id(s): PR-7535
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of syntax_tools-3.2
+>
+> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0
+
+# tftp-1.2
+
+## Improvements and New Features
+
+- There is a new `tftp_logger` callback behavior module.
+
+ Own Id: OTP-18787
+ Related Id(s): PR-7700
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of tftp-1.2
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- Dialyzer warnings due to type specs added in `dbg` have been eliminated.
+
+ Own Id: OTP-18860
+
+- In Erlang/OTP 26, doing a `cover` analysis on the `line` level would return
+ multiple entries for lines on which multiple functions were defined.
+
+ For example, consider this module:
+
+ -module(foo).
+ -export(bar/0, baz/0).
+
+ bar() -> ok. baz() -> not_ok.
+
+
+{% raw %}
+
+
+ In Erlang/OTP 26, analysing on the `line` level would return two entries for
+ line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,{{foo,4},{1,0}},{{foo,4},{0,1}}}
+ 4> cover:analyse(foo, calls, line).
+ {ok,{{foo,4},1},{{foo,4},0}}
+
+ In Erlang/OTP 27, there will only be a single entry for line 4:
+
+ 1> cover:compile_module(foo).
+ {ok,foo}
+ 2> foo:bar().
+ ok
+ 3> cover:analyse(foo, coverage, line).
+ {ok,{{foo,4},{1,0}}}
+ 4> cover:analyse(foo, calls, line).
+ {ok,{{foo,4},1}}
+
+{% endraw %}
+
+ Own Id: OTP-18998
+ Related Id(s): GH-8159, PR-8182
+
+- Fixed align command in emacs mode.
+
+ Own Id: OTP-19026
+ Related Id(s): PR-8155
+
+## Improvements and New Features
+
+- Triple-Quoted Strings has been implemented as per EEP 64. See String in the
+ Reference Manual.
+
+ Example:
+
+ 1> """
+ a
+ b
+ c
+ """.
+ "a\nb\nc"
+
+ Adjacent string literals without intervening white space is now a syntax
+ error, to avoid possible confusion with triple-quoted strings. For example:
+
+ 1> "abc""xyz".
+ "xyz".
+ * 1:6: adjacent string literals without intervening white space
+
+ Own Id: OTP-18750
+ Related Id(s): PR-7313, PR-7451, OTP-18746
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- There is a new tool `tprof`, which combines the functionality of `eprof`
+ and `cprof` under one interface and adds heap profiling. It also has
+ functionality to help with profiling process hierarchies.
+
+ _Example_:
+
+ 1> tprof:profile(lists, seq, [1, 16], #{type => call_memory}).
+
+ ****** Process <0.92.0> -- 100.00% of total ***
+ FUNCTION CALLS WORDS PER CALL [ %]
+ lists:seq_loop/3 5 32 6.40 [100.00]
+ 32 [ 100.0]
+ ok
+
+ Own Id: OTP-18756
+ Related Id(s): PR-6639
+
+ *** HIGHLIGHT ***
+
+- Native coverage support has been implemented in the JIT. It will automatically
+ be used by the `cover` tool to reduce the execution overhead when running
+ cover-compiled code.
+
+ There are also new APIs to support native coverage without using the `cover`
+ tool.
+
+ To instrument code for native coverage it must be compiled with the
+ `line_coverage` option.
+
+ To enable native coverage in the runtime system, start it like so:
+
+ $ erl +JPcover true
+
+ There are also the following new functions for supporting native coverage:
+
+ - code:coverage_support/0
+ - code:get_coverage/2
+ - code:reset_coverage/1
+ - code:get_coverage_mode/0
+ - code:get_coverage_mode/1
+ - code:set_coverage_mode/1
+
+ Own Id: OTP-18856
+ Related Id(s): PR-7856
+
+ *** HIGHLIGHT ***
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+- Improved the align command in emacs mode.
+
+ Own Id: OTP-19080
+ Related Id(s): PR-8288
+
+> #### Full runtime dependencies of tools-4.0
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.4.2
+
+## Improvements and New Features
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of wx-2.4.2
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-2.0
+
+## Fixed Bugs and Malfunctions
+
+- Some default values in Xmerl has been changed to avoid XML External Entity
+ (XXE) vulnerabilities if you're parsing untrusted XML.
+
+ xmerl_scan: the default value for allow_entities has changed to false.
+ xmerl_sax_parser: the default value for external_entities has changed to none.
+
+ Own Id: OTP-19079
+ Related Id(s): GH-7539
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- An event state in xmerl_sax_parser which was updated in the event callback for
+ a startEntity was not saved.
+
+ Own Id: OTP-19086
+ Related Id(s): GH-8452
+
+## Improvements and New Features
+
+- Function specifications and types have been added to all public API functions.
+
+ Own Id: OTP-18913
+
+- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that
+ provides out-of-the box indented output has been added.
+
+ Own Id: OTP-18922
+ Related Id(s): PR-7942
+
+- The documentation has been migrated to use Markdown and ExDoc.
+
+ Own Id: OTP-18955
+ Related Id(s): PR-8026
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of xmerl-2.0
+>
+> erts-6.0, kernel-3.0, stdlib-2.5
+
+# Thanks to
+
+Alexander Clouter, Andrea Leopardi, Angelo Lakra, Anshul Mittal (WhatsApp),
+Anupama Singh, Artem Solomatin, Benjamin Philip, chiroptical, Christian Flicker,
+Fabian N.C. van 't Hooft, Frej Drejhammar, Gilbert, Guilherme Andrade, Gustaw
+Lippa, Ildar Khizbulin, Ilya Klyuchnikov, Ivan Sokolov, Jakub Witczak, Jan
+Uhlig, jdamanalo, jianhui, João Henrique Ferreira de Freitas, Johannes Christ,
+Jonatan Männchen, Jonathan Arnett, José Valim, Jurek Michal-AMJ018,
+lexprfuncall, LJZN, Luca Succi, Łukasz Niemier, Marcelino Alberdi Pereira, Maria
+Scott, Marko Mindek, Matthew Pope, Maxim Fedorov, Max Nordlund kivra, M-I,
+Michael Davis, Michal Jurek, Michal Kuratczyk, Michał Muskała, Nelson Vides,
+neo, Nikolay Amiantov, Paul Guyot, Paulo F. Oliveira, Richard Carlsson, Roberto
+Aloi, Robin Morisset, Ryota Kinukawa, Sacha, Sergey Yelin, Takeru Ohta, Tomas
+Abrahamsson, William Fank Thomé, WLSF, yastanotheruser, zeyun chen, Zeyu Zhang
+
diff --git a/release-notes/OTP-27.1.1.README.txt b/release-notes/OTP-27.1.1.README.txt
new file mode 100644
index 0000000..3038f99
--- /dev/null
+++ b/release-notes/OTP-27.1.1.README.txt
@@ -0,0 +1,154 @@
+Patch Package: OTP 27.1.1
+Git Tag: OTP-27.1.1
+Date: 2024-09-30
+Trouble Report Id: OTP-19227, OTP-19236, OTP-19238, OTP-19241,
+ OTP-19245, OTP-19251, OTP-19252, OTP-19254,
+ OTP-19256, OTP-19257
+Seq num: #8848, #8853, ERIERL-1130, GH-8832, PR-8261,
+ PR-8780, PR-8809, PR-8836, PR-8858
+System: OTP
+Release: 27
+Application: common_test-1.27.2, erts-15.1.1,
+ public_key-1.16.3, ssl-11.2.3, stdlib-6.1.1
+Predecessor: OTP 27.1
+
+Check out the git tag OTP-27.1.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.
+
+# common_test-1.27.2
+
+The common_test-1.27.2 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, HTML reports include jQuery version 3.7.1.
+
+ Own Id: OTP-19252
+ Related Id(s): PR-8858
+
+> #### Full runtime dependencies of common_test-1.27.2
+>
+> 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
+
+# erts-15.1.1
+
+The erts-15.1.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- On Windows, successive failed socket calls caused socket to become
+ "uninitialized".
+
+ Own Id: OTP-19251
+ Related Id(s): #8853
+
+- The socket framework fails to start on a IPv6-only Windows machine.
+
+ Own Id: OTP-19254
+ Related Id(s): #8848
+
+> #### Full runtime dependencies of erts-15.1.1
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# public_key-1.16.3
+
+The public_key-1.16.3 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Introduction of verify_fun/4 unfortunately introduced an argument switch for
+ some specific path validation errors so that verify_fun/3 could under these
+ circumstances be called with a DER cert instead of a decod cert, also in this
+ situation the verify_fun/4 would have the certificates in reverse order.
+
+ Own Id: OTP-19245
+ Related Id(s): GH-8832
+
+## Improvements and New Features
+
+- Do not hide crypto badarg reason, this error handling enhancement facilitates
+ debugging. These kind of runtime errors are not documented and should never be
+ relied on for matching, they are intended for catching input errors early.
+
+ Own Id: OTP-19238
+
+> #### Full runtime dependencies of public_key-1.16.3
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# ssl-11.2.3
+
+Note! The ssl-11.2.3 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
+
+- Starting from TLS-1.3 some server handshake alerts might arrive after
+ ssl:connection/2,3,4 has returned. If the socket is in active mode the
+ controlling process will get the alert message, but passive sockets would only
+ get {error, closed} on next call to ssl:recv/2,3 or ssl/setopts/2. Passive
+ sockets calls will now return {error, error_alert()} instead.
+
+ Own Id: OTP-19236
+ Related Id(s): PR-8261
+
+- Servers configured to support only version (pre TLS-1.2) should ignore hello
+ version extension, as it is an unknown extension to them, this will result in
+ that new clients that do not support the old server version will get an
+ insufficient security alert from the server and not a protocol version alert,
+ this is consistent with how old servers not able to support higher protocol
+ versions work.
+
+ Own Id: OTP-19257
+
+> #### Full runtime dependencies of ssl-11.2.3
+>
+> 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.1
+
+The stdlib-6.1.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Remove whitespace stripping of returned binaries in json:decode/3.
+
+ Own Id: OTP-19227
+ Related Id(s): ERIERL-1130, PR-8809
+
+- Fix zip:unzip/2 to not crash when extracting zip files with garbage in the
+ Zip64 extra header. This bug was introduced in Erlang 27.1 and has so far only
+ been seen on some archives creates by MS Excel.
+
+ Own Id: OTP-19241
+ Related Id(s): PR-8836
+
+- With this change, shutdown procedure handles a race condition between
+ supervisor executing a shutdown and child process termination from other
+ reason.
+
+ Own Id: OTP-19256
+ Related Id(s): PR-8780
+
+> #### Full runtime dependencies of stdlib-6.1.1
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# Thanks to
+
+Jakub Witczak
+
diff --git a/release-notes/OTP-27.1.2.README.txt b/release-notes/OTP-27.1.2.README.txt
new file mode 100644
index 0000000..0d5cc52
--- /dev/null
+++ b/release-notes/OTP-27.1.2.README.txt
@@ -0,0 +1,238 @@
+Patch Package: OTP 27.1.2
+Git Tag: OTP-27.1.2
+Date: 2024-10-17
+Trouble Report Id: OTP-19124, OTP-19235, OTP-19246, OTP-19247,
+ OTP-19249, OTP-19258, OTP-19265, OTP-19266,
+ OTP-19267, OTP-19268, OTP-19269, OTP-19274,
+ OTP-19286, OTP-19288
+Seq num: ERIERL-1127, ERIERL-1133, ERIERL-1134,
+ ERIERL-1137, ERIERL-1138, GH-6455, GH-7550,
+ GH-8223, GH-8835, GH-8875, GH-8880, GH-8908,
+ OTP-18520, OTP-19061, PR-8226, PR-8766,
+ PR-8837, PR-8854, PR-8866, PR-8876, PR-8890,
+ PR-8892, PR-8895, PR-8897, PR-8901, PR-8914,
+ PR-8916
+System: OTP
+Release: 27
+Application: common_test-1.27.3, erts-15.1.2,
+ kernel-10.1.1, ssh-5.2.3, ssl-11.2.4,
+ stdlib-6.1.2
+Predecessor: OTP 27.1.1
+
+Check out the git tag OTP-27.1.2, 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.
+
+# common_test-1.27.3
+
+The common_test-1.27.3 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, jquery and tablesorter licenses are added to COPYRIGHT file.
+ Also tablesorter is updated to version 2.32.
+
+ Own Id: OTP-19265
+ Related Id(s): PR-8876
+
+> #### Full runtime dependencies of common_test-1.27.3
+>
+> 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
+
+# erts-15.1.2
+
+The erts-15.1.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- A bug has been fixed where receiving an SCTP message with `gen_sctp` could
+ waste the first fragments of a message and only deliver the last fragment.
+
+ This happened with low probability when the OS signaled that the socket was
+ ready for reading in combination with an internal time-out retry.
+
+ A bug has been fixed with a lingering time-out from after an SCTP connect that
+ could stop the flow of incoming messages on an active `gen_tcp` socket.
+
+ Own Id: OTP-19235
+ Related Id(s): ERIERL-1133, PR-8837
+
+- An boolean option `non_block_send` for SCTP, has ben added to be able to
+ achieve the old behaviour to avoid blocking send operations by passing the OS
+ network stack error message (`{error,eagain}` through.
+
+ Own Id: OTP-19258
+ Related Id(s): ERIERL-1134, OTP-19061
+
+- The call gen_tcp:send/2 could hang indefinitely despite having set the
+ `send_timeout` option for the following unfortunate combination of
+ circumstances:
+
+ - The socket has to be in passive mode.
+ - All output buffers had to be filled util the `high_watermark` was hit,
+ causing the gen_tcp:send/2 operation to block.
+ - While the send operation was blocked, a `gen_tcp:recv/2,3` call had to be
+ done from a different process. It had to block, waiting for data for a while
+ before completing the operation, and the received packet had to fill at
+ least 75% of the receive buffer.
+
+ Under these circumstances he information that a send operation was waiting got
+ lost, so the send operation that blocked in the first placed would never
+ return. The data it had would be sent, though, and send operations from other
+ processes, still work.
+
+ This bug has been fixed.
+
+ Own Id: OTP-19267
+ Related Id(s): ERIERL-1138, GH-6455, PR-8892, OTP-18520
+
+- In rare circumstances, in code that matches multiple tuples, the JIT could
+ generate code that would raise a `badmatch` exception even if the given tuples
+ were correct.
+
+ Own Id: OTP-19268
+ Related Id(s): GH-8875, PR-8895
+
+- Fixed beam crash that could happen if resetting `call_time` or `call_memory`
+ trace counters of a function while it is called. Bug exists since OTP R16.
+
+ Own Id: OTP-19269
+ Related Id(s): GH-8835, PR-8897
+
+> #### Full runtime dependencies of erts-15.1.2
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.1.1
+
+Note! The kernel-10.1.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 bug has been fixed where receiving an SCTP message with `gen_sctp` could
+ waste the first fragments of a message and only deliver the last fragment.
+
+ This happened with low probability when the OS signaled that the socket was
+ ready for reading in combination with an internal time-out retry.
+
+ A bug has been fixed with a lingering time-out from after an SCTP connect that
+ could stop the flow of incoming messages on an active `gen_tcp` socket.
+
+ Own Id: OTP-19235
+ Related Id(s): ERIERL-1133, PR-8837
+
+- An boolean option `non_block_send` for SCTP, has ben added to be able to
+ achieve the old behaviour to avoid blocking send operations by passing the OS
+ network stack error message (`{error,eagain}` through.
+
+ Own Id: OTP-19258
+ Related Id(s): ERIERL-1134, OTP-19061
+
+> #### Full runtime dependencies of kernel-10.1.1
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# ssh-5.2.3
+
+The ssh-5.2.3 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, a race condition is removed from ssh client connection setup
+ procedure.
+
+ Own Id: OTP-19124
+ Related Id(s): GH-7550, PR-8766
+
+- With this change, ssh:connect is not affected by presence of EXIT message in
+ queue.
+
+ Own Id: OTP-19246
+ Related Id(s): GH-8223, PR-8854
+
+- With this change, ssh appends {active, false} option after socket options
+ received from user - so that false value is always used.
+
+ Own Id: OTP-19247
+ Related Id(s): PR-8226
+
+> #### Full runtime dependencies of ssh-5.2.3
+>
+> 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.4
+
+Note! The ssl-11.2.4 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
+
+- Refactor trying to also make some optimizations introduced a bug in signature
+ algorithms checks in OTP-26.2.1. This could manifest itself in not being able
+ to negotiate connections using certificates needing to use some TLS-1.2
+ compatibility legacy signature schemes.
+
+ Own Id: OTP-19249
+ Related Id(s): ERIERL-1137, PR-8866
+
+- Correct timeout handling for termination code run for own alerts, so that
+ intended timeout is used instead of falling back to OS TCP-stack timeout that
+ is unreasonably long on some platforms.
+
+ Own Id: OTP-19274
+ Related Id(s): PR-8901
+
+- Fix assertion so that works as intended. This could result in that some
+ TLS-1.2 clients would fail to connect to the the erlang server. Bug introduced
+ in OTP-27.1.1
+
+ Own Id: OTP-19288
+ Related Id(s): GH-8908, PR-8916
+
+> #### Full runtime dependencies of ssl-11.2.4
+>
+> 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.2
+
+The stdlib-6.1.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, uri_string:normalize assumes empty path (do not crash) when
+ no path is provided in the URI map.
+
+ Own Id: OTP-19266
+ Related Id(s): ERIERL-1127, PR-8890
+
+- Fixed spec for json:format/3.
+
+ Own Id: OTP-19286
+ Related Id(s): GH-8880, PR-8914
+
+> #### Full runtime dependencies of stdlib-6.1.2
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# Thanks to
+
+Jakub Witczak
+
diff --git a/release-notes/OTP-27.1.3.README.txt b/release-notes/OTP-27.1.3.README.txt
new file mode 100644
index 0000000..4f2f4ea
--- /dev/null
+++ b/release-notes/OTP-27.1.3.README.txt
@@ -0,0 +1,234 @@
+Patch Package: OTP 27.1.3
+Git Tag: OTP-27.1.3
+Date: 2024-12-05
+Trouble Report Id: OTP-19240, OTP-19293, OTP-19311, OTP-19325,
+ OTP-19326, OTP-19328, OTP-19332, OTP-19340,
+ OTP-19350, OTP-19352, OTP-19357, OTP-19365,
+ OTP-19366, OTP-19374
+Seq num: #8989, CVE-2024-53846, ERIERL-1134,
+ ERIERL-1139, ERIERL-1147, ERIERL-1157,
+ GH-8929, GH-9009, GH-9014, GH-9100,
+ OTP-19061, OTP-19240, OTP-19532, PR-8840,
+ PR-8924, PR-8931, PR-8980, PR-8995, PR-9001,
+ PR-9024, PR-9053, PR-9080, PR-9111, PR-9130
+System: OTP
+Release: 27
+Application: common_test-1.27.4, compiler-8.5.3,
+ erts-15.1.3, kernel-10.1.2,
+ public_key-1.16.4, ssh-5.2.4, ssl-11.2.5
+Predecessor: OTP 27.1.2
+
+Check out the git tag OTP-27.1.3, 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.
+
+# common_test-1.27.4
+
+The common_test-1.27.4 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, cth_surefire hook module handles group path reduction for a
+ skipped group. This fixes a bug manifesting with improper group path for a
+ group executed after a group which was skipped.
+
+ Own Id: OTP-19365
+ Related Id(s): ERIERL-1157, PR-9080
+
+## Improvements and New Features
+
+- With this change, prefix option can be specified in cth_conn_log option list.
+ Option allows to specify how much of additional information is added in raw
+ log output.
+
+ Own Id: OTP-19293
+ Related Id(s): ERIERL-1139, PR-8924, PR-8931
+
+> #### Full runtime dependencies of common_test-1.27.4
+>
+> 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.3
+
+The compiler-8.5.3 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- In rare circumstances, the destructive tuple update optimization could be
+ applied when it was unsafe.
+
+ Own Id: OTP-19340
+ Related Id(s): GH-9014, PR-9024
+
+- In rare circumstances involving appending to multiple binaries, the compile
+ could emit unsafe code that would crash the runtime system.
+
+ Own Id: OTP-19374
+ Related Id(s): GH-9100, PR-9111
+
+> #### Full runtime dependencies of compiler-8.5.3
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# erts-15.1.3
+
+The erts-15.1.3 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- gen_udp:send on domain local can leak inet_reply messages.
+
+ Own Id: OTP-19332
+ Related Id(s): #8989
+
+- net:getifaddrs does not properly report the running flag on windows.
+
+ Own Id: OTP-19366
+ Related Id(s): ERIERL-1134, OTP-19061
+
+> #### Full runtime dependencies of erts-15.1.3
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.1.2
+
+Note! The kernel-10.1.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:
+ -- erts-15.1 (first satisfied in OTP 27.1)
+
+## Fixed Bugs and Malfunctions
+
+- On windows the socket:recv could return with success ({ok, Data}) even though
+ not all data had been read.
+
+ Own Id: OTP-19328
+
+- gen_udp:send on domain local can leak inet_reply messages.
+
+ Own Id: OTP-19332
+ Related Id(s): #8989
+
+- Failure to create an UDP IPv6 socket when inet_backend = socket with certain
+ IPv6 socket options.
+
+ Own Id: OTP-19357
+
+- net:getifaddrs does not properly report the running flag on windows.
+
+ Own Id: OTP-19366
+ Related Id(s): ERIERL-1134, OTP-19061
+
+> #### Full runtime dependencies of kernel-10.1.2
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# public_key-1.16.4
+
+The public_key-1.16.4 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- If both `ext-key-usage` and `key-usage` are defined for a certificate it
+ should be checked that these usages are consistent with each other. This will
+ have the affect that such certificates where the `ext-key-usages` is marked as
+ critical and the usages is consistent with the `key-use` it can be considered
+ valid without mandatory application specific checks for the `ext-key-useage`
+ extension.
+
+ Own Id: OTP-19240
+ Related Id(s): PR-8840, OTP-19532
+
+- Handle decoding of EDDSA key properly, when decoding a PEM file that contains
+ only the public EDDSA key.
+
+ Own Id: OTP-19350
+ Related Id(s): GH-9009, PR-9053
+
+> #### Full runtime dependencies of public_key-1.16.4
+>
+> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5
+
+# ssh-5.2.4
+
+The ssh-5.2.4 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, ssh connection does not crash upon receiving exit-signal
+ message for an already terminated channel.
+
+ Own Id: OTP-19326
+ Related Id(s): GH-8929, PR-8995
+
+> #### Full runtime dependencies of ssh-5.2.4
+>
+> 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.5
+
+Note! The ssl-11.2.5 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- Avoid generating an internal alert for case that should have been an orderly
+ shutdown by the supervisor.
+
+ Own Id: OTP-19311
+ Related Id(s): PR-8980
+
+- If present, extended key-usage TLS (SSL) role check (`pk-clientAuth`,
+ `pk-serverAuth`) should always be performed for peer-cert. An intermediate CA
+ cert may relax the requirement if `AnyExtendedKeyUsage` purpose is present.
+
+ In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these requirements became too relaxed.
+ There where two problems, firstly the peer cert extension was only checked if
+ it was marked critical, and secondly the CA cert check did not assert the
+ relaxed `AnyExtendedKeyUsage` purpose.
+
+ This could result in that certificates might be misused for purposes not
+ intended by the certificate authority.
+
+ Thanks to Bryan Paxton for reporting the issue.
+
+ Own Id: OTP-19352
+ Related Id(s): PR-9130, CVE-2024-53846, OTP-19240
+
+## Improvements and New Features
+
+- Back port certificate_authorities option for TLS-1.3 servers to pre TLS-1.3
+ servers to enable them to disable the sending of certificate authorities in
+ their certificate request. This will have same affect as the the TLS-1.3
+ server option although it is handled by a different mechanism in these
+ versions, where the functionality is described to be more of a guidance,
+ although some pre TLS clients have proven to make it mandatory as in TLS-1.3
+ extension handling.
+
+ Own Id: OTP-19325
+ Related Id(s): ERIERL-1147, PR-9001
+
+> #### Full runtime dependencies of ssl-11.2.5
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# Thanks to
+
+Frej Drejhammar, zmstone
+
diff --git a/release-notes/OTP-27.1.README.txt b/release-notes/OTP-27.1.README.txt
new file mode 100644
index 0000000..414076a
--- /dev/null
+++ b/release-notes/OTP-27.1.README.txt
@@ -0,0 +1,1038 @@
+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
+
diff --git a/release-notes/OTP-27.2.1.README.txt b/release-notes/OTP-27.2.1.README.txt
new file mode 100644
index 0000000..b24487b
--- /dev/null
+++ b/release-notes/OTP-27.2.1.README.txt
@@ -0,0 +1,155 @@
+Patch Package: OTP 27.2.1
+Git Tag: OTP-27.2.1
+Date: 2025-01-23
+Trouble Report Id: OTP-19385, OTP-19388, OTP-19392, OTP-19407,
+ OTP-19418, OTP-19435, OTP-19439, OTP-19444,
+ OTP-19446
+Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1179,
+ ERIERL-1183, GH-9065, GH-9163, GH-9211,
+ GH-9237, PR-9139, PR-9155, PR-9156, PR-9161,
+ PR-9234, PR-9274, PR-9309, PR-9314, PR-9318,
+ PR-9327
+System: OTP
+Release: 27
+Application: common_test-1.27.6, dialyzer-5.3.1,
+ erts-15.2.1, kernel-10.2.1, ssh-5.2.6,
+ tftp-1.2.2
+Predecessor: OTP 27.2
+
+Check out the git tag OTP-27.2.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.
+
+# common_test-1.27.6
+
+The common_test-1.27.6 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Common test will now not crash when running tests with otp26 and earlier,
+ while having previous test resuts from otp27.
+
+ Own Id: OTP-19385
+ Related Id(s): ERIERL-1166, PR-9155, PR-9156
+
+> #### Full runtime dependencies of common_test-1.27.6
+>
+> 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
+
+# dialyzer-5.3.1
+
+The dialyzer-5.3.1 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash caused by the use of opaque types.
+
+ Own Id: OTP-19439
+ Related Id(s): ERIERL-1183, PR-9314
+
+> #### Full runtime dependencies of dialyzer-5.3.1
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# erts-15.2.1
+
+The erts-15.2.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed configure tests for GCC 14
+
+ Own Id: OTP-19407
+ Related Id(s): GH-9211, PR-9234
+
+- Fix bug where log printouts would go missing when `application_controller` is
+ stopping while log messages are being sent.
+
+ This bug was introduced by OTP-19078 in Erlang/OTP 26.2.5.
+
+ Own Id: OTP-19418
+ Related Id(s): GH-9163, PR-9274
+
+> #### Full runtime dependencies of erts-15.2.1
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.1
+
+Note! The kernel-10.2.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
+
+- Fix the default group_leader to reply `{error,request}` on invalid I/O
+ requests instead of crashing.
+
+ This bug was introduced in Erlang/OTP 27.2.
+
+ Own Id: OTP-19444
+ Related Id(s): GH-9237, PR-9318
+
+> #### Full runtime dependencies of kernel-10.2.1
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# ssh-5.2.6
+
+The ssh-5.2.6 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change, type specs for ssh:connection_info/1,2 functions are fixed
+ so they include \{error, term()\} return value.
+
+ Own Id: OTP-19388
+ Related Id(s): ERIERL-1165, PR-9161
+
+- With this change, ssh client accepts a banner sent during processing keyboard
+ interactive user authentication.
+
+ Own Id: OTP-19392
+ Related Id(s): GH-9065, PR-9139
+
+- With this change, large sftp transfers does not hang. Redundant window
+ adjustment are not requested.
+
+ Own Id: OTP-19435
+ Related Id(s): PR-9309
+
+> #### Full runtime dependencies of ssh-5.2.6
+>
+> 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
+
+# tftp-1.2.2
+
+The tftp-1.2.2 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fix specs in tftp:read_file function.
+
+ Own Id: OTP-19446
+ Related Id(s): ERIERL-1179, PR-9327
+
+> #### Full runtime dependencies of tftp-1.2.2
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# Thanks to
+
+Alexandre Rodrigues, Luke Bakken
+
diff --git a/release-notes/OTP-27.2.2.README.txt b/release-notes/OTP-27.2.2.README.txt
new file mode 100644
index 0000000..fe544e8
--- /dev/null
+++ b/release-notes/OTP-27.2.2.README.txt
@@ -0,0 +1,123 @@
+Patch Package: OTP 27.2.2
+Git Tag: OTP-27.2.2
+Date: 2025-02-06
+Trouble Report Id: OTP-19240, OTP-19381, OTP-19411, OTP-19445,
+ OTP-19455, OTP-19462
+Seq num: ERIERL-1174, ERIERL-1177, GH-9112, GH-9117,
+ GH-9177, GH-9208, PR-9273, PR-9286, PR-9322,
+ PR-9356, PR-9372, PR-9377
+System: OTP
+Release: 27
+Application: compiler-8.5.5, erts-15.2.2, kernel-10.2.2,
+ public_key-1.17.1, ssl-11.2.7
+Predecessor: OTP 27.2.1
+
+Check out the git tag OTP-27.2.2, 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.
+
+# compiler-8.5.5
+
+The compiler-8.5.5 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Eliminated a bug in the alias analysis pass that could potentially cause
+ unsafe optimizations of binary construction or record updates.
+
+ Own Id: OTP-19455
+ Related Id(s): PR-9356
+
+> #### Full runtime dependencies of compiler-8.5.5
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# erts-15.2.2
+
+The erts-15.2.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Disabled an unsafe runtime optimization in binary construction that caused
+ silent memory corruption.
+
+ Own Id: OTP-19462
+ Related Id(s): ERIERL-1177, PR-9372
+
+> #### Full runtime dependencies of erts-15.2.2
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.2
+
+Note! The kernel-10.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:
+ -- erts-15.1 (first satisfied in OTP 27.1)
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a couple of bugs that could make `global`'s internal state inconsistent
+ when a connection was reconnected.
+
+ Own Id: OTP-19381
+ Related Id(s): GH-9112, GH-9117, PR-9377
+
+> #### Full runtime dependencies of kernel-10.2.2
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# public_key-1.17.1
+
+The public_key-1.17.1 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Consider keyCertSign to compatible with extended key usage for TLS
+ client/server auth in CAs, adhere to wide spread implementations
+
+ Own Id: OTP-19240
+ Related Id(s): GH-9208, PR-9286
+
+> #### Full runtime dependencies of public_key-1.17.1
+>
+> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
+
+# ssl-11.2.7
+
+Note! The ssl-11.2.7 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- An initiated handshake should always be closed with an alert, some corner
+ cases have been fixed so that this should always be the case.
+
+ Own Id: OTP-19411
+ Related Id(s): ERIERL-1174, PR-9273
+
+- Correct option handling to work properly for paused handshaking. Could result
+ in unwanted alerts or or error messages.
+
+ Own Id: OTP-19445
+ Related Id(s): GH-9177, PR-9322
+
+> #### Full runtime dependencies of ssl-11.2.7
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# Thanks to
+
+Frej Drejhammar
+
diff --git a/release-notes/OTP-27.2.3.README.txt b/release-notes/OTP-27.2.3.README.txt
new file mode 100644
index 0000000..494ae4f
--- /dev/null
+++ b/release-notes/OTP-27.2.3.README.txt
@@ -0,0 +1,65 @@
+Patch Package: OTP 27.2.3
+Git Tag: OTP-27.2.3
+Date: 2025-02-17
+Trouble Report Id: OTP-19457, OTP-19467, OTP-19486
+Seq num: ERIERL-1189, ERIERL-1190, PR-9387, PR-9408,
+ PR-9418
+System: OTP
+Release: 27
+Application: inets-9.3.2, ssl-11.2.8
+Predecessor: OTP 27.2.2
+
+Check out the git tag OTP-27.2.3, 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.
+
+# inets-9.3.2
+
+The inets-9.3.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Improved robustness of httpd startup procedure.
+
+ Own Id: OTP-19486
+ Related Id(s): ERIERL-1190, PR-9408
+
+> #### Full runtime dependencies of inets-9.3.2
+>
+> 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
+
+# ssl-11.2.8
+
+Note! The ssl-11.2.8 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- Setting protocol version to a lower value then supported by default in server
+ API function called after ssl:listen/2 could result in wrong default values
+ being used and connections failing with insufficient security.
+
+ Own Id: OTP-19457
+ Related Id(s): PR-9418
+
+- Improve error handling of server name indication fun. This implies that if the
+ `sni_fun` returns `undefined` we will attempt connection with original option
+ values, if it returns `unrecognized` we end the connection with
+ UNRECOGNIZED_NAME alert and if provided options fail option verification we
+ will end the connection with a HANDSHAKE_FAILURE and an error log.
+
+ Own Id: OTP-19467
+ Related Id(s): ERIERL-1189, PR-9387
+
+> #### Full runtime dependencies of ssl-11.2.8
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
diff --git a/release-notes/OTP-27.2.4.README.txt b/release-notes/OTP-27.2.4.README.txt
new file mode 100644
index 0000000..ba08026
--- /dev/null
+++ b/release-notes/OTP-27.2.4.README.txt
@@ -0,0 +1,49 @@
+Patch Package: OTP 27.2.4
+Git Tag: OTP-27.2.4
+Date: 2025-02-20
+Trouble Report Id: OTP-19438, OTP-19466
+Seq num: CVE-2025-26618, ERIERL-1173, ERIERL-1180
+System: OTP
+Release: 27
+Application: snmp-5.18.1, ssh-5.2.7
+Predecessor: OTP 27.2.3
+
+Check out the git tag OTP-27.2.4, 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.
+
+# snmp-5.18.1
+
+The snmp-5.18.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- SNMP Agent transports type (intAgentTransports) was incorrectly not documented
+ as a list of transports. Also add a couple of config file generation examples.
+
+ Own Id: OTP-19438
+ Related Id(s): ERIERL-1180
+
+> #### Full runtime dependencies of snmp-5.18.1
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2.7
+
+The ssh-5.2.7 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- SFTP packets exceeding max packet size are not processed and dropped.
+
+ Own Id: OTP-19466
+ Related Id(s): ERIERL-1173, CVE-2025-26618
+
+> #### Full runtime dependencies of ssh-5.2.7
+>
+> 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
diff --git a/release-notes/OTP-27.2.README.txt b/release-notes/OTP-27.2.README.txt
new file mode 100644
index 0000000..3e8544e
--- /dev/null
+++ b/release-notes/OTP-27.2.README.txt
@@ -0,0 +1,766 @@
+Patch Package: OTP 27.2
+Git Tag: OTP-27.2
+Date: 2024-12-11
+Trouble Report Id: OTP-19158, OTP-19221, OTP-19223, OTP-19225,
+ OTP-19232, OTP-19234, OTP-19243, OTP-19248,
+ OTP-19253, OTP-19260, OTP-19261, OTP-19264,
+ OTP-19270, OTP-19273, OTP-19280, OTP-19281,
+ OTP-19282, OTP-19283, OTP-19284, OTP-19289,
+ OTP-19292, OTP-19299, OTP-19300, OTP-19301,
+ OTP-19302, OTP-19304, OTP-19305, OTP-19307,
+ OTP-19309, OTP-19310, OTP-19320, OTP-19321,
+ OTP-19322, OTP-19329, OTP-19330, OTP-19331,
+ OTP-19333, OTP-19335, OTP-19338, OTP-19341,
+ OTP-19342, OTP-19344, OTP-19351, OTP-19353,
+ OTP-19360, OTP-19361, OTP-19362, OTP-19368,
+ OTP-19370, OTP-19372, OTP-19373, OTP-19375,
+ OTP-19377, OTP-19379, OTP-19380, OTP-19387
+Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1149,
+ ERIERL-1152, ERIERL-1154, GH-7466, GH-8487,
+ GH-8510, GH-8544, GH-8706, GH-8755, GH-8759,
+ GH-8769, GH-8783, GH-8810, GH-8815, GH-8818,
+ GH-8821, GH-8829, GH-8867, GH-8899, GH-8903,
+ GH-8942, GH-8948, GH-8963, GH-8983, GH-8997,
+ GH-9027, GH-9087, PR-8532, PR-8671, PR-8744,
+ PR-8776, PR-8788, PR-8789, PR-8794, PR-8800,
+ PR-8801, PR-8816, PR-8833, PR-8838, PR-8844,
+ PR-8856, PR-8878, PR-8879, PR-8884, PR-8889,
+ PR-8898, PR-8902, PR-8906, PR-8907, PR-8909,
+ PR-8912, PR-8919, PR-8920, PR-8921, PR-8947,
+ PR-8949, PR-8954, PR-8955, PR-8956, PR-8959,
+ PR-8970, PR-8972, PR-8978, PR-8986, PR-8987,
+ PR-9002, PR-9003, PR-9008, PR-9016, PR-9021,
+ PR-9023, PR-9034, PR-9043, PR-9062, PR-9067,
+ PR-9078, PR-9093, PR-9097, PR-9108, PR-9127
+System: OTP
+Release: 27
+Application: common_test-1.27.5, compiler-8.5.4,
+ crypto-5.5.2, debugger-5.5, dialyzer-5.3,
+ eldap-1.2.14, erts-15.2, inets-9.3.1,
+ kernel-10.2, megaco-4.7, mnesia-4.23.3,
+ observer-2.17, os_mon-2.10.1,
+ public_key-1.17, snmp-5.18, ssh-5.2.5,
+ ssl-11.2.6, stdlib-6.2, tools-4.1.1
+Predecessor: OTP 27.1.3
+
+Check out the git tag OTP-27.2, 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.
+
+# POTENTIAL INCOMPATIBILITIES
+
+- The HTTP client now correctly takes into account the `full_result` option when
+ returning an asynchronous request.
+
+ Own Id: OTP-19158
+ Application(s): inets
+
+# OTP-27.2
+
+## Improvements and New Features
+
+- The `SECURITY.md` file with guidelines for reporting vulnerabilities and
+ security issues has been added to the git repository.
+
+ Own Id: OTP-19338
+ Related Id(s): PR-9023
+
+# common_test-1.27.5
+
+The common_test-1.27.5 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a bug where the sum of testcases' execution time in HTML logs was
+ sometimes miscalculated, and the table was not fully printed.
+
+ Own Id: OTP-19284
+ Related Id(s): ERIERL-1093, PR-8909
+
+> #### Full runtime dependencies of common_test-1.27.5
+>
+> 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.4
+
+The compiler-8.5.4 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed a crash in the common sub-expression elimination pass.
+
+ Own Id: OTP-19243
+ Related Id(s): GH-8818, PR-8838
+
+- Fixed a bug where bogus code was generated for consecutive calls to
+ erlang:setelement/2, potentially crashing the runtime system.
+
+ Own Id: OTP-19270
+ Related Id(s): GH-8783, PR-8898
+
+- When the `line_coverage` option was used, exceptions could show the wrong line
+ for where the exception was raised.
+
+ Own Id: OTP-19282
+ Related Id(s): PR-8907
+
+- The `line_coverage` option would be ignored if given in a `compile()`
+ attribute within a module.
+
+ Own Id: OTP-19309
+ Related Id(s): GH-8942, PR-8970
+
+- A segment matching a float in a binary generator will now skip any invalid
+ float (such as a NaN) and continue matching the rest of the binary. Before
+ this correction, the comprehension would stop as soon as an invalid float was
+ encountered.
+
+ Example:
+
+ 1> BadFloat = <<-1:64>>.
+ <<"ÿÿÿÿÿÿÿÿ">>
+ 2> [X || <<X:64/float>> <= <<0.0/float,BadFloat/binary,42.0/float>>].
+ [0.0,42.0]
+
+ Own Id: OTP-19331
+ Related Id(s): PR-8978
+
+> #### Full runtime dependencies of compiler-8.5.4
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5.2
+
+The crypto-5.5.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro with installed FIPS
+ support.
+
+ Own Id: OTP-19223
+ Related Id(s): GH-8769, PR-8800
+
+- Fixed crypto:hash_final/1 for digest types `shake128` and `shake256` when
+ using OpenSSL 3.4 or newer.
+
+ Own Id: OTP-19329
+ Related Id(s): GH-8997, PR-9002
+
+> #### Full runtime dependencies of crypto-5.5.2
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# debugger-5.5
+
+The debugger-5.5 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This
+ has been corrected so that the following now works:
+
+ 1> F = fun is_atom/1.
+ #Fun.erl.42.18682967>
+ > F(a).
+ true
+ 3> Id = fun id/1.
+ #Fun.erl.42.18682967>
+ 4> Id(42).
+ ** exception error: undefined shell command id/1
+ 5> id(I) -> I.
+ ok
+ 6> Id(42).
+ 42
+
+ The Debugger has also been corrected to correctly handle this syntax for a
+ BIF.
+
+ Own Id: OTP-19322
+ Related Id(s): GH-8963, PR-8987
+
+## Improvements and New Features
+
+- Erlang/OTP type specifications has been updated to eliminate overlapping
+ domains.
+
+ Own Id: OTP-19310
+ Related Id(s): GH-8810, GH-8821, PR-8986
+
+> #### Full runtime dependencies of debugger-5.5
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0
+
+# dialyzer-5.3
+
+The dialyzer-5.3 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed type inference for `erlang:system_info(logical_processors)`.
+
+ Own Id: OTP-19307
+ Related Id(s): GH-8948, PR-8954
+
+- Dialyzer would crash when attempting to analyze a module compiled with the
+ `line_coverage` option.
+
+ Own Id: OTP-19344
+ Related Id(s): GH-9027, PR-9034
+
+## Improvements and New Features
+
+- Erlang/OTP type specifications has been updated to eliminate overlapping
+ domains.
+
+ Own Id: OTP-19310
+ Related Id(s): GH-8810, GH-8821, PR-8986
+
+> #### Full runtime dependencies of dialyzer-5.3
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# eldap-1.2.14
+
+The eldap-1.2.14 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Corrected dialyzer spec for usage of TLS options. The incorrect usage for the
+ options in `eldap` could cause dialyzer warnings in user code referring to
+ `eldap` specs.
+
+ Own Id: OTP-19281
+ Related Id(s): PR-8906
+
+> #### Full runtime dependencies of eldap-1.2.14
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erts-15.2
+
+The erts-15.2 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled
+ off socket more like gen_tcp:accept/1, for example the options `tos` or
+ `tclass`.
+
+ When setting SCTP options that are unsupported on the platform, some should be
+ silently ignored, but a bug caused the option parsing to derail so the options
+ after could bail out and cause an error instead. This has been fixed.
+
+ Own Id: OTP-19225
+ Related Id(s): PR-8789
+
+- Fixed a bug where Erlang would corrupt the terminal settings if stdin was a
+ TTY but stdout was not.
+
+ Own Id: OTP-19232
+ Related Id(s): GH-8487, PR-8794
+
+- Fixed a bug in the non-JIT VM when loading a NIF over a function that is
+ already traced by more than one session. This caused a VM crash. This bug has
+ existed since OTP-27.0, where multiple trace sessions were introduced.
+
+ Own Id: OTP-19248
+ Related Id(s): PR-8856
+
+- Fixed a bug where the loading of modules with extremely large binary
+ construction instructions crashed the emulator on AArch64.
+
+ Own Id: OTP-19261
+ Related Id(s): GH-8815, PR-8816
+
+- `inet:getifaddrs/0,1` is improved when using inet_backend = socket.
+
+ Own Id: OTP-19264
+
+- win32reg:value/2 will no longer crash the emulator when the value is an
+ unterminated REG_SZ of size 0.
+
+ Own Id: OTP-19283
+ Related Id(s): GH-8903, PR-8912
+
+- `Makefile` dependency generation on Windows in WSL 2 has been corrected.
+
+ Own Id: OTP-19300
+ Related Id(s): PR-8955
+
+- Fix lock order violation if a NIF monitor `down` callback calls
+ `enif_whereis_pid`. Would cause debug emulator to crash but could potentially
+ lead to deadlocks in optimized emulator.
+
+ Own Id: OTP-19330
+ Related Id(s): GH-8983, PR-9008
+
+- Fixed compilation faults when compiling using `--enable-vm-probes`.
+
+ Own Id: OTP-19333
+
+- Fixed `erl_nif.h` on Windows to compile when gcc or clang is used.
+
+ Own Id: OTP-19341
+ Related Id(s): PR-9016
+
+- Fixed a minor issue in the JIT debug information that confused tools like GDB
+ and perf.
+
+ Own Id: OTP-19362
+ Related Id(s): PR-9003
+
+## Improvements and New Features
+
+- Improved documentation of timers.
+
+ Own Id: OTP-19360
+ Related Id(s): ERIERL-1149, PR-9062
+
+- The label for a process can now be retrieved also using
+ `process_info(Pid, label)` in addition to proc_lib:get_label/1.
+
+ This new option is useful when one wants to retrieve more than one process
+ info item. For example:
+
+ process_info(Pid, [label,registered_name])
+
+ Own Id: OTP-19373
+ Related Id(s): PR-9108
+
+> #### Full runtime dependencies of erts-15.2
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# inets-9.3.1
+
+The inets-9.3.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- The HTTP client now correctly takes into account the `full_result` option when
+ returning an asynchronous request.
+
+ Own Id: OTP-19158
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A synchronous httpc:request now timeouts after the `Timeout` specified in
+ `HttpOption {timeout, Timeout}`.
+
+ Own Id: OTP-19221
+ Related Id(s): ERIERL-1091, PR-8788, PR-8801
+
+- Fixed a bug where calling httpc:set_options/2 when one of keys: _ipfamily_ or
+ _unix_socket_, was not present, would cause the other value to get overriden
+ by the default value. The validation of these options was also improved.
+
+ Own Id: OTP-19379
+ Related Id(s): GH-8829, PR-8878
+
+## Improvements and New Features
+
+- The variable `Env` in the `mod_esi` callback will now have an additional
+ property `{connect_addr, Addr}` indicating on which address the server
+ received a connection.
+
+ Own Id: OTP-19377
+ Related Id(s): ERIERL-1152, PR-9127
+
+> #### Full runtime dependencies of inets-9.3.1
+>
+> 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.2
+
+Note! The kernel-10.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:
+ -- erts-15.1 (first satisfied in OTP 27.1)
+
+## Fixed Bugs and Malfunctions
+
+- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled
+ off socket more like gen_tcp:accept/1, for example the options `tos` or
+ `tclass`.
+
+ When setting SCTP options that are unsupported on the platform, some should be
+ silently ignored, but a bug caused the option parsing to derail so the options
+ after could bail out and cause an error instead. This has been fixed.
+
+ Own Id: OTP-19225
+ Related Id(s): PR-8789
+
+- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h
+ again.
+
+ Own Id: OTP-19260
+ Related Id(s): PR-8884
+
+- `inet:getifaddrs/0,1` is improved when using inet_backend = socket.
+
+ Own Id: OTP-19264
+
+- Fixed logger:report/0 to mandate at least one element in the report. This
+ fixes an issue with overlapping `spec` domains in all `logger` functions
+ that use logger:report/0.
+
+ Own Id: OTP-19302
+ Related Id(s): PR-8959
+
+- Fixed deadlock on `code_server`. Multiple calls loading the same module with
+ an `on_load` function loading call would create a deadlock.
+
+ Own Id: OTP-19305
+ Related Id(s): GH-7466, GH-8510, PR-8744
+
+## Improvements and New Features
+
+- The Kernel application now recognizes the `epmd_module` and
+ `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`.
+
+ Own Id: OTP-19253
+ Related Id(s): PR-8671
+
+- The `inetrc` kernel argument will now tolerate atoms again to improve
+ compatibility with old configurations that relied on atoms working by
+ accident.
+
+ The expected type always was, and still remains, a string.
+
+ Own Id: OTP-19280
+ Related Id(s): GH-8899, PR-8902
+
+- The file:io_device/0 type has been updated to clearly show the difference
+ between a `raw` and `cooked` IoDevice.
+
+ Own Id: OTP-19301
+ Related Id(s): PR-8956
+
+- Erlang/OTP type specifications has been updated to eliminate overlapping
+ domains.
+
+ Own Id: OTP-19310
+ Related Id(s): GH-8810, GH-8821, PR-8986
+
+- Added the kernel parameter `os_cmd_shell` that controls which shell should
+ be used by os:cmd/1.
+
+ Own Id: OTP-19342
+ Related Id(s): PR-8972
+
+- Added logging support to io:user/0, io:standard_io/0 and
+ io:standard_error/0. See io:setopts/2 for more details.
+
+ Own Id: OTP-19372
+ Related Id(s): PR-8947
+
+> #### Full runtime dependencies of kernel-10.2
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# megaco-4.7
+
+The megaco-4.7 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Improvements and New Features
+
+- Erlang/OTP type specifications has been updated to eliminate overlapping
+ domains.
+
+ Own Id: OTP-19310
+ Related Id(s): GH-8810, GH-8821, PR-8986
+
+> #### Full runtime dependencies of megaco-4.7
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.23.3
+
+The mnesia-4.23.3 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Mnesia table converted from `ext_copies` to `disc_copies` will now be properly
+ saved to disk.
+
+ Own Id: OTP-19292
+ Related Id(s): GH-8706, PR-8921
+
+- Mnesia could crash if table was deleted during checkpoint initialization.
+
+ Own Id: OTP-19368
+ Related Id(s): ERIERL-1154, PR-9093
+
+> #### Full runtime dependencies of mnesia-4.23.3
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.17
+
+The observer-2.17 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- In the Memory tab of `crashdump_viewer`, the blocks sizes in
+ `Allocator Summary` would all be `N/A`.
+
+ Own Id: OTP-19353
+ Related Id(s): PR-8532
+
+## Improvements and New Features
+
+- The Kernel application now recognizes the `epmd_module` and
+ `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`.
+
+ Own Id: OTP-19253
+ Related Id(s): PR-8671
+
+> #### Full runtime dependencies of observer-2.17
+>
+> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3
+
+# os_mon-2.10.1
+
+The os_mon-2.10.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed the `memsup` memory alarm to use `available_memory` when available,
+ instead of always using `free_memory`.
+
+ Own Id: OTP-19304
+ Related Id(s): GH-8759, PR-8776
+
+> #### Full runtime dependencies of os_mon-2.10.1
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# public_key-1.17
+
+The public_key-1.17 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Improvements and New Features
+
+- public_key:cacerts_load/1 can now be configured via the application
+ environment.
+
+ Own Id: OTP-19321
+ Related Id(s): PR-8920
+
+- On MacOS, CA certificates are now also loaded from the system keychain.
+
+ Own Id: OTP-19375
+ Related Id(s): PR-8844
+
+> #### Full runtime dependencies of public_key-1.17
+>
+> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
+
+# snmp-5.18
+
+The snmp-5.18 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Improvements and New Features
+
+- Erlang/OTP type specifications has been updated to eliminate overlapping
+ domains.
+
+ Own Id: OTP-19310
+ Related Id(s): GH-8810, GH-8821, PR-8986
+
+> #### Full runtime dependencies of snmp-5.18
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.2.5
+
+The ssh-5.2.5 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Documentation is polished after OTP-27 migration to markdown.
+
+ Own Id: OTP-19335
+ Related Id(s): PR-9021
+
+> #### Full runtime dependencies of ssh-5.2.5
+>
+> 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.6
+
+Note! The ssl-11.2.6 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.4 (first satisfied in OTP 27.1.3)
+
+## Improvements and New Features
+
+- Enhanced return value spec for active messages from the TLS connection socket.
+
+ Own Id: OTP-19387
+ Related Id(s): PR-9067
+
+> #### Full runtime dependencies of ssl-11.2.6
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.2
+
+The stdlib-6.2 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h
+ again.
+
+ Own Id: OTP-19260
+ Related Id(s): PR-8884
+
+- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This
+ has been corrected so that the following now works:
+
+ 1> F = fun is_atom/1.
+ #Fun.erl.42.18682967>
+ > F(a).
+ true
+ 3> Id = fun id/1.
+ #Fun.erl.42.18682967>
+ 4> Id(42).
+ ** exception error: undefined shell command id/1
+ 5> id(I) -> I.
+ ok
+ 6> Id(42).
+ 42
+
+ The Debugger has also been corrected to correctly handle this syntax for a
+ BIF.
+
+ Own Id: OTP-19322
+ Related Id(s): GH-8963, PR-8987
+
+- Fixed a bug where completion of 'fun(' would cause the shell to crash.
+
+ Own Id: OTP-19351
+ Related Id(s): PR-9043
+
+- Fixed a bug causing the shell to crash while trying to complete an expression
+ starting with a '/' or a variable followed by '(' or '/'. E.g. Foo/ and Foo(.
+
+ Own Id: OTP-19361
+ Related Id(s): PR-9078
+
+- zip:extract/2 with `keep_old_files` now respects the `cwd` option.
+
+ Own Id: OTP-19370
+ Related Id(s): GH-9087, PR-9097
+
+- Fixed an error in uri_string:percent_decode spec
+
+ Own Id: OTP-19380
+ Related Id(s): GH-8755
+
+## Improvements and New Features
+
+- Updated shell docs to display the type spec, that is, `h(erlang, min, 2)` now
+ prints the type spec and documentation in the shell.
+
+ > h(erlang,min,2).
+
+ -spec min(Term1, Term2) -> Minimum
+ when Term1 :: term(), Term2 :: term(), Minimum :: term().
+
+ Returns the smallest of Term1 and Term2. If the terms compare equal with the == operator, Term1 is returned.
+
+ Own Id: OTP-19234
+ Related Id(s): GH-8544, PR-8833
+
+- The file:io_device/0 type has been updated to clearly show the difference
+ between a `raw` and `cooked` IoDevice.
+
+ Own Id: OTP-19301
+ Related Id(s): PR-8956
+
+- Added json:format_key_value_list/3 and
+ json:format_key_value_list_checked/3.
+
+ Own Id: OTP-19320
+ Related Id(s): PR-8889
+
+- Improved documentation of timers.
+
+ Own Id: OTP-19360
+ Related Id(s): ERIERL-1149, PR-9062
+
+- Added logging support to io:user/0, io:standard_io/0 and
+ io:standard_error/0. See io:setopts/2 for more details.
+
+ Own Id: OTP-19372
+ Related Id(s): PR-8947
+
+> #### Full runtime dependencies of stdlib-6.2
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# tools-4.1.1
+
+The tools-4.1.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed some deprecated errors on emacs-29.
+
+ Own Id: OTP-19273
+ Related Id(s): PR-8879
+
+- The `cover` tool could sometimes wrongly report lines as uncovered.
+
+ Own Id: OTP-19289
+ Related Id(s): GH-8867, PR-8919
+
+- Fixed `tprof:format(IoDevice, ...)` to not demand unicode encoding supported
+ by `IoDevice`.
+
+ Own Id: OTP-19299
+ Related Id(s): PR-8949
+
+> #### Full runtime dependencies of tools-4.1.1
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# Thanks to
+
+Bryan Paxton, Daniel Finke, Dániel Szoboszlay, dependabotbot, Ildar Khizbulin,
+Jakub Witczak, Jonatan Kłosko, José Valim, Loïc Hoguin, Maas-Maarten Zeeman,
+Maria Scott, Marko Mindek, Péter Gömöri, Radek Szymczyszyn, Svilen Ivanov,
+Yaroslav Maslennikov, zmstone
+
diff --git a/release-notes/OTP-27.3.1.README.txt b/release-notes/OTP-27.3.1.README.txt
new file mode 100644
index 0000000..da736fc
--- /dev/null
+++ b/release-notes/OTP-27.3.1.README.txt
@@ -0,0 +1,218 @@
+Patch Package: OTP 27.3.1
+Git Tag: OTP-27.3.1
+Date: 2025-03-28
+Trouble Report Id: OTP-19391, OTP-19437, OTP-19469, OTP-19525,
+ OTP-19527, OTP-19529, OTP-19542, OTP-19543,
+ OTP-19545, OTP-19546, OTP-19547, OTP-19548,
+ OTP-19549, OTP-19559
+Seq num: #9172, CVE-2025-30211, ERIERL-1204,
+ ERIERL-1205, ERIERL-1206, GH-8891, GH-9483,
+ GH-9554, OTP-19472, OTP-19544, PR-9221,
+ PR-9486, PR-9534, PR-9545, PR-9553, PR-9577,
+ PR-9587, PR-9588, PR-9596, PR-9611, PR-9612
+System: OTP
+Release: 27
+Application: asn1-5.3.3, erts-15.2.4, kernel-10.2.4,
+ mnesia-4.23.5, ssh-5.2.9, ssl-11.2.10,
+ stdlib-6.2.2
+Predecessor: OTP 27.3
+
+Check out the git tag OTP-27.3.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.
+
+# OTP-27.3.1
+
+## Fixed Bugs and Malfunctions
+
+- Update used ExDoc version to v0.37.3
+
+ Own Id: OTP-19525
+ Related Id(s): PR-9553
+
+# asn1-5.3.3
+
+The asn1-5.3.3 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- The JER backend will now include the SIZE constraint in the type info for
+ OCTET STRINGs, and a SIZE constraint with a range will now be included for BIT
+ STRINGs. This does not change the actual encoding or decoding of JER, but can
+ be useful for tools.
+
+ Own Id: OTP-19542
+ Related Id(s): ERIERL-1204, PR-9588
+
+## Improvements and New Features
+
+- When using the JSON encoding rules, it is now possible to call the decode/2
+ function in the following way with data that has already been decoded by
+ json:decode/1:
+
+ SomeModule:decode(Type, {json_decoded, Decoded}).
+
+ Own Id: OTP-19547
+ Related Id(s): ERIERL-1206, PR-9611
+
+> #### Full runtime dependencies of asn1-5.3.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# erts-15.2.4
+
+The erts-15.2.4 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Behavior for socket:recv/3 has been improved. The behavior has also been
+ clarified in the documentation.
+
+ Own Id: OTP-19469
+ Related Id(s): #9172
+
+- Trace messages due to `receive` tracing could potentially be delayed a very
+ long time if the traced process waited in a `receive` expression without
+ clauses matching on messages (timed wait), or just did not enter a `receive`
+ expression for a very long time.
+
+ Own Id: OTP-19527
+ Related Id(s): PR-9577
+
+- Improve the naming of the (internal) esock mutex(es). It is now possible to
+ configure (as in autoconf) the use of simple names for the esock mutex(es).
+
+ Own Id: OTP-19548
+ Related Id(s): OTP-19472
+
+> #### Full runtime dependencies of erts-15.2.4
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.4
+
+Note! The kernel-10.2.4 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
+
+- Behavior for socket:recv/3 has been improved. The behavior has also been
+ clarified in the documentation.
+
+ Own Id: OTP-19469
+ Related Id(s): #9172
+
+- An infinite loop in CNAME loop detection that can cause Out Of Memory has been
+ fixed. This affected CNAME lookup with the internal DNS resolver.
+
+ Own Id: OTP-19545
+ Related Id(s): PR-9587, OTP-19544
+
+> #### Full runtime dependencies of kernel-10.2.4
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# mnesia-4.23.5
+
+The mnesia-4.23.5 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- With this change mnesia will merge schema of tables using external backends.
+
+ Own Id: OTP-19437
+ Related Id(s): PR-9534
+
+> #### Full runtime dependencies of mnesia-4.23.5
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# ssh-5.2.9
+
+The ssh-5.2.9 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Reception of malicious KEX init message does not result with ssh daemon
+ excessive memory usage.
+
+ Own Id: OTP-19543
+ Related Id(s): CVE-2025-30211
+
+- Call to ssh:daemon_replace_options does not crash when argument is not a valid
+ daemon ref.
+
+ Own Id: OTP-19559
+ Related Id(s): GH-9554, PR-9545
+
+> #### Full runtime dependencies of ssh-5.2.9
+>
+> 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.10
+
+Note! The ssl-11.2.10 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- Correct handling of unassigned signature algorithms to properly ignore them
+ instead of failing the handshake.
+
+ Own Id: OTP-19529
+ Related Id(s): GH-9483, PR-9486
+
+- Update key mechanism in CRL cache so that CRL DP with same URI path component
+ becomes distinguishable from each other.
+
+ Own Id: OTP-19549
+ Related Id(s): GH-8891, PR-9612
+
+## Improvements and New Features
+
+- Add callback for NSS keylogging so that it can work as expected for all
+ scenarios.
+
+ Own Id: OTP-19391
+ Related Id(s): PR-9221
+
+> #### Full runtime dependencies of ssl-11.2.10
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.2.2
+
+The stdlib-6.2.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed crash when fetching `initial_call` when user code have modified the
+ `process_dictionary`.
+
+ Own Id: OTP-19546
+ Related Id(s): ERIERL-1205, PR-9596
+
+> #### Full runtime dependencies of stdlib-6.2.2
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# Thanks to
+
+Alexandre Rodrigues, Marc Worrell, Sergei Shuvatov, zmstone
+
diff --git a/release-notes/OTP-27.3.2.README.txt b/release-notes/OTP-27.3.2.README.txt
new file mode 100644
index 0000000..aaae43a
--- /dev/null
+++ b/release-notes/OTP-27.3.2.README.txt
@@ -0,0 +1,196 @@
+Patch Package: OTP 27.3.2
+Git Tag: OTP-27.3.2
+Date: 2025-04-04
+Trouble Report Id: OTP-19482, OTP-19560, OTP-19561, OTP-19562,
+ OTP-19563, OTP-19564, OTP-19565, OTP-19567,
+ OTP-19568, OTP-19569, OTP-19571
+Seq num: ERIERL-1207, ERIERL-1208, ERIERL-1210,
+ ERIERL-1211, ERIERL-1212, ERIERL-1214,
+ ERIERL-1216, GH-9541, PR-9650, PR-9658,
+ PR-9661, PR-9676
+System: OTP
+Release: 27
+Application: asn1-5.3.4, compiler-8.6.1, erts-15.2.5,
+ kernel-10.2.5, megaco-4.7.1, snmp-5.18.2,
+ ssl-11.2.11, xmerl-2.1.2
+Predecessor: OTP 27.3.1
+
+Check out the git tag OTP-27.3.2, 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.
+
+# asn1-5.3.4
+
+The asn1-5.3.4 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Negative REAL numbers greater than -1 would be incorrectly encoded (the minus
+ sign would be lost).
+
+ Own Id: OTP-19567
+ Related Id(s): ERIERL-1214, PR-9658
+
+> #### Full runtime dependencies of asn1-5.3.4
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# compiler-8.6.1
+
+The compiler-8.6.1 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fix the compiler crash when the inner-most tuple in a nested tuple with 3
+ layers is updated.
+
+ Own Id: OTP-19561
+ Related Id(s): ERIERL-1208, ERIERL-1210, PR-9650
+
+> #### Full runtime dependencies of compiler-8.6.1
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# erts-15.2.5
+
+The erts-15.2.5 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- On Windows, using socket:sendv, a large IOV (size > MAX), the tail was not
+ sent.
+
+ Own Id: OTP-19482
+
+- Uplift pcre 8.44 to pcre 8.45
+
+ Own Id: OTP-19565
+
+> #### Full runtime dependencies of erts-15.2.5
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.5
+
+Note! The kernel-10.2.5 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.2.5 (first satisfied in OTP 27.3.2)
+
+## Fixed Bugs and Malfunctions
+
+- On Windows, using socket:sendv, a large IOV (size > MAX), the tail was not
+ sent.
+
+ Own Id: OTP-19482
+
+- gen_tcp connect with a sockaddr with loopback address failed.
+
+ Own Id: OTP-19560
+ Related Id(s): GH-9541
+
+- Remove debug printouts from gen_tcp_socket
+
+ Own Id: OTP-19564
+
+> #### Full runtime dependencies of kernel-10.2.5
+>
+> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
+
+# megaco-4.7.1
+
+The megaco-4.7.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Correct type spec for ActionReply
+
+ Own Id: OTP-19563
+ Related Id(s): ERIERL-1216
+
+> #### Full runtime dependencies of megaco-4.7.1
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# snmp-5.18.2
+
+The snmp-5.18.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- When manager receives an v3 inform (request) it used engine-id and full
+ address (including port number) to check if engine was known. This did not
+ work if agent used ephemeral ports for notifications. Has now been changed to
+ only use (context) engine-id and address (without port).
+
+ Own Id: OTP-19562
+ Related Id(s): ERIERL-1207
+
+- Fixed snmp_generic (dialyzer) spec for function table_func.
+
+ Own Id: OTP-19568
+ Related Id(s): ERIERL-1211
+
+> #### Full runtime dependencies of snmp-5.18.2
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssl-11.2.11
+
+Note! The ssl-11.2.11 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- Correct the debug functionality for NSS keylogging for TLS-1.3 introduced in
+ OTP-27.3.1 so that TLS-1.3 key updates items always get correct counter value
+ and each item is logged as one single line.
+
+ Own Id: OTP-19569
+ Related Id(s): PR-9661
+
+> #### Full runtime dependencies of ssl-11.2.11
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# xmerl-2.1.2
+
+The xmerl-2.1.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Corrected faulty type specification
+
+ Corrected type specification for the input parameter of xmerl_xs:value_of/1.
+
+ Also replaced underscore in the return type specifications of
+ xmerl_xs:select/2, xmerl_xpath:string/2 and xmerl_xpath:string/3 with
+ specified return values to improve documentation.
+
+ Own Id: OTP-19571
+ Related Id(s): ERIERL-1212, PR-9676
+
+> #### Full runtime dependencies of xmerl-2.1.2
+>
+> erts-6.0, kernel-8.4, stdlib-2.5
+
+# Thanks to
+
+Björn Gustavsson
+
diff --git a/release-notes/OTP-27.3.3.README.txt b/release-notes/OTP-27.3.3.README.txt
new file mode 100644
index 0000000..be0a3ef
--- /dev/null
+++ b/release-notes/OTP-27.3.3.README.txt
@@ -0,0 +1,130 @@
+Patch Package: OTP 27.3.3
+Git Tag: OTP-27.3.3
+Date: 2025-04-16
+Trouble Report Id: OTP-19581, OTP-19582, OTP-19585, OTP-19592,
+ OTP-19595
+Seq num: CVE-2025-32433, ERIERL-1219, ERIERL-1222,
+ PR-9566, PR-9679, PR-9706
+System: OTP
+Release: 27
+Application: erts-15.2.6, kernel-10.2.6, megaco-4.7.2,
+ ssh-5.2.10, ssl-11.2.12
+Predecessor: OTP 27.3.2
+
+Check out the git tag OTP-27.3.3, 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.
+
+# erts-15.2.6
+
+The erts-15.2.6 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed bug in `call_memory` tracing that could cause wildly incorrect reported
+ memory values. Bug exists since OTP 27.1.
+
+ Also fixed return type spec of trace:info/3.
+
+ Own Id: OTP-19581
+ Related Id(s): ERIERL-1219, PR-9706
+
+> #### Full runtime dependencies of erts-15.2.6
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.6
+
+Note! The kernel-10.2.6 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.2.5 (first satisfied in OTP 27.3.2)
+
+## Fixed Bugs and Malfunctions
+
+- Fixed bug in `call_memory` tracing that could cause wildly incorrect reported
+ memory values. Bug exists since OTP 27.1.
+
+ Also fixed return type spec of trace:info/3.
+
+ Own Id: OTP-19581
+ Related Id(s): ERIERL-1219, PR-9706
+
+> #### Full runtime dependencies of kernel-10.2.6
+>
+> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
+
+# megaco-4.7.2
+
+The megaco-4.7.2 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Corrected type spec for type mid().
+
+ Own Id: OTP-19585
+ Related Id(s): ERIERL-1222
+
+> #### Full runtime dependencies of megaco-4.7.2
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# ssh-5.2.10
+
+The ssh-5.2.10 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Reception of wrong Unicode does not cause unnecessary processing. US-ASCII
+ fields are not decoded as Unicode.
+
+ Own Id: OTP-19582
+ Related Id(s): PR-9679
+
+- SSH daemon disconnects upon receiving connection protocol message for
+ unauthenticated used.
+
+ Thanks to Fabian Bäumer, Marcel Maehren, Marcus Brinkmann, Nurullah Erinola,
+ Jörg Schwenk (Ruhr University Bochum).
+
+ Own Id: OTP-19595
+ Related Id(s): CVE-2025-32433
+
+> #### Full runtime dependencies of ssh-5.2.10
+>
+> 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.12
+
+Note! The ssl-11.2.12 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.4 (first satisfied in OTP 27.1.3)
+
+## Improvements and New Features
+
+- Lower log level for user cancelation as this is not an error case. Also handle
+ possible undecrypted close alert during TLS-1.3 handshake.
+
+ Own Id: OTP-19592
+ Related Id(s): PR-9566
+
+> #### Full runtime dependencies of ssl-11.2.12
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# Thanks to
+
+Simon Cornish
+
diff --git a/release-notes/OTP-27.3.README.txt b/release-notes/OTP-27.3.README.txt
new file mode 100644
index 0000000..949490c
--- /dev/null
+++ b/release-notes/OTP-27.3.README.txt
@@ -0,0 +1,346 @@
+Patch Package: OTP 27.3
+Git Tag: OTP-27.3
+Date: 2025-03-05
+Trouble Report Id: OTP-19397, OTP-19399, OTP-19400, OTP-19405,
+ OTP-19410, OTP-19416, OTP-19418, OTP-19423,
+ OTP-19428, OTP-19429, OTP-19433, OTP-19442,
+ OTP-19443, OTP-19447, OTP-19449, OTP-19458,
+ OTP-19459, OTP-19468, OTP-19471, OTP-19475,
+ OTP-19489, OTP-19490, OTP-19491, OTP-19495,
+ OTP-19496, OTP-19501, OTP-19504
+Seq num: ERIERL-1195, GH-8208, GH-8634, GH-9000,
+ GH-9096, GH-9150, GH-9163, GH-9190, GH-9222,
+ GH-9306, GH-9332, GH-9348, GH-9359, PR-8209,
+ PR-8640, PR-8811, PR-9136, PR-9151, PR-9160,
+ PR-9185, PR-9188, PR-9248, PR-9274, PR-9288,
+ PR-9295, PR-9303, PR-9307, PR-9308, PR-9331,
+ PR-9335, PR-9338, PR-9349, PR-9358, PR-9368,
+ PR-9371, PR-9379, PR-9419, PR-9424, PR-9463,
+ PR-9469, PR-9499
+System: OTP
+Release: 27
+Application: asn1-5.3.2, common_test-1.27.7, compiler-8.6,
+ crypto-5.5.3, erts-15.2.3, kernel-10.2.3,
+ mnesia-4.23.4, ssh-5.2.8, ssl-11.2.9,
+ stdlib-6.2.1, syntax_tools-3.2.2, xmerl-2.1.1
+Predecessor: OTP 27.2.4
+
+Check out the git tag OTP-27.3, 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.
+
+# asn1-5.3.2
+
+The asn1-5.3.2 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Multiple bugs in decoding of the `REAL` type has been eliminated. Also, the
+ documentation for `REAL` has been updated to mention the special values `0`,
+ `PLUS-INFINITY`, and `MINUS-INFINITY`.
+
+ Own Id: OTP-19504
+ Related Id(s): GH-9096, PR-9469
+
+> #### Full runtime dependencies of asn1-5.3.2
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.27.7
+
+The common_test-1.27.7 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Reduced the memory usage when testcases prints a lot to the log.
+
+ Own Id: OTP-19489
+ Related Id(s): PR-9424
+
+- Fixed the built-in hook `cth_surefire` to not crash when a group within a
+ skipped group is skipped.
+
+ Own Id: OTP-19491
+ Related Id(s): PR-9419
+
+> #### Full runtime dependencies of common_test-1.27.7
+>
+> 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.6
+
+The compiler-8.6 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Improvements and New Features
+
+- The `beam_validator` pass in the compiler that validates generated BEAM now
+ does stronger checks for binary syntax matching.
+
+ Own Id: OTP-19449
+ Related Id(s): PR-9338
+
+> #### Full runtime dependencies of compiler-8.6
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.5.3
+
+The crypto-5.5.3 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- `crypto` will now work when ED25519 and X25519 are available while ED448 and
+ X448 are not, which is the case in LibreSSL. This is necessary for supporting
+ TLS1.3 using LibreSSL.
+
+ Own Id: OTP-19399
+ Related Id(s): GH-9000, PR-9136
+
+> #### Full runtime dependencies of crypto-5.5.3
+>
+> erts-9.0, kernel-5.3, stdlib-3.9
+
+# erts-15.2.3
+
+The erts-15.2.3 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed failed runtime assert in debug VM when built with statically linked
+ NIFs.
+
+ Own Id: OTP-19443
+ Related Id(s): GH-9306, PR-9307
+
+- Fixed a bug where reading a binary from `persistent_term` could cause a
+ segmentation fault on Windows. This bug was introduced in Erlang/OTP 27.0.
+
+ Own Id: OTP-19458
+ Related Id(s): GH-9222, PR-9349
+
+- Fixed a crash in `erlexec` (an executable used by `erl` during startup) when a
+ `PATH` longer than 10240 was set.
+
+ Own Id: OTP-19471
+ Related Id(s): PR-9331
+
+- Fixed bug in `erlang:halt`. Two processes calling `erlang:halt` at the same
+ time could lead to one of them crashing with `badarg` as if it called
+ `erlang:halt(undefined,undefined)`.
+
+ Own Id: OTP-19490
+ Related Id(s): GH-8634, PR-8640
+
+- Fixed BEAM crash when a custom thread sends a large map (>128 keys) externally
+ encoded with, for example, `erl_drv_send_term()`.
+
+ Own Id: OTP-19495
+ Related Id(s): GH-8208, PR-8209
+
+> #### Full runtime dependencies of erts-15.2.3
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# kernel-10.2.3
+
+Note! The kernel-10.2.3 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
+
+- Clarify inet:setopts documentation
+
+ Own Id: OTP-19416
+ Related Id(s): PR-9248
+
+- Fix bug where log printouts would go missing when `application_controller` is
+ stopping while log messages are being sent.
+
+ This bug was introduced by OTP-19078 in Erlang/OTP 26.2.5.
+
+ Own Id: OTP-19418
+ Related Id(s): GH-9163, PR-9274
+
+- Fixes a bug in the socket type spec, which caused Dialyzer to reject some
+ valid programs.
+
+ Own Id: OTP-19429
+ Related Id(s): PR-9295, PR-9379
+
+> #### Full runtime dependencies of kernel-10.2.3
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# mnesia-4.23.4
+
+The mnesia-4.23.4 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Mnesia could fail to load a table, if one of the copy holders was moved during
+ startup.
+
+ Own Id: OTP-19501
+ Related Id(s): ERIERL-1195, PR-9499
+
+> #### Full runtime dependencies of mnesia-4.23.4
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# ssh-5.2.8
+
+The ssh-5.2.8 application can be applied independently of other applications on
+a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Minor documentation improvements.
+
+ Own Id: OTP-19410
+ Related Id(s): PR-9188
+
+- Function specification for ssh_sftp:start_channel/2 is fixed.
+
+ Own Id: OTP-19475
+ Related Id(s): GH-9359, PR-9368
+
+> #### Full runtime dependencies of ssh-5.2.8
+>
+> 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.9
+
+Note! The ssl-11.2.9 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.4 (first satisfied in OTP 27.1.3)
+
+## Fixed Bugs and Malfunctions
+
+- The function for selecting the best server certificate and key pair has been
+ enhanced when several options are available to ensure that the fallback will
+ not always be chosen.
+
+ Own Id: OTP-19423
+ Related Id(s): PR-9185
+
+- Avoided duplicating a few algorithms in default values caused by an
+ interoperability workaround not needed in this case.
+
+ Own Id: OTP-19428
+ Related Id(s): PR-9288
+
+- Fixed two alert bugs, which could result in a crash instead of an alert.
+
+ Own Id: OTP-19433
+ Related Id(s): PR-9308
+
+> #### Full runtime dependencies of ssl-11.2.9
+>
+> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-6.0
+
+# stdlib-6.2.1
+
+The stdlib-6.2.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Fixed argparse:help/2 to accept the program name as part of the command
+ path.
+
+ Own Id: OTP-19397
+ Related Id(s): PR-9160
+
+- Fixed argparse:format_help/2 crash on 'hidden' command.
+
+ Own Id: OTP-19400
+ Related Id(s): GH-9150, PR-9151
+
+- Fixed the type specification for timer:sleep/1 by adding the value
+ `infinity` to its input type.
+
+ Own Id: OTP-19442
+ Related Id(s): PR-9303
+
+- Eliminated a crash in zip:unzip/1 while unzipping an archive where a
+ directory within was read-only. This bug was introduced in Erlang/OTP 27.1.
+
+ Own Id: OTP-19447
+ Related Id(s): GH-9332, PR-9335
+
+- Fixed map comprehension result when a key value is replaced.
+
+ Own Id: OTP-19459
+ Related Id(s): GH-9348, PR-9358
+
+- Fixed string:jaro_similarity/1 for matching strings of length 1.
+
+ Own Id: OTP-19468
+ Related Id(s): PR-9371
+
+> #### Full runtime dependencies of stdlib-6.2.1
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0
+
+# syntax_tools-3.2.2
+
+The syntax_tools-3.2.2 application can be applied independently of other
+applications on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Annotation of `maybe` expressions has been corrected.
+
+ Own Id: OTP-19405
+ Related Id(s): PR-8811
+
+> #### Full runtime dependencies of syntax_tools-3.2.2
+>
+> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0
+
+# xmerl-2.1.1
+
+The xmerl-2.1.1 application can be applied independently of other applications
+on a full OTP 27 installation.
+
+## Fixed Bugs and Malfunctions
+
+- Some old-style `catch` expressions in the xmerl_sax_parser when the
+ continuation fun was called caused the stack to grow until all free memory was
+ exhausted. These parts have been rewritten so that the parser now runs
+ correctly without growing the stack. At the same time all old-style `catch`
+ expressions in xmerl were replaced with `try`/`catch`.
+
+ Own Id: OTP-19496
+ Related Id(s): GH-9190, PR-9463
+
+> #### Full runtime dependencies of xmerl-2.1.1
+>
+> erts-6.0, kernel-8.4, stdlib-2.5
+
+# Thanks to
+
+Adam Bray, Alexandre Rodrigues, Brandon Duff, Daniel Gorin, dependabotbot,
+Eric Meadows-Jönsson, Jan Uhlig, Jean-Sébastien Pédron, Jesse Stimpson,
+lexprfuncall, Maria Scott, Marko Mindek, Nikita Vorobey, Olivier Boudeville, Rin
+Kuryloski, Roberto Aloi, Simon Cornish, Stefan Grundmann, victor23k, Volker
+Schlecht
+
diff --git a/release-notes/OTP-28.0-rc1.README.txt b/release-notes/OTP-28.0-rc1.README.txt
new file mode 100644
index 0000000..9202369
--- /dev/null
+++ b/release-notes/OTP-28.0-rc1.README.txt
@@ -0,0 +1,2440 @@
+Inital Release: OTP 28.0
+Git Tag: OTP-28.0
+Date: 2025-02-12
+Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125,
+ OTP-19127, OTP-19135, OTP-19141, OTP-19144,
+ OTP-19155, OTP-19156, OTP-19159, OTP-19161,
+ OTP-19180, OTP-19184, OTP-19194, OTP-19204,
+ OTP-19207, OTP-19224, OTP-19226, OTP-19228,
+ OTP-19230, OTP-19231, OTP-19233, OTP-19250,
+ OTP-19259, OTP-19262, OTP-19263, OTP-19271,
+ OTP-19278, OTP-19279, OTP-19285, OTP-19287,
+ OTP-19290, OTP-19295, OTP-19296, OTP-19297,
+ OTP-19303, OTP-19306, OTP-19308, OTP-19313,
+ OTP-19314, OTP-19315, OTP-19317, OTP-19323,
+ OTP-19324, OTP-19334, OTP-19337, OTP-19339,
+ OTP-19343, OTP-19345, OTP-19354, OTP-19355,
+ OTP-19364, OTP-19367, OTP-19369, OTP-19371,
+ OTP-19376, OTP-19386, OTP-19393, OTP-19394,
+ OTP-19396, OTP-19398, OTP-19401, OTP-19403,
+ OTP-19404, OTP-19406, OTP-19413, OTP-19414,
+ OTP-19419, OTP-19420, OTP-19421, OTP-19422,
+ OTP-19425, OTP-19426, OTP-19427, OTP-19430,
+ OTP-19431, OTP-19432, OTP-19441, OTP-19450,
+ OTP-19451, OTP-19452, OTP-19453, OTP-19454,
+ OTP-19456, OTP-19460, OTP-19463, OTP-19465,
+ OTP-19472, OTP-19473, OTP-19474, OTP-19476,
+ OTP-19477, OTP-19478, OTP-19479, OTP-19480,
+ OTP-19481, OTP-19484, OTP-19485
+Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113,
+ GH-8223, GH-8483, GH-8558, GH-8822, GH-8842,
+ GH-8967, GH-8985, GH-9092, GH-9113, GH-9173,
+ GH-9255, GH-9279, OTP-16608, PR-7830,
+ PR-8078, PR-8100, PR-8207, PR-8261, PR-8429,
+ PR-8494, PR-8540, PR-8547, PR-8556, PR-8573,
+ PR-8589, PR-8590, PR-8592, PR-8600, PR-8625,
+ PR-8642, PR-8651, PR-8660, PR-8697, PR-8699,
+ PR-8704, PR-8734, PR-8772, PR-8792, PR-8793,
+ PR-8798, PR-8805, PR-8812, PR-8820, PR-8862,
+ PR-8885, PR-8887, PR-8894, PR-8913, PR-8926,
+ PR-8932, PR-8937, PR-8938, PR-8943, PR-8945,
+ PR-8960, PR-8962, PR-8966, PR-8968, PR-8973,
+ PR-8975, PR-8976, PR-8988, PR-9005, PR-9006,
+ PR-9013, PR-9019, PR-9020, PR-9042, PR-9045,
+ PR-9079, PR-9082, PR-9083, PR-9094, PR-9095,
+ PR-9106, PR-9116, PR-9121, PR-9122, PR-9129,
+ PR-9154, PR-9171, PR-9186, PR-9192, PR-9207,
+ PR-9219, PR-9229, PR-9231, PR-9232, PR-9246,
+ PR-9251, PR-9253, PR-9271, PR-9272, PR-9275,
+ PR-9276, PR-9277, PR-9280, PR-9289, PR-9299,
+ PR-9305, PR-9316, PR-9330, PR-9333, PR-9342,
+ PR-9344, PR-9363, PR-9376, PR-9396, PR-9398,
+ PR-9399, PR-9402
+System: OTP
+Release: 28
+Application: asn1-5.3.2, common_test-1.28, compiler-9.0,
+ crypto-5.6, debugger-6.0, dialyzer-5.4,
+ diameter-2.5, edoc-1.4, eldap-1.2.15,
+ erl_interface-5.6, erts-16.0, eunit-2.10,
+ inets-9.3.2, jinterface-1.15, kernel-10.3,
+ megaco-4.8, mnesia-4.24, odbc-2.16,
+ os_mon-2.11, parsetools-2.7,
+ runtime_tools-2.2, sasl-4.3, snmp-5.19,
+ ssh-5.3, ssl-11.3, stdlib-7.0,
+ syntax_tools-4.0, tools-4.1.2, wx-2.5
+Predecessor: OTP
+
+Check out the git tag OTP-28.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Application(s): compiler, stdlib
+ Related Id(s): PR-8699, PR-9094
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8926
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Application(s): erts, stdlib
+ Related Id(s): GH-8037, PR-8962
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8625
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Application(s): stdlib
+ Related Id(s): GH-8099, PR-8100
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia,
+ parsetools, runtime_tools, snmp
+ Related Id(s): PR-9079
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Application(s): otp, stdlib
+ Related Id(s): PR-9106
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Application(s): stdlib
+ Related Id(s): PR-9316
+
+# POTENTIAL INCOMPATIBILITIES
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Application(s): stdlib
+ Related Id(s): PR-8772
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Application(s): compiler, erts, stdlib
+ Related Id(s): PR-8913
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Application(s): asn1
+ Related Id(s): PR-8798
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Application(s): compiler, erts, stdlib
+ Related Id(s): GH-8967, PR-8988
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Application(s): common_test
+ Related Id(s): PR-9045
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Application(s): ssh
+ Related Id(s): PR-9277
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+# OTP-28.0
+
+## Improvements and New Features
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+# asn1-5.3.2
+
+## Fixed Bugs and Malfunctions
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Related Id(s): PR-8798
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of asn1-5.3.2
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.28
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- The overage reports in HTML can be rendered in dark mode if requested by the
+ user's browser.
+
+ Own Id: OTP-19159
+ Related Id(s): PR-7830
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Related Id(s): PR-9045
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of common_test-1.28
+>
+> 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-9.0
+
+## Fixed Bugs and Malfunctions
+
+- The compiler will now emit warnings when some map patterns cannot possibly
+ match because a previous clauses matches the same pattern. For example:
+
+ mm_1(#{}) -> a;
+ mm_1(#{b := B}) -> {b,B}.
+
+ mm_2(#{a := A}) -> {a,A};
+ mm_2(#{a := A, b := B}) -> {b,A,B}.
+
+ The second clause of these function can never match and the compiler will now
+ emit a warning for both of them.
+
+ Note that the compiler is not guaranteed to emit warnings for every possible
+ map pattern that cannot match.
+
+ Own Id: OTP-19141
+ Related Id(s): GH-8558, PR-8600
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The final validation step in the compiler will now reject modules containing
+ functions with more than 255 arguments. No impact is expected as the emulator
+ has always refused to load these modules.
+
+ Own Id: OTP-19376
+ Related Id(s): GH-9113, PR-9121
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now
+ `compressed` and `deterministic`.
+
+ Own Id: OTP-19096
+ Related Id(s): PR-8494
+
+- Provided that the map argument for a maps:put/3 call is known to the
+ compiler to be a map, the compiler will replace such calls with the
+ corresponding update using the map syntax.
+
+ Own Id: OTP-19115
+ Related Id(s): PR-8540
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as
+ guard BIFs in order to gain performance.
+
+ The following BIFs that are optimized in this way: `binary_to_atom/1`,
+ `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and
+ `list_to_existing_atom/1`.
+
+ Own Id: OTP-19339
+ Related Id(s): PR-9042, PR-9122
+
+- The compiler now converts known documentation attribute metadata entries from
+ unicode:chardata/0 to unicode:unicode_binary/0.
+
+ Own Id: OTP-19394
+ Related Id(s): PR-9192
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+> #### Full runtime dependencies of compiler-9.0
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.6
+
+## Improvements and New Features
+
+- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1
+ functions have been deprecated.
+
+ Own Id: OTP-19155
+ Related Id(s): PR-8592
+
+- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is
+ loaded without application `crypto` being loaded. In this case FIPS will be
+ disabled even if the user had set application parameter `fips_mode`.
+
+ Own Id: OTP-19156
+ Related Id(s): PR-8590
+
+- The functionality of crypto:crypto_one_time_aead/6 is now also available in
+ the new functions crypto:crypto_one_time_aead_init/4 and
+ crypto:crypto_one_time_aead/4, which makes it possible to reuse
+ initialization.
+
+ Own Id: OTP-19426
+ Related Id(s): PR-9289
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of crypto-5.6
+>
+> erts-9.0, kernel-6.0, stdlib-3.9
+
+# debugger-6.0
+
+## Fixed Bugs and Malfunctions
+
+- Error handling has been improved when modules fail to load.
+
+ Own Id: OTP-19484
+ Related Id(s): GH-7819, PR-9399
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of debugger-6.0
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0
+
+# dialyzer-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The `-Wno_unknown` option will now prevent a warning being printed to standard
+ output when the command line interface is used.
+
+ Own Id: OTP-19262
+ Related Id(s): GH-8822, PR-8885
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of dialyzer-5.4
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.5
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of diameter-2.5
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.4
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of edoc-1.4
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.15
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of eldap-1.2.15
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.6
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-16.0
+
+## Fixed Bugs and Malfunctions
+
+- ETS tables with more than 2 billion keys are now supported.
+
+ Own Id: OTP-19144
+ Related Id(s): PR-8589
+
+- The zlib library included in Erlang/OTP has been updated to version 1.3.1.
+
+ Own Id: OTP-19259
+ Related Id(s): PR-8862
+
+- `to_erl` no longer clears the screen when attaching to a `run_erl` session.
+
+ Own Id: OTP-19263
+ Related Id(s): PR-8943
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed a bug where `erlc` would crash if its path contained spaces.
+
+ Own Id: OTP-19295
+ Related Id(s): PR-8937
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a
+ timezone without daylight saving (for example `UTC`) to assume that the
+ provided localtime does not have DST. This has always been the behaviour, but
+ glibc versions after 2.37 changed it so that the behavior in Erlang also
+ changed.
+
+ Own Id: OTP-19453
+ Related Id(s): PR-9207
+
+- Support for the `TZ` environment variable has been added on Windows. Before
+ this change only the time zone configured in the OS was ever used.
+
+ Own Id: OTP-19454
+ Related Id(s): PR-9207
+
+## Improvements and New Features
+
+- The trace:system/3 function has been added. It has a similar interface as
+ erlang:system_monitor/2 but it also supports trace sessions.
+
+ Own Id: OTP-19271
+ Related Id(s): PR-8660
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Two BIFs have been added to the `erlang` module.
+
+ erlang:processes_iterator/0 returns a process iterator that can be used to
+ iterate through the process table.
+
+ erlang:process_next/1 takes in a process iterator and returns a 2-tuple,
+ consisting of a process identifier and a new process iterator. When the
+ process iterator runs out of processes in the process table, `none` will be
+ returned.
+
+ Using these BIFs to scan the processes scales better than using
+ erlang:processes/0, at the cost of giving less consistency guarantees.
+ Process identifiers returned from consecutive calls of erlang:process_next/1
+ may not be a consistent snapshot of all elements existing in the table during
+ any of the calls. A process identifier is only guaranteed to be returned from
+ a call to erlang:processes_next/1 if it was alive before the call to
+ erlang:processes_iterator/0 and was still alive when
+ erlang:processes_next/1 returned `none`.
+
+ Own Id: OTP-19369
+ Related Id(s): PR-9129
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- When booting the runtime system on a 32-bit computer with a single core, the
+ boot code will try to minimize the peak memory use by disabling parallel
+ loading of BEAM files.
+
+ Own Id: OTP-19450
+ Related Id(s): PR-9342
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- `erlc` will now write compiler warnings and errors to standard error, instead
+ of standard output, in common with other language compilers.
+
+ Own Id: OTP-19460
+ Related Id(s): GH-9255, PR-9363
+
+- Fixed the Windows build to always include `.pdb` files for all DLLs and
+ executables to help with debugging.
+
+ Own Id: OTP-19465
+ Related Id(s): PR-9229
+
+- Improve the naming of the (internal) esock mutex(es). It is now possible to
+ configure (as in autoconf) the use of simple names for the esock mutex(es).
+
+ Own Id: OTP-19472
+ Related Id(s): #9388
+
+- An optimization for appending 0 bits to a binary was removed in patch releases
+ for OTP versions 25, 26, and 27. This optimization has been reintroduced in
+ Erlang/OTP 28.
+
+ Own Id: OTP-19473
+ Related Id(s): PR-8697, PR-9396
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on
+ systems with kernel polling enabled (that is most Unix systems), file
+ descriptors that are always re-enabled as soon as they trigger are now part of
+ a specialized pollset just as `driver_select`. This reduces the CPU usage in
+ such scenarios as the erts does not have to re-insert the FD everytime it it
+ triggered. As a result of this optimization `socket` based reading uses a
+ lot less CPU and achieves a higher throughput.
+
+ Own Id: OTP-19479
+ Related Id(s): PR-9275
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The Windows installer no longer creates the `erl.ini` file, making
+ installations redistributable.
+
+ Own Id: OTP-19481
+ Related Id(s): PR-9330
+
+> #### Full runtime dependencies of erts-16.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# eunit-2.10
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of eunit-2.10
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# inets-9.3.2
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+> #### Full runtime dependencies of inets-9.3.2
+>
+> 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
+
+# jinterface-1.15
+
+## Improvements and New Features
+
+- The `.class` files of jinterface are now part of the prebuilt archive using
+ Java 8.
+
+ Own Id: OTP-19308
+ Related Id(s): PR-8960
+
+# kernel-10.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed an issue where output to the shell would not print the prompt on a new
+ line.
+
+ Own Id: OTP-19228
+ Related Id(s): PR-8820
+
+- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io
+ requests in latin1 encoding will not be translated to unicode and back to
+ latin1.
+
+ Own Id: OTP-19296
+ Related Id(s): PR-9013
+
+- Fixed a bug where a composing unicode character would bind to a character not
+ available to the user and deleting that character would cause a crash.
+
+ Own Id: OTP-19297
+ Related Id(s): PR-9005
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The Erlang shell no longer crashes when a shell prompt ends with an escape
+ sequence.
+
+ Own Id: OTP-19414
+ Related Id(s): PR-9272
+
+## Improvements and New Features
+
+- application:load/1 slows down as the number of directories in the code path
+ increases because the call to code:where_is_file/1 for the '.app' file must
+ scan each directory for the app.
+
+ `code_server` maintains a cache of the contents of directories in the path.
+ Re-using that cache when searching for '.app' files in application:load/1
+ may improve its runtime, especially when loading multiple applications.
+
+ Own Id: OTP-19194
+ Related Id(s): PR-8078
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly
+ allowed to connect to the node by calling net_kernel:allow/1
+
+ Own Id: OTP-19287
+ Related Id(s): PR-8207
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5
+ functions now also accept an option map as last argument containing the
+ `timeout` and `always_spawn` options. The `always_spawn` option can be used in
+ order to ensure that the call operation will use a newly spawned process when
+ executing the remote call.
+
+ Own Id: OTP-19343
+ Related Id(s): PR-8642
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- `t:io:standard_error/0` has been updated to write via a NIF API instead of a
+ port. This allows it to access the dirty-scheduler pool and make sure that
+ writes have been written to the OSs `stderr` when io:format/3 and equivalent
+ return.
+
+ Own Id: OTP-19401
+ Related Id(s): PR-9116
+
+- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise
+ an exception if the command fails to execute.
+
+ Own Id: OTP-19404
+ Related Id(s): PR-9082
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+> #### Full runtime dependencies of kernel-10.3
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# megaco-4.8
+
+## Improvements and New Features
+
+- Nano seconds are now used for (example) meas result presentation.
+
+ Nanoseconds are now used, for example, in `meas` result presentations.
+
+ Own Id: OTP-19403
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of megaco-4.8
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.24
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of mnesia-4.24
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# odbc-2.16
+
+## Improvements and New Features
+
+- Updated odbc configure to enable easier use of iodbc driver.
+
+ Own Id: OTP-19456
+ Related Id(s): PR-9083
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of odbc-2.16
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.11
+
+## Improvements and New Features
+
+- `m:disksup` will now recognize HAMMER2 volumes.
+
+ Own Id: OTP-19207
+ Related Id(s): PR-8704
+
+> #### Full runtime dependencies of os_mon-2.11
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.7
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of parsetools-2.7
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# runtime_tools-2.2
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of runtime_tools-2.2
+>
+> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0
+
+# sasl-4.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed the documentation for the ExtraFiles option to systools:make_tar/2.
+
+ Own Id: OTP-19279
+ Related Id(s): GH-8842, PR-8894
+
+## Improvements and New Features
+
+- `.appup` files are now included in releases in order to make it possible to
+ create upgrade packages from an installed release.
+
+ Own Id: OTP-19398
+ Related Id(s): PR-8973
+
+> #### Full runtime dependencies of sasl-4.3
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.19
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of snmp-5.19
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.3
+
+## Fixed Bugs and Malfunctions
+
+- The implementation of the ssh server-side supervision tree has been improved.
+
+ Own Id: OTP-19324
+ Related Id(s): GH-8223, PR-8968
+
+## Improvements and New Features
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Related Id(s): PR-9277
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of ssh-5.3
+>
+> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1,
+> stdlib-5.0, stdlib-6.0
+
+# ssl-11.3
+
+## Improvements and New Features
+
+- Refactoring, minor optimizations and improved log printouts.
+
+ Own Id: OTP-19367
+ Related Id(s): PR-9019
+
+- supervisor:which_child/2 is now used to make start-up code for
+ TLS-connections simpler and more straight forward, and to increase stability
+ and maintainability of the ssl application.
+
+ Own Id: OTP-19406
+ Related Id(s): PR-9231
+
+- The data handling for tls-v1.3 has been optimized.
+
+ Own Id: OTP-19430
+ Related Id(s): PR-9305
+
+- Added experimental socket support.
+
+ Own Id: OTP-19463
+ Related Id(s): PR-9398
+
+> #### Full runtime dependencies of ssl-11.3
+>
+> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-7.0
+
+# stdlib-7.0
+
+## Fixed Bugs and Malfunctions
+
+- Shell help now orders the commands in alphabetical order.
+
+ Own Id: OTP-19161
+ Related Id(s): PR-8573
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Related Id(s): PR-8772
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- argparse:help/1 now accepts unicode:chardata/0.
+
+ Own Id: OTP-19303
+ Related Id(s): PR-8932
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did
+ not start the traversal from root nodes. This fix makes both traversals only
+ start or restart from a root node in one of the components, or an arbitrary
+ node if no root node can be visited.
+
+ Own Id: OTP-19393
+ Related Id(s): PR-9171
+
+- Auto-completion in the shell is now significantly faster for function
+ parameters that uses complex custom types.
+
+ Own Id: OTP-19413
+ Related Id(s): PR-9271
+
+- Stringfying a non-latin1 atom will now produce a readable string instead of
+ encoding each character using `\x{...}` escape sequences. Example:
+
+ -define(S(T), ??T).
+
+ atom() ->
+ ?S('атом').
+
+ The `atom/0` function now returns `"'атом'"` instead of
+ `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`.
+
+ Own Id: OTP-19421
+ Related Id(s): GH-9173, PR-9276
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+- `m:dets` could print error messages to standard output when repairing DETS
+ files. This has been changed to send the messages to the error logger.
+
+ `ets:fun2ms` would print an error message to standard output as well as
+ returning an error tuple. The printing of the message has been removed.
+
+ Own Id: OTP-19427
+ Related Id(s): PR-9232
+
+- The functions for converting to and from the RFC1339 date and time format
+ would not properly handle fractional seconds for negative times.
+
+ Own Id: OTP-19441
+ Related Id(s): GH-9279, PR-9280
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- Singleton type variables in an union type do not make sense from Dialyzer's
+ point of view. The following example is ill-typed:
+
+ -spec run_test(Opts) -> term()
+ when Opts :: {join_specs, Bool} | {test, Bool}.
+
+ This used to be reported as a warning. In OTP-28, this is an error
+
+ Own Id: OTP-19125
+ Related Id(s): PR-8556
+
+- By default, sets created by the `sets` module will now be represented as
+ maps.
+
+ Own Id: OTP-19127
+ Related Id(s): PR-8429
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Before restarting a child, a supervisor must check if the restart limit is
+ reached. This adds a penalty to the overall restart time, which should be kept
+ low. The algorithm has been optimized from 2\*O(n) to O(n) behavior.
+
+ Own Id: OTP-19204
+ Related Id(s): PR-8261
+
+- Added the possibility to configure shell docs column width through the stdlib
+ parameter `shell_docs_columns`.
+
+ Own Id: OTP-19224
+ Related Id(s): PR-8651
+
+- The io:setopts/2 function now accepts the `line_history` option for more
+ explicit handling of when to save shell history.
+
+ Own Id: OTP-19230
+ Related Id(s): PR-8792
+
+- The shell now prints a help message explaining how to interrupt a running
+ command when stuck executing a command for longer than 5 seconds.
+
+ Own Id: OTP-19231
+ Related Id(s): PR-8793
+
+- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and
+ produced as output of calendar:system_time_to_rfc3339/2.
+
+ Own Id: OTP-19250
+ Related Id(s): PR-8812
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- Added io:get_password/0 that can read passwords from stdin when in "raw"
+ `-noshell` mode.
+
+ Own Id: OTP-19315
+ Related Id(s): PR-8962, PR-9006
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Related Id(s): GH-8099, PR-8100
+
+ *** HIGHLIGHT ***
+
+- The supervisor:which_child/2 function has been added to facilitate getting
+ the pid of a sibling process; that is a process under same supervisor as the
+ process that calls to call the new function.
+
+ Own Id: OTP-19345
+ Related Id(s): PR-8976
+
+- The function erl_anno:set_end_location/2 for setting the end location of a
+ token has been added.
+
+ Own Id: OTP-19354
+ Related Id(s): PR-8966
+
+- Added a warning for calling non-exported functions with the remote function
+ call syntax from the same module, and likewise for the remote fun syntax.
+
+ Own Id: OTP-19371
+ Related Id(s): GH-9092, PR-9095
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- The callback function `handle_continue/2` in `gen_server` callback modules is
+ now cached like the others, thanks to code cleanup and optimization of the
+ internal behaviour loop.
+
+ This should only improve performance, not affect functionality.
+
+ Own Id: OTP-19474
+ Related Id(s): PR-9333
+
+- Encoding done by the `json` module has been optimized.
+
+ Own Id: OTP-19476
+ Related Id(s): PR-9251
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Related Id(s): PR-9316
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of stdlib-7.0
+>
+> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1
+
+# syntax_tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of syntax_tools-4.0
+>
+> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0
+
+# tools-4.1.2
+
+## Fixed Bugs and Malfunctions
+
+- A crash has been eliminated in tprof:collect/0 when unloading a module while
+ collecting traces.
+
+ Own Id: OTP-19135
+ Related Id(s): GH-8483, PR-8547
+
+- Improved the `indent-region` Emacs command, which could indent badly when
+ inside multiline string.
+
+ Own Id: OTP-19396
+ Related Id(s): PR-9186
+
+- eprof:start_profiling/3 can now return information about which process it
+ failed to trace.
+
+ Own Id: OTP-19419
+ Related Id(s): PR-9219
+
+> #### Full runtime dependencies of tools-4.1.2
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.5
+
+## Improvements and New Features
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of wx-2.5
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# Thanks to
+
+Aleksander Lisiecki, Anders Ågren Thuné, Andrea Leopardi, Ariel Otilibili,
+Benedikt Reinartz, Brujo Benavides, Chris Freeze, Christophe De Troyer, Cocoa,
+Dániel Szoboszlay, dependabotbot, Dmitri Vereshchagin, Douglas Vought, Egor
+Ignatov, Frank Hunleth, Fredrik Frantzen, Frej Drejhammar, Hichem Fantar, iri,
+Isabell H, Jan Uhlig, Jean-Sébastien Pédron, João Henrique Ferreira de Freitas,
+Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José Valim, Juan Barrios,
+Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, lucioleKi, Lukasz
+Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek, Martin Davidsson,
+Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael Neumann, Nelson Vides,
+Onno Vos, preciz, Richard Carlsson, Robin Morisset, Roeland van Batenburg,
+sabiwara, siiky, Stavros Aronis, Steffen Deusch, Tobias Pfeiffer, Tomer, Vance
+Shipley, William Fank Thomé, Wojtek Mach
+
diff --git a/release-notes/OTP-28.0-rc2.README.txt b/release-notes/OTP-28.0-rc2.README.txt
new file mode 100644
index 0000000..9121950
--- /dev/null
+++ b/release-notes/OTP-28.0-rc2.README.txt
@@ -0,0 +1,2831 @@
+Inital Release: OTP 28.0
+Git Tag: OTP-28.0
+Date: 2025-03-19
+Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125,
+ OTP-19127, OTP-19135, OTP-19141, OTP-19144,
+ OTP-19155, OTP-19156, OTP-19159, OTP-19161,
+ OTP-19180, OTP-19184, OTP-19194, OTP-19198,
+ OTP-19204, OTP-19207, OTP-19224, OTP-19226,
+ OTP-19228, OTP-19230, OTP-19231, OTP-19233,
+ OTP-19250, OTP-19259, OTP-19262, OTP-19263,
+ OTP-19271, OTP-19278, OTP-19279, OTP-19285,
+ OTP-19287, OTP-19290, OTP-19295, OTP-19296,
+ OTP-19297, OTP-19303, OTP-19306, OTP-19308,
+ OTP-19313, OTP-19314, OTP-19315, OTP-19317,
+ OTP-19323, OTP-19324, OTP-19334, OTP-19337,
+ OTP-19339, OTP-19343, OTP-19345, OTP-19354,
+ OTP-19355, OTP-19364, OTP-19367, OTP-19369,
+ OTP-19371, OTP-19376, OTP-19386, OTP-19393,
+ OTP-19394, OTP-19396, OTP-19398, OTP-19401,
+ OTP-19403, OTP-19404, OTP-19406, OTP-19413,
+ OTP-19414, OTP-19419, OTP-19420, OTP-19421,
+ OTP-19422, OTP-19425, OTP-19426, OTP-19427,
+ OTP-19430, OTP-19431, OTP-19432, OTP-19441,
+ OTP-19450, OTP-19451, OTP-19452, OTP-19453,
+ OTP-19454, OTP-19456, OTP-19460, OTP-19463,
+ OTP-19465, OTP-19472, OTP-19473, OTP-19474,
+ OTP-19476, OTP-19477, OTP-19478, OTP-19479,
+ OTP-19480, OTP-19481, OTP-19483, OTP-19484,
+ OTP-19485, OTP-19487, OTP-19488, OTP-19492,
+ OTP-19500, OTP-19502, OTP-19503, OTP-19505,
+ OTP-19507, OTP-19508, OTP-19509, OTP-19510,
+ OTP-19512, OTP-19513, OTP-19514, OTP-19515,
+ OTP-19516, OTP-19517, OTP-19518, OTP-19519,
+ OTP-19520, OTP-19521, OTP-19522, OTP-19523,
+ OTP-19524, OTP-19526, OTP-19531, OTP-19532,
+ OTP-19534, OTP-19535, OTP-19536, OTP-19537,
+ OTP-19538, OTP-19539, OTP-19540, OTP-19541,
+ OTP-19544
+Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113,
+ GH-8223, GH-8483, GH-8558, GH-8822, GH-8842,
+ GH-8967, GH-8985, GH-9092, GH-9113, GH-9173,
+ GH-9255, GH-9279, GH-9366, GH-9413, GH-9438,
+ GH-9487, OTP-16608, OTP-19545, PR-7830,
+ PR-7970, PR-8078, PR-8100, PR-8207, PR-8261,
+ PR-8429, PR-8494, PR-8540, PR-8547, PR-8556,
+ PR-8573, PR-8589, PR-8590, PR-8592, PR-8600,
+ PR-8625, PR-8642, PR-8651, PR-8660, PR-8670,
+ PR-8695, PR-8697, PR-8699, PR-8704, PR-8734,
+ PR-8772, PR-8792, PR-8793, PR-8798, PR-8805,
+ PR-8812, PR-8820, PR-8862, PR-8885, PR-8887,
+ PR-8894, PR-8913, PR-8926, PR-8932, PR-8937,
+ PR-8938, PR-8943, PR-8945, PR-8960, PR-8962,
+ PR-8966, PR-8968, PR-8973, PR-8975, PR-8976,
+ PR-8988, PR-9005, PR-9006, PR-9013, PR-9019,
+ PR-9020, PR-9042, PR-9045, PR-9079, PR-9082,
+ PR-9083, PR-9094, PR-9095, PR-9106, PR-9116,
+ PR-9119, PR-9121, PR-9122, PR-9124, PR-9129,
+ PR-9141, PR-9149, PR-9154, PR-9171, PR-9186,
+ PR-9192, PR-9207, PR-9219, PR-9229, PR-9231,
+ PR-9232, PR-9246, PR-9251, PR-9253, PR-9269,
+ PR-9271, PR-9272, PR-9275, PR-9276, PR-9277,
+ PR-9280, PR-9287, PR-9289, PR-9299, PR-9305,
+ PR-9316, PR-9327, PR-9330, PR-9333, PR-9342,
+ PR-9344, PR-9363, PR-9376, PR-9396, PR-9398,
+ PR-9399, PR-9402, PR-9406, PR-9408, PR-9409,
+ PR-9410, PR-9417, PR-9433, PR-9441, PR-9445,
+ PR-9446, PR-9448, PR-9468, PR-9472, PR-9478,
+ PR-9484, PR-9488, PR-9495, PR-9504, PR-9508,
+ PR-9511, PR-9514, PR-9515, PR-9516, PR-9517,
+ PR-9518, PR-9519, PR-9538, PR-9563, PR-9579,
+ PR-9582, PR-9587, PR-9590
+System: OTP
+Release: 28
+Application: asn1-5.3.3, common_test-1.28, compiler-9.0,
+ crypto-5.6, debugger-6.0, dialyzer-5.4,
+ diameter-2.5, edoc-1.4, eldap-1.2.15,
+ erl_interface-5.6, erts-16.0, eunit-2.10,
+ inets-9.3.3, jinterface-1.15, kernel-10.3,
+ megaco-4.8, mnesia-4.24, odbc-2.16,
+ os_mon-2.11, parsetools-2.7, public_key-1.18,
+ runtime_tools-2.2, sasl-4.3, snmp-5.19,
+ ssh-5.3, ssl-11.3, stdlib-7.0,
+ syntax_tools-4.0, tools-4.1.2, wx-2.5,
+ xmerl-2.1.2
+Predecessor: OTP
+
+Check out the git tag OTP-28.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Application(s): compiler, stdlib
+ Related Id(s): PR-8699, PR-9094
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8926
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Application(s): erts
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Application(s): erts, stdlib
+ Related Id(s): GH-8037, PR-8962
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8625
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Application(s): stdlib
+ Related Id(s): GH-8099, PR-8100
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia,
+ parsetools, runtime_tools, snmp
+ Related Id(s): PR-9079
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Application(s): otp, stdlib
+ Related Id(s): PR-9106
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Application(s): stdlib
+ Related Id(s): PR-9316
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Application(s): compiler
+ Related Id(s): PR-8695
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Application(s): stdlib
+ Related Id(s): PR-9468
+
+# POTENTIAL INCOMPATIBILITIES
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Application(s): stdlib
+ Related Id(s): PR-8772
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Application(s): compiler, erts, stdlib
+ Related Id(s): PR-8913
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Application(s): asn1
+ Related Id(s): PR-8798
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Application(s): compiler, erts, stdlib
+ Related Id(s): GH-8967, PR-8988
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Application(s): common_test
+ Related Id(s): PR-9045
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Application(s): ssh
+ Related Id(s): PR-9277
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Application(s): erts
+ Related Id(s): PR-8670
+
+# OTP-28.0
+
+## Improvements and New Features
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Fixes the sarif generation in the scan code script
+
+ Own Id: OTP-19492
+ Related Id(s): PR-9409
+
+# asn1-5.3.3
+
+## Fixed Bugs and Malfunctions
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Related Id(s): PR-8798
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of asn1-5.3.3
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.28
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- The overage reports in HTML can be rendered in dark mode if requested by the
+ user's browser.
+
+ Own Id: OTP-19159
+ Related Id(s): PR-7830
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Related Id(s): PR-9045
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+> #### Full runtime dependencies of common_test-1.28
+>
+> 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-9.0
+
+## Fixed Bugs and Malfunctions
+
+- The compiler will now emit warnings when some map patterns cannot possibly
+ match because a previous clauses matches the same pattern. For example:
+
+ mm_1(#{}) -> a;
+ mm_1(#{b := B}) -> {b,B}.
+
+ mm_2(#{a := A}) -> {a,A};
+ mm_2(#{a := A, b := B}) -> {b,A,B}.
+
+ The second clause of these function can never match and the compiler will now
+ emit a warning for both of them.
+
+ Note that the compiler is not guaranteed to emit warnings for every possible
+ map pattern that cannot match.
+
+ Own Id: OTP-19141
+ Related Id(s): GH-8558, PR-8600
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The final validation step in the compiler will now reject modules containing
+ functions with more than 255 arguments. No impact is expected as the emulator
+ has always refused to load these modules.
+
+ Own Id: OTP-19376
+ Related Id(s): GH-9113, PR-9121
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now
+ `compressed` and `deterministic`.
+
+ Own Id: OTP-19096
+ Related Id(s): PR-8494
+
+- Provided that the map argument for a maps:put/3 call is known to the
+ compiler to be a map, the compiler will replace such calls with the
+ corresponding update using the map syntax.
+
+ Own Id: OTP-19115
+ Related Id(s): PR-8540
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as
+ guard BIFs in order to gain performance.
+
+ The following BIFs that are optimized in this way: `binary_to_atom/1`,
+ `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and
+ `list_to_existing_atom/1`.
+
+ Own Id: OTP-19339
+ Related Id(s): PR-9042, PR-9122
+
+- The compiler now converts known documentation attribute metadata entries from
+ unicode:chardata/0 to unicode:unicode_binary/0.
+
+ Own Id: OTP-19394
+ Related Id(s): PR-9192
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Related Id(s): PR-8695
+
+ *** HIGHLIGHT ***
+
+- BEAM files no longer include a `Meta` chunk if there are no features used.
+ That slightly decreases the size of BEAM files, and it also ensures that
+ `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules.
+
+ Own Id: OTP-19524
+ Related Id(s): PR-9517
+
+> #### Full runtime dependencies of compiler-9.0
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.6
+
+## Fixed Bugs and Malfunctions
+
+- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded.
+
+ Own Id: OTP-19500
+ Related Id(s): PR-9119
+
+## Improvements and New Features
+
+- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1
+ functions have been deprecated.
+
+ Own Id: OTP-19155
+ Related Id(s): PR-8592
+
+- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is
+ loaded without application `crypto` being loaded. In this case FIPS will be
+ disabled even if the user had set application parameter `fips_mode`.
+
+ Own Id: OTP-19156
+ Related Id(s): PR-8590
+
+- The functionality of crypto:crypto_one_time_aead/6 is now also available in
+ the new functions crypto:crypto_one_time_aead_init/4 and
+ crypto:crypto_one_time_aead/4, which makes it possible to reuse
+ initialization.
+
+ Own Id: OTP-19426
+ Related Id(s): PR-9289
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If
+ present, it contains the version of the FIPS provider which may be different
+ than the version of the rest of OpenSSL.
+
+ Own Id: OTP-19487
+ Related Id(s): GH-9366, PR-9410
+
+- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and
+ `cmac_cipher_algorithm()`.
+
+ Own Id: OTP-19510
+ Related Id(s): PR-9448
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of crypto-5.6
+>
+> erts-9.0, kernel-6.0, stdlib-3.9
+
+# debugger-6.0
+
+## Fixed Bugs and Malfunctions
+
+- Error handling has been improved when modules fail to load.
+
+ Own Id: OTP-19484
+ Related Id(s): GH-7819, PR-9399
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of debugger-6.0
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0
+
+# dialyzer-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The `-Wno_unknown` option will now prevent a warning being printed to standard
+ output when the command line interface is used.
+
+ Own Id: OTP-19262
+ Related Id(s): GH-8822, PR-8885
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of dialyzer-5.4
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.5
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of diameter-2.5
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.4
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of edoc-1.4
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.15
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of eldap-1.2.15
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.6
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-16.0
+
+## Fixed Bugs and Malfunctions
+
+- ETS tables with more than 2 billion keys are now supported.
+
+ Own Id: OTP-19144
+ Related Id(s): PR-8589
+
+- The zlib library included in Erlang/OTP has been updated to version 1.3.1.
+
+ Own Id: OTP-19259
+ Related Id(s): PR-8862
+
+- `to_erl` no longer clears the screen when attaching to a `run_erl` session.
+
+ Own Id: OTP-19263
+ Related Id(s): PR-8943
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed a bug where `erlc` would crash if its path contained spaces.
+
+ Own Id: OTP-19295
+ Related Id(s): PR-8937
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a
+ timezone without daylight saving (for example `UTC`) to assume that the
+ provided localtime does not have DST. This has always been the behaviour, but
+ glibc versions after 2.37 changed it so that the behavior in Erlang also
+ changed.
+
+ Own Id: OTP-19453
+ Related Id(s): PR-9207
+
+- Support for the `TZ` environment variable has been added on Windows. Before
+ this change only the time zone configured in the OS was ever used.
+
+ Own Id: OTP-19454
+ Related Id(s): PR-9207
+
+- Suppressed various warnings when building the emulator with recent versions of
+ GCC
+
+ Own Id: OTP-19488
+ Related Id(s): GH-9413, PR-9417
+
+- Fixed a bug in re:run and re:compile where the pattern parameter would be read
+ incorrectly if it was a sub-binary.
+
+ Own Id: OTP-19507
+ Related Id(s): GH-9438, PR-9478
+
+- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be
+ part of the directory path when building Erlang/OTP. Bug has been present
+ since R11B released 2006.
+
+ Own Id: OTP-19518
+ Related Id(s): GH-9487, PR-9488
+
+- Fixed the index types of modules `atomics` and `counters` from `integer()` to
+ `pos_integer()`, which is more correct.
+
+ Own Id: OTP-19532
+ Related Id(s): PR-9538
+
+## Improvements and New Features
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+ *** HIGHLIGHT ***
+
+- The trace:system/3 function has been added. It has a similar interface as
+ erlang:system_monitor/2 but it also supports trace sessions.
+
+ Own Id: OTP-19271
+ Related Id(s): PR-8660
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Two BIFs have been added to the `erlang` module.
+
+ erlang:processes_iterator/0 returns a process iterator that can be used to
+ iterate through the process table.
+
+ erlang:process_next/1 takes in a process iterator and returns a 2-tuple,
+ consisting of a process identifier and a new process iterator. When the
+ process iterator runs out of processes in the process table, `none` will be
+ returned.
+
+ Using these BIFs to scan the processes scales better than using
+ erlang:processes/0, at the cost of giving less consistency guarantees.
+ Process identifiers returned from consecutive calls of erlang:process_next/1
+ may not be a consistent snapshot of all elements existing in the table during
+ any of the calls. A process identifier is only guaranteed to be returned from
+ a call to erlang:processes_next/1 if it was alive before the call to
+ erlang:processes_iterator/0 and was still alive when
+ erlang:processes_next/1 returned `none`.
+
+ Own Id: OTP-19369
+ Related Id(s): PR-9129
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- When booting the runtime system on a 32-bit computer with a single core, the
+ boot code will try to minimize the peak memory use by disabling parallel
+ loading of BEAM files.
+
+ Own Id: OTP-19450
+ Related Id(s): PR-9342
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- `erlc` will now write compiler warnings and errors to standard error, instead
+ of standard output, in common with other language compilers.
+
+ Own Id: OTP-19460
+ Related Id(s): GH-9255, PR-9363
+
+- Fixed the Windows build to always include `.pdb` files for all DLLs and
+ executables to help with debugging.
+
+ Own Id: OTP-19465
+ Related Id(s): PR-9229
+
+- Improve the naming of the (internal) esock mutex(es). It is now possible to
+ configure (as in autoconf) the use of simple names for the esock mutex(es).
+
+ Own Id: OTP-19472
+ Related Id(s): #9388
+
+- An optimization for appending 0 bits to a binary was removed in patch releases
+ for OTP versions 25, 26, and 27. This optimization has been reintroduced in
+ Erlang/OTP 28.
+
+ Own Id: OTP-19473
+ Related Id(s): PR-8697, PR-9396
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on
+ systems with kernel polling enabled (that is most Unix systems), file
+ descriptors that are always re-enabled as soon as they trigger are now part of
+ a specialized pollset just as `driver_select`. This reduces the CPU usage in
+ such scenarios as the erts does not have to re-insert the FD everytime it it
+ triggered. As a result of this optimization `socket` based reading uses a
+ lot less CPU and achieves a higher throughput.
+
+ Own Id: OTP-19479
+ Related Id(s): PR-9275
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The Windows installer no longer creates the `erl.ini` file, making
+ installations redistributable.
+
+ Own Id: OTP-19481
+ Related Id(s): PR-9330
+
+- Added erlang:hibernate/0, which hibernates a process without discarding the
+ stack.
+
+ Own Id: OTP-19503
+ Related Id(s): PR-9406
+
+- The asmjit library (used by BeamJIT) has been updated to version
+ 029075b84bf0161a761beb63e6eda519a29020db.
+
+ Own Id: OTP-19509
+ Related Id(s): PR-9495
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Related Id(s): PR-8670
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+> #### Full runtime dependencies of erts-16.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# eunit-2.10
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of eunit-2.10
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# inets-9.3.3
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- Enhanced http client documentation.
+
+ Own Id: OTP-19520
+ Related Id(s): PR-9516
+
+- Enhance made to mod_esi documentation
+
+ Own Id: OTP-19521
+ Related Id(s): PR-9472
+
+> #### Full runtime dependencies of inets-9.3.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
+
+# jinterface-1.15
+
+## Improvements and New Features
+
+- The `.class` files of jinterface are now part of the prebuilt archive using
+ Java 8.
+
+ Own Id: OTP-19308
+ Related Id(s): PR-8960
+
+# kernel-10.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed an issue where output to the shell would not print the prompt on a new
+ line.
+
+ Own Id: OTP-19228
+ Related Id(s): PR-8820
+
+- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io
+ requests in latin1 encoding will not be translated to unicode and back to
+ latin1.
+
+ Own Id: OTP-19296
+ Related Id(s): PR-9013
+
+- Fixed a bug where a composing unicode character would bind to a character not
+ available to the user and deleting that character would cause a crash.
+
+ Own Id: OTP-19297
+ Related Id(s): PR-9005
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The Erlang shell no longer crashes when a shell prompt ends with an escape
+ sequence.
+
+ Own Id: OTP-19414
+ Related Id(s): PR-9272
+
+- code:get_doc/1 now works for cover-compiled modules.
+
+ Own Id: OTP-19513
+ Related Id(s): PR-9433
+
+- An infinite loop in CNAME loop detection that can cause Out Of Memory has been
+ fixed. This affected CNAME lookup with the internal DNS resolver.
+
+ Own Id: OTP-19544
+ Related Id(s): PR-9587, OTP-19545
+
+## Improvements and New Features
+
+- application:load/1 slows down as the number of directories in the code path
+ increases because the call to code:where_is_file/1 for the '.app' file must
+ scan each directory for the app.
+
+ `code_server` maintains a cache of the contents of directories in the path.
+ Re-using that cache when searching for '.app' files in application:load/1
+ may improve its runtime, especially when loading multiple applications.
+
+ Own Id: OTP-19194
+ Related Id(s): PR-8078
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly
+ allowed to connect to the node by calling net_kernel:allow/1
+
+ Own Id: OTP-19287
+ Related Id(s): PR-8207
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5
+ functions now also accept an option map as last argument containing the
+ `timeout` and `always_spawn` options. The `always_spawn` option can be used in
+ order to ensure that the call operation will use a newly spawned process when
+ executing the remote call.
+
+ Own Id: OTP-19343
+ Related Id(s): PR-8642
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- `t:io:standard_error/0` has been updated to write via a NIF API instead of a
+ port. This allows it to access the dirty-scheduler pool and make sure that
+ writes have been written to the OSs `stderr` when io:format/3 and equivalent
+ return.
+
+ Own Id: OTP-19401
+ Related Id(s): PR-9116
+
+- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise
+ an exception if the command fails to execute.
+
+ Own Id: OTP-19404
+ Related Id(s): PR-9082
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- Add a configure chapter to the socket usage guide
+
+ Own Id: OTP-19522
+ Related Id(s): PR-9508
+
+> #### Full runtime dependencies of kernel-10.3
+>
+> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0
+
+# megaco-4.8
+
+## Fixed Bugs and Malfunctions
+
+- Add missing spec and doc for exported functions.
+
+ Own Id: OTP-19523
+
+## Improvements and New Features
+
+- Nano seconds are now used for (example) meas result presentation.
+
+ Nanoseconds are now used, for example, in `meas` result presentations.
+
+ Own Id: OTP-19403
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of megaco-4.8
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.24
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of mnesia-4.24
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# odbc-2.16
+
+## Improvements and New Features
+
+- Updated odbc configure to enable easier use of iodbc driver.
+
+ Own Id: OTP-19456
+ Related Id(s): PR-9083
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of odbc-2.16
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.11
+
+## Improvements and New Features
+
+- `m:disksup` will now recognize HAMMER2 volumes.
+
+ Own Id: OTP-19207
+ Related Id(s): PR-8704
+
+> #### Full runtime dependencies of os_mon-2.11
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.7
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of parsetools-2.7
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.18
+
+## Improvements and New Features
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of public_key-1.18
+>
+> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
+
+# runtime_tools-2.2
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of runtime_tools-2.2
+>
+> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0
+
+# sasl-4.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed the documentation for the ExtraFiles option to systools:make_tar/2.
+
+ Own Id: OTP-19279
+ Related Id(s): GH-8842, PR-8894
+
+## Improvements and New Features
+
+- `.appup` files are now included in releases in order to make it possible to
+ create upgrade packages from an installed release.
+
+ Own Id: OTP-19398
+ Related Id(s): PR-8973
+
+> #### Full runtime dependencies of sasl-4.3
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.19
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of snmp-5.19
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.3
+
+## Fixed Bugs and Malfunctions
+
+- The implementation of the ssh server-side supervision tree has been improved.
+
+ Own Id: OTP-19324
+ Related Id(s): GH-8223, PR-8968
+
+## Improvements and New Features
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Related Id(s): PR-9277
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Daemon can be configured (bannerfun option) to send banner message at the
+ beginning of user authentication.
+
+ Own Id: OTP-19535
+ Related Id(s): PR-9149
+
+> #### Full runtime dependencies of ssh-5.3
+>
+> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1,
+> stdlib-5.0, stdlib-6.0
+
+# ssl-11.3
+
+## Improvements and New Features
+
+- Refactoring, minor optimizations and improved log printouts.
+
+ Own Id: OTP-19367
+ Related Id(s): PR-9019
+
+- supervisor:which_child/2 is now used to make start-up code for
+ TLS-connections simpler and more straight forward, and to increase stability
+ and maintainability of the ssl application.
+
+ Own Id: OTP-19406
+ Related Id(s): PR-9231
+
+- The data handling for tls-v1.3 has been optimized.
+
+ Own Id: OTP-19430
+ Related Id(s): PR-9305
+
+- Added experimental socket support.
+
+ Own Id: OTP-19463
+ Related Id(s): PR-9398
+
+- Improve code health by removing dead code.
+
+ Own Id: OTP-19531
+ Related Id(s): PR-9563
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+> #### Full runtime dependencies of ssl-11.3
+>
+> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-7.0
+
+# stdlib-7.0
+
+## Fixed Bugs and Malfunctions
+
+- Shell help now orders the commands in alphabetical order.
+
+ Own Id: OTP-19161
+ Related Id(s): PR-8573
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Related Id(s): PR-8772
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- argparse:help/1 now accepts unicode:chardata/0.
+
+ Own Id: OTP-19303
+ Related Id(s): PR-8932
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did
+ not start the traversal from root nodes. This fix makes both traversals only
+ start or restart from a root node in one of the components, or an arbitrary
+ node if no root node can be visited.
+
+ Own Id: OTP-19393
+ Related Id(s): PR-9171
+
+- Auto-completion in the shell is now significantly faster for function
+ parameters that uses complex custom types.
+
+ Own Id: OTP-19413
+ Related Id(s): PR-9271
+
+- Stringfying a non-latin1 atom will now produce a readable string instead of
+ encoding each character using `\x{...}` escape sequences. Example:
+
+ -define(S(T), ??T).
+
+ atom() ->
+ ?S('атом').
+
+ The `atom/0` function now returns `"'атом'"` instead of
+ `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`.
+
+ Own Id: OTP-19421
+ Related Id(s): GH-9173, PR-9276
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+- `m:dets` could print error messages to standard output when repairing DETS
+ files. This has been changed to send the messages to `logger`.
+
+ `ets:fun2ms` would print an error message to standard output as well as
+ returning an error tuple. The printing of the message has been removed.
+
+ Own Id: OTP-19427
+ Related Id(s): PR-9232, PR-9446
+
+- The functions for converting to and from the RFC1339 date and time format
+ would not properly handle fractional seconds for negative times.
+
+ Own Id: OTP-19441
+ Related Id(s): GH-9279, PR-9280
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Corrected the spec of ets:update_element/4.
+
+ Own Id: OTP-19514
+ Related Id(s): PR-9504
+
+- Corrected the spec for ets:info/1.
+
+ Own Id: OTP-19515
+ Related Id(s): PR-9514
+
+- Details in the hibernation implementation and time-out handling has been
+ improved for `gen_statem`. In particular to avoid selective receive when
+ cancelling a time-out.
+
+ Own Id: OTP-19540
+ Related Id(s): PR-9579
+
+## Improvements and New Features
+
+- Singleton type variables in an union type do not make sense from Dialyzer's
+ point of view. The following example is ill-typed:
+
+ -spec run_test(Opts) -> term()
+ when Opts :: {join_specs, Bool} | {test, Bool}.
+
+ This used to be reported as a warning. In OTP-28, this is an error
+
+ Own Id: OTP-19125
+ Related Id(s): PR-8556
+
+- By default, sets created by the `sets` module will now be represented as
+ maps.
+
+ Own Id: OTP-19127
+ Related Id(s): PR-8429
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Before restarting a child, a supervisor must check if the restart limit is
+ reached. This adds a penalty to the overall restart time, which should be kept
+ low. The algorithm has been optimized from 2\*O(n) to O(n) behavior.
+
+ Own Id: OTP-19204
+ Related Id(s): PR-8261
+
+- Added the possibility to configure shell docs column width through the stdlib
+ parameter `shell_docs_columns`.
+
+ Own Id: OTP-19224
+ Related Id(s): PR-8651
+
+- The io:setopts/2 function now accepts the `line_history` option for more
+ explicit handling of when to save shell history.
+
+ Own Id: OTP-19230
+ Related Id(s): PR-8792
+
+- The shell now prints a help message explaining how to interrupt a running
+ command when stuck executing a command for longer than 5 seconds.
+
+ Own Id: OTP-19231
+ Related Id(s): PR-8793
+
+- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and
+ produced as output of calendar:system_time_to_rfc3339/2.
+
+ Own Id: OTP-19250
+ Related Id(s): PR-8812
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- Added io:get_password/0 that can read passwords from stdin when in "raw"
+ `-noshell` mode.
+
+ Own Id: OTP-19315
+ Related Id(s): PR-8962, PR-9006
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Related Id(s): GH-8099, PR-8100
+
+ *** HIGHLIGHT ***
+
+- The supervisor:which_child/2 function has been added to facilitate getting
+ the pid of a sibling process; that is a process under same supervisor as the
+ process that calls to call the new function.
+
+ Own Id: OTP-19345
+ Related Id(s): PR-8976
+
+- The function erl_anno:set_end_location/2 for setting the end location of a
+ token has been added.
+
+ Own Id: OTP-19354
+ Related Id(s): PR-8966
+
+- Added a warning for calling non-exported functions with the remote function
+ call syntax from the same module, and likewise for the remote fun syntax.
+
+ Own Id: OTP-19371
+ Related Id(s): GH-9092, PR-9095
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- The callback function `handle_continue/2` in `gen_server` callback modules is
+ now cached like the others, thanks to code cleanup and optimization of the
+ internal behaviour loop.
+
+ This should only improve performance, not affect functionality.
+
+ Own Id: OTP-19474
+ Related Id(s): PR-9333
+
+- Encoding done by the `json` module has been optimized.
+
+ Own Id: OTP-19476
+ Related Id(s): PR-9251
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Related Id(s): PR-9316
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Functions of a module can now be grouped in the shell code completion by using
+ the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public
+ API">>). fetch()->...
+
+
+ Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature.
+
+ Own Id: OTP-19483
+ Related Id(s): [PR-9408]
+
+
+- Added calendar:universal_time_to_system_time/1,2 and
+ calendar:local_time_to_system_time/1,2
+
+ Own Id: OTP-19505
+ Related Id(s): PR-9445
+
+- Improve error messages for json:decode/1.
+
+ Own Id: OTP-19508
+ Related Id(s): PR-9484
+
+- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when
+ the heir is a supervisor process that cannot handle custom messages.
+
+ Own Id: OTP-19512
+ Related Id(s): PR-7970
+
+- Added support for the Unicode 16 standard.
+
+ Own Id: OTP-19516
+ Related Id(s): PR-9141, PR-9518
+
+- When documenting a function or type that needs to deal with durations, usually
+ we can document it as "time in milliseconds". Since the `timer` family of
+ functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it
+ is useful to be able to use this type in type specifications.
+
+ Own Id: OTP-19526
+ Related Id(s): PR-9515
+
+- A new event time-out has been implemented in `gen_server`, that behaves more
+ like the one in `gen_statem`. Documentation and test cases are planned for a
+ later patch.
+
+ Own Id: OTP-19537
+ Related Id(s): PR-9287
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Related Id(s): PR-9468
+
+ *** HIGHLIGHT ***
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+> #### Full runtime dependencies of stdlib-7.0
+>
+> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1
+
+# syntax_tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+> #### Full runtime dependencies of syntax_tools-4.0
+>
+> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0
+
+# tools-4.1.2
+
+## Fixed Bugs and Malfunctions
+
+- A crash has been eliminated in tprof:collect/0 when unloading a module while
+ collecting traces.
+
+ Own Id: OTP-19135
+ Related Id(s): GH-8483, PR-8547
+
+- Improved the `indent-region` Emacs command, which could indent badly when
+ inside multiline string.
+
+ Own Id: OTP-19396
+ Related Id(s): PR-9186
+
+- eprof:start_profiling/3 can now return information about which process it
+ failed to trace.
+
+ Own Id: OTP-19419
+ Related Id(s): PR-9219
+
+- Fixed a race condition when processes cause the Cover server to be started at
+ the same time.
+
+ Own Id: OTP-19517
+ Related Id(s): PR-9124
+
+> #### Full runtime dependencies of tools-4.1.2
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.5
+
+## Improvements and New Features
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+> #### Full runtime dependencies of wx-2.5
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-2.1.2
+
+## Fixed Bugs and Malfunctions
+
+- With this change all public functions in xmerl have specs.
+
+ Own Id: OTP-19534
+ Related Id(s): PR-9327
+
+> #### Full runtime dependencies of xmerl-2.1.2
+>
+> erts-6.0, kernel-8.4, stdlib-2.5
+
+# Thanks to
+
+Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea
+Leopardi, Ariel Otilibili, Benedikt Reinartz, Brujo Benavides, Chris Freeze,
+Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, Dániel
+Szoboszlay, dependabotbot, Dmitri Vereshchagin, Douglas Vought, Egor Ignatov,
+Eksperimental, Frank Hunleth, Fredrik Frantzen, Frej Drejhammar, Gary Rennie,
+Hichem Fantar, iri, Isabell H, Jan Uhlig, Jean-Sébastien Pédron, João Henrique
+Ferreira de Freitas, Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José
+Valim, Juan Barrios, Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky,
+lucioleKi, Lukasz Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek,
+Martin Davidsson, Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael
+Neumann, Nelson Vides, Onno Vos, preciz, Richard Carlsson, Roberto Aloi, Robin
+Morisset, Roeland van Batenburg, ruslandoga, S0AndS0, sabiwara, Sergei Shuvatov,
+siiky, Simon Cornish, Stavros Aronis, Steffen Deusch, Tobias Pfeiffer, Tomer,
+Vance Shipley, William Fank Thomé, williamthome, William Yang, Wojtek Mach
+
diff --git a/release-notes/OTP-28.0-rc3.README.txt b/release-notes/OTP-28.0-rc3.README.txt
new file mode 100644
index 0000000..3dde184
--- /dev/null
+++ b/release-notes/OTP-28.0-rc3.README.txt
@@ -0,0 +1,3332 @@
+Inital Release: OTP 28.0
+Git Tag: OTP-28.0
+Date: 2025-04-16
+Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125,
+ OTP-19127, OTP-19135, OTP-19141, OTP-19144,
+ OTP-19155, OTP-19156, OTP-19159, OTP-19161,
+ OTP-19180, OTP-19184, OTP-19194, OTP-19198,
+ OTP-19204, OTP-19207, OTP-19224, OTP-19226,
+ OTP-19228, OTP-19230, OTP-19231, OTP-19233,
+ OTP-19250, OTP-19259, OTP-19262, OTP-19263,
+ OTP-19271, OTP-19278, OTP-19279, OTP-19285,
+ OTP-19287, OTP-19290, OTP-19295, OTP-19296,
+ OTP-19297, OTP-19303, OTP-19306, OTP-19308,
+ OTP-19313, OTP-19314, OTP-19315, OTP-19317,
+ OTP-19323, OTP-19324, OTP-19334, OTP-19337,
+ OTP-19339, OTP-19343, OTP-19345, OTP-19354,
+ OTP-19355, OTP-19364, OTP-19367, OTP-19369,
+ OTP-19371, OTP-19376, OTP-19386, OTP-19393,
+ OTP-19394, OTP-19396, OTP-19398, OTP-19401,
+ OTP-19403, OTP-19404, OTP-19406, OTP-19413,
+ OTP-19414, OTP-19419, OTP-19420, OTP-19421,
+ OTP-19422, OTP-19425, OTP-19426, OTP-19427,
+ OTP-19430, OTP-19431, OTP-19432, OTP-19441,
+ OTP-19450, OTP-19451, OTP-19452, OTP-19453,
+ OTP-19454, OTP-19456, OTP-19460, OTP-19463,
+ OTP-19465, OTP-19472, OTP-19473, OTP-19474,
+ OTP-19476, OTP-19477, OTP-19478, OTP-19479,
+ OTP-19480, OTP-19481, OTP-19483, OTP-19484,
+ OTP-19485, OTP-19487, OTP-19488, OTP-19492,
+ OTP-19500, OTP-19502, OTP-19503, OTP-19505,
+ OTP-19507, OTP-19508, OTP-19509, OTP-19510,
+ OTP-19512, OTP-19513, OTP-19514, OTP-19515,
+ OTP-19516, OTP-19517, OTP-19518, OTP-19519,
+ OTP-19520, OTP-19521, OTP-19522, OTP-19523,
+ OTP-19524, OTP-19526, OTP-19528, OTP-19531,
+ OTP-19532, OTP-19534, OTP-19535, OTP-19536,
+ OTP-19537, OTP-19538, OTP-19539, OTP-19540,
+ OTP-19541, OTP-19544, OTP-19551, OTP-19553,
+ OTP-19554, OTP-19555, OTP-19566, OTP-19570,
+ OTP-19572, OTP-19573, OTP-19574, OTP-19575,
+ OTP-19576, OTP-19578, OTP-19580, OTP-19584,
+ OTP-19586, OTP-19588, OTP-19589, OTP-19590,
+ OTP-19591, OTP-19593, OTP-19594, OTP-19596,
+ OTP-19597, OTP-19598
+Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113,
+ GH-8223, GH-8483, GH-8558, GH-8822, GH-8842,
+ GH-8967, GH-8985, GH-9092, GH-9113, GH-9173,
+ GH-9255, GH-9279, GH-9366, GH-9413, GH-9436,
+ GH-9438, GH-9487, GH-9500, GH-9536, GH-9565,
+ GH-9668, OTP-16608, OTP-19545, PR-7830,
+ PR-7970, PR-8078, PR-8100, PR-8207, PR-8261,
+ PR-8429, PR-8494, PR-8540, PR-8547, PR-8556,
+ PR-8573, PR-8589, PR-8590, PR-8592, PR-8600,
+ PR-8625, PR-8642, PR-8651, PR-8660, PR-8670,
+ PR-8695, PR-8697, PR-8699, PR-8704, PR-8734,
+ PR-8772, PR-8792, PR-8793, PR-8798, PR-8805,
+ PR-8812, PR-8820, PR-8862, PR-8885, PR-8887,
+ PR-8894, PR-8913, PR-8926, PR-8932, PR-8937,
+ PR-8938, PR-8943, PR-8945, PR-8960, PR-8962,
+ PR-8966, PR-8968, PR-8973, PR-8975, PR-8976,
+ PR-8988, PR-9005, PR-9006, PR-9013, PR-9019,
+ PR-9020, PR-9042, PR-9045, PR-9079, PR-9082,
+ PR-9083, PR-9094, PR-9095, PR-9106, PR-9116,
+ PR-9119, PR-9121, PR-9122, PR-9124, PR-9129,
+ PR-9141, PR-9149, PR-9154, PR-9171, PR-9186,
+ PR-9192, PR-9207, PR-9214, PR-9219, PR-9229,
+ PR-9231, PR-9232, PR-9246, PR-9251, PR-9253,
+ PR-9269, PR-9271, PR-9272, PR-9275, PR-9276,
+ PR-9277, PR-9280, PR-9287, PR-9289, PR-9298,
+ PR-9299, PR-9305, PR-9316, PR-9327, PR-9330,
+ PR-9333, PR-9342, PR-9344, PR-9363, PR-9376,
+ PR-9396, PR-9398, PR-9399, PR-9402, PR-9406,
+ PR-9408, PR-9409, PR-9410, PR-9417, PR-9433,
+ PR-9441, PR-9445, PR-9446, PR-9448, PR-9468,
+ PR-9472, PR-9478, PR-9484, PR-9488, PR-9495,
+ PR-9504, PR-9508, PR-9511, PR-9514, PR-9515,
+ PR-9516, PR-9517, PR-9518, PR-9519, PR-9537,
+ PR-9538, PR-9543, PR-9563, PR-9571, PR-9579,
+ PR-9582, PR-9586, PR-9587, PR-9590, PR-9594,
+ PR-9595, PR-9608, PR-9610, PR-9615, PR-9621,
+ PR-9625, PR-9630, PR-9639, PR-9648, PR-9659,
+ PR-9660, PR-9670, PR-9671, PR-9677, PR-9678,
+ PR-9680, PR-9705, PR-9711, PR-9714
+System: OTP
+Release: 28
+Application: asn1-5.3.5, common_test-1.28, compiler-9.0,
+ crypto-5.6, debugger-6.0, dialyzer-5.4,
+ diameter-2.5, edoc-1.4, eldap-1.2.15,
+ erl_interface-5.6, erts-16.0, et-1.7.2,
+ eunit-2.10, ftp-1.2.4, inets-9.3.3,
+ jinterface-1.15, kernel-10.3, megaco-4.8,
+ mnesia-4.24, observer-2.18, odbc-2.16,
+ os_mon-2.11, parsetools-2.7, public_key-1.18,
+ reltool-1.0.2, runtime_tools-2.2, sasl-4.3,
+ snmp-5.19, ssh-5.3, ssl-11.3, stdlib-7.0,
+ syntax_tools-4.0, tftp-1.2.3, tools-4.1.2,
+ wx-2.5, xmerl-2.1.3
+Predecessor: OTP
+
+Check out the git tag OTP-28.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Application(s): compiler, stdlib
+ Related Id(s): PR-8699, PR-9094
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8926
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Application(s): erts
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Application(s): erts, stdlib
+ Related Id(s): GH-8037, PR-8962
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8625
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Application(s): stdlib
+ Related Id(s): GH-8099, PR-8100
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia,
+ parsetools, runtime_tools, snmp
+ Related Id(s): PR-9079
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299, PR-9610
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Application(s): otp, stdlib
+ Related Id(s): PR-9106
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Application(s): stdlib
+ Related Id(s): PR-9316
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Application(s): compiler
+ Related Id(s): PR-8695
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Application(s): stdlib
+ Related Id(s): PR-9468
+
+- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA
+ minimum requirements.
+
+ The SBOM contains a root package. Inside the root package there are multiple
+ SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and
+ the Erlang runtime system (erts). Inside each package, there may be multiple
+ packages, such as vendor dependency packages inside the erts SPDX package.
+
+ Own Id: OTP-19553
+ Application(s): otp
+ Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714
+
+# POTENTIAL INCOMPATIBILITIES
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Application(s): stdlib
+ Related Id(s): PR-8772
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Application(s): compiler, erts, stdlib
+ Related Id(s): PR-8913
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Application(s): asn1
+ Related Id(s): PR-8798
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Application(s): compiler, erts, stdlib
+ Related Id(s): GH-8967, PR-8988
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Application(s): common_test
+ Related Id(s): PR-9045
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Application(s): ssh
+ Related Id(s): PR-9277
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Application(s): erts
+ Related Id(s): PR-8670
+
+- Change automatic hibernation of static supervisors so that they will hibernate
+ after being idle for 1 second instead of only after starting, dynamic
+ supervisors (simple_one_for_one) will not be hibernated at all. An option to
+ the supervisor is added to make it configurable for the application. This
+ option defaults to 1 second for static supervisors and to infinity for the
+ simple_one_for_one supervisors.
+
+ Own Id: OTP-19597
+ Application(s): stdlib
+ Related Id(s): PR-9680
+
+# OTP-28.0
+
+## Improvements and New Features
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Fixes the sarif generation in the scan code script
+
+ Own Id: OTP-19492
+ Related Id(s): PR-9409
+
+- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA
+ minimum requirements.
+
+ The SBOM contains a root package. Inside the root package there are multiple
+ SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and
+ the Erlang runtime system (erts). Inside each package, there may be multiple
+ packages, such as vendor dependency packages inside the erts SPDX package.
+
+ Own Id: OTP-19553
+ Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714
+
+ *** HIGHLIGHT ***
+
+# asn1-5.3.5
+
+## Fixed Bugs and Malfunctions
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Related Id(s): PR-8798
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of asn1-5.3.5
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.28
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- The overage reports in HTML can be rendered in dark mode if requested by the
+ user's browser.
+
+ Own Id: OTP-19159
+ Related Id(s): PR-7830
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Related Id(s): PR-9045
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of common_test-1.28
+>
+> 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-9.0
+
+## Fixed Bugs and Malfunctions
+
+- The compiler will now emit warnings when some map patterns cannot possibly
+ match because a previous clauses matches the same pattern. For example:
+
+ mm_1(#{}) -> a;
+ mm_1(#{b := B}) -> {b,B}.
+
+ mm_2(#{a := A}) -> {a,A};
+ mm_2(#{a := A, b := B}) -> {b,A,B}.
+
+ The second clause of these function can never match and the compiler will now
+ emit a warning for both of them.
+
+ Note that the compiler is not guaranteed to emit warnings for every possible
+ map pattern that cannot match.
+
+ Own Id: OTP-19141
+ Related Id(s): GH-8558, PR-8600
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The final validation step in the compiler will now reject modules containing
+ functions with more than 255 arguments. No impact is expected as the emulator
+ has always refused to load these modules.
+
+ Own Id: OTP-19376
+ Related Id(s): GH-9113, PR-9121
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Refactor code to not rely on `+nowarn_shadow_vars`.
+
+ Own Id: OTP-19574
+ Related Id(s): PR-9678
+
+## Improvements and New Features
+
+- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now
+ `compressed` and `deterministic`.
+
+ Own Id: OTP-19096
+ Related Id(s): PR-8494
+
+- Provided that the map argument for a maps:put/3 call is known to the
+ compiler to be a map, the compiler will replace such calls with the
+ corresponding update using the map syntax.
+
+ Own Id: OTP-19115
+ Related Id(s): PR-8540
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as
+ guard BIFs in order to gain performance.
+
+ The following BIFs that are optimized in this way: `binary_to_atom/1`,
+ `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and
+ `list_to_existing_atom/1`.
+
+ Own Id: OTP-19339
+ Related Id(s): PR-9042, PR-9122
+
+- The compiler now converts known documentation attribute metadata entries from
+ unicode:chardata/0 to unicode:unicode_binary/0.
+
+ Own Id: OTP-19394
+ Related Id(s): PR-9192
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Related Id(s): PR-8695
+
+ *** HIGHLIGHT ***
+
+- BEAM files no longer include a `Meta` chunk if there are no features used.
+ That slightly decreases the size of BEAM files, and it also ensures that
+ `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules.
+
+ Own Id: OTP-19524
+ Related Id(s): PR-9517
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of compiler-9.0
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.6
+
+## Fixed Bugs and Malfunctions
+
+- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded.
+
+ Own Id: OTP-19500
+ Related Id(s): PR-9119
+
+- Added copyright and license to crypto_ec_curves.erl
+
+ Own Id: OTP-19554
+
+## Improvements and New Features
+
+- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1
+ functions have been deprecated.
+
+ Own Id: OTP-19155
+ Related Id(s): PR-8592
+
+- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is
+ loaded without application `crypto` being loaded. In this case FIPS will be
+ disabled even if the user had set application parameter `fips_mode`.
+
+ Own Id: OTP-19156
+ Related Id(s): PR-8590
+
+- The functionality of crypto:crypto_one_time_aead/6 is now also available in
+ the new functions crypto:crypto_one_time_aead_init/4 and
+ crypto:crypto_one_time_aead/4, which makes it possible to reuse
+ initialization.
+
+ Own Id: OTP-19426
+ Related Id(s): PR-9289
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If
+ present, it contains the version of the FIPS provider which may be different
+ than the version of the rest of OpenSSL.
+
+ Own Id: OTP-19487
+ Related Id(s): GH-9366, PR-9410
+
+- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and
+ `cmac_cipher_algorithm()`.
+
+ Own Id: OTP-19510
+ Related Id(s): PR-9448
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of crypto-5.6
+>
+> erts-9.0, kernel-6.0, stdlib-3.9
+
+# debugger-6.0
+
+## Fixed Bugs and Malfunctions
+
+- Error handling has been improved when modules fail to load.
+
+ Own Id: OTP-19484
+ Related Id(s): GH-7819, PR-9399
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of debugger-6.0
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0
+
+# dialyzer-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The `-Wno_unknown` option will now prevent a warning being printed to standard
+ output when the command line interface is used.
+
+ Own Id: OTP-19262
+ Related Id(s): GH-8822, PR-8885
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of dialyzer-5.4
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.5
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of diameter-2.5
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.4
+
+## Fixed Bugs and Malfunctions
+
+- Refactor code to not rely on `+nowarn_shadow_vars`.
+
+ Own Id: OTP-19574
+ Related Id(s): PR-9678
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of edoc-1.4
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.15
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of eldap-1.2.15
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.6
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-16.0
+
+## Fixed Bugs and Malfunctions
+
+- ETS tables with more than 2 billion keys are now supported.
+
+ Own Id: OTP-19144
+ Related Id(s): PR-8589
+
+- The zlib library included in Erlang/OTP has been updated to version 1.3.1.
+
+ Own Id: OTP-19259
+ Related Id(s): PR-8862
+
+- `to_erl` no longer clears the screen when attaching to a `run_erl` session.
+
+ Own Id: OTP-19263
+ Related Id(s): PR-8943
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed a bug where `erlc` would crash if its path contained spaces.
+
+ Own Id: OTP-19295
+ Related Id(s): PR-8937
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a
+ timezone without daylight saving (for example `UTC`) to assume that the
+ provided localtime does not have DST. This has always been the behaviour, but
+ glibc versions after 2.37 changed it so that the behavior in Erlang also
+ changed.
+
+ Own Id: OTP-19453
+ Related Id(s): PR-9207
+
+- Support for the `TZ` environment variable has been added on Windows. Before
+ this change only the time zone configured in the OS was ever used.
+
+ Own Id: OTP-19454
+ Related Id(s): PR-9207
+
+- Suppressed various warnings when building the emulator with recent versions of
+ GCC
+
+ Own Id: OTP-19488
+ Related Id(s): GH-9413, PR-9417
+
+- Fixed a bug in re:run and re:compile where the pattern parameter would be read
+ incorrectly if it was a sub-binary.
+
+ Own Id: OTP-19507
+ Related Id(s): GH-9438, PR-9478
+
+- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be
+ part of the directory path when building Erlang/OTP. Bug has been present
+ since R11B released 2006.
+
+ Own Id: OTP-19518
+ Related Id(s): GH-9487, PR-9488
+
+- Fixed the index types of modules `atomics` and `counters` from `integer()` to
+ `pos_integer()`, which is more correct.
+
+ Own Id: OTP-19532
+ Related Id(s): PR-9538
+
+- Fix `erl` flags `+Q`, `+P` and `+t` to not allow values greater
+ than 4294975487. Before this fix, the runtime would either truncate the value
+ or crash depending on which value was given.
+
+ Own Id: OTP-19594
+ Related Id(s): GH-9668, PR-9671
+
+## Improvements and New Features
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+ *** HIGHLIGHT ***
+
+- The trace:system/3 function has been added. It has a similar interface as
+ erlang:system_monitor/2 but it also supports trace sessions.
+
+ Own Id: OTP-19271
+ Related Id(s): PR-8660
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Two BIFs have been added to the `erlang` module.
+
+ erlang:processes_iterator/0 returns a process iterator that can be used to
+ iterate through the process table.
+
+ erlang:process_next/1 takes in a process iterator and returns a 2-tuple,
+ consisting of a process identifier and a new process iterator. When the
+ process iterator runs out of processes in the process table, `none` will be
+ returned.
+
+ Using these BIFs to scan the processes scales better than using
+ erlang:processes/0, at the cost of giving less consistency guarantees.
+ Process identifiers returned from consecutive calls of erlang:process_next/1
+ may not be a consistent snapshot of all elements existing in the table during
+ any of the calls. A process identifier is only guaranteed to be returned from
+ a call to erlang:processes_next/1 if it was alive before the call to
+ erlang:processes_iterator/0 and was still alive when
+ erlang:processes_next/1 returned `none`.
+
+ Own Id: OTP-19369
+ Related Id(s): PR-9129
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- When booting the runtime system on a 32-bit computer with a single core, the
+ boot code will try to minimize the peak memory use by disabling parallel
+ loading of BEAM files.
+
+ Own Id: OTP-19450
+ Related Id(s): PR-9342
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- `erlc` will now write compiler warnings and errors to standard error, instead
+ of standard output, in common with other language compilers.
+
+ Own Id: OTP-19460
+ Related Id(s): GH-9255, PR-9363
+
+- Fixed the Windows build to always include `.pdb` files for all DLLs and
+ executables to help with debugging.
+
+ Own Id: OTP-19465
+ Related Id(s): PR-9229
+
+- Improve the naming of the (internal) esock mutex(es). It is now possible to
+ configure (as in autoconf) the use of simple names for the esock mutex(es).
+
+ Own Id: OTP-19472
+ Related Id(s): #9388
+
+- An optimization for appending 0 bits to a binary was removed in patch releases
+ for OTP versions 25, 26, and 27. This optimization has been reintroduced in
+ Erlang/OTP 28.
+
+ Own Id: OTP-19473
+ Related Id(s): PR-8697, PR-9396
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on
+ systems with kernel polling enabled (that is most Unix systems), file
+ descriptors that are always re-enabled as soon as they trigger are now part of
+ a specialized pollset just as `driver_select`. This reduces the CPU usage in
+ such scenarios as the erts does not have to re-insert the FD everytime it it
+ triggered. As a result of this optimization `socket` based reading uses a
+ lot less CPU and achieves a higher throughput.
+
+ Own Id: OTP-19479
+ Related Id(s): PR-9275
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The Windows installer no longer creates the `erl.ini` file, making
+ installations redistributable.
+
+ Own Id: OTP-19481
+ Related Id(s): PR-9330
+
+- Added erlang:hibernate/0, which hibernates a process without discarding the
+ stack.
+
+ Own Id: OTP-19503
+ Related Id(s): PR-9406
+
+- The asmjit library (used by BeamJIT) has been updated to version
+ 029075b84bf0161a761beb63e6eda519a29020db.
+
+ Own Id: OTP-19509
+ Related Id(s): PR-9495
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Related Id(s): PR-8670
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+- The `+R` emulator options has been removed. It has had any effect since
+ Erlang/OTP R9.
+
+ Own Id: OTP-19551
+ Related Id(s): PR-9608
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Increase the default inet-driver buffer size(s). Also introduce kernel
+ parameters for UDP and SCTP to change the sizes when creating (those) sockets.
+
+ Own Id: OTP-19576
+
+- Add `+JPperfdirectory <dir>` for specifying which directory Erlang should
+ place perf symbol information files.
+
+ Own Id: OTP-19589
+ Related Id(s): GH-9500, PR-9639
+
+- Allow multiple static nifs to be part of the same archive. See the NIF
+ documentation for details.
+
+ Own Id: OTP-19590
+ Related Id(s): PR-9625
+
+- Various improvements reducing lock contention on run queues due to task
+ stealing.
+
+ Own Id: OTP-19591
+ Related Id(s): PR-9594
+
+> #### Full runtime dependencies of erts-16.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.7.2
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of et-1.7.2
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.10
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of eunit-2.10
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.2.4
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of ftp-1.2.4
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.3.3
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+## Improvements and New Features
+
+- Enhanced http client documentation.
+
+ Own Id: OTP-19520
+ Related Id(s): PR-9516
+
+- Enhance made to mod_esi documentation
+
+ Own Id: OTP-19521
+ Related Id(s): PR-9472
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of inets-9.3.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
+
+# jinterface-1.15
+
+## Improvements and New Features
+
+- The `.class` files of jinterface are now part of the prebuilt archive using
+ Java 8.
+
+ Own Id: OTP-19308
+ Related Id(s): PR-8960
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+# kernel-10.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed an issue where output to the shell would not print the prompt on a new
+ line.
+
+ Own Id: OTP-19228
+ Related Id(s): PR-8820
+
+- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io
+ requests in latin1 encoding will not be translated to unicode and back to
+ latin1.
+
+ Own Id: OTP-19296
+ Related Id(s): PR-9013
+
+- Fixed a bug where a composing unicode character would bind to a character not
+ available to the user and deleting that character would cause a crash.
+
+ Own Id: OTP-19297
+ Related Id(s): PR-9005
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The Erlang shell no longer crashes when a shell prompt ends with an escape
+ sequence.
+
+ Own Id: OTP-19414
+ Related Id(s): PR-9272
+
+- code:get_doc/1 now works for cover-compiled modules.
+
+ Own Id: OTP-19513
+ Related Id(s): PR-9433
+
+- An infinite loop in CNAME loop detection that can cause Out Of Memory has been
+ fixed. This affected CNAME lookup with the internal DNS resolver.
+
+ Own Id: OTP-19544
+ Related Id(s): PR-9587, OTP-19545
+
+- The internal resolver framework has been fixed to wait with the first resolver
+ lookup until the ERL_INETRC environment variable has been applied.
+
+ Previously, on some platform(s) (Linux) a first lookup when figuring out the
+ domain name was always placed on the `native` resolver even if ERL_INETRC was
+ used to disable it.
+
+ Own Id: OTP-19555
+ Related Id(s): PR-9543
+
+- Fix `logger:add_handler(default, ...)` to correctly replay events generated
+ during startup when the default logger is set to `undefined` in logger's
+ configuration parameters.
+
+ Own Id: OTP-19588
+ Related Id(s): GH-9436, PR-9595
+
+## Improvements and New Features
+
+- application:load/1 slows down as the number of directories in the code path
+ increases because the call to code:where_is_file/1 for the '.app' file must
+ scan each directory for the app.
+
+ `code_server` maintains a cache of the contents of directories in the path.
+ Re-using that cache when searching for '.app' files in application:load/1
+ may improve its runtime, especially when loading multiple applications.
+
+ Own Id: OTP-19194
+ Related Id(s): PR-8078
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly
+ allowed to connect to the node by calling net_kernel:allow/1
+
+ Own Id: OTP-19287
+ Related Id(s): PR-8207
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5
+ functions now also accept an option map as last argument containing the
+ `timeout` and `always_spawn` options. The `always_spawn` option can be used in
+ order to ensure that the call operation will use a newly spawned process when
+ executing the remote call.
+
+ Own Id: OTP-19343
+ Related Id(s): PR-8642
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- `t:io:standard_error/0` has been updated to write via a NIF API instead of a
+ port. This allows it to access the dirty-scheduler pool and make sure that
+ writes have been written to the OSs `stderr` when io:format/3 and equivalent
+ return.
+
+ Own Id: OTP-19401
+ Related Id(s): PR-9116
+
+- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise
+ an exception if the command fails to execute.
+
+ Own Id: OTP-19404
+ Related Id(s): PR-9082
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- Add a configure chapter to the socket usage guide
+
+ Own Id: OTP-19522
+ Related Id(s): PR-9508
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Increase the default inet-driver buffer size(s). Also introduce kernel
+ parameters for UDP and SCTP to change the sizes when creating (those) sockets.
+
+ Own Id: OTP-19576
+
+> #### Full runtime dependencies of kernel-10.3
+>
+> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
+
+# megaco-4.8
+
+## Fixed Bugs and Malfunctions
+
+- Add missing spec and doc for exported functions.
+
+ Own Id: OTP-19523
+
+## Improvements and New Features
+
+- Nano seconds are now used for (example) meas result presentation.
+
+ Nanoseconds are now used, for example, in `meas` result presentations.
+
+ Own Id: OTP-19403
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Add copyright notice to files that still had none.
+
+ Own Id: OTP-19570
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Tweaked some of the meas examples in order to make them benchmark compatible.
+
+ Own Id: OTP-19598
+
+> #### Full runtime dependencies of megaco-4.8
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.24
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of mnesia-4.24
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.18
+
+## Improvements and New Features
+
+- With this change etop from observer application will scroll as top from shell
+
+ Own Id: OTP-19528
+ Related Id(s): PR-9659
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of observer-2.18
+>
+> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3
+
+# odbc-2.16
+
+## Improvements and New Features
+
+- Updated odbc configure to enable easier use of iodbc driver.
+
+ Own Id: OTP-19456
+ Related Id(s): PR-9083
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of odbc-2.16
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.11
+
+## Improvements and New Features
+
+- `m:disksup` will now recognize HAMMER2 volumes.
+
+ Own Id: OTP-19207
+ Related Id(s): PR-8704
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of os_mon-2.11
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.7
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of parsetools-2.7
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.18
+
+## Improvements and New Features
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Ignore instead of crashing unhandled entries when loading CA-certificates.
+
+ Own Id: OTP-19573
+ Related Id(s): GH-9565, PR-9677
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of public_key-1.18
+>
+> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
+
+# reltool-1.0.2
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of reltool-1.0.2
+>
+> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.2
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- With this change observer will use cheaper iterators to avoid locking when not
+ necessary.
+
+ Own Id: OTP-19584
+ Related Id(s): PR-9711
+
+> #### Full runtime dependencies of runtime_tools-2.2
+>
+> erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0
+
+# sasl-4.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed the documentation for the ExtraFiles option to systools:make_tar/2.
+
+ Own Id: OTP-19279
+ Related Id(s): GH-8842, PR-8894
+
+## Improvements and New Features
+
+- `.appup` files are now included in releases in order to make it possible to
+ create upgrade packages from an installed release.
+
+ Own Id: OTP-19398
+ Related Id(s): PR-8973
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of sasl-4.3
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.19
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Add copyright notice to files that still had none.
+
+ Own Id: OTP-19572
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of snmp-5.19
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.3
+
+## Fixed Bugs and Malfunctions
+
+- The implementation of the ssh server-side supervision tree has been improved.
+
+ Own Id: OTP-19324
+ Related Id(s): GH-8223, PR-8968
+
+- SSH daemon accepts fun as tcpip_tunnel_in option. This provides more control
+ over TCP connection tunnel handle by server.
+
+ Own Id: OTP-19566
+ Related Id(s): PR-9571
+
+## Improvements and New Features
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Related Id(s): PR-9277
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Daemon can be configured (bannerfun option) to send banner message at the
+ beginning of user authentication.
+
+ Own Id: OTP-19535
+ Related Id(s): PR-9149
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- For interoperability reasons, SSH ignore message with no length specified is
+ treated as message with zero length specified - it will not cause decode
+ error.
+
+ Own Id: OTP-19586
+ Related Id(s): PR-9214
+
+- Documentation improvements.
+
+ Own Id: OTP-19596
+ Related Id(s): PR-9298
+
+> #### Full runtime dependencies of ssh-5.3
+>
+> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1,
+> stdlib-5.0, stdlib-6.0
+
+# ssl-11.3
+
+## Improvements and New Features
+
+- Refactoring, minor optimizations and improved log printouts.
+
+ Own Id: OTP-19367
+ Related Id(s): PR-9019
+
+- supervisor:which_child/2 is now used to make start-up code for
+ TLS-connections simpler and more straight forward, and to increase stability
+ and maintainability of the ssl application.
+
+ Own Id: OTP-19406
+ Related Id(s): PR-9231
+
+- The data handling for tls-v1.3 has been optimized.
+
+ Own Id: OTP-19430
+ Related Id(s): PR-9305
+
+- Added experimental socket support.
+
+ Own Id: OTP-19463
+ Related Id(s): PR-9398
+
+- Improve code health by removing dead code.
+
+ Own Id: OTP-19531
+ Related Id(s): PR-9563
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of ssl-11.3
+>
+> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-7.0
+
+# stdlib-7.0
+
+## Fixed Bugs and Malfunctions
+
+- Shell help now orders the commands in alphabetical order.
+
+ Own Id: OTP-19161
+ Related Id(s): PR-8573
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Related Id(s): PR-8772
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- argparse:help/1 now accepts unicode:chardata/0.
+
+ Own Id: OTP-19303
+ Related Id(s): PR-8932
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did
+ not start the traversal from root nodes. This fix makes both traversals only
+ start or restart from a root node in one of the components, or an arbitrary
+ node if no root node can be visited.
+
+ Own Id: OTP-19393
+ Related Id(s): PR-9171
+
+- Auto-completion in the shell is now significantly faster for function
+ parameters that uses complex custom types.
+
+ Own Id: OTP-19413
+ Related Id(s): PR-9271
+
+- Stringfying a non-latin1 atom will now produce a readable string instead of
+ encoding each character using `\x{...}` escape sequences. Example:
+
+ -define(S(T), ??T).
+
+ atom() ->
+ ?S('атом').
+
+ The `atom/0` function now returns `"'атом'"` instead of
+ `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`.
+
+ Own Id: OTP-19421
+ Related Id(s): GH-9173, PR-9276
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+- `m:dets` could print error messages to standard output when repairing DETS
+ files. This has been changed to send the messages to `logger`.
+
+ `ets:fun2ms` would print an error message to standard output as well as
+ returning an error tuple. The printing of the message has been removed.
+
+ Own Id: OTP-19427
+ Related Id(s): PR-9232, PR-9446
+
+- The functions for converting to and from the RFC1339 date and time format
+ would not properly handle fractional seconds for negative times.
+
+ Own Id: OTP-19441
+ Related Id(s): GH-9279, PR-9280
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Corrected the spec of ets:update_element/4.
+
+ Own Id: OTP-19514
+ Related Id(s): PR-9504
+
+- Corrected the spec for ets:info/1.
+
+ Own Id: OTP-19515
+ Related Id(s): PR-9514
+
+- Details in the hibernation implementation and time-out handling has been
+ improved for `gen_statem`. In particular to avoid selective receive when
+ cancelling a time-out.
+
+ Own Id: OTP-19540
+ Related Id(s): PR-9579
+
+- Fix `zip` extraction to wrap invalid DOS timestamps to their correct value
+ instead of returning the actual value. Before this fix the timestamp returned
+ could have a second greater than 59. The bug has been present since Erlang/OTP
+ 27.1.
+
+ Own Id: OTP-19593
+ Related Id(s): GH-9536, PR-9537
+
+## Improvements and New Features
+
+- Singleton type variables in an union type do not make sense from Dialyzer's
+ point of view. The following example is ill-typed:
+
+ -spec run_test(Opts) -> term()
+ when Opts :: {join_specs, Bool} | {test, Bool}.
+
+ This used to be reported as a warning. In OTP-28, this is an error
+
+ Own Id: OTP-19125
+ Related Id(s): PR-8556
+
+- By default, sets created by the `sets` module will now be represented as
+ maps.
+
+ Own Id: OTP-19127
+ Related Id(s): PR-8429
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Before restarting a child, a supervisor must check if the restart limit is
+ reached. This adds a penalty to the overall restart time, which should be kept
+ low. The algorithm has been optimized from 2\*O(n) to O(n) behavior.
+
+ Own Id: OTP-19204
+ Related Id(s): PR-8261
+
+- Added the possibility to configure shell docs column width through the stdlib
+ parameter `shell_docs_columns`.
+
+ Own Id: OTP-19224
+ Related Id(s): PR-8651
+
+- The io:setopts/2 function now accepts the `line_history` option for more
+ explicit handling of when to save shell history.
+
+ Own Id: OTP-19230
+ Related Id(s): PR-8792
+
+- The shell now prints a help message explaining how to interrupt a running
+ command when stuck executing a command for longer than 5 seconds.
+
+ Own Id: OTP-19231
+ Related Id(s): PR-8793
+
+- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and
+ produced as output of calendar:system_time_to_rfc3339/2.
+
+ Own Id: OTP-19250
+ Related Id(s): PR-8812
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- Added io:get_password/0 that can read passwords from stdin when in "raw"
+ `-noshell` mode.
+
+ Own Id: OTP-19315
+ Related Id(s): PR-8962, PR-9006
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Related Id(s): GH-8099, PR-8100
+
+ *** HIGHLIGHT ***
+
+- The supervisor:which_child/2 function has been added to facilitate getting
+ the pid of a sibling process; that is a process under same supervisor as the
+ process that calls to call the new function.
+
+ Own Id: OTP-19345
+ Related Id(s): PR-8976
+
+- The function erl_anno:set_end_location/2 for setting the end location of a
+ token has been added.
+
+ Own Id: OTP-19354
+ Related Id(s): PR-8966
+
+- Added a warning for calling non-exported functions with the remote function
+ call syntax from the same module, and likewise for the remote fun syntax.
+
+ Own Id: OTP-19371
+ Related Id(s): GH-9092, PR-9095
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- The callback function `handle_continue/2` in `gen_server` callback modules is
+ now cached like the others, thanks to code cleanup and optimization of the
+ internal behaviour loop.
+
+ This should only improve performance, not affect functionality.
+
+ Own Id: OTP-19474
+ Related Id(s): PR-9333
+
+- Encoding done by the `json` module has been optimized.
+
+ Own Id: OTP-19476
+ Related Id(s): PR-9251
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Related Id(s): PR-9316
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Functions of a module can now be grouped in the shell code completion by using
+ the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public
+ API">>). fetch()->...
+
+
+ Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature.
+
+ Own Id: OTP-19483
+ Related Id(s): [PR-9408]
+
+
+- Added calendar:universal_time_to_system_time/1,2 and
+ calendar:local_time_to_system_time/1,2
+
+ Own Id: OTP-19505
+ Related Id(s): PR-9445
+
+- Improve error messages for json:decode/1.
+
+ Own Id: OTP-19508
+ Related Id(s): PR-9484
+
+- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when
+ the heir is a supervisor process that cannot handle custom messages.
+
+ Own Id: OTP-19512
+ Related Id(s): PR-7970
+
+- Added support for the Unicode 16 standard.
+
+ Own Id: OTP-19516
+ Related Id(s): PR-9141, PR-9518
+
+- When documenting a function or type that needs to deal with durations, usually
+ we can document it as "time in milliseconds". Since the `timer` family of
+ functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it
+ is useful to be able to use this type in type specifications.
+
+ Own Id: OTP-19526
+ Related Id(s): PR-9515
+
+- A new event time-out has been implemented in `gen_server`, that behaves more
+ like the one in `gen_statem`.
+
+ See the type gen_server:action/0 for `{timeout|hibernate,...}`, and also
+ related functions.
+
+ Own Id: OTP-19537
+ Related Id(s): PR-9287, PR-9615, PR-9621
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Related Id(s): PR-9468
+
+ *** HIGHLIGHT ***
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- A list of PCRE2 incompatibilities is documented in a user's guide for stdlib.
+
+ Own Id: OTP-19578
+ Related Id(s): PR-9705
+
+- Change automatic hibernation of static supervisors so that they will hibernate
+ after being idle for 1 second instead of only after starting, dynamic
+ supervisors (simple_one_for_one) will not be hibernated at all. An option to
+ the supervisor is added to make it configurable for the application. This
+ option defaults to 1 second for static supervisors and to infinity for the
+ simple_one_for_one supervisors.
+
+ Own Id: OTP-19597
+ Related Id(s): PR-9680
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of stdlib-7.0
+>
+> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1
+
+# syntax_tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of syntax_tools-4.0
+>
+> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0
+
+# tftp-1.2.3
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of tftp-1.2.3
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.1.2
+
+## Fixed Bugs and Malfunctions
+
+- A crash has been eliminated in tprof:collect/0 when unloading a module while
+ collecting traces.
+
+ Own Id: OTP-19135
+ Related Id(s): GH-8483, PR-8547
+
+- Improved the `indent-region` Emacs command, which could indent badly when
+ inside multiline string.
+
+ Own Id: OTP-19396
+ Related Id(s): PR-9186
+
+- eprof:start_profiling/3 can now return information about which process it
+ failed to trace.
+
+ Own Id: OTP-19419
+ Related Id(s): PR-9219
+
+- Fixed a race condition when processes cause the Cover server to be started at
+ the same time.
+
+ Own Id: OTP-19517
+ Related Id(s): PR-9124
+
+- Fix bug in `tprof` where the session name could not be set.
+
+ Own Id: OTP-19580
+ Related Id(s): PR-9648
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of tools-4.1.2
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.5
+
+## Improvements and New Features
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of wx-2.5
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-2.1.3
+
+## Fixed Bugs and Malfunctions
+
+- With this change all public functions in xmerl have specs.
+
+ Own Id: OTP-19534
+ Related Id(s): PR-9327
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of xmerl-2.1.3
+>
+> erts-6.0, kernel-8.4, stdlib-2.5
+
+# Thanks to
+
+Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea
+Leopardi, Ariel Otilibili, Benedikt Reinartz, Brujo Benavides, Chris Freeze,
+Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, Dániel
+Szoboszlay, dependabotbot, Dmitri Vereshchagin, Dominic Letz, Douglas Vought,
+Egor Ignatov, Eksperimental, Frank Hunleth, Freddie Lamble, Fredrik Frantzen,
+Frej Drejhammar, Gary Rennie, Hichem Fantar, Ilya Klyuchnikov, iri, Isabell H,
+Jan Uhlig, Jean-Sébastien Pédron, João Henrique Ferreira de Freitas, Johannes
+Christ, Jonas Bernoulli, Jonatan Kłosko, José Valim, Juan Barrios, Julian
+Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, lucioleKi, Lukasz Samson,
+Maria Scott, Mario Idival, Mario Uher, Marko Mindek, Martin Davidsson, Matwey V.
+Kornilov, Maxim Fedorov, Michael Davis, Michael Neumann, Nelson Vides, Nicholas
+Moen, Onno Vos, Paul Guyot, preciz, Richard Carlsson, Roberto Aloi, Robin
+Morisset, Roeland van Batenburg, ruslandoga, S0AndS0, sabiwara, Sam Weaver,
+Sergei Shuvatov, siiky, Simon Cornish, Stavros Aronis, Stefan Grundmann, Steffen
+Deusch, Tobias Pfeiffer, Tomer, Vadim Yanitskiy, Vance Shipley, William Fank
+Thomé, williamthome, William Yang, Wojtek Mach
+
diff --git a/release-notes/OTP-28.0-rc4.README.txt b/release-notes/OTP-28.0-rc4.README.txt
new file mode 100644
index 0000000..2cdae55
--- /dev/null
+++ b/release-notes/OTP-28.0-rc4.README.txt
@@ -0,0 +1,3652 @@
+Inital Release: OTP 28.0
+Git Tag: OTP-28.0
+Date: 2025-05-05
+Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125,
+ OTP-19127, OTP-19135, OTP-19141, OTP-19144,
+ OTP-19155, OTP-19156, OTP-19159, OTP-19161,
+ OTP-19180, OTP-19184, OTP-19194, OTP-19198,
+ OTP-19204, OTP-19207, OTP-19224, OTP-19226,
+ OTP-19228, OTP-19230, OTP-19231, OTP-19233,
+ OTP-19250, OTP-19259, OTP-19262, OTP-19263,
+ OTP-19271, OTP-19278, OTP-19279, OTP-19285,
+ OTP-19287, OTP-19290, OTP-19295, OTP-19296,
+ OTP-19297, OTP-19303, OTP-19306, OTP-19308,
+ OTP-19313, OTP-19314, OTP-19315, OTP-19317,
+ OTP-19323, OTP-19324, OTP-19334, OTP-19337,
+ OTP-19339, OTP-19343, OTP-19345, OTP-19354,
+ OTP-19355, OTP-19364, OTP-19367, OTP-19369,
+ OTP-19371, OTP-19376, OTP-19386, OTP-19393,
+ OTP-19394, OTP-19396, OTP-19398, OTP-19401,
+ OTP-19403, OTP-19404, OTP-19406, OTP-19413,
+ OTP-19414, OTP-19419, OTP-19420, OTP-19421,
+ OTP-19422, OTP-19425, OTP-19426, OTP-19427,
+ OTP-19430, OTP-19431, OTP-19432, OTP-19441,
+ OTP-19450, OTP-19451, OTP-19452, OTP-19453,
+ OTP-19454, OTP-19456, OTP-19460, OTP-19463,
+ OTP-19465, OTP-19472, OTP-19473, OTP-19474,
+ OTP-19476, OTP-19477, OTP-19478, OTP-19479,
+ OTP-19480, OTP-19481, OTP-19483, OTP-19484,
+ OTP-19485, OTP-19487, OTP-19488, OTP-19492,
+ OTP-19500, OTP-19502, OTP-19503, OTP-19505,
+ OTP-19507, OTP-19508, OTP-19509, OTP-19510,
+ OTP-19512, OTP-19513, OTP-19514, OTP-19515,
+ OTP-19516, OTP-19517, OTP-19518, OTP-19519,
+ OTP-19520, OTP-19521, OTP-19522, OTP-19523,
+ OTP-19524, OTP-19526, OTP-19528, OTP-19531,
+ OTP-19532, OTP-19534, OTP-19535, OTP-19536,
+ OTP-19537, OTP-19538, OTP-19539, OTP-19540,
+ OTP-19541, OTP-19544, OTP-19551, OTP-19553,
+ OTP-19554, OTP-19555, OTP-19556, OTP-19566,
+ OTP-19570, OTP-19572, OTP-19573, OTP-19574,
+ OTP-19575, OTP-19576, OTP-19578, OTP-19580,
+ OTP-19584, OTP-19586, OTP-19588, OTP-19589,
+ OTP-19590, OTP-19591, OTP-19593, OTP-19594,
+ OTP-19596, OTP-19597, OTP-19598, OTP-19601,
+ OTP-19603, OTP-19604, OTP-19607, OTP-19609,
+ OTP-19612, OTP-19613, OTP-19614, OTP-19615,
+ OTP-19616, OTP-19617, OTP-19618, OTP-19620,
+ OTP-19621
+Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113,
+ GH-8223, GH-8483, GH-8558, GH-8822, GH-8842,
+ GH-8967, GH-8985, GH-9092, GH-9113, GH-9173,
+ GH-9255, GH-9279, GH-9366, GH-9413, GH-9436,
+ GH-9438, GH-9487, GH-9500, GH-9536, GH-9565,
+ GH-9668, GH-9754, OTP-16608, OTP-19482,
+ OTP-19545, PR-7830, PR-7970, PR-8078,
+ PR-8100, PR-8207, PR-8261, PR-8429, PR-8494,
+ PR-8540, PR-8547, PR-8556, PR-8573, PR-8589,
+ PR-8590, PR-8592, PR-8600, PR-8625, PR-8642,
+ PR-8651, PR-8660, PR-8670, PR-8695, PR-8697,
+ PR-8699, PR-8704, PR-8734, PR-8772, PR-8792,
+ PR-8793, PR-8798, PR-8805, PR-8812, PR-8820,
+ PR-8862, PR-8885, PR-8887, PR-8894, PR-8913,
+ PR-8926, PR-8932, PR-8937, PR-8938, PR-8943,
+ PR-8945, PR-8960, PR-8962, PR-8966, PR-8968,
+ PR-8973, PR-8975, PR-8976, PR-8988, PR-9005,
+ PR-9006, PR-9013, PR-9019, PR-9020, PR-9042,
+ PR-9045, PR-9079, PR-9082, PR-9083, PR-9094,
+ PR-9095, PR-9106, PR-9116, PR-9119, PR-9121,
+ PR-9122, PR-9124, PR-9129, PR-9141, PR-9149,
+ PR-9154, PR-9171, PR-9186, PR-9192, PR-9207,
+ PR-9214, PR-9219, PR-9229, PR-9231, PR-9232,
+ PR-9246, PR-9251, PR-9253, PR-9269, PR-9271,
+ PR-9272, PR-9275, PR-9276, PR-9277, PR-9280,
+ PR-9287, PR-9289, PR-9298, PR-9299, PR-9305,
+ PR-9316, PR-9321, PR-9327, PR-9330, PR-9333,
+ PR-9334, PR-9342, PR-9344, PR-9363, PR-9376,
+ PR-9396, PR-9398, PR-9399, PR-9402, PR-9406,
+ PR-9408, PR-9409, PR-9410, PR-9417, PR-9433,
+ PR-9441, PR-9445, PR-9446, PR-9448, PR-9468,
+ PR-9472, PR-9478, PR-9484, PR-9488, PR-9495,
+ PR-9504, PR-9508, PR-9511, PR-9514, PR-9515,
+ PR-9516, PR-9517, PR-9518, PR-9519, PR-9537,
+ PR-9538, PR-9543, PR-9563, PR-9571, PR-9574,
+ PR-9579, PR-9582, PR-9586, PR-9587, PR-9590,
+ PR-9594, PR-9595, PR-9604, PR-9608, PR-9610,
+ PR-9615, PR-9621, PR-9625, PR-9630, PR-9639,
+ PR-9648, PR-9659, PR-9660, PR-9670, PR-9671,
+ PR-9677, PR-9678, PR-9680, PR-9705, PR-9711,
+ PR-9714, PR-9717, PR-9718, PR-9733, PR-9735,
+ PR-9755, PR-9758, PR-9759, PR-9772, PR-9774,
+ PR-9775, PR-9786
+System: OTP
+Release: 28
+Application: asn1-5.4, common_test-1.28, compiler-9.0,
+ crypto-5.6, debugger-6.0, dialyzer-5.4,
+ diameter-2.5, edoc-1.4, eldap-1.2.15,
+ erl_interface-5.6, erts-16.0, et-1.7.2,
+ eunit-2.10, ftp-1.2.4, inets-9.3.3,
+ jinterface-1.15, kernel-10.3, megaco-4.8,
+ mnesia-4.24, observer-2.18, odbc-2.16,
+ os_mon-2.11, parsetools-2.7, public_key-1.18,
+ reltool-1.0.2, runtime_tools-2.2, sasl-4.3,
+ snmp-5.19, ssh-5.3, ssl-11.3, stdlib-7.0,
+ syntax_tools-4.0, tftp-1.2.3, tools-4.1.2,
+ wx-2.5, xmerl-2.1.3
+Predecessor: OTP
+
+Check out the git tag OTP-28.0, and build a full OTP system including
+documentation.
+
+# HIGHLIGHTS
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Application(s): compiler, stdlib
+ Related Id(s): PR-8699, PR-9094
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8926
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Application(s): erts
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Application(s): erts, stdlib
+ Related Id(s): GH-8037, PR-8962
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Application(s): compiler, debugger, stdlib, syntax_tools
+ Related Id(s): PR-8625
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Application(s): stdlib
+ Related Id(s): GH-8099, PR-8100
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia,
+ parsetools, runtime_tools, snmp
+ Related Id(s): PR-9079
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299, PR-9610
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Application(s): otp, stdlib
+ Related Id(s): PR-9106
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Application(s): stdlib
+ Related Id(s): PR-9316
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Application(s): compiler
+ Related Id(s): PR-8695
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Application(s): stdlib
+ Related Id(s): PR-9468
+
+- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA
+ minimum requirements.
+
+ The SBOM contains a root package. Inside the root package there are multiple
+ SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and
+ the Erlang runtime system (erts). Inside each package, there may be multiple
+ packages, such as vendor dependency packages inside the erts SPDX package.
+
+ Own Id: OTP-19553
+ Application(s): otp
+ Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714
+
+- Added functions that produce utf-8 binaries instead of iolists. New functions
+ are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2,
+ io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3.
+
+ Own Id: OTP-19556
+ Application(s): stdlib
+ Related Id(s): PR-9772
+
+- An **experimental** API for a native debugger has been added. The main
+ components are the following:
+
+ - A new compiler option `beam_debug_info` for the Erlang compiler. When given,
+ most optimizations are disabled and debug information suitable for the
+ native debugger are added to generated BEAM files.
+ - A new `+D` emulator flag. When given, the VM becomes "debuggable", which
+ means that when modules that been compiled with the `beam_debug_info` option
+ are loaded, the code is instrumented so that one can enable and disable
+ breakpoints on executable lines.
+ - An experimental `erl_debugger` module with a new debugging API. Essentially,
+ it allows a single, local, process to be registered as the "debugger"
+ process for the node. This process is the one that will receive messages
+ notifying that a process hit a breakpoint. This way, the front-end
+ implementation of a debugger (such as edb from WhatApp) can be decoupled
+ from OTP.
+ - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y`
+ registers of a suspended process. Together with new code-information BIFs,
+ this let's a debugger show the values of variables in scope for a suspended
+ process.
+
+ Own Id: OTP-19609
+ Application(s): compiler, erts, kernel
+ Related Id(s): PR-8670, PR-9334, PR-9604
+
+- The ancient ASN.1 modules used in `public_key` has been replaced with more
+ modern versions, but we have strived to keep the documented Erlang API for the
+ `public_key` application compatible.
+
+ Own Id: OTP-19612
+ Application(s): asn1, public_key
+ Related Id(s): PR-9774
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+# POTENTIAL INCOMPATIBILITIES
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Application(s): stdlib
+ Related Id(s): PR-8772
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Application(s): compiler, erts, stdlib
+ Related Id(s): PR-8913
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Application(s): asn1
+ Related Id(s): PR-8798
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Application(s): compiler, erts, stdlib
+ Related Id(s): GH-8967, PR-8988
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Application(s): common_test
+ Related Id(s): PR-9045
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Application(s): ssh
+ Related Id(s): PR-9277
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Application(s): erts, stdlib
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Application(s): erts
+ Related Id(s): PR-8670
+
+- Change automatic hibernation of static supervisors so that they will hibernate
+ after being idle for 1 second instead of only after starting, dynamic
+ supervisors (simple_one_for_one) will not be hibernated at all. An option to
+ the supervisor is added to make it configurable for the application. This
+ option defaults to 1 second for static supervisors and to infinity for the
+ simple_one_for_one supervisors.
+
+ Own Id: OTP-19597
+ Application(s): stdlib
+ Related Id(s): PR-9680
+
+- The ancient ASN.1 modules used in `public_key` has been replaced with more
+ modern versions, but we have strived to keep the documented Erlang API for the
+ `public_key` application compatible.
+
+ Own Id: OTP-19612
+ Application(s): asn1, public_key
+ Related Id(s): PR-9774
+
+ *** HIGHLIGHT ***
+
+- The socket option names for built-in socket options in the module `socket` has
+ been cleaned up.
+
+ Now, for known socket options, it is only the canonical protocol names that
+ are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due
+ to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the
+ incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the
+ same protocol number as `ip`.
+
+ So, to reduce confusion, all enumerated protocol names with the same number,
+ are not allowed for the known protocol options, only the canonical name.
+
+ Own Id: OTP-19615
+ Application(s): erts
+ Related Id(s): PR-9718
+
+# OTP-28.0
+
+## Improvements and New Features
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Fixes the sarif generation in the scan code script
+
+ Own Id: OTP-19492
+ Related Id(s): PR-9409
+
+- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA
+ minimum requirements.
+
+ The SBOM contains a root package. Inside the root package there are multiple
+ SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and
+ the Erlang runtime system (erts). Inside each package, there may be multiple
+ packages, such as vendor dependency packages inside the erts SPDX package.
+
+ Own Id: OTP-19553
+ Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714
+
+ *** HIGHLIGHT ***
+
+- Fixes wrong relationship order for SPDX packages and mistaken inclusion of
+ erts documentation in the erts test SPDX package.
+
+ Own Id: OTP-19601
+ Related Id(s): PR-9717
+
+- sbom validates copyrights to be of a specific format, as defined in the
+ LICENSE-HEADERS.md, which will prevent mistakes in copyrights
+
+ Own Id: OTP-19607
+ Related Id(s): PR-9758
+
+# asn1-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The `undec_rest` option would be ignored in generated functions for exclusive
+ decode. The option is now respected, meaning that the return value from such
+ functions are now three-tuples instead of a two-tuples.
+
+ Own Id: OTP-19290
+ Related Id(s): PR-8798
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- The ancient ASN.1 modules used in `public_key` has been replaced with more
+ modern versions, but we have strived to keep the documented Erlang API for the
+ `public_key` application compatible.
+
+ Own Id: OTP-19612
+ Related Id(s): PR-9774
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of asn1-5.4
+>
+> erts-14.0, kernel-9.0, stdlib-5.0
+
+# common_test-1.28
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- The overage reports in HTML can be rendered in dark mode if requested by the
+ user's browser.
+
+ Own Id: OTP-19159
+ Related Id(s): PR-7830
+
+- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the
+ old behavior, set `abort_if_missing_suites` to `false` in your test runs.
+
+ Own Id: OTP-19355
+ Related Id(s): PR-9045
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of common_test-1.28
+>
+> 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-9.0
+
+## Fixed Bugs and Malfunctions
+
+- The compiler will now emit warnings when some map patterns cannot possibly
+ match because a previous clauses matches the same pattern. For example:
+
+ mm_1(#{}) -> a;
+ mm_1(#{b := B}) -> {b,B}.
+
+ mm_2(#{a := A}) -> {a,A};
+ mm_2(#{a := A, b := B}) -> {b,A,B}.
+
+ The second clause of these function can never match and the compiler will now
+ emit a warning for both of them.
+
+ Note that the compiler is not guaranteed to emit warnings for every possible
+ map pattern that cannot match.
+
+ Own Id: OTP-19141
+ Related Id(s): GH-8558, PR-8600
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The final validation step in the compiler will now reject modules containing
+ functions with more than 255 arguments. No impact is expected as the emulator
+ has always refused to load these modules.
+
+ Own Id: OTP-19376
+ Related Id(s): GH-9113, PR-9121
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Refactor code to not rely on `+nowarn_shadow_vars`.
+
+ Own Id: OTP-19574
+ Related Id(s): PR-9678
+
+## Improvements and New Features
+
+- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now
+ `compressed` and `deterministic`.
+
+ Own Id: OTP-19096
+ Related Id(s): PR-8494
+
+- Provided that the map argument for a maps:put/3 call is known to the
+ compiler to be a map, the compiler will replace such calls with the
+ corresponding update using the map syntax.
+
+ Own Id: OTP-19115
+ Related Id(s): PR-8540
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as
+ guard BIFs in order to gain performance.
+
+ The following BIFs that are optimized in this way: `binary_to_atom/1`,
+ `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and
+ `list_to_existing_atom/1`.
+
+ Own Id: OTP-19339
+ Related Id(s): PR-9042, PR-9122
+
+- The compiler now converts known documentation attribute metadata entries from
+ unicode:chardata/0 to unicode:unicode_binary/0.
+
+ Own Id: OTP-19394
+ Related Id(s): PR-9192
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- The compiler’s alias analysis pass is now both faster and less conservative,
+ allowing optimizations of records and binary construction to be applied in
+ more cases.
+
+ Own Id: OTP-19502
+ Related Id(s): PR-8695
+
+ *** HIGHLIGHT ***
+
+- BEAM files no longer include a `Meta` chunk if there are no features used.
+ That slightly decreases the size of BEAM files, and it also ensures that
+ `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules.
+
+ Own Id: OTP-19524
+ Related Id(s): PR-9517
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- An **experimental** API for a native debugger has been added. The main
+ components are the following:
+
+ - A new compiler option `beam_debug_info` for the Erlang compiler. When given,
+ most optimizations are disabled and debug information suitable for the
+ native debugger are added to generated BEAM files.
+ - A new `+D` emulator flag. When given, the VM becomes "debuggable", which
+ means that when modules that been compiled with the `beam_debug_info` option
+ are loaded, the code is instrumented so that one can enable and disable
+ breakpoints on executable lines.
+ - An experimental `erl_debugger` module with a new debugging API. Essentially,
+ it allows a single, local, process to be registered as the "debugger"
+ process for the node. This process is the one that will receive messages
+ notifying that a process hit a breakpoint. This way, the front-end
+ implementation of a debugger (such as edb from WhatApp) can be decoupled
+ from OTP.
+ - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y`
+ registers of a suspended process. Together with new code-information BIFs,
+ this let's a debugger show the values of variables in scope for a suspended
+ process.
+
+ Own Id: OTP-19609
+ Related Id(s): PR-8670, PR-9334, PR-9604
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of compiler-9.0
+>
+> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0
+
+# crypto-5.6
+
+## Fixed Bugs and Malfunctions
+
+- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded.
+
+ Own Id: OTP-19500
+ Related Id(s): PR-9119
+
+- Added copyright and license to crypto_ec_curves.erl
+
+ Own Id: OTP-19554
+
+## Improvements and New Features
+
+- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1
+ functions have been deprecated.
+
+ Own Id: OTP-19155
+ Related Id(s): PR-8592
+
+- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is
+ loaded without application `crypto` being loaded. In this case FIPS will be
+ disabled even if the user had set application parameter `fips_mode`.
+
+ Own Id: OTP-19156
+ Related Id(s): PR-8590
+
+- The functionality of crypto:crypto_one_time_aead/6 is now also available in
+ the new functions crypto:crypto_one_time_aead_init/4 and
+ crypto:crypto_one_time_aead/4, which makes it possible to reuse
+ initialization.
+
+ Own Id: OTP-19426
+ Related Id(s): PR-9289
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If
+ present, it contains the version of the FIPS provider which may be different
+ than the version of the rest of OpenSSL.
+
+ Own Id: OTP-19487
+ Related Id(s): GH-9366, PR-9410
+
+- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and
+ `cmac_cipher_algorithm()`.
+
+ Own Id: OTP-19510
+ Related Id(s): PR-9448
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of crypto-5.6
+>
+> erts-9.0, kernel-6.0, stdlib-3.9
+
+# debugger-6.0
+
+## Fixed Bugs and Malfunctions
+
+- Error handling has been improved when modules fail to load.
+
+ Own Id: OTP-19484
+ Related Id(s): GH-7819, PR-9399
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of debugger-6.0
+>
+> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0
+
+# dialyzer-5.4
+
+## Fixed Bugs and Malfunctions
+
+- The `-Wno_unknown` option will now prevent a warning being printed to standard
+ output when the command line interface is used.
+
+ Own Id: OTP-19262
+ Related Id(s): GH-8822, PR-8885
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of dialyzer-5.4
+>
+> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0
+
+# diameter-2.5
+
+## Fixed Bugs and Malfunctions
+
+- With this change diameter will not crash when decoding a DiameterURI without
+ port number.
+
+ Own Id: OTP-19620
+ Related Id(s): PR-9321
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- With this change diameter will not use slave terminology
+
+ Own Id: OTP-19621
+ Related Id(s): PR-9786
+
+> #### Full runtime dependencies of diameter-2.5
+>
+> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0
+
+# edoc-1.4
+
+## Fixed Bugs and Malfunctions
+
+- Refactor code to not rely on `+nowarn_shadow_vars`.
+
+ Own Id: OTP-19574
+ Related Id(s): PR-9678
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of edoc-1.4
+>
+> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7
+
+# eldap-1.2.15
+
+## Fixed Bugs and Malfunctions
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of eldap-1.2.15
+>
+> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4
+
+# erl_interface-5.6
+
+## Improvements and New Features
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5.
+
+ Own Id: OTP-19614
+ Related Id(s): PR-9775
+
+## Known Bugs and Problems
+
+- The `ei` API for decoding/encoding terms is not fully 64-bit compatible since
+ terms that have a representation on the external term format larger than 2 GB
+ cannot be handled.
+
+ Own Id: OTP-16607
+ Related Id(s): OTP-16608
+
+# erts-16.0
+
+## Fixed Bugs and Malfunctions
+
+- ETS tables with more than 2 billion keys are now supported.
+
+ Own Id: OTP-19144
+ Related Id(s): PR-8589
+
+- The zlib library included in Erlang/OTP has been updated to version 1.3.1.
+
+ Own Id: OTP-19259
+ Related Id(s): PR-8862
+
+- `to_erl` no longer clears the screen when attaching to a `run_erl` session.
+
+ Own Id: OTP-19263
+ Related Id(s): PR-8943
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed a bug where `erlc` would crash if its path contained spaces.
+
+ Own Id: OTP-19295
+ Related Id(s): PR-8937
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a
+ timezone without daylight saving (for example `UTC`) to assume that the
+ provided localtime does not have DST. This has always been the behaviour, but
+ glibc versions after 2.37 changed it so that the behavior in Erlang also
+ changed.
+
+ Own Id: OTP-19453
+ Related Id(s): PR-9207
+
+- Support for the `TZ` environment variable has been added on Windows. Before
+ this change only the time zone configured in the OS was ever used.
+
+ Own Id: OTP-19454
+ Related Id(s): PR-9207
+
+- Suppressed various warnings when building the emulator with recent versions of
+ GCC
+
+ Own Id: OTP-19488
+ Related Id(s): GH-9413, PR-9417
+
+- Fixed a bug in re:run and re:compile where the pattern parameter would be read
+ incorrectly if it was a sub-binary.
+
+ Own Id: OTP-19507
+ Related Id(s): GH-9438, PR-9478
+
+- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be
+ part of the directory path when building Erlang/OTP. Bug has been present
+ since R11B released 2006.
+
+ Own Id: OTP-19518
+ Related Id(s): GH-9487, PR-9488
+
+- Fixed the index types of modules `atomics` and `counters` from `integer()` to
+ `pos_integer()`, which is more correct.
+
+ Own Id: OTP-19532
+ Related Id(s): PR-9538
+
+- Fix `erl` flags `+Q`, `+P` and `+t` to not allow values greater
+ than 4294975487. Before this fix, the runtime would either truncate the value
+ or crash depending on which value was given.
+
+ Own Id: OTP-19594
+ Related Id(s): GH-9668, PR-9671
+
+- The socket option names for built-in socket options in the module `socket` has
+ been cleaned up.
+
+ Now, for known socket options, it is only the canonical protocol names that
+ are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due
+ to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the
+ incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the
+ same protocol number as `ip`.
+
+ So, to reduce confusion, all enumerated protocol names with the same number,
+ are not allowed for the known protocol options, only the canonical name.
+
+ Own Id: OTP-19615
+ Related Id(s): PR-9718
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- On windows, socket:sendv could incorrectly return {ok, integer()} on Windows.
+
+ Own Id: OTP-19617
+ Related Id(s): OTP-19482
+
+## Improvements and New Features
+
+- Functionality making it possible for processes to enable reception of
+ priority messages has been introduced in accordance with EEP 76.
+
+ Own Id: OTP-19198
+ Related Id(s): PR-9269, PR-9519, PR-9590
+
+ *** HIGHLIGHT ***
+
+- The trace:system/3 function has been added. It has a similar interface as
+ erlang:system_monitor/2 but it also supports trace sessions.
+
+ Own Id: OTP-19271
+ Related Id(s): PR-8660
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Two BIFs have been added to the `erlang` module.
+
+ erlang:processes_iterator/0 returns a process iterator that can be used to
+ iterate through the process table.
+
+ erlang:process_next/1 takes in a process iterator and returns a 2-tuple,
+ consisting of a process identifier and a new process iterator. When the
+ process iterator runs out of processes in the process table, `none` will be
+ returned.
+
+ Using these BIFs to scan the processes scales better than using
+ erlang:processes/0, at the cost of giving less consistency guarantees.
+ Process identifiers returned from consecutive calls of erlang:process_next/1
+ may not be a consistent snapshot of all elements existing in the table during
+ any of the calls. A process identifier is only guaranteed to be returned from
+ a call to erlang:processes_next/1 if it was alive before the call to
+ erlang:processes_iterator/0 and was still alive when
+ erlang:processes_next/1 returned `none`.
+
+ Own Id: OTP-19369
+ Related Id(s): PR-9129
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- When booting the runtime system on a 32-bit computer with a single core, the
+ boot code will try to minimize the peak memory use by disabling parallel
+ loading of BEAM files.
+
+ Own Id: OTP-19450
+ Related Id(s): PR-9342
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- `erlc` will now write compiler warnings and errors to standard error, instead
+ of standard output, in common with other language compilers.
+
+ Own Id: OTP-19460
+ Related Id(s): GH-9255, PR-9363
+
+- Fixed the Windows build to always include `.pdb` files for all DLLs and
+ executables to help with debugging.
+
+ Own Id: OTP-19465
+ Related Id(s): PR-9229
+
+- Improve the naming of the (internal) esock mutex(es). It is now possible to
+ configure (as in autoconf) the use of simple names for the esock mutex(es).
+
+ Own Id: OTP-19472
+ Related Id(s): #9388
+
+- An optimization for appending 0 bits to a binary was removed in patch releases
+ for OTP versions 25, 26, and 27. This optimization has been reintroduced in
+ Erlang/OTP 28.
+
+ Own Id: OTP-19473
+ Related Id(s): PR-8697, PR-9396
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on
+ systems with kernel polling enabled (that is most Unix systems), file
+ descriptors that are always re-enabled as soon as they trigger are now part of
+ a specialized pollset just as `driver_select`. This reduces the CPU usage in
+ such scenarios as the erts does not have to re-insert the FD everytime it it
+ triggered. As a result of this optimization `socket` based reading uses a
+ lot less CPU and achieves a higher throughput.
+
+ Own Id: OTP-19479
+ Related Id(s): PR-9275
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- The Windows installer no longer creates the `erl.ini` file, making
+ installations redistributable.
+
+ Own Id: OTP-19481
+ Related Id(s): PR-9330
+
+- Added erlang:hibernate/0, which hibernates a process without discarding the
+ stack.
+
+ Own Id: OTP-19503
+ Related Id(s): PR-9406
+
+- The asmjit library (used by BeamJIT) has been updated to version
+ 029075b84bf0161a761beb63e6eda519a29020db.
+
+ Own Id: OTP-19509
+ Related Id(s): PR-9495
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- If a process being suspended using `erlang:suspend_process()` currently is
+ waiting in a `receive ... after` expression, the timer for the timeout will
+ now also be suspended until the process is resumed.
+
+ Own Id: OTP-19536
+ Related Id(s): PR-8670
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+- The `+R` emulator options has been removed. It has had any effect since
+ Erlang/OTP R9.
+
+ Own Id: OTP-19551
+ Related Id(s): PR-9608
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Increase the default inet-driver buffer size(s). Also introduce kernel
+ parameters for UDP and SCTP to change the sizes when creating (those) sockets.
+
+ Own Id: OTP-19576
+
+- Add `+JPperfdirectory <dir>` for specifying which directory Erlang should
+ place perf symbol information files.
+
+ Own Id: OTP-19589
+ Related Id(s): GH-9500, PR-9639
+
+- Allow multiple static nifs to be part of the same archive. See the NIF
+ documentation for details.
+
+ Own Id: OTP-19590
+ Related Id(s): PR-9625
+
+- Various improvements reducing lock contention on run queues due to task
+ stealing.
+
+ Own Id: OTP-19591
+ Related Id(s): PR-9594
+
+- The new implementation has the same behavior as the previous one. The newer
+ compilers already have native support for FP16, so this implementation is only
+ relevant for older compilers. For this reason, the new implementation has not
+ been tested for speed.
+
+ Own Id: OTP-19603
+ Related Id(s): PR-9735
+
+- An **experimental** API for a native debugger has been added. The main
+ components are the following:
+
+ - A new compiler option `beam_debug_info` for the Erlang compiler. When given,
+ most optimizations are disabled and debug information suitable for the
+ native debugger are added to generated BEAM files.
+ - A new `+D` emulator flag. When given, the VM becomes "debuggable", which
+ means that when modules that been compiled with the `beam_debug_info` option
+ are loaded, the code is instrumented so that one can enable and disable
+ breakpoints on executable lines.
+ - An experimental `erl_debugger` module with a new debugging API. Essentially,
+ it allows a single, local, process to be registered as the "debugger"
+ process for the node. This process is the one that will receive messages
+ notifying that a process hit a breakpoint. This way, the front-end
+ implementation of a debugger (such as edb from WhatApp) can be decoupled
+ from OTP.
+ - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y`
+ registers of a suspended process. Together with new code-information BIFs,
+ this let's a debugger show the values of variables in scope for a suspended
+ process.
+
+ Own Id: OTP-19609
+ Related Id(s): PR-8670, PR-9334, PR-9604
+
+ *** HIGHLIGHT ***
+
+- Update internal `ryu` implementation to use latest version. The new version is
+ a little bit faster in some scenarios. `ryu` is used by `float_to_list/1` and
+ similar functions to convert floats to strings.
+
+ Own Id: OTP-19613
+ Related Id(s): PR-9733
+
+- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5.
+
+ Own Id: OTP-19614
+ Related Id(s): PR-9775
+
+- Small optimization in binary_to_term by not allocating an unnecessary large
+ native stack frame.
+
+ Own Id: OTP-19618
+ Related Id(s): PR-9759
+
+> #### Full runtime dependencies of erts-16.0
+>
+> kernel-9.0, sasl-3.3, stdlib-4.1
+
+# et-1.7.2
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of et-1.7.2
+>
+> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
+
+# eunit-2.10
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of eunit-2.10
+>
+> erts-9.0, kernel-5.3, stdlib-3.4
+
+# ftp-1.2.4
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of ftp-1.2.4
+>
+> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5
+
+# inets-9.3.3
+
+## Fixed Bugs and Malfunctions
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- Enhanced http client documentation.
+
+ Own Id: OTP-19520
+ Related Id(s): PR-9516
+
+- Enhance made to mod_esi documentation
+
+ Own Id: OTP-19521
+ Related Id(s): PR-9472
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of inets-9.3.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
+
+# jinterface-1.15
+
+## Improvements and New Features
+
+- The `.class` files of jinterface are now part of the prebuilt archive using
+ Java 8.
+
+ Own Id: OTP-19308
+ Related Id(s): PR-8960
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+# kernel-10.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed an issue where output to the shell would not print the prompt on a new
+ line.
+
+ Own Id: OTP-19228
+ Related Id(s): PR-8820
+
+- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io
+ requests in latin1 encoding will not be translated to unicode and back to
+ latin1.
+
+ Own Id: OTP-19296
+ Related Id(s): PR-9013
+
+- Fixed a bug where a composing unicode character would bind to a character not
+ available to the user and deleting that character would cause a crash.
+
+ Own Id: OTP-19297
+ Related Id(s): PR-9005
+
+- The `-noshell` mode has been updated to read data lazily from standard
+ input. Before this fix any data would be read greedily which meant that Erlang
+ could consume data not meant for it. It also meant that in order for
+ shell:start_interactive/0 to work on Windows an API that did not support
+ reading of Unicode characters had to be used.
+
+ Own Id: OTP-19313
+ Related Id(s): GH-8113, PR-8962
+
+- The Erlang shell no longer crashes when a shell prompt ends with an escape
+ sequence.
+
+ Own Id: OTP-19414
+ Related Id(s): PR-9272
+
+- code:get_doc/1 now works for cover-compiled modules.
+
+ Own Id: OTP-19513
+ Related Id(s): PR-9433
+
+- An infinite loop in CNAME loop detection that can cause Out Of Memory has been
+ fixed. This affected CNAME lookup with the internal DNS resolver.
+
+ Own Id: OTP-19544
+ Related Id(s): PR-9587, OTP-19545
+
+- The internal resolver framework has been fixed to wait with the first resolver
+ lookup until the ERL_INETRC environment variable has been applied.
+
+ Previously, on some platform(s) (Linux) a first lookup when figuring out the
+ domain name was always placed on the `native` resolver even if ERL_INETRC was
+ used to disable it.
+
+ Own Id: OTP-19555
+ Related Id(s): PR-9543
+
+- Fix `logger:add_handler(default, ...)` to correctly replay events generated
+ during startup when the default logger is set to `undefined` in logger's
+ configuration parameters.
+
+ Own Id: OTP-19588
+ Related Id(s): GH-9436, PR-9595
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- application:load/1 slows down as the number of directories in the code path
+ increases because the call to code:where_is_file/1 for the '.app' file must
+ scan each directory for the app.
+
+ `code_server` maintains a cache of the contents of directories in the path.
+ Re-using that cache when searching for '.app' files in application:load/1
+ may improve its runtime, especially when loading multiple applications.
+
+ Own Id: OTP-19194
+ Related Id(s): PR-8078
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to
+ os:set_signal/2 where available.
+
+ Own Id: OTP-19278
+ Related Id(s): PR-8887, PR-8938
+
+- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly
+ allowed to connect to the node by calling net_kernel:allow/1
+
+ Own Id: OTP-19287
+ Related Id(s): PR-8207
+
+- Documentation chunks (EEP-48) has been updated to include the following
+ reserved metadata fields: `behaviours`, `group`, `source_path`, and
+ `source_annos`. The compiler has also been updated to emit this metadata. See
+ the EEP-48 documentation for more details.
+
+ Own Id: OTP-19306
+ Related Id(s): PR-8945, PR-8975
+
+- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5
+ functions now also accept an option map as last argument containing the
+ `timeout` and `always_spawn` options. The `always_spawn` option can be used in
+ order to ensure that the call operation will use a newly spawned process when
+ executing the remote call.
+
+ Own Id: OTP-19343
+ Related Id(s): PR-8642
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket
+ (open).
+
+ Own Id: OTP-19386
+
+- `t:io:standard_error/0` has been updated to write via a NIF API instead of a
+ port. This allows it to access the dirty-scheduler pool and make sure that
+ writes have been written to the OSs `stderr` when io:format/3 and equivalent
+ return.
+
+ Own Id: OTP-19401
+ Related Id(s): PR-9116
+
+- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise
+ an exception if the command fails to execute.
+
+ Own Id: OTP-19404
+ Related Id(s): PR-9082
+
+- A `socket` option `{otp,select_read}` has been added that enables keeping a
+ socket in the VM select/poll set between calls to recv functions.
+
+ This increases throughput by reducing the number of calls to said functions.
+
+ Own Id: OTP-19451
+ Related Id(s): PR-9344
+
+- Add a configure chapter to the socket usage guide
+
+ Own Id: OTP-19522
+ Related Id(s): PR-9508
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Increase the default inet-driver buffer size(s). Also introduce kernel
+ parameters for UDP and SCTP to change the sizes when creating (those) sockets.
+
+ Own Id: OTP-19576
+
+- An **experimental** API for a native debugger has been added. The main
+ components are the following:
+
+ - A new compiler option `beam_debug_info` for the Erlang compiler. When given,
+ most optimizations are disabled and debug information suitable for the
+ native debugger are added to generated BEAM files.
+ - A new `+D` emulator flag. When given, the VM becomes "debuggable", which
+ means that when modules that been compiled with the `beam_debug_info` option
+ are loaded, the code is instrumented so that one can enable and disable
+ breakpoints on executable lines.
+ - An experimental `erl_debugger` module with a new debugging API. Essentially,
+ it allows a single, local, process to be registered as the "debugger"
+ process for the node. This process is the one that will receive messages
+ notifying that a process hit a breakpoint. This way, the front-end
+ implementation of a debugger (such as edb from WhatApp) can be decoupled
+ from OTP.
+ - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y`
+ registers of a suspended process. Together with new code-information BIFs,
+ this let's a debugger show the values of variables in scope for a suspended
+ process.
+
+ Own Id: OTP-19609
+ Related Id(s): PR-8670, PR-9334, PR-9604
+
+ *** HIGHLIGHT ***
+
+> #### Full runtime dependencies of kernel-10.3
+>
+> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0
+
+# megaco-4.8
+
+## Fixed Bugs and Malfunctions
+
+- Add missing spec and doc for exported functions.
+
+ Own Id: OTP-19523
+
+## Improvements and New Features
+
+- Nano seconds are now used for (example) meas result presentation.
+
+ Nanoseconds are now used, for example, in `meas` result presentations.
+
+ Own Id: OTP-19403
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Add copyright notice to files that still had none.
+
+ Own Id: OTP-19570
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- Tweaked some of the meas examples in order to make them benchmark compatible.
+
+ Own Id: OTP-19598
+
+> #### Full runtime dependencies of megaco-4.8
+>
+> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14,
+> stdlib-2.5
+
+# mnesia-4.24
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of mnesia-4.24
+>
+> erts-9.0, kernel-5.3, stdlib-5.0
+
+# observer-2.18
+
+## Fixed Bugs and Malfunctions
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- With this change etop from observer application will scroll as top from shell
+
+ Own Id: OTP-19528
+ Related Id(s): PR-9659
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of observer-2.18
+>
+> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3
+
+# odbc-2.16
+
+## Fixed Bugs and Malfunctions
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- Updated odbc configure to enable easier use of iodbc driver.
+
+ Own Id: OTP-19456
+ Related Id(s): PR-9083
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of odbc-2.16
+>
+> erts-6.0, kernel-3.0, stdlib-2.0
+
+# os_mon-2.11
+
+## Fixed Bugs and Malfunctions
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- `m:disksup` will now recognize HAMMER2 volumes.
+
+ Own Id: OTP-19207
+ Related Id(s): PR-8704
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of os_mon-2.11
+>
+> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0
+
+# parsetools-2.7
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of parsetools-2.7
+>
+> erts-6.0, kernel-3.0, stdlib-3.4
+
+# public_key-1.18
+
+## Fixed Bugs and Malfunctions
+
+- Enable public_key to decode legacy certs using md2 hash.
+
+ Own Id: OTP-19616
+ Related Id(s): GH-9754, PR-9755
+
+## Improvements and New Features
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Ignore instead of crashing unhandled entries when loading CA-certificates.
+
+ Own Id: OTP-19573
+ Related Id(s): GH-9565, PR-9677
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- The ancient ASN.1 modules used in `public_key` has been replaced with more
+ modern versions, but we have strived to keep the documented Erlang API for the
+ `public_key` application compatible.
+
+ Own Id: OTP-19612
+ Related Id(s): PR-9774
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of public_key-1.18
+>
+> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0
+
+# reltool-1.0.2
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of reltool-1.0.2
+>
+> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+# runtime_tools-2.2
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- With this change observer will use cheaper iterators to avoid locking when not
+ necessary.
+
+ Own Id: OTP-19584
+ Related Id(s): PR-9711
+
+> #### Full runtime dependencies of runtime_tools-2.2
+>
+> erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0
+
+# sasl-4.3
+
+## Fixed Bugs and Malfunctions
+
+- Fixed the documentation for the ExtraFiles option to systools:make_tar/2.
+
+ Own Id: OTP-19279
+ Related Id(s): GH-8842, PR-8894
+
+## Improvements and New Features
+
+- `.appup` files are now included in releases in order to make it possible to
+ create upgrade packages from an installed release.
+
+ Own Id: OTP-19398
+ Related Id(s): PR-8973
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of sasl-4.3
+>
+> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14
+
+# snmp-5.19
+
+## Improvements and New Features
+
+- EEP-69: Nominal Types has been implemented. As a side effect, nominal types
+ can encode opaque types. We changed all opaque-handling logic and improved
+ opaque warnings in Dialyzer.
+
+ All existing Erlang type systems are structural: two types are seen as
+ equivalent if their structures are the same. Type comparisons are based on the
+ structures of the types, not on how the user explicitly defines them. For
+ example, in the following example, `meter()` and `foot()` are equivalent. The
+ two types can be used interchangeably. Neither of them differ from the basic
+ type `integer()`.
+
+ -type meter() :: integer().
+ -type foot() :: integer().
+
+ Nominal typing is an alternative type system, where two types are equivalent
+ if and only if they are declared with the same type name. The EEP proposes one
+ new syntax -nominal for declaring nominal types. Under nominal typing,
+ `meter()` and `foot()` are no longer compatible. Whenever a function expects
+ type `meter()`, passing in type `foot()` would result in a Dialyzer error.
+
+ -nominal meter() :: integer().
+ -nominal foot() :: integer().
+
+ More nominal type-checking rules can be found in the EEP. It is worth noting
+ that most work for adding nominal types and type-checking is in
+ `erl_types.erl`. The rest are changes that removed the previous opaque
+ type-checking, and added an improved version of it using nominal type-checking
+ with reworked warnings.
+
+ Backwards compatibility for opaque type-checking is not preserved by this PR.
+ Previous opaque warnings can appear with slightly different wordings. A new
+ kind of opaque warning `opaque_union` is added, together with a Dialyzer
+ option `no_opaque_union` to turn this kind of warnings off.
+
+ Own Id: OTP-19364
+ Related Id(s): PR-9079
+
+ *** HIGHLIGHT ***
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- Add copyright notice to files that still had none.
+
+ Own Id: OTP-19572
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of snmp-5.19
+>
+> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14,
+> stdlib-5.0
+
+# ssh-5.3
+
+## Fixed Bugs and Malfunctions
+
+- The implementation of the ssh server-side supervision tree has been improved.
+
+ Own Id: OTP-19324
+ Related Id(s): GH-8223, PR-8968
+
+- SSH daemon accepts fun as tcpip_tunnel_in option. This provides more control
+ over TCP connection tunnel handle by server.
+
+ Own Id: OTP-19566
+ Related Id(s): PR-9571
+
+## Improvements and New Features
+
+- The `Erlang SSH daemon` now uses the same backend to handle multiline
+ functionality as the Erlang shell.
+
+ Own Id: OTP-19226
+ Related Id(s): PR-8805
+
+- CBC algorithms are not offered by default. See Configuring algorithms in SSH
+ if you wish to enable them.
+
+ Own Id: OTP-19420
+ Related Id(s): PR-9277
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Daemon can be configured (bannerfun option) to send banner message at the
+ beginning of user authentication.
+
+ Own Id: OTP-19535
+ Related Id(s): PR-9149
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- For interoperability reasons, SSH ignore message with no length specified is
+ treated as message with zero length specified - it will not cause decode
+ error.
+
+ Own Id: OTP-19586
+ Related Id(s): PR-9214
+
+- Documentation improvements.
+
+ Own Id: OTP-19596
+ Related Id(s): PR-9298
+
+> #### Full runtime dependencies of ssh-5.3
+>
+> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1,
+> stdlib-5.0, stdlib-6.0
+
+# ssl-11.3
+
+## Improvements and New Features
+
+- Refactoring, minor optimizations and improved log printouts.
+
+ Own Id: OTP-19367
+ Related Id(s): PR-9019
+
+- supervisor:which_child/2 is now used to make start-up code for
+ TLS-connections simpler and more straight forward, and to increase stability
+ and maintainability of the ssl application.
+
+ Own Id: OTP-19406
+ Related Id(s): PR-9231
+
+- The data handling for tls-v1.3 has been optimized.
+
+ Own Id: OTP-19430
+ Related Id(s): PR-9305
+
+- Added experimental socket support.
+
+ Own Id: OTP-19463
+ Related Id(s): PR-9398
+
+- Improve code health by removing dead code.
+
+ Own Id: OTP-19531
+ Related Id(s): PR-9563
+
+- A test module for TLS distribution over `socket` has been implemented.
+
+ Own Id: OTP-19539
+ Related Id(s): PR-9511
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of ssl-11.3
+>
+> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4,
+> runtime_tools-1.15.1, stdlib-7.0
+
+# stdlib-7.0
+
+## Fixed Bugs and Malfunctions
+
+- Shell help now orders the commands in alphabetical order.
+
+ Own Id: OTP-19161
+ Related Id(s): PR-8573
+
+- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3
+ and so on) have been updated to not throw an error if the process to be
+ stopped exits with the same reason as given to proc_lib:stop/3.
+
+ Own Id: OTP-19233
+ Related Id(s): PR-8772
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The size of an atom in the Erlang source code was limited to 255 bytes in
+ previous releases, meaning that an atom containing only emojis could contain
+ only 63 emojis.
+
+ While atoms are still only allowed to contain 255 characters, the number of
+ bytes is no longer limited.
+
+ External tools that parse the `AtU8` chunk of a BEAM file directly need to be
+ updated. Tools that use
+ `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table
+ will continue to work.
+
+ Own Id: OTP-19285
+ Related Id(s): PR-8913
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- argparse:help/1 now accepts unicode:chardata/0.
+
+ Own Id: OTP-19303
+ Related Id(s): PR-8932
+
+- The literals chunk in BEAM is no longer compressed, resulting in slightly
+ smaller BEAM files when a BEAM file is stripped using
+ beam_lib:strip_files/1.
+
+ This is a potential incompatibility for tools that read and interpret the
+ contents of the literal chunk. One way to update such tools to work with the
+ new format is to retrieve the chunk using
+ `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2).
+
+ Own Id: OTP-19323
+ Related Id(s): GH-8967, PR-8988
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did
+ not start the traversal from root nodes. This fix makes both traversals only
+ start or restart from a root node in one of the components, or an arbitrary
+ node if no root node can be visited.
+
+ Own Id: OTP-19393
+ Related Id(s): PR-9171
+
+- Auto-completion in the shell is now significantly faster for function
+ parameters that uses complex custom types.
+
+ Own Id: OTP-19413
+ Related Id(s): PR-9271
+
+- Stringfying a non-latin1 atom will now produce a readable string instead of
+ encoding each character using `\x{...}` escape sequences. Example:
+
+ -define(S(T), ??T).
+
+ atom() ->
+ ?S('атом').
+
+ The `atom/0` function now returns `"'атом'"` instead of
+ `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`.
+
+ Own Id: OTP-19421
+ Related Id(s): GH-9173, PR-9276
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+- `m:dets` could print error messages to standard output when repairing DETS
+ files. This has been changed to send the messages to `logger`.
+
+ `ets:fun2ms` would print an error message to standard output as well as
+ returning an error tuple. The printing of the message has been removed.
+
+ Own Id: OTP-19427
+ Related Id(s): PR-9232, PR-9446
+
+- The functions for converting to and from the RFC1339 date and time format
+ would not properly handle fractional seconds for negative times.
+
+ Own Id: OTP-19441
+ Related Id(s): GH-9279, PR-9280
+
+- Replaced calls to deprecated `crypto:start()` with
+ `application:start(crypto)`.
+
+ Own Id: OTP-19485
+ Related Id(s): PR-8592
+
+- Corrected the spec of ets:update_element/4.
+
+ Own Id: OTP-19514
+ Related Id(s): PR-9504
+
+- Corrected the spec for ets:info/1.
+
+ Own Id: OTP-19515
+ Related Id(s): PR-9514
+
+- Details in the hibernation implementation and time-out handling has been
+ improved for `gen_statem`. In particular to avoid selective receive when
+ cancelling a time-out.
+
+ Own Id: OTP-19540
+ Related Id(s): PR-9579
+
+- Fix `zip` extraction to wrap invalid DOS timestamps to their correct value
+ instead of returning the actual value. Before this fix the timestamp returned
+ could have a second greater than 59. The bug has been present since Erlang/OTP
+ 27.1.
+
+ Own Id: OTP-19593
+ Related Id(s): GH-9536, PR-9537
+
+- Enhance specs of timeout for improving documentation and dialyzer analysis.
+
+ Own Id: OTP-19604
+ Related Id(s): PR-9574
+
+## Improvements and New Features
+
+- Singleton type variables in an union type do not make sense from Dialyzer's
+ point of view. The following example is ill-typed:
+
+ -spec run_test(Opts) -> term()
+ when Opts :: {join_specs, Bool} | {test, Bool}.
+
+ This used to be reported as a warning. In OTP-28, this is an error
+
+ Own Id: OTP-19125
+ Related Id(s): PR-8556
+
+- By default, sets created by the `sets` module will now be represented as
+ maps.
+
+ Own Id: OTP-19127
+ Related Id(s): PR-8429
+
+- For various error types, the compiler now tries to suggest potential fixes by
+ adding "did you mean ...?" at the end of error messages.
+
+ When a function is used with wrong arity, the compiler will try to suggest a
+ defined function with the same name but a different arity. For example, given
+ the following module:
+
+ -module(typos).
+ -export([t/0]).
+ bar(A) -> A.
+ bar(A,A,A) -> A.
+ bar(A,A,A,A) -> A.
+ t() -> bar(0, 0).
+
+ The compiler will emit the following message:
+
+ typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4?
+ % 6| t() -> bar(0, 0).
+ % | ^
+
+ For compiler errors that can easily be caused by typos, the compiler will try
+ to suggest what the correct variable or function name, could be. For example,
+ given the following module:
+
+ -module(typos).
+ -export([bar/2]).
+
+ bar(A0, B0) ->
+ A + B.
+
+ the compiler will emit the following error messages:
+
+ typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'?
+ % 5| A + B.
+ % | ^
+
+ typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'?
+ % 5| A + B.
+ % | ^
+
+ Error types that now suggest correct arities: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`.
+
+ Error types that now suggest correct names: `bad_inline`, `undefined_nif`,
+ `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`,
+ `undefined_record`, `undefined_field`, `unbound_var`.
+
+ Using a function with wrong arity has higher precedence than having a typo in
+ the function name. If the compiler can find a defined function with the same
+ name but a different arity, it will not suggest a defined function with a
+ close-enough name, regardless of arity.
+
+ Own Id: OTP-19180
+ Related Id(s): PR-8699, PR-9094
+
+ *** HIGHLIGHT ***
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- Before restarting a child, a supervisor must check if the restart limit is
+ reached. This adds a penalty to the overall restart time, which should be kept
+ low. The algorithm has been optimized from 2\*O(n) to O(n) behavior.
+
+ Own Id: OTP-19204
+ Related Id(s): PR-8261
+
+- Added the possibility to configure shell docs column width through the stdlib
+ parameter `shell_docs_columns`.
+
+ Own Id: OTP-19224
+ Related Id(s): PR-8651
+
+- The io:setopts/2 function now accepts the `line_history` option for more
+ explicit handling of when to save shell history.
+
+ Own Id: OTP-19230
+ Related Id(s): PR-8792
+
+- The shell now prints a help message explaining how to interrupt a running
+ command when stuck executing a command for longer than 5 seconds.
+
+ Own Id: OTP-19231
+ Related Id(s): PR-8793
+
+- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and
+ produced as output of calendar:system_time_to_rfc3339/2.
+
+ Own Id: OTP-19250
+ Related Id(s): PR-8812
+
+- The `erl -noshell` mode has been updated to have two sub modes called `raw`
+ and `cooked`, where `cooked` is the old default behaviour and `raw` can be
+ used to bypass the line-editing support of the native terminal. Using `raw`
+ mode it is possible to read keystrokes as they happen without the user having
+ to press Enter. Also, the `raw` mode does not echo the typed characters to
+ stdout. An example of how to create a tic-tac-toe game using this mechanism is
+ included in the documentation.
+
+ Own Id: OTP-19314
+ Related Id(s): GH-8037, PR-8962
+
+ *** HIGHLIGHT ***
+
+- Added io:get_password/0 that can read passwords from stdin when in "raw"
+ `-noshell` mode.
+
+ Own Id: OTP-19315
+ Related Id(s): PR-8962, PR-9006
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- New options for suppressing behaviour warnings have been added:
+
+ - `nowarn_conflicting_behaviours`
+ - `nowarn_undefined_behaviour_func`
+ - `nowarn_undefined_behaviour`
+ - `nowarn_undefined_behaviour_callbacks`
+ - `nowarn_ill_defined_behaviour_callbacks`
+ - `nowarn_ill_defined_optional_callbacks`
+
+ Own Id: OTP-19334
+ Related Id(s): GH-8985, PR-9020
+
+- The `join(Binaries, Separator)` function that joins a list of binaries has
+ been added to the `binary` module.
+
+ Own Id: OTP-19337
+ Related Id(s): GH-8099, PR-8100
+
+ *** HIGHLIGHT ***
+
+- The supervisor:which_child/2 function has been added to facilitate getting
+ the pid of a sibling process; that is a process under same supervisor as the
+ process that calls to call the new function.
+
+ Own Id: OTP-19345
+ Related Id(s): PR-8976
+
+- The function erl_anno:set_end_location/2 for setting the end location of a
+ token has been added.
+
+ Own Id: OTP-19354
+ Related Id(s): PR-8966
+
+- Added a warning for calling non-exported functions with the remote function
+ call syntax from the same module, and likewise for the remote fun syntax.
+
+ Own Id: OTP-19371
+ Related Id(s): GH-9092, PR-9095
+
+- The `warn_deprecated_catch` option enables warnings for use of old-style catch
+ expressions on the form `catch Expr` instead of the modern
+ `try ... catch ... end`. To prevent new uses of uses of old catches to be
+ added, this compiler option can be enabled on the project level and
+ `-compile(nowarn_deprecated_catch).` added to individual files that still
+ contain old catches.
+
+ Own Id: OTP-19425
+ Related Id(s): PR-9154
+
+- Module `re` has been updated to use PCRE2, which is mostly backward
+ compatible with PCRE.
+
+ The most noticeable incompatibilities are
+
+ - The default character encoding is pure ASCII and not Latin1. Unicode support
+ is still available with options `unicode` and `ucp`.
+ - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a
+ regex is compiled and cannot be changed at matching for precompiled regex.
+
+ Own Id: OTP-19431
+ Related Id(s): PR-9299, PR-9610
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+- Defining a fun in terms of an imported function is not allowed. Before this
+ release, the compiler would not catch this kind of error if the name of the
+ imported function happened to be a BIF. Consider this example:
+
+ -module(fun_example).
+ -export([foo/0, bar/0]).
+ -import(m, [max/2, not_a_bif/0]).
+
+ foo() ->
+ fun max/2.
+
+ bar() ->
+ fun not_a_bif/0.
+
+ The compiler in Erlang/OTP 27 would generate the following messages:
+
+ fun_example.erl:9:5: function not_a_bif/0 undefined
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a
+ warning for `fun max/2`.
+
+ When compiling with this release, both attempts to create a fun will result in
+ error messages (as well as a warning):
+
+ fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed
+ % 6| fun max/2.
+ % | ^
+
+ fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed
+ % 9| fun not_a_bif/0.
+ % | ^
+
+ fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 --
+ use "-compile({no_auto_import,[max/2]})." to resolve name clash
+ % 3| -import(m, [max/2, not_a_bif/0]).
+ % | ^
+
+ Also, attempting to call a local function having the same name as
+ auto-imported BIF would result in an error if the BIF was added to Erlang/OTP
+ before R14, and a warning for newer BIFs. This has been changed to always emit
+ a warning. For example:
+
+ -module(bif_example).
+ -export([bar/1]).
+
+ bar(B) ->
+ is_boolean(B).
+
+ is_boolean(B) ->
+ B =:= true orelse B =:= false.
+
+ will now result in the following warning instead of an error:
+
+ if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 --
+ use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash
+ % 5| is_boolean(B).
+ % | ^
+
+ Own Id: OTP-19432
+ Related Id(s): PR-9246
+
+- It is now possible to use any base for floating point numbers as described in
+ EEP 75: Based Floating Point Literals.
+
+ Computers represent floating point numbers in binary, but such numbers are
+ typically printed using base ten, for example 0.314159265e1. To maintain exact
+ bit-level precision when converting numbers to and from text, it is better to
+ use a base that matches the internally used base, such as 16 for a compact but
+ still exact representation, or 2 for visualizing or writing down the exact
+ internal format. One particular case where such exact representations are
+ useful is in code generating tools.
+
+ Examples:
+
+ > 2#0.111.
+ 0.875
+ > 16#fefe.fefe#e16.
+ 1.2041849337671418e24
+
+ Own Id: OTP-19452
+ Related Id(s): PR-9106
+
+ *** HIGHLIGHT ***
+
+- The callback function `handle_continue/2` in `gen_server` callback modules is
+ now cached like the others, thanks to code cleanup and optimization of the
+ internal behaviour loop.
+
+ This should only improve performance, not affect functionality.
+
+ Own Id: OTP-19474
+ Related Id(s): PR-9333
+
+- Encoding done by the `json` module has been optimized.
+
+ Own Id: OTP-19476
+ Related Id(s): PR-9251
+
+- There is a new `zstd` module that does Zstandard compression.
+
+ Own Id: OTP-19477
+ Related Id(s): PR-9316
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- Functions of a module can now be grouped in the shell code completion by using
+ the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public
+ API">>). fetch()->...
+
+
+ Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature.
+
+ Own Id: OTP-19483
+ Related Id(s): [PR-9408]
+
+
+- Added calendar:universal_time_to_system_time/1,2 and
+ calendar:local_time_to_system_time/1,2
+
+ Own Id: OTP-19505
+ Related Id(s): PR-9445
+
+- Improve error messages for json:decode/1.
+
+ Own Id: OTP-19508
+ Related Id(s): PR-9484
+
+- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when
+ the heir is a supervisor process that cannot handle custom messages.
+
+ Own Id: OTP-19512
+ Related Id(s): PR-7970
+
+- Added support for the Unicode 16 standard.
+
+ Own Id: OTP-19516
+ Related Id(s): PR-9141, PR-9518
+
+- When documenting a function or type that needs to deal with durations, usually
+ we can document it as "time in milliseconds". Since the `timer` family of
+ functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it
+ is useful to be able to use this type in type specifications.
+
+ Own Id: OTP-19526
+ Related Id(s): PR-9515
+
+- A new event time-out has been implemented in `gen_server`, that behaves more
+ like the one in `gen_statem`.
+
+ See the type gen_server:action/0 for `{timeout|hibernate,...}`, and also
+ related functions.
+
+ Own Id: OTP-19537
+ Related Id(s): PR-9287, PR-9615, PR-9621
+
+- Line numbers used to be reported in the following way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl, line 389)
+
+ Starting from Erlang/OTP 28, line numbers are now reported in the following
+ way:
+
+ 1> lists:last([]).
+ ** exception error: no function clause matching lists:last([]) (lists.erl:389)
+
+ Own Id: OTP-19538
+ Related Id(s): PR-9468
+
+ *** HIGHLIGHT ***
+
+- Upgrade pcre2 to 10.45
+
+ Own Id: OTP-19541
+ Related Id(s): PR-9582
+
+- Added functions that produce utf-8 binaries instead of iolists. New functions
+ are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2,
+ io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3.
+
+ Own Id: OTP-19556
+ Related Id(s): PR-9772
+
+ *** HIGHLIGHT ***
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+- A list of PCRE2 incompatibilities is documented in a user's guide for stdlib.
+
+ Own Id: OTP-19578
+ Related Id(s): PR-9705
+
+- Change automatic hibernation of static supervisors so that they will hibernate
+ after being idle for 1 second instead of only after starting, dynamic
+ supervisors (simple_one_for_one) will not be hibernated at all. An option to
+ the supervisor is added to make it configurable for the application. This
+ option defaults to 1 second for static supervisors and to infinity for the
+ simple_one_for_one supervisors.
+
+ Own Id: OTP-19597
+ Related Id(s): PR-9680
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+> #### Full runtime dependencies of stdlib-7.0
+>
+> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1
+
+# syntax_tools-4.0
+
+## Fixed Bugs and Malfunctions
+
+- A few minor issues were corrected in `syntax_tools`, as well in the
+ `erl_anno` module.
+
+ Own Id: OTP-19422
+ Related Id(s): PR-9253
+
+## Improvements and New Features
+
+- Comprehensions have been extended with zip generators according to EEP 73.
+
+ Example:
+
+ 1> [A+B || A <- [1,2,3] && B <- [4,5,6]].
+ [5,7,9]
+
+ Own Id: OTP-19184
+ Related Id(s): PR-8926
+
+ *** HIGHLIGHT ***
+
+- New strict generators have been added for comprehensions.
+
+ The currently existing generators are "relaxed": they ignore terms in the
+ right-hand side expression that do not match the left-hand side pattern.
+
+ The new strict generators fail with exception `badmatch` if a pattern doesn't
+ match.
+
+ Examples:
+
+ Using the current relaxed generator operator `<-`, any element not matching
+ the pattern `{_,_}` will be silently discarded:
+
+ 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]].
+ [{ok,1},{error,2}]
+
+ If the intention is that all lists processed by a list comprehension must only
+ contain tuples of size two, using the new strict version of the operator
+ ensures that term not matching will cause a crash:
+
+ 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]].
+ ** exception error: no match of right hand side value ok
+
+ Using the strict generator operator to mark the intention that all list
+ elements must match the pattern could help finding mistakes quicker if
+ something unpexected is added to the list processed by the generator.
+
+ The strict version for bitstring generators is `<:=`.
+
+ Own Id: OTP-19317
+ Related Id(s): PR-8625
+
+ *** HIGHLIGHT ***
+
+- Fixed licenses in files and added ORT curations to the following apps: otp,
+ eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS.
+
+ Own Id: OTP-19478
+ Related Id(s): PR-9376, PR-9402
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of syntax_tools-4.0
+>
+> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0
+
+# tftp-1.2.3
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of tftp-1.2.3
+>
+> erts-6.0, kernel-6.0, stdlib-5.0
+
+# tools-4.1.2
+
+## Fixed Bugs and Malfunctions
+
+- A crash has been eliminated in tprof:collect/0 when unloading a module while
+ collecting traces.
+
+ Own Id: OTP-19135
+ Related Id(s): GH-8483, PR-8547
+
+- Improved the `indent-region` Emacs command, which could indent badly when
+ inside multiline string.
+
+ Own Id: OTP-19396
+ Related Id(s): PR-9186
+
+- eprof:start_profiling/3 can now return information about which process it
+ failed to trace.
+
+ Own Id: OTP-19419
+ Related Id(s): PR-9219
+
+- Fixed a race condition when processes cause the Cover server to be started at
+ the same time.
+
+ Own Id: OTP-19517
+ Related Id(s): PR-9124
+
+- Fix bug in `tprof` where the session name could not be set.
+
+ Own Id: OTP-19580
+ Related Id(s): PR-9648
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of tools-4.1.2
+>
+> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0
+
+# wx-2.5
+
+## Improvements and New Features
+
+- Added support for compiling Erlang/OTP for Windows on ARM64.
+
+ Own Id: OTP-19480
+ Related Id(s): PR-8734
+
+- When compiling C/C++ code on Unix systems, the compiler hardening flags
+ suggested by the Open Source Security Foundation are now enabled by default.
+ To disable them, pass `--disable-security-hardening-flags` to `configure`.
+
+ Own Id: OTP-19519
+ Related Id(s): PR-9441
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of wx-2.5
+>
+> erts-12.0, kernel-8.0, stdlib-5.0
+
+# xmerl-2.1.3
+
+## Fixed Bugs and Malfunctions
+
+- With this change all public functions in xmerl have specs.
+
+ Own Id: OTP-19534
+ Related Id(s): PR-9327
+
+## Improvements and New Features
+
+- The license and copyright header has changed format to include an
+ `SPDX-License-Identifier`. At the same time, most files have been updated to
+ follow a uniform standard for license headers.
+
+ Own Id: OTP-19575
+ Related Id(s): PR-9670
+
+> #### Full runtime dependencies of xmerl-2.1.3
+>
+> erts-6.0, kernel-8.4, stdlib-2.5
+
+# Thanks to
+
+Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea
+Leopardi, Ariel Otilibili, Benedikt Reinartz, Benjamin Philip, Brujo Benavides,
+Chris Freeze, Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin,
+Dániel Szoboszlay, dependabotbot, Dmitri Vereshchagin, Dominic Letz, Douglas
+Vought, Egor Ignatov, Eksperimental, Frank Hunleth, Freddie Lamble, Fredrik
+Frantzen, Frej Drejhammar, Gary Rennie, Hichem Fantar, Ilya Klyuchnikov, iri,
+Isabell H, Jan Uhlig, Jean-Louis Huynen, Jean-Sébastien Pédron, João Henrique
+Ferreira de Freitas, Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José
+Valim, Juan Barrios, Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky,
+lucioleKi, Lukasz Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek,
+Martin Davidsson, Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael
+Neumann, Nelson Vides, Nicholas Moen, Onno Vos, Paul Guyot, preciz, Richard
+Carlsson, Roberto Aloi, Robin Morisset, Roeland van Batenburg, ruslandoga, Ryan
+Kirkman, S0AndS0, sabiwara, Sam Weaver, Sergei Shuvatov, siiky, Simon Cornish,
+Stavros Aronis, Stefan Grundmann, Steffen Deusch, Tobias Pfeiffer, Tomer, Vadim
+Yanitskiy, Vance Shipley, William Fank Thomé, williamthome, William Yang, Wojtek
+Mach, yagogarea, Yoshiyuki Kurauchi
+