Erlang OTP 23.0-rc2 is available for testing

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Erlang OTP 23.0-rc2 is available for testing

Kenneth Lundin-5

OTP 23 Release Candidate 2

This is the second of three planned release candidates before the OTP 23 release.
The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you.

Erlang/OTP 23 is a new major release with new features, improvements as well as a few incompatibilities.

Potential Incompatibilities

  • SSL:
    • Support for SSL 3.0 is completely removed.
    • TLS 1.3 is added to the list of default supported versions.
  • erl_interface: Removed the deprecated parts of erl_interface
    (erl_interface.h and essentially all C functions with prefix erl_).
  • The deprecated erlang:get_stacktrace/0 BIF now returns an empty list instead of a stacktrace.
    erlang:get_stacktrace/0 is scheduled for removal in OTP 24.
  • ...

Highlights (rc2)

  • ssh:
    • OpenSSH 6.5 introduced a new file representation of
      keys called openssh-key-v1. This is now supported with the exception of
      handling encrypted keys.
    • Algorithm configuration could now be done in a .config file.
      This is useful for example to enable an algorithm that
      is disabled by default without need to change the code.
  • ssl:
    • Support for the middlebox compatibility mode makes the TLS 1.3 handshake
      look more like a TLS 1.2 handshake and increases the chance of successfully
      establishing TLS 1.3 connections through legacy middleboxes.
    • Add support for key exchange with Edward curves and PSS-RSA padding in
      signature verification
  • The possibility to run Erlang distribution without
    relying on EPMD has been extended. To achieve this a
    couple of new options to the inet distribution has been
    added.
    • -dist_listen false Setup the distribution
      channel, but do not listen for incoming connection.
    • -erl_epmd_port Port Configure a default port that
      the built-in EPMD client should return.
    • ...
  • A first EXPERIMENTAL socket backend to
    gen_tcp and inet has been implemented. gen_udp and gen_sctp will follow.
    Putting {inet_backend, socket} as first option to listen() or connect() makes it easy to try this for
    existing code

Highlights (rc1)

  • A new module erpc in kernel which implements an enhanced subset of the operations provided by the rpc module. Enhanced in the sense that it makes it possible to distinguish between returned value, raised exceptions and other errors. erpc also has better performance and scalability than the original rpc implementation. This by utilizing the newly introduced spawn_request() BIF. Also the rpc module benefits from these improvements by utilizing erpc when possible.
  • Scalability and performance Improvements plus new functionality regarding distributed spawn operations.
  • In binary matching, the size of the segment to be matched is now allowed to be a guard expression (EEP-52)
  • When matching with maps the keys can now be guard expressions (EEP-52).
  • ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as tcp-forward/direct-tcp is implemented. In the OpenSSH client, this corresponds to the options -L and -R.
  • Allow underscores in numeric literals to improve readability. Examples: 123_456_78916#1234_ABCD.
  • New functions in the shell for displaying documentation for Erlang modules, functions and types. The
    functions are:
    • h/1,2,3 -- Print the documentation for a Module:Function/Arity.
    • ht/1,2,3 -- Print the type documentation for a Module:Type/Arity.
      The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.
  • kernel: The module pg with a new implementation of distributed named process groups is introduced. The old module pg2 is deprecated and scheduled for removal in OTP 24.
  • Our tool chain for building the Windows packages is upgraded with new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets versions. We are now using WSL (the Linux Subsystem for Windows when building) which makes it easier to handle the build environment.
  • ...

For more details see
http://erlang.org/download/otp_src_23.0-rc2.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_23.0-rc2.exe
http://erlang.org/download/otp_win64_23.0-rc2.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-11.0-rc2/doc
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp

Reply | Threaded
Open this post in threaded view
|

Re: Erlang OTP 23.0-rc2 is available for testing

Loïc Hoguin-3
Hello,

Under a specific configuration of ssl we are getting the following
system reports:

*** System report during acceptor_SUITE:ssl_sni_echo/1 in ssl 2020-03-25
18:27:00.926 ***
=NOTICE REPORT==== 25-Mar-2020::18:27:00.926666 ===
TLS server: In state hello at tls_handshake.erl:231 generated SERVER
ALERT: Fatal - Handshake Failure
  - malformed_handshake_data

*** System report during acceptor_SUITE:ssl_sni_echo/1 in ssl 2020-03-25
18:27:00.935 ***
=NOTICE REPORT==== 25-Mar-2020::18:27:00.935747 ===
TLS client: In state hello received SERVER ALERT: Fatal - Handshake Failure

