Erlang/OTP 20.0-rc2 is available for testing
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, useerl -emu_type lcnt
. - kernel: Added the process_flag
message_queue_data
=off_heap
to thecode_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
anddecode/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 keya
. - 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 todict
,orddict
, andgb_trees
.take_any/2
has been added togb_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 https://erlang.org/download/otp_src_20.0-rc2.readme
Per built versions for Windows can be fetched here: https://erlang.org/download/otp_win32_20.0-rc2.exe https://erlang.org/download/otp_win64_20.0-rc2.exe
On line documentation can be browsed here: https://www.erlang.org/documentation/doc-9.0-rc2/doc/
Thanks to all contributors.