aboutsummaryrefslogtreecommitdiffstats
path: root/erts/doc/src
diff options
context:
space:
mode:
Diffstat (limited to 'erts/doc/src')
-rw-r--r--erts/doc/src/erl_nif.xml10
-rw-r--r--erts/doc/src/erlang.xml4
-rw-r--r--erts/doc/src/net.xml20
-rw-r--r--erts/doc/src/notes.xml454
-rw-r--r--erts/doc/src/socket.xml158
5 files changed, 96 insertions, 550 deletions
diff --git a/erts/doc/src/erl_nif.xml b/erts/doc/src/erl_nif.xml
index f88d255296..c0be715678 100644
--- a/erts/doc/src/erl_nif.xml
+++ b/erts/doc/src/erl_nif.xml
@@ -1090,7 +1090,7 @@ typedef struct {
</func>
<func>
- <name since="OTP 22.0"><ret>int</ret>
+ <name since="OTP @OTP-15011@"><ret>int</ret>
<nametext>enif_compare_pids(const ErlNifPid *pid1, const ErlNifPid *pid2)
</nametext></name>
<fsummary>Compare two pids.</fsummary>
@@ -1890,7 +1890,7 @@ enif_inspect_iovec(env, max_elements, term, &amp;tail, &amp;iovec);
</func>
<func>
- <name since="OTP 22.0"><ret>int</ret>
+ <name since="OTP @OTP-15011@"><ret>int</ret>
<nametext>enif_is_pid_undefined(const ErlNifPid* pid)</nametext></name>
<fsummary>Determine if pid is undefined.</fsummary>
<desc>
@@ -2247,7 +2247,7 @@ enif_inspect_iovec(env, max_elements, term, &amp;tail, &amp;iovec);
</func>
<func>
- <name since="OTP 22.0"><ret>ERL_NIF_TERM</ret>
+ <name since="OTP @OTP-15362@"><ret>ERL_NIF_TERM</ret>
<nametext>enif_make_monitor_term(ErlNifEnv* env, const ErlNifMonitor* mon)</nametext></name>
<fsummary>Make monitor term from the given monitor identifier.</fsummary>
<desc>
@@ -3306,7 +3306,7 @@ if (retval &amp; ERL_NIF_SELECT_STOP_CALLED) {
</func>
<func>
- <name since="OTP 22.0"><ret>void</ret>
+ <name since="OTP @OTP-15011@"><ret>void</ret>
<nametext>enif_set_pid_undefined(ErlNifPid* pid)</nametext></name>
<fsummary>Set pid as undefined.</fsummary>
<desc>
@@ -3369,7 +3369,7 @@ if (retval &amp; ERL_NIF_SELECT_STOP_CALLED) {
</func>
<func>
- <name since="OTP 22.0"><ret>ErlNifTermType</ret>
+ <name since="OTP @OTP-15640@"><ret>ErlNifTermType</ret>
<nametext>enif_term_type(ErlNifEnv *env, ERL_NIF_TERM term)</nametext>
</name>
<fsummary>Determine the type of a term.</fsummary>
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index a879cce840..2b444ccf01 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -1297,7 +1297,7 @@ end</code>
</func>
<func>
- <name name="dist_ctrl_get_opt" arity="2" clause_i="1" since="OTP 22.0"/>
+ <name name="dist_ctrl_get_opt" arity="2" clause_i="1" since="OTP @OTP-15617@"/>
<fsummary>Get value of the get_size option on a distribution channel</fsummary>
<desc>
<p>Returns the value of the <c>get_size</c> option on the distribution channel
@@ -1428,7 +1428,7 @@ end</code>
</func>
<func>
- <name name="dist_ctrl_set_opt" arity="3" clause_i="1" since="OTP 22.0"/>
+ <name name="dist_ctrl_set_opt" arity="3" clause_i="1" since="OTP @OTP-15617@"/>
<fsummary>Set value of the get_size option on a distribution channel</fsummary>
<desc>
<p>Sets the value of the <c>get_size</c> option on the distribution channel
diff --git a/erts/doc/src/net.xml b/erts/doc/src/net.xml
index 6fbc37076c..b9e2cffce9 100644
--- a/erts/doc/src/net.xml
+++ b/erts/doc/src/net.xml
@@ -29,7 +29,7 @@
<rev></rev>
<file>net.xml</file>
</header>
- <module since="OTP 22.0">net</module>
+ <module since="OTP @OTP-14831@">net</module>
<modulesummary>Network interface.</modulesummary>
<description>
<p>This module provides an API for the network interface.</p>
@@ -72,8 +72,8 @@
</func>
<func>
- <name name="getnameinfo" arity="1" since="OTP 22.0"/>
- <name name="getnameinfo" arity="2" since="OTP 22.0"/>
+ <name name="getnameinfo" arity="1" since="OTP @OTP-14831@"/>
+ <name name="getnameinfo" arity="2" since="OTP @OTP-14831@"/>
<fsummary>Address-to-name transaltion.</fsummary>
<desc>
<p>Address-to-name translation in a protocol-independant manner.</p>
@@ -84,10 +84,10 @@
</func>
<func>
- <name name="getaddrinfo" arity="1" since="OTP 22.0"/>
- <name name="getaddrinfo" arity="2" clause_i="1" since="OTP 22.0"/>
- <name name="getaddrinfo" arity="2" clause_i="2" since="OTP 22.0"/>
- <name name="getaddrinfo" arity="2" clause_i="3" since="OTP 22.0"/>
+ <name name="getaddrinfo" arity="1" since="OTP @OTP-14831@"/>
+ <name name="getaddrinfo" arity="2" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="getaddrinfo" arity="2" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="getaddrinfo" arity="2" clause_i="3" since="OTP @OTP-14831@"/>
<fsummary>Network address and service transation.</fsummary>
<desc>
<p>Network address and service translation.</p>
@@ -100,7 +100,7 @@
</func>
<func>
- <name name="if_name2index" arity="1" since="OTP 22.0"/>
+ <name name="if_name2index" arity="1" since="OTP @OTP-14831@"/>
<fsummary>Mappings between network interface names and indexes.</fsummary>
<desc>
<p>Mappings between network interface names and indexes.</p>
@@ -108,7 +108,7 @@
</func>
<func>
- <name name="if_index2name" arity="1" since="OTP 22.0"/>
+ <name name="if_index2name" arity="1" since="OTP @OTP-14831@"/>
<fsummary>Mappings between network interface index and names.</fsummary>
<desc>
<p>Mappings between network interface index and names.</p>
@@ -116,7 +116,7 @@
</func>
<func>
- <name name="if_names" arity="0" since="OTP 22.0"/>
+ <name name="if_names" arity="0" since="OTP @OTP-14831@"/>
<fsummary>Get network interface names and indexes.</fsummary>
<desc>
<p>Get network interface names and indexes.</p>
diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml
index 5736d366eb..da470b51ec 100644
--- a/erts/doc/src/notes.xml
+++ b/erts/doc/src/notes.xml
@@ -31,460 +31,6 @@
</header>
<p>This document describes the changes made to the ERTS application.</p>
-<section><title>Erts 10.4</title>
-
- <section><title>Fixed Bugs and Malfunctions</title>
- <list>
- <item>
- <p>
- Do not allocate new bitstring/binary when an empty binary
- is appended.</p>
- <p>
- Own Id: OTP-15535 Aux Id: PR-2055 </p>
- </item>
- <item>
- <p>
- Document that <c>process_info(_, current_function)</c>
- can return <c>{current_function, undefined}</c> in case
- of execution of native code.</p>
- <p>
- Own Id: OTP-15543 Aux Id: PR-2089 </p>
- </item>
- <item>
- <p>
- Fixed bug in <c>ets:select</c>, <c>ets:match</c> and
- friends which could cause the table to remain fixated (as
- if <c>ets:safe_fixtable</c> had been called) after the
- call returned. This could happen for <c>protected</c>
- tables if another concurrent running process transfered
- table ownership to the process during its
- ets:select/match call. Ownership can be transfered using
- either <c>ets:give_away</c> or the <c>heir</c> table
- option.</p>
- <p>
- Own Id: OTP-15672</p>
- </item>
- <item>
- <p>Fixed a Windows-specific bug in <c>file:list_dir/1</c>
- that caused it to misbehave on network shares.</p>
- <p>
- Own Id: OTP-15693</p>
- </item>
- <item>
- <p>
- Fixed bug when calling <c>enif_whereis_*</c> from NIF
- resource destructor. Symtoms could be emulator crash or
- hanging scheduler threads.</p>
- <p>
- Own Id: OTP-15694 Aux Id: ERL-863 </p>
- </item>
- <item>
- <p>Fixed a bug in the error case of <c>apply/3</c>, where
- the exception would erroneously have an empty argument
- list in some cases.</p>
- <p>
- Own Id: OTP-15698</p>
- </item>
- <item>
- <p>A bug has been fixed in the <c>maps</c> 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 <c>K1</c>
- containing a binary <c>B1</c> into a map <c>M</c> having
- a key <c>K2</c> with a binary <c>B2</c> if the following
- conditions were met:</p> <list> <item><c>B1 =/=
- B2</c></item> <item><c>size(B1) >= 4294967296</c></item>
- <item><c>size(B2) >= 4294967296</c></item>
- <item><c>size(M) >= 32</c></item> <item><c>(size(B1) rem
- 4294967296) == (size(B2) rem 4294967296)</c></item>
- <item>the first <c>(size(B1) rem 4294967296)</c> bytes
- are the same both in <c>B1</c> and <c>B2</c></item>
- <item>substituting <c>B1</c> in <c>K1</c> with <c>B2</c>
- would create a term with the same value as
- <c>K2</c></item> </list> <p>The root cause of the problem
- is that the <c>maps</c> implementation only hashed the
- first <c>(X rem 4294967296)</c> bytes of binaries so that
- different binaries could get the same hash value
- independently of the hash seed.</p>
- <p>
- Own Id: OTP-15707</p>
- </item>
- <item>
- <p>
- <c>term_to_binary()</c> and distributed sends will now
- throw a <c>system_limit</c> exception instead of
- producing erroneous results when trying to encode a
- binary larger than 4 GB.</p>
- <p>
- Own Id: OTP-15708</p>
- </item>
- <item>
- <p>
- The vxworks configure has been updated to respect the
- environment CFLAGS.</p>
- <p>
- Own Id: OTP-15773</p>
- </item>
- </list>
- </section>
-
-
- <section><title>Improvements and New Features</title>
- <list>
- <item>
- <p>
- 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.</p>
- <p>
- Own Id: OTP-13397</p>
- </item>
- <item>
- <p>
- 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. </p>
- <p>
- Known issues are; No support for the Windows OS
- (currently).</p>
- <p>
- Own Id: OTP-14831</p>
- </item>
- <item>
- <p>Added NIF functions <seealso
- marker="erl_nif#enif_set_pid_undefined"><c>enif_set_pid_undefined</c></seealso>,
- <seealso
- marker="erl_nif#enif_is_pid_undefined"><c>enif_is_pid_undefined</c></seealso>
- and <seealso
- marker="erl_nif#enif_compare_pids"><c>enif_compare_pids</c></seealso>.</p>
- <p>
- Own Id: OTP-15011 Aux Id: PR-2147 </p>
- </item>
- <item>
- <p>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. </p>
- <p>
- Own Id: OTP-15063</p>
- </item>
- <item>
- <p>The emulator will now mark free blocks in pooled
- carriers with <c>madvise(2) + MADV_FREE</c> (or similar),
- letting the OS reclaim the associated physical memory if
- necessary.</p>
- <p>
- Own Id: OTP-15075</p>
- </item>
- <item>
- <p>
- New <c>ERL_NIF_SELECT_CANCEL</c> feature added to
- <c>enif_select</c> in order to cancel (or "deselect") a
- read or write event on a previously selected file
- descriptor.</p>
- <p>
- Own Id: OTP-15095</p>
- </item>
- <item>
- <p>
- ETS option <c>write_concurrency</c> now also affects and
- improves the scalability of <c>ordered_set</c> 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.</p>
- <p>
- Own Id: OTP-15128</p>
- </item>
- <item>
- <p>
- Build configuration of the <c>crypto</c> application has
- been moved from the <c>erts</c> application into the
- <c>crypto</c> application.</p>
- <p>
- Own Id: OTP-15129</p>
- </item>
- <item>
- <p>Anonymous functions that don't capture environment are
- now created at load-time instead of in run-time.</p>
- <p>
- Own Id: OTP-15195 Aux Id: PR-1812 </p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- 1> Map = #{ a => b }. #{ a => b } 2> Map#{ a := b }.</p>
- <p>
- Own Id: OTP-15211 Aux Id: PR-1889 </p>
- </item>
- <item>
- <p>
- Optimize <c>binary:match/2</c> and
- <c>binary:matches/2</c> to use memchr internally.</p>
- <p>
- Own Id: OTP-15238 Aux Id: PR-1803 </p>
- </item>
- <item>
- <p>
- 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
- <c>system_limit</c> exeption.</p>
- <p>
- Own Id: OTP-15261</p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- Own Id: OTP-15336 Aux Id: PR-1825 </p>
- </item>
- <item>
- <p>
- Minor adjustments made to build system for parallel
- configure.</p>
- <p>
- Own Id: OTP-15340 Aux Id: OTP-14625 </p>
- </item>
- <item>
- <p>
- Two new NIF interface functions <c>enif_select_read</c>
- and <c>enif_select_write</c>. They are similar to
- existing <c>enif_select</c> but allow a custom event
- message as argument.</p>
- <p>
- Own Id: OTP-15349 Aux Id: PR-2084 </p>
- </item>
- <item>
- <p>The embedded copy of <c>zlib</c> has been updated from
- <c>1.2.8</c> to <c>1.2.11</c>.</p>
- <p>Note that this copy is only used as a fallback when
- the target platform doesn't provide any <c>zlib</c>
- development libraries. If your system provides
- <c>zlib</c> then it will be used even if it is older than
- <c>1.2.11</c>.</p>
- <p>
- Own Id: OTP-15351 Aux Id: ERL-749 </p>
- </item>
- <item>
- <p>
- New NIF function <c>enif_make_monitor_term</c>.</p>
- <p>
- Own Id: OTP-15362 Aux Id: PR-2127 </p>
- </item>
- <item>
- <p>Appending lists (The ++ operator) will now yield
- properly on large inputs.</p>
- <p>
- Own Id: OTP-15427</p>
- </item>
- <item>
- <p>The <c>length/1</c> BIF used to calculate the length
- of the list in one go without yielding, even if the list
- was very long. In OTP 22, <c>length/1</c> will yield when
- called with a long lists.</p>
- <p>
- Own Id: OTP-15439</p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- Own Id: OTP-15513 Aux Id: ERL-773 </p>
- </item>
- <item>
- <p>The transitory emulator option <c>+ztma true</c>
- (introduced in OTP 21.3) has been removed.</p>
- <p>
- Own Id: OTP-15581 Aux Id: OTP-15580 </p>
- </item>
- <item>
- <p>In OTP 22, HiPE (the native code compiler) is not
- fully functional. The reasons for this are:</p>
- <p>There are new BEAM instructions for binary matching
- that the HiPE native code compiler does not support.</p>
- <p>The new optimizations in the Erlang compiler create
- new combination of instructions that HiPE currently does
- not handle correctly.</p>
- <p>If erlc is invoked with the <c>+native</c> 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.</p>
- <p>
- Own Id: OTP-15596</p>
- </item>
- <item>
- <p>
- The termination behaviour of processes has changed to
- allow processes to yield while sending link exit/monitor
- down signals.</p>
- <p>
- The erl crash dump as been expanded to now also include
- processes that are termenating but have not yet
- terminated.</p>
- <p>
- Own Id: OTP-15610</p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- The old versions are still present and can be used when
- communicating with nodes that don't support the new
- versions.</p>
- <p>
- Own Id: OTP-15611</p>
- </item>
- <item>
- <p>
- When sending messages, exit, exit2 and monitor down
- distributed signals, the process sending will now yield
- appropriately.</p>
- <p>
- 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.</p>
- <p>
- Own Id: OTP-15612</p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- 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.</p>
- <p>
- This will mostly effect pids/ports/refs typed in the
- shell.</p>
- <p>
- Own Id: OTP-15613</p>
- </item>
- <item>
- <p>
- The <c>persistent_term</c> functions <c>put/2</c> and
- <c>erase/1</c> are now yeliding.</p>
- <p>
- Own Id: OTP-15615</p>
- </item>
- <item>
- <p>
- A new <seealso
- marker="erlang#dist_ctrl_set_opt/3"><c>erlang:dist_ctrl_set_opt(DHandle,
- get_size, Value)</c></seealso> option has been added.
- This option makes it possible to configure the
- distribution channel identified by <c>DHandle</c> so that
- <seealso
- marker="erlang#dist_ctrl_get_data/1"><c>erlang:dist_ctrl_get_data(DHandle)</c></seealso>
- also returns the size of the data to pass over the
- channel.</p>
- <p>
- Own Id: OTP-15617</p>
- </item>
- <item>
- <p>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 <c>ordered_set</c> with
- <c>write_concurrency</c> enabled use the decentralized
- counter. Experiments indicate that this change
- substantially improves the scalability of ETS
- <c>ordered_set</c> tables with <c>write_concurrency</c>
- enabled in scenarios with frequent <c>ets:insert/2</c>
- and <c>ets:delete/2</c> calls.</p>
- <p>
- Own Id: OTP-15623 Aux Id: PR-2190 </p>
- </item>
- <item>
- <p>The <c>iolist_size/1</c> function is now yielding
- which means that an Erlang/OTP system will be responsive
- even if the applications running on the system frequently
- call <c>iolist_size/1</c> with large iolists.</p>
- <p>
- Own Id: OTP-15631</p>
- </item>
- <item>
- <p>
- A simple test suite for the net module has been added.</p>
- <p>
- Own Id: OTP-15635</p>
- </item>
- <item>
- <p>Added the NIF function <c>enif_term_type</c>, which
- helps avoid long sequences of <c>enif_is_xyz</c> 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.</p>
- <p>
- Own Id: OTP-15640</p>
- </item>
- <item>
- <p>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.</p>
- <p>
- Own Id: OTP-15674 Aux Id: PR-2177 </p>
- </item>
- <item>
- <p>
- 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.</p>
- <p>
- Own Id: OTP-15703</p>
- </item>
- <item>
- <p>Internal documentation has now been added to the
- <em>Erts</em> and <em>Compiler</em> applications.</p>
- <p>The internal documents for <em>Erts</em> describe
- miscellaneous interesting implementation details. Those
- details can change at any time.</p>
- <p>The internal documentation for <em>Compiler</em>
- 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.</p>
- <p>
- Own Id: OTP-15715</p>
- </item>
- <item>
- <p>The performance of non-bignum integer arithmetic has
- been improved.</p>
- <p>
- Own Id: OTP-15740</p>
- </item>
- </list>
- </section>
-
-</section>
-
<section><title>Erts 10.3.4</title>
<section><title>Fixed Bugs and Malfunctions</title>
diff --git a/erts/doc/src/socket.xml b/erts/doc/src/socket.xml
index 343b61d4aa..f6195a65b2 100644
--- a/erts/doc/src/socket.xml
+++ b/erts/doc/src/socket.xml
@@ -29,7 +29,7 @@
<rev></rev>
<file>socket.xml</file>
</header>
- <module since="OTP 22.0">socket</module>
+ <module since="OTP @OTP-14831@">socket</module>
<modulesummary>Socket interface.</modulesummary>
<description>
<p>This module provides an API for the socket interface.
@@ -256,8 +256,8 @@
<funcs>
<func>
- <name name="accept" arity="1" since="OTP 22.0"/>
- <name name="accept" arity="2" since="OTP 22.0"/>
+ <name name="accept" arity="1" since="OTP @OTP-14831@"/>
+ <name name="accept" arity="2" since="OTP @OTP-14831@"/>
<fsummary>Accept a connection on a socket.</fsummary>
<desc>
<p>Accept a connection on a socket.</p>
@@ -269,7 +269,7 @@
</func>
<func>
- <name name="bind" arity="2" since="OTP 22.0"/>
+ <name name="bind" arity="2" since="OTP @OTP-14831@"/>
<fsummary>Bind a name to a socket.</fsummary>
<desc>
<p>Bind a name to a socket.</p>
@@ -282,7 +282,7 @@
</func>
<func>
- <name name="close" arity="1" since="OTP 22.0"/>
+ <name name="close" arity="1" since="OTP @OTP-14831@"/>
<fsummary>Close a socket.</fsummary>
<desc>
<p>Closes the socket.</p>
@@ -301,8 +301,8 @@
</func>
<func>
- <name name="connect" arity="2" since="OTP 22.0"/>
- <name name="connect" arity="3" since="OTP 22.0"/>
+ <name name="connect" arity="2" since="OTP @OTP-14831@"/>
+ <name name="connect" arity="3" since="OTP @OTP-14831@"/>
<fsummary>Initiate a connection on a socket.</fsummary>
<desc>
<p>This function connects the socket to the address
@@ -311,13 +311,13 @@
</func>
<func>
- <name name="getopt" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="3" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="4" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="5" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="6" since="OTP 22.0"/>
- <name name="getopt" arity="3" clause_i="7" since="OTP 22.0"/>
+ <name name="getopt" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="4" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="5" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="6" since="OTP @OTP-14831@"/>
+ <name name="getopt" arity="3" clause_i="7" since="OTP @OTP-14831@"/>
<fsummary>Get an option on a socket.</fsummary>
<desc>
<p>Get an option on a socket.</p>
@@ -337,7 +337,7 @@
</func>
<func>
- <name name="getopt" arity="3" clause_i="8" since="OTP 22.0"/>
+ <name name="getopt" arity="3" clause_i="8" since="OTP @OTP-14831@"/>
<fsummary>Get an option on a socket.</fsummary>
<desc>
<p>Get an option on a socket.</p>
@@ -359,8 +359,8 @@
</func>
<func>
- <name name="listen" arity="1" since="OTP 22.0"/>
- <name name="listen" arity="2" since="OTP 22.0"/>
+ <name name="listen" arity="1" since="OTP @OTP-14831@"/>
+ <name name="listen" arity="2" since="OTP @OTP-14831@"/>
<fsummary>Listen for connections on a socket.</fsummary>
<desc>
<p>Listen for connections on a socket.</p>
@@ -368,9 +368,9 @@
</func>
<func>
- <name name="open" arity="2" since="OTP 22.0"/>
- <name name="open" arity="3" since="OTP 22.0"/>
- <name name="open" arity="4" since="OTP 22.0"/>
+ <name name="open" arity="2" since="OTP @OTP-14831@"/>
+ <name name="open" arity="3" since="OTP @OTP-14831@"/>
+ <name name="open" arity="4" since="OTP @OTP-14831@"/>
<fsummary>Create an endpoint for communication.</fsummary>
<desc>
<p>Creates an endpoint (socket) for communication.</p>
@@ -390,7 +390,7 @@
</func>
<func>
- <name name="peername" arity="1" since="OTP 22.0"/>
+ <name name="peername" arity="1" since="OTP @OTP-14831@"/>
<fsummary>Get name of connected socket peer.</fsummary>
<desc>
<p>Returns the address of the peer connected to the socket.</p>
@@ -398,11 +398,11 @@
</func>
<func>
- <name name="recv" arity="1" since="OTP 22.0"/>
- <name name="recv" arity="2" since="OTP 22.0"/>
- <name name="recv" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="recv" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="recv" arity="4" since="OTP 22.0"/>
+ <name name="recv" arity="1" since="OTP @OTP-14831@"/>
+ <name name="recv" arity="2" since="OTP @OTP-14831@"/>
+ <name name="recv" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="recv" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="recv" arity="4" since="OTP @OTP-14831@"/>
<fsummary>Receive a message from a socket.</fsummary>
<desc>
<p>Receive a message from a socket.</p>
@@ -413,12 +413,12 @@
</func>
<func>
- <name name="recvfrom" arity="1" since="OTP 22.0"/>
- <name name="recvfrom" arity="2" since="OTP 22.0"/>
- <name name="recvfrom" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="recvfrom" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="recvfrom" arity="3" clause_i="3" since="OTP 22.0"/>
- <name name="recvfrom" arity="4" since="OTP 22.0"/>
+ <name name="recvfrom" arity="1" since="OTP @OTP-14831@"/>
+ <name name="recvfrom" arity="2" since="OTP @OTP-14831@"/>
+ <name name="recvfrom" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="recvfrom" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="recvfrom" arity="3" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="recvfrom" arity="4" since="OTP @OTP-14831@"/>
<fsummary>Receive a message from a socket.</fsummary>
<desc>
<p>Receive a message from a socket.</p>
@@ -437,12 +437,12 @@
</func>
<func>
- <name name="recvmsg" arity="1" since="OTP 22.0"/>
- <name name="recvmsg" arity="2" clause_i="1" since="OTP 22.0"/>
- <name name="recvmsg" arity="2" clause_i="2" since="OTP 22.0"/>
- <name name="recvmsg" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="recvmsg" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="recvmsg" arity="5" since="OTP 22.0"/>
+ <name name="recvmsg" arity="1" since="OTP @OTP-14831@"/>
+ <name name="recvmsg" arity="2" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="recvmsg" arity="2" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="recvmsg" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="recvmsg" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="recvmsg" arity="5" since="OTP @OTP-14831@"/>
<fsummary>Receive a message from a socket.</fsummary>
<desc>
<p>Receive a message from a socket.</p>
@@ -473,10 +473,10 @@
</func>
<func>
- <name name="send" arity="2" since="OTP 22.0"/>
- <name name="send" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="send" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="send" arity="4" since="OTP 22.0"/>
+ <name name="send" arity="2" since="OTP @OTP-14831@"/>
+ <name name="send" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="send" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="send" arity="4" since="OTP @OTP-14831@"/>
<fsummary>Send a message on a socket.</fsummary>
<desc>
<p>Send a message on a connected socket.</p>
@@ -484,10 +484,10 @@
</func>
<func>
- <name name="sendmsg" arity="2" since="OTP 22.0"/>
- <name name="sendmsg" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="sendmsg" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="sendmsg" arity="4" since="OTP 22.0"/>
+ <name name="sendmsg" arity="2" since="OTP @OTP-14831@"/>
+ <name name="sendmsg" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="sendmsg" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="sendmsg" arity="4" since="OTP @OTP-14831@"/>
<fsummary>Send a message on a socket.</fsummary>
<desc>
<p>Send a message on a socket. The destination, if needed
@@ -508,10 +508,10 @@
</func>
<func>
- <name name="sendto" arity="3" since="OTP 22.0"/>
- <name name="sendto" arity="4" clause_i="1" since="OTP 22.0"/>
- <name name="sendto" arity="4" clause_i="2" since="OTP 22.0"/>
- <name name="sendto" arity="5" since="OTP 22.0"/>
+ <name name="sendto" arity="3" since="OTP @OTP-14831@"/>
+ <name name="sendto" arity="4" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="sendto" arity="4" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="sendto" arity="5" since="OTP @OTP-14831@"/>
<fsummary>Send a message on a socket.</fsummary>
<desc>
<p>Send a message on a socket, to the specified destination.</p>
@@ -519,13 +519,13 @@
</func>
<func>
- <name name="setopt" arity="4" clause_i="1" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="2" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="3" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="4" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="5" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="6" since="OTP 22.0"/>
- <name name="setopt" arity="4" clause_i="7" since="OTP 22.0"/>
+ <name name="setopt" arity="4" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="4" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="5" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="6" since="OTP @OTP-14831@"/>
+ <name name="setopt" arity="4" clause_i="7" since="OTP @OTP-14831@"/>
<fsummary>Set options on a socket.</fsummary>
<desc>
<p>Set options on a socket.</p>
@@ -548,7 +548,7 @@
</func>
<func>
- <name name="setopt" arity="4" clause_i="8" since="OTP 22.0"/>
+ <name name="setopt" arity="4" clause_i="8" since="OTP @OTP-14831@"/>
<fsummary>Set options on a socket.</fsummary>
<desc>
<p>Set options on a socket.</p>
@@ -571,7 +571,7 @@
</func>
<func>
- <name name="shutdown" arity="2" since="OTP 22.0"/>
+ <name name="shutdown" arity="2" since="OTP @OTP-14831@"/>
<fsummary>Shut down part of a full-duplex connection.</fsummary>
<desc>
<p>Shut down all or part of a full-duplex connection.</p>
@@ -579,7 +579,7 @@
</func>
<func>
- <name name="sockname" arity="1" since="OTP 22.0"/>
+ <name name="sockname" arity="1" since="OTP @OTP-14831@"/>
<fsummary>Get socket name.</fsummary>
<desc>
<p>Returns the current address to which the socket is bound.</p>
@@ -587,25 +587,25 @@
</func>
<func>
- <name name="supports" arity="0" since="OTP 22.0"/>
- <name name="supports" arity="1" clause_i="1" since="OTP 22.0"/>
- <name name="supports" arity="1" clause_i="2" since="OTP 22.0"/>
- <name name="supports" arity="1" clause_i="3" since="OTP 22.0"/>
- <name name="supports" arity="1" clause_i="4" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="1" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="2" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="3" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="4" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="5" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="6" since="OTP 22.0"/>
- <name name="supports" arity="2" clause_i="7" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="1" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="2" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="3" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="4" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="5" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="6" since="OTP 22.0"/>
- <name name="supports" arity="3" clause_i="7" since="OTP 22.0"/>
+ <name name="supports" arity="0" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="1" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="1" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="1" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="1" clause_i="4" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="4" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="5" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="6" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="2" clause_i="7" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="1" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="2" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="3" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="4" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="5" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="6" since="OTP @OTP-14831@"/>
+ <name name="supports" arity="3" clause_i="7" since="OTP @OTP-14831@"/>
<fsummary>Report info about what the platform supports.</fsummary>
<desc>
<p>This function intends to retreive information about what the