From 425889ba69b69a9b6fb14bfbef121d51b78e853a Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Tue, 23 Apr 2019 17:38:37 +0200 Subject: Prepare release --- erts/doc/src/erl_nif.xml | 10 +- erts/doc/src/erlang.xml | 4 +- erts/doc/src/net.xml | 20 +-- erts/doc/src/notes.xml | 454 +++++++++++++++++++++++++++++++++++++++++++++++ erts/doc/src/socket.xml | 158 ++++++++--------- 5 files changed, 550 insertions(+), 96 deletions(-) (limited to 'erts/doc/src') diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml index c0be715678..f88d255296 100644 --- a/erts/doc/src/erl_nif.xml +++ b/erts/doc/src/erl_nif.xml @@ -1090,7 +1090,7 @@ typedef struct { - int + int enif_compare_pids(const ErlNifPid *pid1, const ErlNifPid *pid2) Compare two pids. @@ -1890,7 +1890,7 @@ enif_inspect_iovec(env, max_elements, term, &tail, &iovec); - int + int enif_is_pid_undefined(const ErlNifPid* pid) Determine if pid is undefined. @@ -2247,7 +2247,7 @@ enif_inspect_iovec(env, max_elements, term, &tail, &iovec); - ERL_NIF_TERM + ERL_NIF_TERM enif_make_monitor_term(ErlNifEnv* env, const ErlNifMonitor* mon) Make monitor term from the given monitor identifier. @@ -3306,7 +3306,7 @@ if (retval & ERL_NIF_SELECT_STOP_CALLED) { - void + void enif_set_pid_undefined(ErlNifPid* pid) Set pid as undefined. @@ -3369,7 +3369,7 @@ if (retval & ERL_NIF_SELECT_STOP_CALLED) { - ErlNifTermType + ErlNifTermType enif_term_type(ErlNifEnv *env, ERL_NIF_TERM term) Determine the type of a term. diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index 2b444ccf01..a879cce840 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -1297,7 +1297,7 @@ end - + Get value of the get_size option on a distribution channel

Returns the value of the get_size option on the distribution channel @@ -1428,7 +1428,7 @@ end - + Set value of the get_size option on a distribution channel

Sets the value of the get_size option on the distribution channel diff --git a/erts/doc/src/net.xml b/erts/doc/src/net.xml index b9e2cffce9..6fbc37076c 100644 --- a/erts/doc/src/net.xml +++ b/erts/doc/src/net.xml @@ -29,7 +29,7 @@ net.xml - net + net Network interface.

This module provides an API for the network interface.

@@ -72,8 +72,8 @@
- - + + Address-to-name transaltion.

Address-to-name translation in a protocol-independant manner.

@@ -84,10 +84,10 @@
- - - - + + + + Network address and service transation.

Network address and service translation.

@@ -100,7 +100,7 @@
- + Mappings between network interface names and indexes.

Mappings between network interface names and indexes.

@@ -108,7 +108,7 @@
- + Mappings between network interface index and names.

Mappings between network interface index and names.

@@ -116,7 +116,7 @@
- + Get network interface names and indexes.

Get network interface names and indexes.

diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index da470b51ec..5736d366eb 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -31,6 +31,460 @@

This document describes the changes made to the ERTS application.

+
Erts 10.4 + +
Fixed Bugs and Malfunctions + + +

+ Do not allocate new bitstring/binary when an empty binary + is appended.

+

+ Own Id: OTP-15535 Aux Id: PR-2055

+
+ +

+ Document that process_info(_, current_function) + can return {current_function, undefined} in case + of execution of native code.

+

+ Own Id: OTP-15543 Aux Id: PR-2089

+
+ +

+ Fixed bug in ets:select, ets:match and + friends which could cause the table to remain fixated (as + if ets:safe_fixtable had been called) after the + call returned. This could happen for protected + tables if another concurrent running process transfered + table ownership to the process during its + ets:select/match call. Ownership can be transfered using + either ets:give_away or the heir table + option.

+

+ Own Id: OTP-15672

+
+ +

Fixed a Windows-specific bug in file:list_dir/1 + that caused it to misbehave on network shares.

+

+ Own Id: OTP-15693

+
+ +

+ Fixed bug when calling enif_whereis_* from NIF + resource destructor. Symtoms could be emulator crash or + hanging scheduler threads.

+

+ Own Id: OTP-15694 Aux Id: ERL-863

+
+ +

Fixed a bug in the error case of apply/3, where + the exception would erroneously have an empty argument + list in some cases.

+

+ Own Id: OTP-15698

+
+ +

A bug has been fixed in the maps implementation + that could cause a crash or memory usage to grow until + the machine ran out of memory. This could happen when + inserting a new key-value pair with a key K1 + containing a binary B1 into a map M having + a key K2 with a binary B2 if the following + conditions were met:

B1 =/= + B2 size(B1) >= 4294967296 + size(B2) >= 4294967296 + size(M) >= 32 (size(B1) rem + 4294967296) == (size(B2) rem 4294967296) + the first (size(B1) rem 4294967296) bytes + are the same both in B1 and B2 + substituting B1 in K1 with B2 + would create a term with the same value as + K2

The root cause of the problem + is that the maps implementation only hashed the + first (X rem 4294967296) bytes of binaries so that + different binaries could get the same hash value + independently of the hash seed.

+

+ Own Id: OTP-15707

+
+ +

+ term_to_binary() and distributed sends will now + throw a system_limit exception instead of + producing erroneous results when trying to encode a + binary larger than 4 GB.

+

+ Own Id: OTP-15708

+
+ +

+ The vxworks configure has been updated to respect the + environment CFLAGS.

+

+ Own Id: OTP-15773

+
+
+
+ + +
Improvements and New Features + + +

+ Add support for Erlang Distribution protocol to split the + payload of large signals into several fragments. This + allows other processes to communicate uninterrupted + during the transmission of these signals.

+

+ Own Id: OTP-13397

+
+ +

+ 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, but not the high level + gen-modules (gen_tcp, gen_udp and gen_sctp). 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).

+

+ Own Id: OTP-14831

+
+ +

Added NIF functions enif_set_pid_undefined, + enif_is_pid_undefined + and enif_compare_pids.

+

+ Own Id: OTP-15011 Aux Id: PR-2147

+
+ +

Underutilized memory segments (carriers) can now move + between all allocator instances, rather than just between + instances of the same type, which greatly reduces memory + usage in some scenarios.

+

+ Own Id: OTP-15063

+
+ +

The emulator will now mark free blocks in pooled + carriers with madvise(2) + MADV_FREE (or similar), + letting the OS reclaim the associated physical memory if + necessary.

+

+ Own Id: OTP-15075

+
+ +

+ New ERL_NIF_SELECT_CANCEL feature added to + enif_select in order to cancel (or "deselect") a + read or write event on a previously selected file + descriptor.

+

+ Own Id: OTP-15095

+
+ +

+ ETS option write_concurrency now also affects and + improves the scalability of ordered_set tables. + The implementation is based on a data structure called + contention adapting search tree, where the lock + granularity adapts to the actual amount of concurrency + exploited by the applications in runtime.

+

+ Own Id: OTP-15128

+
+ +

+ Build configuration of the crypto application has + been moved from the erts application into the + crypto application.

+

+ Own Id: OTP-15129

+
+ +

Anonymous functions that don't capture environment are + now created at load-time instead of in run-time.

+

+ Own Id: OTP-15195 Aux Id: PR-1812

+
+ +

+ Optimize updates of maps with identical keys and values. + E.g. in the example below the original Map will be reused + as the return of the update.

+

+ 1> Map = #{ a => b }. #{ a => b } 2> Map#{ a := b }.

+

+ Own Id: OTP-15211 Aux Id: PR-1889

+
+ +

+ Optimize binary:match/2 and + binary:matches/2 to use memchr internally.

+

+ Own Id: OTP-15238 Aux Id: PR-1803

+
+ +

+ The runtime system used to terminate when a message + larger than 2 Gb was passed over the distribution. The + send operation will now instead throw a + system_limit exeption.

+

+ Own Id: OTP-15261

+
+ +

+ Change the first module called by erts to be names + erl_init instead of otp_ring0. systools in sasl have been + updated to reflect this change.

+

+ Own Id: OTP-15336 Aux Id: PR-1825

+
+ +

+ Minor adjustments made to build system for parallel + configure.

+

+ Own Id: OTP-15340 Aux Id: OTP-14625

+
+ +

+ Two new NIF interface functions enif_select_read + and enif_select_write. They are similar to + existing enif_select but allow a custom event + message as argument.

+

+ Own Id: OTP-15349 Aux Id: PR-2084

+
+ +

The embedded copy of zlib has been updated from + 1.2.8 to 1.2.11.

+

Note that this copy is only used as a fallback when + the target platform doesn't provide any zlib + development libraries. If your system provides + zlib then it will be used even if it is older than + 1.2.11.

+

+ Own Id: OTP-15351 Aux Id: ERL-749

+
+ +

+ New NIF function enif_make_monitor_term.

+

+ Own Id: OTP-15362 Aux Id: PR-2127

+
+ +

Appending lists (The ++ operator) will now yield + properly on large inputs.

+

+ Own Id: OTP-15427

+
+ +

The length/1 BIF used to calculate the length + of the list in one go without yielding, even if the list + was very long. In OTP 22, length/1 will yield when + called with a long lists.

+

+ Own Id: OTP-15439

+
+ +

+ Processes sending messages are now punished with a + reduction cost based on message size. That is, a process + sending a large message will yield earlier than before.

+

+ Own Id: OTP-15513 Aux Id: ERL-773

+
+ +

The transitory emulator option +ztma true + (introduced in OTP 21.3) has been removed.

+

+ Own Id: OTP-15581 Aux Id: OTP-15580

+
+ +

In OTP 22, HiPE (the native code compiler) is not + fully functional. The reasons for this are:

+

There are new BEAM instructions for binary matching + that the HiPE native code compiler does not support.

+

The new optimizations in the Erlang compiler create + new combination of instructions that HiPE currently does + not handle correctly.

+

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.

+

+ Own Id: OTP-15596

+
+ +

+ The termination behaviour of processes has changed to + allow processes to yield while sending link exit/monitor + down signals.

+

+ The erl crash dump as been expanded to now also include + processes that are termenating but have not yet + terminated.

+

+ Own Id: OTP-15610

+
+ +

+ The dist messages EXIT, EXIT2 and MONITOR_DOWN have been + updated with new versions that send the reason term as + part of the payload of the message instead of as part of + the control message.

+

+ The old versions are still present and can be used when + communicating with nodes that don't support the new + versions.

+

+ Own Id: OTP-15611

+
+ +

+ When sending messages, exit, exit2 and monitor down + distributed signals, the process sending will now yield + appropriately.

+

+ This means that a terminating process will yield and + possibly be suspended on busy distribution entries while + they are terminating. This means that any memory held by + such processes will not be released until after all + exit/monitor down signals have been sent.

+

+ Own Id: OTP-15612

+
+ +

+ All external pids/ports/refs created by + erlang:list_to_pid/port/ref debug functions now compare + equal to any other pid/port/ref with the same number from + that node.

+

+ Before this change they compared differently because the + node creation of the pid/port/ref did not compare equal + to any real pid/port/ref creation.

+

+ This will mostly effect pids/ports/refs typed in the + shell.

+

+ Own Id: OTP-15613

+
+ +

+ The persistent_term functions put/2 and + erase/1 are now yeliding.

+

+ Own Id: OTP-15615

+
+ +

+ A new erlang:dist_ctrl_set_opt(DHandle, + get_size, Value) option has been added. + This option makes it possible to configure the + distribution channel identified by DHandle so that + erlang:dist_ctrl_get_data(DHandle) + also returns the size of the data to pass over the + channel.

+

+ Own Id: OTP-15617

+
+ +

Previously, all ETS tables used centralized counter + variables to keep track of the number of items stored and + the amount of memory consumed. These counters can cause + scalability problems (especially on big NUMA systems). + This change adds an implementation of a decentralized + counter and modifies the implementation of ETS so that + ETS tables of type ordered_set with + write_concurrency enabled use the decentralized + counter. Experiments indicate that this change + substantially improves the scalability of ETS + ordered_set tables with write_concurrency + enabled in scenarios with frequent ets:insert/2 + and ets:delete/2 calls.

+

+ Own Id: OTP-15623 Aux Id: PR-2190

+
+ +

The iolist_size/1 function is now yielding + which means that an Erlang/OTP system will be responsive + even if the applications running on the system frequently + call iolist_size/1 with large iolists.

+

+ Own Id: OTP-15631

+
+ +

+ A simple test suite for the net module has been added.

+

+ Own Id: OTP-15635

+
+ +

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.

+

+ Own Id: OTP-15640

+
+ +

The last call optimization is now applied to BIFs. + When calling a BIF in the tail position of a function, + the return address and stack frame will now be discarded + before calling the BIF. As consequence of this change, + the immediate caller of a tail-called BIF will no longer + be available in stack backtraces.

+

+ Own Id: OTP-15674 Aux Id: PR-2177

+
+ +

+ Fix GC bug where distributed messages in a processes + mailbox would cause extra GCs. This can be very expensive + if there many messages in the mailbox.

+

+ Own Id: OTP-15703

+
+ +

Internal documentation has now been added to the + Erts and Compiler applications.

+

The internal documents for Erts describe + miscellaneous interesting implementation details. Those + details can change at any time.

+

The internal documentation for Compiler + documents the API for the Core Erlang modules. While we + will not change those APIs without good reason, we don't + give the same guarantees about backward compatibility as + for the rest of the APIs in OTP.

+

+ Own Id: OTP-15715

+
+ +

The performance of non-bignum integer arithmetic has + been improved.

+

+ Own Id: OTP-15740

+
+
+
+ +
+
Erts 10.3.4
Fixed Bugs and Malfunctions diff --git a/erts/doc/src/socket.xml b/erts/doc/src/socket.xml index f6195a65b2..343b61d4aa 100644 --- a/erts/doc/src/socket.xml +++ b/erts/doc/src/socket.xml @@ -29,7 +29,7 @@ socket.xml - socket + socket Socket interface.

This module provides an API for the socket interface. @@ -256,8 +256,8 @@ - - + + Accept a connection on a socket.

Accept a connection on a socket.

@@ -269,7 +269,7 @@ - + Bind a name to a socket.

Bind a name to a socket.

@@ -282,7 +282,7 @@
- + Close a socket.

Closes the socket.

@@ -301,8 +301,8 @@
- - + + Initiate a connection on a socket.

This function connects the socket to the address @@ -311,13 +311,13 @@ - - - - - - - + + + + + + + Get an option on a socket.

Get an option on a socket.

@@ -337,7 +337,7 @@
- + Get an option on a socket.

Get an option on a socket.

@@ -359,8 +359,8 @@
- - + + Listen for connections on a socket.

Listen for connections on a socket.

@@ -368,9 +368,9 @@
- - - + + + Create an endpoint for communication.

Creates an endpoint (socket) for communication.

@@ -390,7 +390,7 @@
- + Get name of connected socket peer.

Returns the address of the peer connected to the socket.

@@ -398,11 +398,11 @@
- - - - - + + + + + Receive a message from a socket.

Receive a message from a socket.

@@ -413,12 +413,12 @@
- - - - - - + + + + + + Receive a message from a socket.

Receive a message from a socket.

@@ -437,12 +437,12 @@
- - - - - - + + + + + + Receive a message from a socket.

Receive a message from a socket.

@@ -473,10 +473,10 @@
- - - - + + + + Send a message on a socket.

Send a message on a connected socket.

@@ -484,10 +484,10 @@
- - - - + + + + Send a message on a socket.

Send a message on a socket. The destination, if needed @@ -508,10 +508,10 @@ - - - - + + + + Send a message on a socket.

Send a message on a socket, to the specified destination.

@@ -519,13 +519,13 @@
- - - - - - - + + + + + + + Set options on a socket.

Set options on a socket.

@@ -548,7 +548,7 @@
- + Set options on a socket.

Set options on a socket.

@@ -571,7 +571,7 @@
- + Shut down part of a full-duplex connection.

Shut down all or part of a full-duplex connection.

@@ -579,7 +579,7 @@
- + Get socket name.

Returns the current address to which the socket is bound.

@@ -587,25 +587,25 @@
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + Report info about what the platform supports.

This function intends to retreive information about what the -- cgit v1.2.3