The server configuration is [{sni_hosts, [{"localhost", Opts}]}] where
Opts has cert/key self-generated (using the old erl_make_certs) and also
contains {versions, ['tlsv1.2']}.

The client has no particular configuration.

Forcing the client to use TLS 1.2 "fixes" the problem. Tests that do not
use sni_hosts but are otherwise configured the same do not have this issue.

This is the relevant test triggering this issue:
https://github.com/ninenines/ranch/blob/master/test/acceptor_SUITE.erl#L596

If this is an actual bug and not my misunderstanding I can open a ticket.

Note that we've restricted the server to TLS 1.2 to fix other issues
that I do not believe to be bugs in ssl. I haven't investigated it but
since it gets us insufficient security errors and that the
self-generated certificates use insecure algorithms I'm guessing it's
probably the issue. We will switch from erl_make_certs to the more
modern approach of generating certificates for tests in a future release.

Cheers,

On 25/03/2020 15:24, Kenneth Lundin wrote:

>
>     OTP 23 Release Candidate 2
>
> This is the second of three planned release candidates before the OTP 23
> release.
> The intention with this release is to get feedback from our users. All
> feedback is welcome, even if it is only to say that it works for you.
>
> Erlang/OTP 23 is a new major release with new features, improvements as
> well as a few incompatibilities.
>
>
>       Potential Incompatibilities
>
>   * SSL:
>       o Support for SSL 3.0 is completely removed.
>       o TLS 1.3 is added to the list of default supported versions.
>   * |erl_interface|: Removed the deprecated parts of |erl_interface|
>     (|erl_interface.h| and essentially all C functions with prefix |erl_|).
>   * The deprecated |erlang:get_stacktrace/0| BIF now returns an empty
>     list instead of a stacktrace.
>     |erlang:get_stacktrace/0| is scheduled for removal in OTP 24.
>   * ...
>
>
>       Highlights (rc2)
>
>   * ssh:
>       o OpenSSH 6.5 introduced a new file representation of
>         keys called |openssh-key-v1|. This is now supported with the
>         exception of
>         handling encrypted keys.
>       o Algorithm configuration could now be done in a .config file.
>         This is useful for example to enable an algorithm that
>         is disabled by default without need to change the code.
>   * ssl:
>       o Support for the middlebox compatibility mode makes the TLS 1.3
>         handshake
>         look more like a TLS 1.2 handshake and increases the chance of
>         successfully
>         establishing TLS 1.3 connections through legacy middleboxes.
>       o Add support for key exchange with Edward curves and PSS-RSA
>         padding in
>         signature verification
>   * The possibility to run Erlang distribution without
>     relying on EPMD has been extended. To achieve this a
>     couple of new options to the inet distribution has been
>     added.
>       o |-dist_listen false| Setup the distribution
>         channel, but do not listen for incoming connection.
>       o |-erl_epmd_port Port| Configure a default port that
>         the built-in EPMD client should return.
>       o ...
>   * A first EXPERIMENTAL |socket| backend to
>     |gen_tcp| and |inet| has been implemented. |gen_udp| and
>     |gen_sctp| will follow.
>     Putting |{inet_backend, socket}| as first option to |listen()| or
>     |connect()| makes it easy to try this for
>     existing code
>
>
>       Highlights (rc1)
>
>   * A new module |erpc| in kernel which implements an enhanced subset of
>     the operations provided by the |rpc| module. Enhanced in the sense
>     that it makes it possible to distinguish between returned value,
>     raised exceptions and other errors. |erpc| also has better
>     performance and scalability than the original |rpc| implementation.
>     This by utilizing the newly introduced |spawn_request()| BIF. Also
>     the |rpc| module benefits from these improvements by utilizing
>     |erpc| when possible.
>   * Scalability and performance Improvements plus new functionality
>     regarding distributed spawn operations.
>   * In binary matching, the size of the segment to be matched is now
>     allowed to be a guard expression (EEP-52)
>   * When matching with maps the keys can now be guard expressions (EEP-52).
>   * ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as
>     tcp-forward/direct-tcp is implemented. In the OpenSSH client, this
>     corresponds to the options -L and -R.
>   * Allow underscores in numeric literals to improve readability.
>     Examples: |123_456_789|, |16#1234_ABCD|.
>   * New functions in the shell for displaying documentation for Erlang
>     modules, functions and types. The
>     functions are:
>       o |h/1,2,3| -- Print the documentation for a |Module:Function/Arity|.
>       o |ht/1,2,3| -- Print the type documentation for a
>         |Module:Type/Arity|.
>         The embedded documentation is created as docchunks (EEP 48) when
>         building the Erlang/OTP documentation.
>   * kernel: The module |pg| with a new implementation of distributed
>     named process groups is introduced. The old module |pg2| is
>     deprecated and scheduled for removal in OTP 24.
>   * Our tool chain for building the Windows packages is upgraded with
>     new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets
>     versions. We are now using WSL (the Linux Subsystem for Windows when
>     building) which makes it easier to handle the build environment.
>   * ...
>
> For more details see
> http://erlang.org/download/otp_src_23.0-rc2.readme
>
> Pre built versions for Windows can be fetched here:
> http://erlang.org/download/otp_win32_23.0-rc2.exe
> http://erlang.org/download/otp_win64_23.0-rc2.exe
>
> Online documentation can be browsed here:
> http://erlang.org/documentation/doc-11.0-rc2/doc
> The Erlang/OTP source can also be found at GitHub on the official Erlang
> repository,
> https://github.com/erlang/otp
>

