[erlang-questions] Erlang/OTP 20.0-rc2 is available for testing

Lukas Larsson lukas@REDACTED
Thu Jun 1 10:08:03 CEST 2017


Hello Everyone,

As some of you have seen, the multiple-pollset implementation is still not
present in OTP 20-RC2.

The implementation that we did that was almost ready by OTP 20-RC1 has
turned out to have un-acceptable performance regressions for systems that
mainly consist of Erlang processes communicating with each other. There is
no quick fix to this problem, so we have had to rethink our original
approach to polling. We are continuing to work on the problem and plan to
have a solution ready "soon", it will however not be part OTP 20.

Technical details: Our original approach was to simply spread the I/O
polling to each scheduler so that all schedulers were responsible for
polling of fd's of ports and nifs that executed on them. This had the
side-effect of making it much slower to wake up schedulers to do work
(because now all scheduler sleep in poll rather than on a futex). Because
of this we have decided to move the I/O polling from the scheduler threads
to separate thread(s).

Lukas


On Wed, May 31, 2017 at 8:16 PM, Kenneth Lundin <kenneth@REDACTED> wrote:

> OTP 20 Release Candidate 2
>
> This is the second of two release candidates before the OTP 20 release.
> The intention with this release is that you as users try it and give us
> feedback if something does not work as expected. Could be a bug, an
> unexpected incompatibility, a significant change of characteristics in
> negative direction, etc.
>
> There are only minor changes compared to the first release candidate, some
> of them listed below:
>
>    - erts: ./configure --enable-lock-counter will enable building of an
>    additional emulator that has support for
>    lock counting. (The option previously existed, but would turn on lock
>    counting in the default emulator
>    being built.) To start the lock-counting emulator, use erl -emu_type
>    lcnt.
>    - kernel: Added the process_flag message_queue_data = off_heap to the
>    code_server process in order to improve characteristics during code
>    upgrade, which can generate a huge amount of messages.
>
> Here are some of the most important news in OTP 20 (same as in RC1):
> Potential Incompatibilities
>
>    -
>
>    ERTS:
>    - The non SMP Erlang VM is deprecated and not built by default
>       - Remove deprecated erlang:hash/2
>       - erlang:statistics/1 with scheduler_wall_time now also includes
>       info about dirty CPU schedulers.
>       - The new purge strategy introduced in OTP 19.1 is mandatory and
>       slightly incompatible for processes holding funs
>       see erlang:check_process_code/3.
>       - The NIF library reload is not supported anymore.
>    -
>
>    Asn1: Deprecated module and functions removed (asn1rt, asn1ct:encode/3
>    and decode/3)
>    -
>
>    Ssh: client only option in a call to start a daemon will now fail
>
> Highlights Erts:
>
>    - Dirty schedulers enabled and supported on VM with SMP support.
>    - support for “dirty” BIFs and “dirty” GC.
>    - erlang:garbage_collect/2 for control of minor or major GC
>    - Erlang literals are no longer copied when sending messages.
>    - Improved performance for large ETS tables, >256 entries (except
>    ordered_set)
>    - erlang:system_info/1 atom_count and atom_limit
>    - Reduced memory pressure by converting sub-binaries to heap-binaries
>    during GC
>    - enif_select, map an external event to message
>
> Compiler:
>
>    - Code generation for complicated guards is improved.
>    - Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, 'a'=>3}
>    will warn for the repeated key a.
>    - By default there is now a warning when export_all is used. Can be
>    disabled
>    - Pattern matching for maps is optimized
>    - New option deterministic to omit path to source + options info the
>    BEAM file.
>    - Atoms may now contain arbitrary unicode characters.
>    - compile:file/2 has an option to include extra chunks in the BEAM
>    file.
>
> Misc other applications
>
>    - Unnamed ets tables optimized
>    - A new event manager to handle a subset of OS signals in Erlang
>    - Optimized sets add_element, del_element and union
>    - Added rand:jump/0-1
>    - When a gen_server crashes, the stacktrace for the client will be
>    printed to facilitate debugging.
>    - take/2 has been added to dict, orddict, and gb_trees.
>    - take_any/2 has been added to gb_trees
>    - Significantly updated string module with unicode support
>    - erl_tar support for long path names and new file formats
>    - Dtls: Documented API, experimental
>    - SSH: improving security, removing and adding algorithms
>    - New math:fmod/2
>
> For more details see
> http://erlang.org/download/otp_src_20.0-rc2.readme
>
> Pre built versions for Windows can be fetched here:
> http://erlang.org/download/otp_win32_20.0-rc2.exe
> http://erlang.org/download/otp_win64_20.0-rc2.exe
>
> On line documentation can be browsed here:
> www.erlang.org/documentation/doc-9.0-rc2/doc/
>
> Thanks to all contributors.
> /The Erlang/OTP team at Ericsson
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170601/c6d1a759/attachment.htm>


More information about the erlang-questions mailing list