Erlang OTP 21.0 is released
June 20, 2018
· by Henrik Nord
OTP 21 #
Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities.
Potential Incompatibilities #
- All Corba applications are now moved from the OTP repository
- A new Corba repository will be created https://github.com/erlang
- New applications ftp and tftp, moved from inets
- ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default
- erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception. Instead a monitor will be created, but it will only supervise the connection to the node.
Highlights #
Erts: #
- Enhanced IO scalability
- Support for usage of distribution controller processes for alternative transports, routing etc
- compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code
- Rewrite of the efile-driver with NIFs and “Dirty schedulers” resulting in faster file operations
- non-smp VM removed
- link and monitor optimized for scalability
- os:getenv/putenv now work on thread-safe emulation. No longer in sync with libc getenv(3). Manual synchronization will be needed.
Compiler: #
- Misc compiler optimizations including contributions from the Elixir team resulting in 10% improvements in benchmarks
- “Tuple calls” have been removed from the run-time system.
- Code such as
f({ok, Val}) -> {ok, Val}
is now automatically rewritten tof({ok, Val} = Tuple) -> Tuple.
this reduces code size, execution time, and removed GC pressure. - More information in stacktrace from a number of operators
erlang:get_stacktrace/0
deprecated to be replaced withtry ... catch C:R:Stacktrace -> ...
- Creation of small maps with literal keys optimized.
- A new predefined macro
OTP_RELEASE
and preprocessor directives-if
and-elif
Security: #
- DTLS is now supported in the SSL application
- Enhanced support for distribution over TLS
- “unsecure” ciphers removed from defaults in SSL and SSH.
- A new option value defined to facilitate implementing exec servers. Old option kept for compatibility, but now gives errors on stderror.
Standard libraries: #
- New API for logging, logger
- New uri_string module for parsing URIs according to “The standard”
-
New function lists:search(list,fun/1) -> {ok, Value} false - Changed default behaviour of .erlang loading. escript, erlc, dialyzer and typer no longer load an .erlang at all.
For more details see https://erlang.org/download/otp_src_21.0.readme
Pre built versions for Windows can be fetched here: https://erlang.org/download/otp_win32_21.0.exe https://erlang.org/download/otp_win64_21.0.exe
Online documentation can be browsed here: https://erlang.org/documentation/doc-10.0/doc
The Erlang/OTP source can also be found at GitHub on the official Erlang repository, Here: OTP-21.0
Thank you for all your contributions!