--
Loïc Hoguin
https://ninenines.eu
Reply | Threaded
Open this post in threaded view
|

Re: Erlang OTP 23.0-rc2 is available for testing

Steve Vinoski-2
In reply to this post by Kenneth Lundin-5
Hi Kenneth, on Mar 24 there was an update to macOS Catalina, bringing it to version 10.15.4, and also to XCode, bringing it to version 11.4. I updated both yesterday. Under those versions, I've found that the git tag OTP-23.0-rc2 fails to build due to the use of the -Wl,-no_weak_imports linker flag. This flag is introduced in erts/configure.inhttps://github.com/erlang/otp/blob/master/erts/configure.in#L943-L957 and the error from using it in the build is:

 LD /usr/local/src/otp/bin/x86_64-apple-darwin19.4.0/beam.smp
ld: weak import of symbol '___darwin_check_fd_set_overflow' not supported because of option: -no_weak_imports for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

If I comment out that case statement to prevent the use of that option, the problem goes away and everything builds correctly. Note that tag OTP-23.0-rc1, which built ok when it was released, now also fails the same way with these updates.

--steve


On Wed, Mar 25, 2020 at 10:25 AM Kenneth Lundin <[hidden email]> wrote:

OTP 23 Release Candidate 2

This is the second of three planned release candidates before the OTP 23 release.
The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you.

Erlang/OTP 23 is a new major release with new features, improvements as well as a few incompatibilities.

Potential Incompatibilities

  • SSL:
    • Support for SSL 3.0 is completely removed.
    • TLS 1.3 is added to the list of default supported versions.
  • erl_interface: Removed the deprecated parts of erl_interface
    (erl_interface.h and essentially all C functions with prefix erl_).
  • The deprecated erlang:get_stacktrace/0 BIF now returns an empty list instead of a stacktrace.
    erlang:get_stacktrace/0 is scheduled for removal in OTP 24.
  • ...

Highlights (rc2)

  • ssh:
    • OpenSSH 6.5 introduced a new file representation of
      keys called openssh-key-v1. This is now supported with the exception of
      handling encrypted keys.
    • Algorithm configuration could now be done in a .config file.
      This is useful for example to enable an algorithm that
      is disabled by default without need to change the code.
  • ssl:
    • Support for the middlebox compatibility mode makes the TLS 1.3 handshake
      look more like a TLS 1.2 handshake and increases the chance of successfully
      establishing TLS 1.3 connections through legacy middleboxes.
    • Add support for key exchange with Edward curves and PSS-RSA padding in
      signature verification
  • The possibility to run Erlang distribution without
    relying on EPMD has been extended. To achieve this a
    couple of new options to the inet distribution has been
    added.
    • -dist_listen false Setup the distribution
      channel, but do not listen for incoming connection.
    • -erl_epmd_port Port Configure a default port that
      the built-in EPMD client should return.
    • ...
  • A first EXPERIMENTAL socket backend to
    gen_tcp and inet has been implemented. gen_udp and gen_sctp will follow.
    Putting {inet_backend, socket} as first option to listen() or connect() makes it easy to try this for
    existing code

