Path to this page:
Subject: CVS commit: pkgsrc/lang
From: Nia Alarie
Date: 2019-08-01 13:43:01
Message id: 20190801114301.38A16FBF4@cvs.NetBSD.org
Log Message:
erlang: Update to 22.0.7
Erlang/OTP 22 is a new major release with new features and improvements as well \
as incompatibilities.
For a deeper dive into the hightligts of the OTP 22 release, you can read our \
blog here:
http://blog.erlang.org/OTP-22-Highlights/
Potential Incompatibilities
gen_* behaviours: If logging of the last N messages through sys:log/2,3 is \
active for the server, this log is included in the terminate report.
reltool: A new element, Opts, can now be included in a rel tuple in the \
reltool release specific configuration format: {rel, Name, Vsn, RelApps, Opts}.
All external pids/ports/refs created by erlang:list_to_pid and similar \
functions now compare equal to any other pid/port/ref with same number from that \
node.
The old legacy erl_interface library is deprecated as of OTP 22, and will be \
removed in OTP 23. This does not apply to the ei library.
VxWorks is deprecated as of OTP 22 and will be removed in OTP 23.
Erts:
Support for Erlang Distribution protocol to split the payload of large \
signals into several fragments.
ETS option write_concurrency now also effects and improves scalability of \
ordered_set tables.
The length/1 BIF used to calculate the length of the list in one go without \
yielding, even if the list was very long. Now it yields when called with long \
lists.
A new (still experimental) module socket is introduced. It is implemented as \
a NIF and the idea is that it shall be as "close as possible" to the \
OS level socket interface.
Added the NIF function enif_term_type, which helps avoid long sequences of \
enif_is_xyz by returning the type of the given term. This is especially helpful \
for NIFs that serialize terms, such as JSON encoders, where it can improve both \
performance and readability.
Compiler:
The compiler has been rewritten to internally use an intermediate \
representation based on Static Single Assignment (SSA). The new intermediate \
representation makes more optimizations possible.
The binary matching optimizations are now applicable in many more \
circumstances than before.
Type optimizations are now applied across local function calls, and will \
remove a lot more redundant type tests than before.
All compiler options that can be given in the source file can now be given \
in the option list on the command line for erlc.
In OTP 22, HiPE (the native code compiler) is not fully functional. The \
reasons for this are new BEAM instructions for binary matching that the HiPE \
native code compiler does not support. If erlc is invoked with the +native \
option, and if any of the new binary matching instructions are used, the \
compiler will issue a warning and produce a BEAM file without native code.
Standard libraries:
Cover now uses the counters module instead of ets for updating counters. The \
new function cover:local_only/0 allows running Cover in a restricted but faster \
local-only mode. The increase in speed will vary depending on the type of code \
being cover-compiled, as an example the compiler test suite runs more than twice \
as fast with the new Cover.
A simple socket API is provided through the socket module. This is a low \
level API that does *not* replace gen_[tcp|udp|sctp]. It is intended to \
*eventually* replace the inet driver. It also provides a basic API that \
facilitates the implementation of other protocols than TCP, UDP and SCTP. Known \
issues are; No support for the Windows OS (currently), a small term leakage. \
This feature will be classed as experimental in OTP 22.
SSL: now uses the new logger API, including log levels and verbose debug logging.
SSL: Basic support for TLS 1.3 Server for experimental use.
crypto: The new hash_info/1 and cipher_info/1 functions returns maps with \
information about the hash or cipher in the argument.
Files: