diff options
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 + |