Highlights (rc1)

  • A new module erpc in kernel which implements an enhanced subset of the operations provided by the rpc module. Enhanced in the sense that it makes it possible to distinguish between returned value, raised exceptions and other errors. erpc also has better performance and scalability than the original rpc implementation. This by utilizing the newly introduced spawn_request() BIF. Also the rpc module benefits from these improvements by utilizing erpc when possible.
  • Scalability and performance Improvements plus new functionality regarding distributed spawn operations.
  • In binary matching, the size of the segment to be matched is now allowed to be a guard expression (EEP-52)
  • When matching with maps the keys can now be guard expressions (EEP-52).
  • ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as tcp-forward/direct-tcp is implemented. In the OpenSSH client, this corresponds to the options -L and -R.
  • Allow underscores in numeric literals to improve readability. Examples: 123_456_78916#1234_ABCD.
  • New functions in the shell for displaying documentation for Erlang modules, functions and types. The
    functions are:
    • h/1,2,3 -- Print the documentation for a Module:Function/Arity.
    • ht/1,2,3 -- Print the type documentation for a Module:Type/Arity.
      The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.
  • kernel: The module pg with a new implementation of distributed named process groups is introduced. The old module pg2 is deprecated and scheduled for removal in OTP 24.
  • Our tool chain for building the Windows packages is upgraded with new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets versions. We are now using WSL (the Linux Subsystem for Windows when building) which makes it easier to handle the build environment.
  • ...

For more details see
http://erlang.org/download/otp_src_23.0-rc2.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_23.0-rc2.exe
http://erlang.org/download/otp_win64_23.0-rc2.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-11.0-rc2/doc
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp

Reply | Threaded
Open this post in threaded view
|

Re: Erlang OTP 23.0-rc2 is available for testing

Adam Lindberg-7
Unfortunately this also broke earlier versions. I can’t build 22.3 or 21.3.8.14 on macOS 10.15.4.

Cheers,
Adam

On 26. Mar 2020, at 14:35, Steve Vinoski <[hidden email]> wrote:

Hi Kenneth, on Mar 24 there was an update to macOS Catalina, bringing it to version 10.15.4, and also to XCode, bringing it to version 11.4. I updated both yesterday. Under those versions, I've found that the git tag OTP-23.0-rc2 fails to build due to the use of the -Wl,-no_weak_imports linker flag. This flag is introduced in erts/configure.inhttps://github.com/erlang/otp/blob/master/erts/configure.in#L943-L957 and the error from using it in the build is:

 LD /usr/local/src/otp/bin/x86_64-apple-darwin19.4.0/beam.smp
ld: weak import of symbol '___darwin_check_fd_set_overflow' not supported because of option: -no_weak_imports for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

If I comment out that case statement to prevent the use of that option, the problem goes away and everything builds correctly. Note that tag OTP-23.0-rc1, which built ok when it was released, now also fails the same way with these updates.

--steve


On Wed, Mar 25, 2020 at 10:25 AM Kenneth Lundin <[hidden email]> wrote:

OTP 23 Release Candidate 2

This is the second of three planned release candidates before the OTP 23 release.
The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you.

Erlang/OTP 23 is a new major release with new features, improvements as well as a few incompatibilities.

Potential Incompatibilities

  • SSL:
    • Support for SSL 3.0 is completely removed.
    • TLS 1.3 is added to the list of default supported versions.
  • erl_interface: Removed the deprecated parts of erl_interface
    (erl_interface.h and essentially all C functions with prefix erl_).
  • The deprecated erlang:get_stacktrace/0 BIF now returns an empty list instead of a stacktrace.
    erlang:get_stacktrace/0 is scheduled for removal in OTP 24.
  • ...

Highlights (rc2)

  • ssh:
    • OpenSSH 6.5 introduced a new file representation of
      keys called openssh-key-v1. This is now supported with the exception of
      handling encrypted keys.
    • Algorithm configuration could now be done in a .config file.
      This is useful for example to enable an algorithm that
      is disabled by default without need to change the code.
  • ssl:
    • Support for the middlebox compatibility mode makes the TLS 1.3 handshake
      look more like a TLS 1.2 handshake and increases the chance of successfully
      establishing TLS 1.3 connections through legacy middleboxes.
    • Add support for key exchange with Edward curves and PSS-RSA padding in
      signature verification
  • The possibility to run Erlang distribution without
    relying on EPMD has been extended. To achieve this a
    couple of new options to the inet distribution has been
    added.
    • -dist_listen false Setup the distribution
      channel, but do not listen for incoming connection.
    • -erl_epmd_port Port Configure a default port that
      the built-in EPMD client should return.
    • ...
  • A first EXPERIMENTAL socket backend to
    gen_tcp and inet has been implemented. gen_udp and gen_sctp will follow.
    Putting {inet_backend, socket} as first option to listen() or connect() makes it easy to try this for
    existing code

