Erlang/OTP 18

This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).

docker run -it erlang:18

Highlights

  • Starting from 18.0 Erlang/OTP is released under the APL 2.0 (Apache Public License)
  • erts: The time functionality has been extended. This includes a new API for time, as well as “time warp” modes which alters the behavior when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it is a scalability bottleneck. For more information see the Time and Time Correction chapter of the ERTS User’s Guide. Here is a link.
  • erts: Beside the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made. Examples are:
    • scheduler specific timer wheels,
    • scheduler specific BIF timer management,
    • parallel retrieval of monotonic time and system time on OS:es that support it.
  • erts: The previously introduced “eager check I/O” feature is now enabled by default.
  • erts/compiler: enhanced support for maps. Big maps new uses a HAMT (Hash Array Mapped Trie) representation internally which makes them more efficient. There is now also support for variables as map keys.
  • dialyzer: The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module.
  • ssl: Remove default support for SSL-3.0 and added padding check for TLS-1.0 due to the Poodle vulnerability.
  • ssl: Remove default support for RC4 cipher suites, as they are consider too weak.
  • stdlib: Allow maps for supervisor flags and child specs
  • stdlib: New functions in ets:
    • take/2. Works the same as ets:delete/2 but also returns the deleted object(s).
    • ets:update_counter/4 with a default object as argument
  • kernel,stdlib,sasl: A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. (18.1)
    This mechanism is experimental in the sense that it may be changed based on feedback. See config parameter error_logger_format_depth in the Kernel application.
  • ssl: Add configurable upper limit for session cache. (18.2)