Highlights (rc1)

  • A new module erpc in kernel which implements an enhanced subset of the operations provided by the rpc module. Enhanced in the sense that it makes it possible to distinguish between returned value, raised exceptions and other errors. erpc also has better performance and scalability than the original rpc implementation. This by utilizing the newly introduced spawn_request() BIF. Also the rpc module benefits from these improvements by utilizing erpc when possible.
  • Scalability and performance Improvements plus new functionality regarding distributed spawn operations.
  • In binary matching, the size of the segment to be matched is now allowed to be a guard expression (EEP-52)
  • When matching with maps the keys can now be guard expressions (EEP-52).
  • ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as tcp-forward/direct-tcp is implemented. In the OpenSSH client, this corresponds to the options -L and -R.
  • Allow underscores in numeric literals to improve readability. Examples: 123_456_78916#1234_ABCD.
  • New functions in the shell for displaying documentation for Erlang modules, functions and types. The
    functions are:
    • h/1,2,3 -- Print the documentation for a Module:Function/Arity.
    • ht/1,2,3 -- Print the type documentation for a Module:Type/Arity.
      The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.
  • kernel: The module pg with a new implementation of distributed named process groups is introduced. The old module pg2 is deprecated and scheduled for removal in OTP 24.
  • Our tool chain for building the Windows packages is upgraded with new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets versions. We are now using WSL (the Linux Subsystem for Windows when building) which makes it easier to handle the build environment.
  • ...

For more details see
http://erlang.org/download/otp_src_23.0-rc2.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_23.0-rc2.exe
http://erlang.org/download/otp_win64_23.0-rc2.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-11.0-rc2/doc
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp

Reply | Threaded
Open this post in threaded view
|

Re: Erlang OTP 23.0-rc2 is available for testing

Adam Lindberg-7
Reported here: https://bugs.erlang.org/browse/ERL-1205

Cheers,
Adam

On 26. Mar 2020, at 14:39, Adam Lindberg <[hidden email]> wrote:

Unfortunately this also broke earlier versions. I can’t build 22.3 or 21.3.8.14 on macOS 10.15.4.

Cheers,
Adam

On 26. Mar 2020, at 14:35, Steve Vinoski <[hidden email]> wrote:

Hi Kenneth, on Mar 24 there was an update to macOS Catalina, bringing it to version 10.15.4, and also to XCode, bringing it to version 11.4. I updated both yesterday. Under those versions, I've found that the git tag OTP-23.0-rc2 fails to build due to the use of the -Wl,-no_weak_imports linker flag. This flag is introduced in erts/configure.inhttps://github.com/erlang/otp/blob/master/erts/configure.in#L943-L957 and the error from using it in the build is:

 LD /usr/local/src/otp/bin/x86_64-apple-darwin19.4.0/beam.smp
ld: weak import of symbol '___darwin_check_fd_set_overflow' not supported because of option: -no_weak_imports for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

If I comment out that case statement to prevent the use of that option, the problem goes away and everything builds correctly. Note that tag OTP-23.0-rc1, which built ok when it was released, now also fails the same way with these updates.

--steve


On Wed, Mar 25, 2020 at 10:25 AM Kenneth Lundin <[hidden email]> wrote:

OTP 23 Release Candidate 2

This is the second of three planned release candidates before the OTP 23 release.
The intention with this release is to get feedback from our users. All feedback is welcome, even if it is only to say that it works for you.

Erlang/OTP 23 is a new major release with new features, improvements as well as a few incompatibilities.

Potential Incompatibilities

  • SSL:
    • Support for SSL 3.0 is completely removed.
    • TLS 1.3 is added to the list of default supported versions.
  • erl_interface: Removed the deprecated parts of erl_interface
    (erl_interface.h and essentially all C functions with prefix erl_).
  • The deprecated erlang:get_stacktrace/0 BIF now returns an empty list instead of a stacktrace.
    erlang:get_stacktrace/0 is scheduled for removal in OTP 24.
  • ...

Highlights (rc2)

  • ssh:
    • OpenSSH 6.5 introduced a new file representation of
      keys called openssh-key-v1. This is now supported with the exception of
      handling encrypted keys.
    • Algorithm configuration could now be done in a .config file.
      This is useful for example to enable an algorithm that
      is disabled by default without need to change the code.
  • ssl:
    • Support for the middlebox compatibility mode makes the TLS 1.3 handshake
      look more like a TLS 1.2 handshake and increases the chance of successfully
      establishing TLS 1.3 connections through legacy middleboxes.
    • Add support for key exchange with Edward curves and PSS-RSA padding in
      signature verification
  • The possibility to run Erlang distribution without
    relying on EPMD has been extended. To achieve this a
    couple of new options to the inet distribution has been
    added.
    • -dist_listen false Setup the distribution
      channel, but do not listen for incoming connection.
    • -erl_epmd_port Port Configure a default port that
      the built-in EPMD client should return.
    • ...
  • A first EXPERIMENTAL socket backend to
    gen_tcp and inet has been implemented. gen_udp and gen_sctp will follow.
    Putting {inet_backend, socket} as first option to listen() or connect() makes it easy to try this for
    existing code

Highlights (rc1)

  • A new module erpc in kernel which implements an enhanced subset of the operations provided by the rpc module. Enhanced in the sense that it makes it possible to distinguish between returned value, raised exceptions and other errors. erpc also has better performance and scalability than the original rpc implementation. This by utilizing the newly introduced spawn_request() BIF. Also the rpc module benefits from these improvements by utilizing erpc when possible.
  • Scalability and performance Improvements plus new functionality regarding distributed spawn operations.
  • In binary matching, the size of the segment to be matched is now allowed to be a guard expression (EEP-52)
  • When matching with maps the keys can now be guard expressions (EEP-52).
  • ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as tcp-forward/direct-tcp is implemented. In the OpenSSH client, this corresponds to the options -L and -R.
  • Allow underscores in numeric literals to improve readability. Examples: 123_456_78916#1234_ABCD.
  • New functions in the shell for displaying documentation for Erlang modules, functions and types. The
    functions are:
    • h/1,2,3 -- Print the documentation for a Module:Function/Arity.
    • ht/1,2,3 -- Print the type documentation for a Module:Type/Arity.
      The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.
  • kernel: The module pg with a new implementation of distributed named process groups is introduced. The old module pg2 is deprecated and scheduled for removal in OTP 24.
  • Our tool chain for building the Windows packages is upgraded with new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets versions. We are now using WSL (the Linux Subsystem for Windows when building) which makes it easier to handle the build environment.
  • ...

For more details see
http://erlang.org/download/otp_src_23.0-rc2.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_23.0-rc2.exe
http://erlang.org/download/otp_win64_23.0-rc2.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-11.0-rc2/doc
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp


Reply | Threaded
Open this post in threaded view
|

RE: Erlang OTP 23.0-rc2 is available for testing

Peter Dimitrov
In reply to this post by Kenneth Lundin-5

Hi,

 

This looks like something that we should investigate. Can you please open a ticket at https://bugs.erlang.org/ ?

Thanks!

 

BR/Peter

 

-----Original Message-----
From: erlang-questions <
[hidden email]> On Behalf Of Loïc Hoguin
Sent: den 26 mars 2020 10:23
To: Kenneth Lundin <[hidden email]>; [hidden email] Questions <[hidden email]>
Subject: Re: Erlang OTP 23.0-rc2 is available for testing

 

Hello,

 

Under a specific configuration of ssl we are getting the following system reports:

 

*** System report during acceptor_SUITE:ssl_sni_echo/1 in ssl 2020-03-25

18:27:00.926 ***

=NOTICE REPORT==== 25-Mar-2020::18:27:00.926666 === TLS server: In state hello at tls_handshake.erl:231 generated SERVER

ALERT: Fatal - Handshake Failure

  - malformed_handshake_data

 

*** System report during acceptor_SUITE:ssl_sni_echo/1 in ssl 2020-03-25

18:27:00.935 ***

=NOTICE REPORT==== 25-Mar-2020::18:27:00.935747 === TLS client: In state hello received SERVER ALERT: Fatal - Handshake Failure

 

The server configuration is [{sni_hosts, [{"localhost", Opts}]}] where Opts has cert/key self-generated (using the old erl_make_certs) and also contains {versions, ['tlsv1.2']}.

 

The client has no particular configuration.

 

Forcing the client to use TLS 1.2 "fixes" the problem. Tests that do not use sni_hosts but are otherwise configured the same do not have this issue.

 

This is the relevant test triggering this issue:

https://github.com/ninenines/ranch/blob/master/test/acceptor_SUITE.erl#L596

 

If this is an actual bug and not my misunderstanding I can open a ticket.

 

Note that we've restricted the server to TLS 1.2 to fix other issues that I do not believe to be bugs in ssl. I haven't investigated it but since it gets us insufficient security errors and that the self-generated certificates use insecure algorithms I'm guessing it's probably the issue. We will switch from erl_make_certs to the more modern approach of generating certificates for tests in a future release.

 

Cheers,

 

On 25/03/2020 15:24, Kenneth Lundin wrote:

>

>     OTP 23 Release Candidate 2

>

> This is the second of three planned release candidates before the OTP

> 23 release.

> The intention with this release is to get feedback from our users. All

> feedback is welcome, even if it is only to say that it works for you.

>

> Erlang/OTP 23 is a new major release with new features, improvements

> as well as a few incompatibilities.

>

>

>       Potential Incompatibilities

>

>   * SSL:

>       o Support for SSL 3.0 is completely removed.

>       o TLS 1.3 is added to the list of default supported versions.

>   * |erl_interface|: Removed the deprecated parts of |erl_interface|

>     (|erl_interface.h| and essentially all C functions with prefix |erl_|).

>   * The deprecated |erlang:get_stacktrace/0| BIF now returns an empty

>     list instead of a stacktrace.

>     |erlang:get_stacktrace/0| is scheduled for removal in OTP 24.

>   * ...

>

>

>       Highlights (rc2)

>

>   * ssh:

>       o OpenSSH 6.5 introduced a new file representation of

>         keys called |openssh-key-v1|. This is now supported with the

>         exception of

>         handling encrypted keys.

>       o Algorithm configuration could now be done in a .config file.

>         This is useful for example to enable an algorithm that

>         is disabled by default without need to change the code.

>   * ssl:

>       o Support for the middlebox compatibility mode makes the TLS 1.3

>         handshake

>         look more like a TLS 1.2 handshake and increases the chance of

>         successfully

>         establishing TLS 1.3 connections through legacy middleboxes.

>       o Add support for key exchange with Edward curves and PSS-RSA

>         padding in

>         signature verification

>   * The possibility to run Erlang distribution without

>     relying on EPMD has been extended. To achieve this a

>     couple of new options to the inet distribution has been

>     added.

>       o |-dist_listen false| Setup the distribution

>         channel, but do not listen for incoming connection.

>       o |-erl_epmd_port Port| Configure a default port that

>         the built-in EPMD client should return.

>       o ...

>   * A first EXPERIMENTAL |socket| backend to

>     |gen_tcp| and |inet| has been implemented. |gen_udp| and

>     |gen_sctp| will follow.

>     Putting |{inet_backend, socket}| as first option to |listen()| or

>     |connect()| makes it easy to try this for

>     existing code

>

>

>       Highlights (rc1)

>

>   * A new module |erpc| in kernel which implements an enhanced subset of

>     the operations provided by the |rpc| module. Enhanced in the sense

>     that it makes it possible to distinguish between returned value,

>     raised exceptions and other errors. |erpc| also has better

>     performance and scalability than the original |rpc| implementation.

>     This by utilizing the newly introduced |spawn_request()| BIF. Also

>     the |rpc| module benefits from these improvements by utilizing

>     |erpc| when possible.

>   * Scalability and performance Improvements plus new functionality

>     regarding distributed spawn operations.

>   * In binary matching, the size of the segment to be matched is now

>     allowed to be a guard expression (EEP-52)

>   * When matching with maps the keys can now be guard expressions (EEP-52).

>   * ssh: support for TCP/IP port forwarding, a.k.a tunneling a.k.a as

>     tcp-forward/direct-tcp is implemented. In the OpenSSH client, this

>     corresponds to the options -L and -R.

>   * Allow underscores in numeric literals to improve readability.

>     Examples: |123_456_789|, |16#1234_ABCD|.

>   * New functions in the shell for displaying documentation for Erlang

>     modules, functions and types. The

>     functions are:

>       o |h/1,2,3| -- Print the documentation for a |Module:Function/Arity|.

>       o |ht/1,2,3| -- Print the type documentation for a

>         |Module:Type/Arity|.

>         The embedded documentation is created as docchunks (EEP 48) when

>         building the Erlang/OTP documentation.

>   * kernel: The module |pg| with a new implementation of distributed

>     named process groups is introduced. The old module |pg2| is

>     deprecated and scheduled for removal in OTP 24.

>   * Our tool chain for building the Windows packages is upgraded with

>     new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets

>     versions. We are now using WSL (the Linux Subsystem for Windows when

>     building) which makes it easier to handle the build environment.

>   * ...

>

> For more details see

> http://erlang.org/download/otp_src_23.0-rc2.readme

>

> Pre built versions for Windows can be fetched here:

> http://erlang.org/download/otp_win32_23.0-rc2.exe

> http://erlang.org/download/otp_win64_23.0-rc2.exe

>

> Online documentation can be browsed here:

> http://erlang.org/documentation/doc-11.0-rc2/doc

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

> Erlang repository, https://github.com/erlang/otp

>

 

--

Loïc Hoguin

https://ninenines.eu

Reply | Threaded
Open this post in threaded view
|

Re: Erlang OTP 23.0-rc2 is available for testing

Kostis Sagonas-2
In reply to this post by Kenneth Lundin-5
On 3/25/20 3:24 PM, Kenneth Lundin wrote:
>
>     OTP 23 Release Candidate 2
>
> This is the second of three planned release candidates before the OTP 23
> release.
> The intention with this release is to get feedback from our users. All
> feedback is welcome, even if it is only to say that it works for you.
>

Hmmm,,.  erlang:apply/3 seems to be broken, for me at least.

I had noticed some failures of PropEr
(https://github.com/proper-testing/proper) long ago on the 'master'
branch, but decided to investigate them yesterday and today.

Half day of debugging has produced the following (minimized) test case.

======================
-module(bug23).
-export([test/0]).

test() ->
     symb_walk({call,lists,reverse,[[1,2,3]]}, fun erlang:apply/3).

symb_walk({call,Mod,Fun,Args}, HandleCall) ->
     SymbWalk = fun(X) -> symb_walk(X, HandleCall) end,
     HandledArgs = [SymbWalk(A) || A <- Args],
     HandleCall(Mod, Fun, HandledArgs);
symb_walk(SymbTerm, HandleCall) ->
     SymbWalk = fun(X) -> symb_walk(X, HandleCall) end,
     do_symb_walk_gen(SymbWalk, SymbTerm).

do_symb_walk_gen(SymbWalk, SymbTerm) when is_list(SymbTerm) ->
     safe_map_tr(SymbWalk, SymbTerm, []);
do_symb_walk_gen(_, SymbTerm) ->
     SymbTerm.

safe_map_tr(_Fun, [], AccList) ->
     lists:reverse(AccList);
safe_map_tr(Fun, [Head | Tail], AccList) ->
     safe_map_tr(Fun, Tail, [Fun(Head) | AccList]).
======================

Works OK on 22.x and prior but crashes with

42> bug23:test().
** exception error: bad argument
      in function  apply/3
         called as apply(lists,reverse,[[1,2,3]])

on 23.0-rc2.


Kostis
Reply | Threaded
Open this post in threaded view
|

RE: Erlang OTP 23.0-rc2 is available for testing

John Högberg
Thanks for pointing this out, I'm looking into it.

/John

-----Original Message-----
From: erlang-questions <[hidden email]> On Behalf Of Kostis Sagonas
Sent: Thursday, March 26, 2020 15:30
To: [hidden email]
Subject: Re: Erlang OTP 23.0-rc2 is available for testing

On 3/25/20 3:24 PM, Kenneth Lundin wrote:
>
>     OTP 23 Release Candidate 2
>
> This is the second of three planned release candidates before the OTP
> 23 release.
> The intention with this release is to get feedback from our users. All
> feedback is welcome, even if it is only to say that it works for you.
>

Hmmm,,.  erlang:apply/3 seems to be broken, for me at least.

I had noticed some failures of PropEr
(https://github.com/proper-testing/proper) long ago on the 'master'
branch, but decided to investigate them yesterday and today.

Half day of debugging has produced the following (minimized) test case.

======================
-module(bug23).
-export([test/0]).

test() ->
     symb_walk({call,lists,reverse,[[1,2,3]]}, fun erlang:apply/3).

symb_walk({call,Mod,Fun,Args}, HandleCall) ->
     SymbWalk = fun(X) -> symb_walk(X, HandleCall) end,
     HandledArgs = [SymbWalk(A) || A <- Args],
     HandleCall(Mod, Fun, HandledArgs);
symb_walk(SymbTerm, HandleCall) ->
     SymbWalk = fun(X) -> symb_walk(X, HandleCall) end,
     do_symb_walk_gen(SymbWalk, SymbTerm).

do_symb_walk_gen(SymbWalk, SymbTerm) when is_list(SymbTerm) ->
     safe_map_tr(SymbWalk, SymbTerm, []); do_symb_walk_gen(_, SymbTerm) ->
     SymbTerm.

safe_map_tr(_Fun, [], AccList) ->
     lists:reverse(AccList);
safe_map_tr(Fun, [Head | Tail], AccList) ->
     safe_map_tr(Fun, Tail, [Fun(Head) | AccList]).
======================

Works OK on 22.x and prior but crashes with

42> bug23:test().
** exception error: bad argument
      in function  apply/3
         called as apply(lists,reverse,[[1,2,3]])

on 23.0-rc2.


Kostis