diff options
author | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2009-11-20 14:54:40 +0000 |
commit | 84adefa331c4159d432d22840663c38f155cd4c1 (patch) | |
tree | bff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/kernel/doc/src/notes.xml | |
download | otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2 otp-84adefa331c4159d432d22840663c38f155cd4c1.zip |
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/kernel/doc/src/notes.xml')
-rw-r--r-- | lib/kernel/doc/src/notes.xml | 2273 |
1 files changed, 2273 insertions, 0 deletions
diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml new file mode 100644 index 0000000000..5bac964535 --- /dev/null +++ b/lib/kernel/doc/src/notes.xml @@ -0,0 +1,2273 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>2004</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Kernel Release Notes</title> + <prepared></prepared> + <docno></docno> + <date></date> + <rev></rev> + <file>notes.xml</file> + </header> + <p>This document describes the changes made to the Kernel application.</p> + +<section><title>Kernel 2.13.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>A link in <c>pg2(3)</c> has been fixed. (Thanks to + Christophe Romain.)</p> + <p> + Own Id: OTP-8198</p> + </item> + <item> + <p> + A ticker process could potentially be blocked + indefinitely trying to send a tick to a node not + responding. If this happened, the connection would not be + brought down as it should.</p> + <p> + Own Id: OTP-8218</p> + </item> + <item> + <p>A bug in <c>pg2</c> when members who died did not + leave process groups has been fixed. (Thanks to Matthew + Dempsky.)</p> + <p> + Own Id: OTP-8259</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The documentation is now built with open source tools + (xsltproc and fop) that exists on most platforms. One + visible change is that the frames are removed.</p> + <p> + Own Id: OTP-8201</p> + </item> + <item> + <p> + The top directory in archive files does not need to have + a <c>-vsn</c> suffix anymore. For example if the archive + file has the name like <c>mnesia-4.4.7.ez</c> the top + directory in the archive can either be named + <c>mnesia</c> or <c>mnesia-4.4.7</c>. If the archive file + has a name like <c>mnesia.ez</c> the top directory in the + archive must be named <c>mnesia</c> as earlier.</p> + <p> + Own Id: OTP-8266</p> + </item> + <item> + <p>The -on_load() directive can be used to run a function + when a module is loaded. It is documented in the section + about code loading in the Reference Manual.</p> + <p> + Own Id: OTP-8295</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.13.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> The DNS resolver client inet_res has been rewritten, + documented and released. See inet_res(3) and Erts User's + Guide: Inet configuration. </p><p> It can formally not be + incompatible with respect to earlier versions since there + was no earlier official version. However it was used + before and some details have changed. </p><p> + Configuration now initializes from /etc/resolv.conf and + /etc/hosts on all unix platforms regardless of which + distribution mode the node is started in. The directory + (/etc) these files are supposed to reside in can be + changed via an environment variable. These configuration + file locations can also be changed in the inet + configuration. The files are monitored for change and + re-read, which makes a few resolver configuration + variables out of application control. The /etc/hosts + entries have now their own cache table that is shadowed + (with lookup method 'file' is used) by the application + configured host entries. This problem (that inet_res + configuration only worked for distribution mode long + names) was among other reported by Matthew O'Gorman many + moons ago. </p><p> The lookup methods are still 'native' + only per default. Resolver configuration is done on all + Unix platforms just to get a usable configuration for + direct calls to inet_res. </p><p> The functions + <c>inet_res:nslookup/3..5</c> and + <c>inet_res:nnslookup/4..4</c> are no longer recommended + to use, instead use <c>inet_res:lookup/3..5</c> and + <c>inet_res:resolve/3..5</c> which provide clearer + argument types and the possibility to override options in + the call. </p><p> Users of previous unsupported versions + of inet_res have included internal header files to get to + the internal record definitions in order to examine DNS + replies. This is still unsupported and there are access + functions in inet_dns to use instead. These are + documented in inet_res(3). </p><p> Bug fix: a compression + reference loop would make DNS message decoding loop + forever. Problem reported by Florian Weimer. </p><p> Bug + fix and patch suggestion by Sergei Golovan: configuring + IPv6 nameservers did not work. His patch (as he warned) + created many UDP sockets; one per nameserver. This has + been fixed in the released version. </p><p> Improvement: + <c>inet_res</c> is now EDNS0 capable. The current + implementation is simple and does not probe and cache + EDNS info for nameservers, which a fully capable + implementation probably should do. EDNS has to be enabled + via resolver configuration, and if a nameserver replies + that it does not support EDNS, <c>inet_res</c> falls back + to a regular DNS query. </p><p> Improvement: now + <c>inet_res</c> automatically falls back to TCP if it + gets a truncated answer from a nameserver. </p><p> + Warning: some of the ancient and exotic record types + handled by <c>inet_res</c> and <c>inet_dns</c> are not + supported by current versions of BIND, so they could not + be tested after the rewrite, with reasonable effort, e.g + MD, MF, NULL, and SPF. The risk for bugs in these + particular records is still low since their code is + mostly shared with other tested record types. </p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7955 Aux Id: OTP-7107 OTP-6852 </p> + </item> + <item> + <p> + A TCP socket with option <c>{packet,4}</c> could crash + the emulator if it received a packet header with a very + large size value (>2Gb). The same bug caused + <c>erlang:decode_packet/3</c> to return faulty values. + (Thanks to Georgos Seganos.)</p> + <p> + Own Id: OTP-8102</p> + </item> + <item> + <p> + The file module has now a read_line/1 function similar to + the io:get_line/2, but with byte oriented semantics. The + function file:read_line/1 works for raw files as well, + but for good performance it is recommended to use it + together with the 'read_ahead' option for raw file + access.</p> + <p> + Own Id: OTP-8108</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.13.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + A bug when doing io:get_line (among other calls) from a + file opened with encoding other than latin1, causing + false unicode errors to occur, is now corrected.</p> + <p> + Own Id: OTP-7974</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Added functionality to get higher resolution timestamp + from system. The erlang:now function returns a timestamp + that's not always consistent with the actual operating + system time (due to resilience against large time changes + in the operating system). The function os:timestamp/0 is + added to get a similar timestamp as the one being + returned by erlang:now, but untouched by Erlangs time + correcting and smoothing algorithms. The timestamp + returned by os:timestamp is always consistent with the + operating systems view of time, like the calendar + functions for getting wall clock time, but with higher + resolution. Example of usage can be found in the os + manual page.</p> + <p> + Own Id: OTP-7971</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.13.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Many concurrent calls to <c>os:cmd/1</c> will only block + one scheduler thread at a time, making an smp emulator + more responsive if the OS is slow forking processes.</p> + <p> + Own Id: OTP-7890 Aux Id: seq11219 </p> + </item> + <item> + <p> + Fixed hanging early RPC that did IO operation during node + start.</p> + <p> + Own Id: OTP-7903 Aux Id: seq11224 </p> + </item> + <item> + <p> + The error behavior of gen_tcp and gen_udp has been + corrected. gen_tcp:connect/3,4 and gen_udp:send/4 now + returns {error,eafnosupport} for conflicting destination + address versus socket address family. Other corner cases + for IP address string host names combined with not using + the native (OS) resolver (which is not default) has also + been changed to return {error,nxdomain} instead of + {error,einval}. Those changes just may surprise old + existing code. gen_tcp:listen/2 and gen_udp:open/2 now + fails for conflicting local address versus socket address + family instead of trying to use an erroneous address. + Problem reported by Per Hedeland.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7929</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Several glitches and performance issues in the Unicode + and I/O-system implementation of R13A have been + corrected.</p> + <p> + Own Id: OTP-7896 Aux Id: OTP-7648 OTP-7887 </p> + </item> + <item> + <p> + The unsupported DNS resolver client inet_res has now been + improved to handle NAPTR queries.</p> + <p> + Own Id: OTP-7925 Aux Id: seq11231 </p> + </item> + </list> + </section> + +</section> + + +<section><title>Kernel 2.13</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The old Erlang DNS resolver inet_res has been corrected + to handle TXT records with more than one character + string. Patch courtesy of Geoff Cant.</p> + <p> + Own Id: OTP-7588</p> + </item> + <item> + <p>When chunk reading a disk log opened in read_only + mode, bad terms could crash the disk log process.</p> + <p> + Own Id: OTP-7641 Aux Id: seq11090 </p> + </item> + <item> + <p> + <c>gen_tcp:send()</c> did sometimes (only observed on + Solaris) return <c>{error,enotconn}</c> instead of the + expected <c>{error,closed}</c> as the peer socket had + been explicitly closed.</p> + <p> + Own Id: OTP-7647</p> + </item> + <item> + <p> + The gen_sctp option sctp_peer_addr_params, + #sctp_paddrparams{address={IP,Port} was erroneously + decoded in the inet driver. This bug has now been + corrected.</p> + <p> + Own Id: OTP-7755</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Erlang programs can now access STDERR on platforms where + such a file descriptor is available by using the + io_server 'standard_error', i.e. + io:format(standard_error,"~s~n",[ErrorMessage]),</p> + <p> + Own Id: OTP-6688</p> + </item> + <item> + <p> + The format of the string returned by + <c>erlang:system_info(system_version)</c> (as well as the + first message when Erlang is started) has changed. The + string now contains the both the OTP version number as + well as the erts version number.</p> + <p> + Own Id: OTP-7649</p> + </item> + <item> + <p>As of this version, the global name server no longer + supports nodes running Erlang/OTP R10B.</p> + <p> + Own Id: OTP-7661</p> + </item> + <item> + <p> + A <c>{nodedown, Node}</c> message passed by the + <c>net_kernel:monitor_nodes/X</c> functionality is now + guaranteed to be sent after <c>Node</c> has been removed + from the result returned by <c>erlang:nodes/Y</c>.</p> + <p> + Own Id: OTP-7725</p> + </item> + <item> + <p>The deprecated functions <c>erlang:fault/1</c>, + <c>erlang:fault/2</c>, and <c>file:rawopen/2</c> have + been removed.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7812</p> + </item> + <item> + <p> + Nodes belonging to different independent clusters can now + co-exist on the same host with the help of a new + environment variable setting ERL_EPMD_PORT.</p> + <p> + Own Id: OTP-7826</p> + </item> + <item> + <p>The copyright notices have been updated.</p> + <p> + Own Id: OTP-7851</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.5.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>When chunk reading a disk log opened in read_only + mode, bad terms could crash the disk log process.</p> + <p> + Own Id: OTP-7641 Aux Id: seq11090 </p> + </item> + <item> + <p> + Calling <c>gen_tcp:send()</c> from several processes on + socket with option <c>send_timeout</c> could lead to much + longer timeout than specified. The solution is a new + socket option <c>{send_timeout_close,true}</c> that will + do automatic close on timeout. Subsequent calls to send + will then immediately fail due to the closed connection.</p> + <p> + Own Id: OTP-7731 Aux Id: seq11161 </p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>The documentation of <c>rpc:pmap/3</c> has been + corrected. (Thanks to Kirill Zaborski.)</p> + <p> + Own Id: OTP-7537</p> + </item> + <item> + <p> + The listen socket used for the distributed Erlang + protocol now uses the socket option 'reuseaddr', which is + useful when you force the listen port number using kernel + options 'inet_dist_listen_min' and 'inet_dist_listen_max' + and restarts a node with open connections.</p> + <p> + Own Id: OTP-7563</p> + </item> + <item> + <p> + Fixed memory leak of unclosed TCP-ports. A gen_tcp:send() + followed by a failing gen_tcp:recv() could in some cases + cause the port to linger after being closed.</p> + <p> + Own Id: OTP-7615</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>Processes spawned using <c>proc_lib</c> (including + <c>gen_server</c> and other library modules that use + <c>proc_lib</c>) no longer keep the entire argument list + for the initial call, but only the arity.</p> + <p>Also, if <c>proc_lib:spawn/1</c> is used to spawn a + fun, the actual fun is not kept, but only module, + function name, and arity of the function that implements + the fun.</p> + <p>The reason for the change is that keeping the initial + fun (or a fun in an argument list), would prevent + upgrading the code for the module. A secondary reason is + that keeping the fun and function arguments could waste a + significant amount of memory.</p> + <p>The drawback with the change is that the crash reports + will provide less precise information about the initial + call (only <c>Module:Function/Arity</c> instead of + <c>Module:Function(Arguments)</c>). The function + <c>proc_lib:initial_call/1</c> still returns a list, but + each argument has been replaced with a dummy atom.</p> + <p> + Own Id: OTP-7531 Aux Id: seq11036 </p> + </item> + <item> + <p> + <c>io:get_line/1</c> when reading from standard input is + now substantially faster. There are also some minor + performance improvements in <c>io:get_line/1</c> when + reading from any file opened in binary mode. (Thanks to + Fredrik Svahn.)</p> + <p> + Own Id: OTP-7542</p> + </item> + <item> + <p> + There is now experimental support for loading of code + from archive files. See the documentation of <c>code</c>, + <c>init</c>, <c>erl_prim_loader </c> and <c>escript</c> + for more info.</p> + <p> + The error handling of <c>escripts</c> has been improved.</p> + <p> + An <c>escript</c> may now set explicit arguments to the + emulator, such as <c>-smp enabled</c>.</p> + <p> + An <c>escript</c> may now contain a precompiled beam + file.</p> + <p> + An <c>escript</c> may now contain an archive file + containing one or more applications (experimental).</p> + <p> + The internal module <c>code_aux</c> has been removed.</p> + <p> + Own Id: OTP-7548 Aux Id: otp-6622 </p> + </item> + <item> + <p> + <c>code:is_sticky/1</c> is now documented. (Thanks to + Vlad Dumitrescu.)</p> + <p> + Own Id: OTP-7561</p> + </item> + <item> + <p> + In the job control mode, the "s" and "r" commands now + take an optional argument to specify which shell to + start. (Thanks to Robert Virding.)</p> + <p> + Own Id: OTP-7617</p> + </item> + <item> + <p> + <c>net_adm:world/0,1</c> could crash if called in an + emulator that has not been started with either the + <c>-sname</c> or <c>-name</c> option; now it will return + an empty list. (Thanks to Edwin Fine.)</p> + <p> + Own Id: OTP-7618</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Large files are now handled on Windows, where the + filesystem supports it.</p> + <p> + Own Id: OTP-7410</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + New BIF <c>erlang:decode_packet/3</c> that extracts a + protocol packet from a binary. Similar to the socket + option <c>{packet, Type}</c>. Also documented the socket + packet type <c>http</c> and made it official. + <em>NOTE</em>: The tuple format for <c>http</c> packets + sent from an active socket has been changed in an + incompatible way.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7404</p> + </item> + <item> + <p> + Setting the <c>{active,once}</c> for a socket (using + inets:setopts/2) is now specially optimized (because the + <c>{active,once}</c> option is typically used much more + frequently than other options).</p> + <p> + Own Id: OTP-7520</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + SCTP_ADDR_CONFIRMED events are now handled by gen_sctp.</p> + <p> + Own Id: OTP-7276</p> + </item> + <item> + <p>When leaving a process group with <c>pg2:leave/2</c> + the process was falsely assumed to be a member of the + group. This bug has been fixed.</p> + <p> + Own Id: OTP-7277</p> + </item> + <item> + <p> + In the Erlang shell, using up and down arrow keys, the + wrong previous command could sometimes be retrieved.</p> + <p> + Own Id: OTP-7278</p> + </item> + <item> + <p> + The documentation for <c>erlang:trace/3</c> has been + corrected.</p> + <p> + Own Id: OTP-7279 Aux Id: seq10927 </p> + </item> + <item> + <p> + In the SMP emulator, there was small risk that + <c>code:purge(Mod)</c> would kill a process that was + running code in <c>Mod</c> and unload the module + <c>Mod</c> before the process had terminated. + <c>code:purge(Mod)</c> now waits for confirmation (using + <c>erlang:monitor/2</c>) that the process has been killed + before proceeding.</p> + <p> + Own Id: OTP-7282</p> + </item> + <item> + <p> + <c>zlib:inflate</c> failed when the size of the inflated + data was an exact multiple of the internal buffer size + (4000 bytes by default).</p> + <p> + Own Id: OTP-7359</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Additional library directories can now be specified in + the environment variable ERL_LIBS. See the manual page + for the <c>code</c> module. (Thanks to Serge Aleynikov.)</p> + <p> + Own Id: OTP-6940</p> + </item> + <item> + <p> + crypto and zlib drivers improved to allow concurrent smp + access.</p> + <p> + Own Id: OTP-7262</p> + </item> + <item> + <p> + There is a new function <c>init:stop/1</c> which can be + used to shutdown the system cleanly AND generate a + non-zero exit status or crash dump. (Thanks to Magnus + Froberg.)</p> + <p> + Own Id: OTP-7308</p> + </item> + <item> + <p> + The <c>hide</c> option for <c>open_port/2</c> is now + documented. (Thanks to Richard Carlsson.)</p> + <p> + Own Id: OTP-7358</p> + </item> + </list> + </section> + +</section> + + +<section><title>Kernel 2.12.2.1</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + <c>os:cmd/1</c> on unix platforms now use <c>/bin/sh</c> + as shell instead of looking for <c>sh</c> in the + <c>PATH</c> environment.</p> + <p> + Own Id: OTP-7283</p> + </item> + </list> + </section> + +</section> +<section><title>Kernel 2.12.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>A bug caused by a race condition involving + <c>disk_log</c> and <c>pg2</c> has been fixed.</p> + <p> + Own Id: OTP-7209 Aux Id: seq10890 </p> + </item> + <item> + <p>The beta testing module <c>gen_sctp</c> now supports + active mode as stated in the documentation. Active mode + is still rather untested, and there are some issues about + what should be the right semantics for + <c>gen_sctp:connect/5</c>. In particular: should it be + blocking or non-blocking or choosable. There is a high + probability it will change semantics in a (near) future + patch.</p> <p>Try it, give comments and send in bug + reports!</p> + <p> + Own Id: OTP-7225</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p><c>erlang:system_info/1</c> now accepts the + <c>logical_processors</c>, and <c>debug_compiled</c> + arguments. For more info see the, <c>erlang(3)</c> + documentation.</p> <p>The scale factor returned by + <c>test_server:timetrap_scale_factor/0</c> is now also + effected if the emulator uses a larger amount of + scheduler threads than the amount of logical processors + on the system. </p> + <p> + Own Id: OTP-7175</p> + </item> + <item> + <p> + Updated the documentation for + <c>erlang:function_exported/3</c> and <c>io:format/2</c> + functions to no longer state that those functions are + kept mainly for backwards compatibility.</p> + <p> + Own Id: OTP-7186</p> + </item> + <item> + <p> + A process executing the <c>processes/0</c> BIF can now be + preempted by other processes during its execution. This + in order to disturb the rest of the system as little as + possible. The returned result is, of course, still a + consistent snapshot of existing processes at a time + during the call to <c>processes/0</c>.</p> + <p> + The documentation of the <c>processes/0</c> BIF and the + <c>is_process_alive/1</c> BIF have been updated in order + to clarify the difference between an existing process and + a process that is alive.</p> + <p> + Own Id: OTP-7213</p> + </item> + <item> + <p><c>tuple_size/1</c> and <c>byte_size/1</c> have been + substituted for <c>size/1</c> in the documentation.</p> + <p> + Own Id: OTP-7244</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.1.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The <c>{allocator_sizes, Alloc}</c> and + <c>alloc_util_allocators</c> arguments are now accepted + by <c>erlang:system_info/1</c>. For more information see + the <c>erlang(3)</c> documentation.</p> + <p> + Own Id: OTP-7167</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12.1.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fixed a problem in group that could cause the ssh server + to lose answers or hang.</p> + <p> + Own Id: OTP-7185 Aux Id: seq10871 </p> + </item> + </list> + </section> +</section> +<section><title>Kernel 2.12.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + file:read/2 and file:consult_stream/1,3 did not use an + empty prompt on I/O devices. This bug has now been + corrected.</p> + <p> + Own Id: OTP-7013</p> + </item> + <item> + <p> + The sctp driver has been updated to work against newer + lksctp packages e.g 1.0.7 that uses the API spelling + change adaption -> adaptation. Older lksctp (1.0.6) still + work. The erlang API in gen_sctp.erl and inet_sctp.hrl + now spells 'adaptation' regardless of the underlying C + API.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7120</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The documentation has been updated so as to reflect + the last updates of the Erlang shell as well as the minor + modifications of the control sequence <c>p</c> of the + <c>io_lib</c> module.</p> <p>Superfluous empty lines have + been removed from code examples and from Erlang shell + examples.</p> + <p> + Own Id: OTP-6944 Aux Id: OTP-6554, OTP-6911 </p> + </item> + <item> + <p><c>tuple_size/1</c> and <c>byte_size/1</c> have been + substituted for <c>size/1</c>.</p> + <p> + Own Id: OTP-7009</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.12</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + A bug for raw files when reading 0 bytes returning 'eof' + instead of empty data has been corrected.</p> + <p> + Own Id: OTP-6291 Aux Id: OTP-6967 </p> + </item> + <item> + <p> + A bug in gen_udp:fdopen reported by David Baird and also + found by Dialyzer has been fixed.</p> + <p> + Own Id: OTP-6836 Aux Id: OTP-6594 </p> + </item> + <item> + <p> + Calling <c>error_logger:tty(true)</c> multiple times does + not give multiple error log printouts.</p> + <p> + Own Id: OTP-6884 Aux Id: seq10767 </p> + </item> + <item> + <p>The global name server now ignores <c>nodeup</c> + messages when the command line flag <c>-connect_all + false</c> has been used. (Thanks to Trevor + Woollacott.)</p> + <p> + Own Id: OTP-6931</p> + </item> + <item> + <p>file:write_file/3, file:write/2 and file:read/2 could + crash (contrary to documentation) for odd enough file + system problems, e.g write to full file system. This bug + has now been corrected.</p> <p>In this process the file + module has been rewritten to produce better error codes. + Posix error codes now originate from the OS file system + calls or are generated only for very similar causes (for + example 'enomem' is generated if a memory allocation + fails, and 'einval' is generated if the file handle in + Erlang is a file handle but currently invalid).</p> + <p>More Erlang-ish error codes are now generated. For + example <c>{error,badarg}</c> is now returned from + <c>file:close/1</c> if the argument is not of a file + handle type. See file(3).</p> <p>The possibility to write + a single byte using <c>file:write/2</c> instead of a list + or binary of one byte, contradictory to the + documentation, has been removed.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6967 Aux Id: OTP-6597 OTP-6291 </p> + </item> + <item> + <p> + Monitor messages produced by the system monitor + functionality, and garbage collect trace messages could + contain erroneous heap and/or stack sizes when the actual + heaps and/or stacks were huge.</p> + <p> + As of erts version 5.6 the <c>large_heap</c> option to + <c>erlang:system_monitor/[1,2]</c> has been modified. The + monitor message is sent if the sum of the sizes of all + memory blocks allocated for all heap generations is equal + to or larger than the specified size. Previously the + monitor message was sent if the memory block allocated + for the youngest generation was equal to or larger than + the specified size.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6974 Aux Id: seq10796 </p> + </item> + <item> + <p> + <c>inet:getopts/2</c> returned random values on Windows + Vista.</p> + <p> + Own Id: OTP-7003</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Minor documentation corrections for file:pread/2 and + file:pread/3.</p> + <p> + Own Id: OTP-6853</p> + </item> + <item> + <p> + The deprecated functions <c>file:file_info/1</c>, + <c>init:get_flag/1</c>, <c>init:get_flags/0</c>, and + <c>init:get_args/0</c> have been removed.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6886</p> + </item> + <item> + <p> + Contract directives for modules in Kernel and STDLIB.</p> + <p> + Own Id: OTP-6895</p> + </item> + <item> + <p>The functions io:columns/0, io:columns/1, io:rows/0 + and io:rows/1 are added to allow the user to get + information about the terminal geometry. The shell takes + some advantage of this when formatting output. For + regular files and other io-devices where height and width + are not applicable, the functions return + {error,enotsup}.</p> + <p>Potential incompatibility: If one has written a custom + io-handler, the handler has to either return an error or + take care of io-requests regarding terminal height and + width. Usually that is no problem as io-handlers, as a + rule of thumb, should give an error reply when receiving + unknown io-requests, instead of crashing.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6933</p> + </item> + <item> + <p> + The undocumented and unsupported functions + <c>inet:ip_to_bytes/1</c>, <c>inet:ip4_to_bytes/1</c>, + <c>inet:ip6_to_bytes/1</c>, and + <c>inet:bytes_to_ip6/16</c> have been removed.</p> + <p> + Own Id: OTP-6938</p> + </item> + <item> + <p> + Added new checksum combine functions to <c>zlib</c>. And + fixed a bug in <c>zlib:deflate</c>. Thanks Matthew + Dempsky.</p> + <p> + Own Id: OTP-6970</p> + </item> + <item> + <p> + The <c>spawn_monitor/1</c> and <c>spawn_monitor/3</c> BIFs + are now auto-imported (i.e. they no longer need an + <c>erlang:</c> prefix).</p> + <p> + Own Id: OTP-6975</p> + </item> + <item> + <p>All functions in the <c>code</c> module now fail with + an exception if they are called with obviously bad + arguments, such as a tuple when an atom was expected. + Some functions now also fail for undocumented argument + types (for instance, <c>ensure_loaded/1</c> now only + accepts an atom as documented; it used to accept a string + too).</p> + <p><c>Dialyzer</c> will generally emit warnings for any + calls that use undocumented argument types. Even if the + call happens to still work in R12B, you should correct + your code. A future release will adhere to the + documentation.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6983</p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.11.5.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The kernel parameter dist_auto_connect once could fail to + block a node if massive parallel sends were issued + during a transient failure of network communication</p> + <p> + Own Id: OTP-6893 Aux Id: seq10753 </p> + </item> + </list> + </section> + +</section> + +<section><title>Kernel 2.11.5.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The internal (rarely used) DNS resolver has been modified + to not use the domain search list when asked to resolve + an absolute name; a name with a terminating dot. There + was also a bug causing it to create malformed DNS queries + for absolute names that has been corrected, correction + suggested by Scott Lystig Fritchie. The code has also + been corrected to look up cached RRs in the same search + order as non-cached, now allows having the root domain + among the search domains, and can now actually do a zone + transfer request.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6806 Aux Id: seq10714 EABln35459 </p> + </item> + <item> + <p> + zlib:close/1 would leave an EXIT message in the message + queue if the calling process had the trap_exit flag + enabled.</p> + <p> + Own Id: OTP-6811</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The documentation of <c>process_flag(priority, + Level)</c> has been updated, see the <c>erlang(3)</c> + documentation. </p> + <p> + Own Id: OTP-6745 Aux Id: OTP-6715 </p> + </item> + </list> + </section> + +</section> + + <section> + <title>Kernel 2.11.5</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The shell has been updated to fix the following flaws: + Shell process exit left you with an unresponsive initial + shell if not using oldshell. Starting a restricted shell + with a nonexisting callback module resulted in a shell + where no commands could be used, not even init:stop/0. + Fun's could not be used as parameters to local shell + functions (in shell_default or user_default) when + restricted_shell was active.</p> + <p>Own Id: OTP-6537</p> + </item> + <item> + <p>The undocumented feature gen_tcp:fdopen/2 was broken + in R11B-4. It is now fixed again.</p> + <p>Own Id: OTP-6615</p> + </item> + <item> + <p>Corrected cancellation of timers in three places in the + inet_res module. (Problem found by Dialyzer.)</p> + <p>Own Id: OTP-6676</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Corrected protocol layer flue for socket options + SO_LINGER, SO_SNDBUF and SO_RCVBUF, for SCTP.</p> + <p>Own Id: OTP-6625 Aux Id: OTP-6336 </p> + </item> + <item> + <p>The behaviour of the inet option {active,once} on peer + close is improved and documented.</p> + <p>Own Id: OTP-6681</p> + </item> + <item> + <p>The inet option send_timeout for connection oriented + sockets is added to allow for timeouts in communicating + send requests to the underlying TCP stack.</p> + <p>Own Id: OTP-6684 Aux Id: seq10637 OTP-6681 </p> + </item> + <item> + <p>Minor Makefile changes.</p> + <p>Own Id: OTP-6689 Aux Id: OTP-6742 </p> + </item> + <item> + <p>The documentation of <c>process_flag(priority, Level)</c> has been updated, see the <c>erlang(3)</c> + documentation. </p> + <p>Own Id: OTP-6715</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.4.2</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>process_flag/2 accepts the new flag <c>sensitive</c>.</p> + <p>Own Id: OTP-6592 Aux Id: seq10555 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.4.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>A bug in gen_udp:open that broke the 'fd' option has been + fixed.</p> + <p>Own Id: OTP-6594 Aux Id: seq10619 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.4</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Added a warning to the documentation for the + <c>error_logger</c> functions <c>error_msg/1,2</c>, + <c>warning_msg/1,2</c> and <c>info_msg/1,2</c> that + calling these function with bad arguments can crash the + standard event handler.</p> + <p>Own Id: OTP-4575 Aux Id: seq7693 </p> + </item> + <item> + <p>A bug in <c>inet_db</c> concerning getting the resolver + option <c>retry</c> has been corrected.</p> + <p>Own Id: OTP-6380 Aux Id: seq10534 </p> + </item> + <item> + <p>Names registered by calling + <c>global:register_name()</c> or + <c>global:re_register_name()</c> were not always + unregistered when the registering or registered process + died. This bug has been fixed.</p> + <p>Own Id: OTP-6428</p> + </item> + <item> + <p>When setting the kernel configuration parameter + <c>error_logger</c> to <c>false</c>, the documentation + stated that "No error logger handler is installed". This + is true, but error logging is not turned off, as the + initial, primitive error logger event handler is kept, + printing raw event messages to tty.</p> + <p>Changing this behavior can be viewed as a backward + incompatible change. Instead a new value <c>silent</c> + for the configuration parameter has been added, which + ensures that error logging is completely turned off.</p> + <p>Own Id: OTP-6445</p> + </item> + <item> + <p>Clarified the documentation for <c>code:lib_dir/1</c> and + <c>code:priv_dir/1</c>. The functions traverse the names + of the code path, they do not search the actual + directories.</p> + <p>Own Id: OTP-6466</p> + </item> + <item> + <p><c>io:setopts</c> returned <c>{error,badarg}</c>, when + called with only an <c>expand_fun</c> argument. (Thanks to + igwan.)</p> + <p>Own Id: OTP-6508</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>An interface towards the SCTP Socket API Extensions + has been implemented.It is an Open Source patch courtesy + of Serge Aleynikov and Leonid Timochouk. The Erlang code + parts has been adapted by the OTP team, changing the + Erlang API somewhat.</p> + <p>The Erlang interface consists of the module + <c>gen_sctp</c> and an include file + <c>-include_lib("kernel/include/inet_sctp.hrl").</c> for + option record definitions. The <c>gen_sctp</c> module is + documented.</p> + <p>The delivered Open Source patch, before the OTP team + rewrites, was written according to + <url href="http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13">http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-13</url> + and was claimed to work fine, tested on Linux Fedora Core + 5.0 (kernel 2.6.15-2054 or later) and on Solaris 10 and + 11. The OTP team rewrites used the same standard document + but might have accidentally broken some functionality. If + so, it will soon be patched to working state. The tricky + parts in C and the general design has essentially not + changed. During the rewrites the code was hand tested on + SuSE Linux Enterprise Server 10, and briefly on Solaris + 10. Feedbach on code and docs is very much + appreciated.</p> + <p>The SCTP interface is in beta state. It has only been + hand tested and has no automatic test suites in OTP + meaning everything is most certainly not tested. Socket + active mode is broken. IPv6 is not tested. The documentation + has been reworked due to the API changes, + but has not been proofread after this.</p> + <p>Thank you from the OTP team to Serge Aleynikov and + Leonid Timochouk for a valuable contribution. We hope we + have not messed it up too much.</p> + <p>Own Id: OTP-6336</p> + </item> + <item> + <p>A <c>{minor_version,Version}</c> option is now recognized + by <c>term_to_binary/2</c>. {minor_version,1} will cause + floats to be encoded in an exact and more space-efficient + way compared to the previous encoding.</p> + <p>Own Id: OTP-6434</p> + </item> + <item> + <p>Monitoring of nodes has been improved. Now the following + properties apply to + <c>net_kernel:monitor_nodes/[1,2]</c>:</p> + <list type="bulleted"> + <item><c>nodeup</c> messages will be delivered before delivery + of any message from the remote node passed through the + newly established connection. </item> + <item><c>nodedown</c> messages will not be delivered until all + messages from the remote node that have been passed + through the connection have been delivered. </item> + <item>Subscriptions can also be made before the + <c>net_kernel</c> server has been started. </item> + </list> + <p>Own Id: OTP-6481</p> + </item> + <item> + <p>Setting and getting socket options in a "raw" fashion is + now allowed. Using this feature will inevitably produce + non portable code, but will allow setting ang getting + arbitrary uncommon options on TCP stacks that do have + them.</p> + <p>Own Id: OTP-6519</p> + </item> + <item> + <p>Dialyzer warnings have been eliminated.</p> + <p>Own Id: OTP-6523</p> + </item> + <item> + <p>The documentation for <c>file:delete/1</c> and + <c>file:set_cwd/1</c> has been updated to clarify what + happens if the input arguments are of an incorrect type.</p> + <p>Own Id: OTP-6535</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.3.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>An erroneous packet size could be used for the first + messages passed through a newly established connection + between two Erlang nodes. This could cause messages to be + discarded, or termination of the connection.</p> + <p>Own Id: OTP-6473</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.3</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>On Unix, the <c>unix:cmd/1</c> function could leave an + 'EXIT' message in the message queue for the calling + process That problem was more likely to happen in an SMP + emulator.</p> + <p>Own Id: OTP-6368</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>More interfaces are added in erl_ddll, to support + different usage scenarios.</p> + <p>Own Id: OTP-6307 Aux Id: OTP-6234 </p> + </item> + <item> + <p>Locks set by calling <c>global:set_lock()</c> were not + always deleted when the locking process died. This bug + has been fixed.</p> + <p>Own Id: OTP-6341 Aux Id: seq10445 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.2</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Behavior in case of disappeared nodes when using he + dist_auto_connect once got changed in R11B-1. The + timeouts regarding normal distributed operations is now + reverted to the old (pre R11B-1).</p> + <p>Own Id: OTP-6258 Aux Id: OTP-6200, seq10449 </p> + </item> + <item> + <p>Start-up problems for the internal process used by the + <c>inet:gethostbyname()</c> functions were eliminated. If + the internal process (<c>inet_gethost_native</c>) had not + previously been started, and if several processes at the + same time called one of the <c>inet:gethostbyname()</c> + functions, the calls could fail.</p> + <p>Own Id: OTP-6286</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Code cleanup: the old internal obsolete file_server has + been removed. It was only used when communicating with R7 + and older nodes.</p> + <p>Own Id: OTP-6245</p> + </item> + <item> + <p>Trying to open a non-existent or badly formed disk log + no longer results in a crash report. In particular, + <c>ets:file2tab/1</c> reports no error when the argument + is not a well-formed disk log file. (The return value has + not been changed, it is still an error tuple.)</p> + <p>Own Id: OTP-6278 Aux Id: seq10421 </p> + </item> + <item> + <p>There are new BIFs <c>erlang:spawn_monitor/1,3</c>, + and the new option <c>monitor</c> for + <c>spawn_opt/2,3,4,5</c>.</p> + <p>The <c>observer_backend</c> module has been updated to + handle the new BIFs.</p> + <p>Own Id: OTP-6281</p> + </item> + <item> + <p>To help Dialyzer find more bugs, many functions in the + Kernel and STDLIB applications now only accept arguments + of the type that is documented.</p> + <p>For instance, the functions <c>lists:prefix/2</c> and + <c>lists:suffix/2</c> are documented to only accept lists + as their arguments, but they actually accepted anything + and returned <c>false</c>. That has been changed so that + the functions cause an exception if one or both arguments + are not lists.</p> + <p>Also, the <c>string:strip/3</c> function is documented + to take a character argument that is a character to strip + from one or both ends of the string. Given a list instead + of a character, it used to do nothing, but will now cause + an exception.</p> + <p>Dialyzer will find most cases where those functions + are passed arguments of the wrong type.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-6295</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.1.1</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>There is now an option read_packets for UDP sockets that + sets the maximum number of UDP packets that will be read + for each invocation of the socket driver.</p> + <p>Own Id: OTP-6249 Aux Id: seq10452 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>In R11B-0, the erl_ddll server process is always started. + Despite that, the configuration parameter + <c>start_ddll</c> for the Kernel application was still + obeyed, which would cause the erl_ddll server to be + started TWICE (and the system shutting down as a result). + In this release, <c>start_ddll</c> is no longer used and + its documentation has been removed.</p> + <p>Own Id: OTP-6163</p> + </item> + <item> + <p>The kernel option {dist_auto_connect,once} could block + out nodes that had never been connected, causing + persistent partitioning of networks. Furthermore, partial + restarts of networks could cause inconsistent global name + databases. Both problems are now solved.</p> + <p>Own Id: OTP-6200 Aux Id: seq10377 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Late arriving tcp_closed and udp_closed messages are now + removed from the message queue of a process calling + gen_tcp:close/1, gen_udp:close/1, and inet:close/1.</p> + <p>Own Id: OTP-6197</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.11</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>When repairing a disk log with a corrupt index file + (caused by for instance a hard disk failure) the old + contents of the index file is kept unmodified. This will + make repeated attempts to open the disk log fail every + time.</p> + <p>Own Id: OTP-5558 Aux Id: seq9823 </p> + </item> + <item> + <p>Previously <c>unlink/1</c> and <c>erlang:demonitor/2</c> + behaved completely asynchronous. This had one undesirable + effect, though. You could never know when you were + guaranteed <em>not</em> to be affected by a link that you + had unlinked or a monitor that you had demonitored.</p> + <p>The new behavior of <c>unlink/1</c> and + <c>erlang:demonitor/2</c> can be viewed as two operations + performed atomically. Asynchronously send an unlink + signal or a demonitor signal, and ignore any future + results of the link or monitor.</p> + <p><em>NOTE</em>: This change can cause some obscure code + to fail which previously did not. For example, the + following code might hang:</p> + <code type="none"> + Mon = erlang:monitor(process, Pid), + %% ... + exit(Pid, bang), + erlang:demonitor(Mon), + receive + {'DOWN', Mon, process, Pid, _} -> ok + %% We were previously guaranteed to get a down message + %% (since we exited the process ourself), so we could + %% in this case leave out: + %% after 0 -> ok + end, + </code> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5772</p> + </item> + <item> + <p>The behavior when an application fails to start and + possibly causes the runtime system to halt has been + cleaned up, including fixing some minor bugs.</p> + <p><c>application_controller</c> should now always terminate + with a non-nested string, meaning the slogan in an + <c>erl_crash.dump</c> should always be easy to read.</p> + <p><c>init</c> now makes sure that the slogan passed to + <c>erlang:halt/1</c> does not exceed the maximum allowed + length.</p> + <p>Redundant calls to <c>list_to_atom/1</c> has been removed + from the primitive <c>error_logger</c> event handler. + (Thanks Serge Aleynikov for pointing this out).</p> + <p>The changes only affects the contents of the error + messages and crashdump file slogan.</p> + <p>Own Id: OTP-5964</p> + </item> + <item> + <p>The <c>erl_ddll</c> server is now started when OTP is + started and placed under the Kernel supervisor. This + fixes several minor issues. It used to be started on + demand.</p> + <p>The documentation for the <c>start</c> and <c>stop</c> + functions in the <c>erl_ddll</c> module has been removed, + as those functions are not meant to be used by other + applications.</p> + <p>Furthermore, the <c>erl_ddll:stop/1</c> function no longer + terminates the <c>erl_ddll</c> server, as that would + terminate the entire runtime system.</p> + <p>Own Id: OTP-6033</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Removed some unused functions from + <c>application_master</c>.</p> + <p>Own Id: OTP-3889</p> + </item> + <item> + <p>Global no longer allows the registration of a process + under more than one name. If the old (buggy) behavior is + desired the Kernel application variable + <c>global_multi_name_action</c> can be given the value + <c>allow</c>.</p> + <p>Own Id: OTP-5640 Aux Id: OTP-5603</p> + </item> + <item> + <p>The (slightly misleading) warnings that was shown when + the <c>erlang.erl</c> file was compiled has been + eliminated.</p> + <p>Own Id: OTP-5947</p> + </item> + <item> + <p>The <c>auth</c> module API is deprecated.</p> + <p>Own Id: OTP-6037</p> + </item> + <item> + <p>Added <c>erlang:demonitor/2</c>, making it possible to at + the same time flush a received <c>'DOWN'</c> message, if + there is one. See <c>erlang(3)</c>.</p> + <p>Own Id: OTP-6100 Aux Id: OTP-5772 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.13</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Large files (more than 2 GBytes) are now handled on + Solaris 8.</p> + <p>Own Id: OTP-5849 Aux Id: seq10157</p> + </item> + <item> + <p>During startup, a garbage <c>{'DOWN', ...}</c> message was + left by <c>inet_gethost_native</c>, that caused problems + for the starting code server.</p> + <p>Own Id: OTP-5978 Aux Id: OTP-5974</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p><c>global</c> now makes several attempts to connect nodes + when maintaining the fully connected network. More than one + attempt is sometimes needed under very heavy load.</p> + <p>Own Id: OTP-5889</p> + </item> + <item> + <p><c>erl_epmd</c> now explicitly sets the timeout to + <c>infinity</c> when calling <c>gen_server:call</c>. The + old timeout of 15 seconds could time out under very heavy + load.</p> + <p>Own Id: OTP-5959</p> + </item> + <item> + <p>Corrected the start of code server to use reference-tagged + tuples to ensure that an unexpected message sent to + the parent process does not cause a halt of the system. + Also removed the useless <c>start/*</c> functions in both + <c>code.erl</c> and <c>code_server.erl</c> and no longer + exports the <c>init</c> function from + <c>code_server.erl</c>.</p> + <p>Own Id: OTP-5974 Aux Id: seq10243, OTP-5978</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.12</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>A bug in <c>global</c> has been fixed: the locker process + added <c>nonode@nohost</c> to the list of nodes to lock. + This could happen before any nodes got known to the global + name server. Depending on net configuration the symptom was + a delay.</p> + <p>Own Id: OTP-5792 Aux Id: OTP-5563</p> + </item> + <item> + <p>If an <c>.app</c> file is missing, the error reason + returned by <c>application:load/1</c> has been corrected + to <c>{"no such file or directory", "FILE.app"}</c>, + instead of the less informative <c>{"unknown POSIX error","FILE.app"}</c>.</p> + <p>Own Id: OTP-5809</p> + </item> + <item> + <p>Bug fixes: <c>disk_log:accessible_logs/0</c> no longer + reports all <c>pg2</c> process groups as distributed disk + logs; <c>disk_log:pid2name/1</c> did not recognize + processes of distributed disk logs.</p> + <p>Own Id: OTP-5810</p> + </item> + <item> + <p>The functions <c>file:consult/1</c>, + <c>file:path_consult/2</c>, <c>file:eval/1,2</c>, + <c>file:path_eval/2,3</c>, <c>file:script/1,2</c>, + <c>file:path_script/2,3</c> now return correct line + numbers in error tuples.</p> + <p>Own Id: OTP-5814</p> + </item> + <item> + <p>If there were user-defined variables in the boot script, + and their values were not provided using + the <c>-boot_var</c> option, the emulator would refuse to + start with a confusing error message. Corrected to show a + clear, understandable message.</p> + <p>The <c>prim_file</c> module was modified to not depend + on the <c>lists</c> module, to make it possible to start + the emulator using a user-defined loader. (Thanks to + Martin Bjorklund.)</p> + <p>Own Id: OTP-5828 Aux Id: seq10151</p> + </item> + <item> + <p>Minor corrections in the description of open modes. + (Thanks to Richard Carlsson.)</p> + <p>Own Id: OTP-5856</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p><c>application_controller</c> now terminates with the + actual error reason, instead of <c>shutdown</c>. This + means that the crash dump now should be somewhat more + informative, in the case where the runtime system is + terminated due to an error in an application.</p> + <p>Example: If the (permanent) application <c>app1</c> fails + to start, the slogan now will be: "<c>Kernel pid terminated (application_controller) ({application_start_failure,app1,{shutdown, {app1,start,[normal,[]]}}})</c>"</p> + <p>rather than the previous "<c>Kernel pid terminated (application_controller) (shutdown)</c>".</p> + <p>Own Id: OTP-5811</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.11.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Timers could sometimes timeout too early. This bug has + now been fixed.</p> + <p>Automatic cancellation of timers created by + <c>erlang:send_after(Time,</c> pid(), Msg), and + <c>erlang:start_timer(Time,</c> pid(), Msg) has been + introduced. + Timers created with the receiver specified by a pid, will + automatically be cancelled when the receiver exits. For + more information see the <c>erlang(3)</c> man page.</p> + <p>In order to be able to maintain a larger amount of timers + without increasing the maintenance cost, the internal + timer wheel and bif timer table have been enlarged.</p> + <p>Also a number of minor bif timer optimizations have been + implemented.</p> + <p>Own Id: OTP-5795 Aux Id: OTP-5090, seq8913, seq10139, + OTP-5782</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Documentation improvements:</p> + <p>- documentation for <c>erlang:link/1</c> corrected</p> + <p>- command line flag <c>-code_path_cache</c> added</p> + <p>- <c>erl</c> command line flags clarifications</p> + <p>- <c>net_kernel(3)</c> clarifications</p> + <p>Own Id: OTP-5847</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.11</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Several bug fixes and improvements in the global name + registration facility (see <c>global(3)</c>):</p> + <list type="bulleted"> + <item>the name resolving procedure did not always unlink no + longer registered processes;</item> + <item>the global name could sometimes hang when a + <c>nodedown</c> was immediately followed by a + <c>nodeup</c>;</item> + <item>global names were not always unregistered when a node + went down;</item> + <item>it is now possible to set and delete locks at + the same time as the global name server is resolving + names--the handling of global locks has been separated + from registration of global names;</item> + </list> + <p>As of this version, <c>global</c> no longer supports nodes + running Erlang/OTP R7B or earlier.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5563</p> + </item> + <item> + <p>The functions <c>global:set_lock/3</c> and + <c>global:trans/4</c> now accept the value <c>0</c> + (zero) of the <c>Retries</c> argument.</p> + <p>Own Id: OTP-5737</p> + </item> + <item> + <p>The <c>inet:getaddr(Addr, Family)</c> no longer + validates the <c>Addr</c> argument if it is a 4 or 8 + tuple containing the IP address, except for the size of + the tuple and that it contains integers in the correct + range.</p> + <p>The reason for the change is that validation could + cause the following sequence of calls to fail:</p> + <p><c>{ok,Addr} = inet:getaddr(localhost, inet6), gen_tcp:connect(Addr, 7, [inet6])</c></p> + <p>Own Id: OTP-5743</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The previously undocumented and UNSUPPORTED <c>zlib</c> + module has been updated in an incompatible way and many + bugs have been corrected. It is now also documented.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5715</p> + </item> + <item> + <p>Added <c>application</c> interface functions + <c>which_applications/1</c>, <c>set_env/4</c> and + <c>unset_env/3</c>, which take an additional + <c>Timeout</c> argument. To be used in situations where + the standard gen_server timeout (5000ms) is not adequate.</p> + <p>Own Id: OTP-5724 Aux Id: seq10083</p> + </item> + <item> + <p>Improved documentation regarding synchronized start of + applications with included applications (using start + phases and <c>application_starter</c>).</p> + <p>Own Id: OTP-5754</p> + </item> + <item> + <p>New socket options <c>priority</c> and <c>tos</c> for + platforms that support them (currently only Linux).</p> + <p>Own Id: OTP-5756</p> + </item> + <item> + <p>The global name server has been optimized when it comes + to maintaining a fully connected network.</p> + <p>Own Id: OTP-5770</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.10.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The native resolver has gotten an control API for + extended debugging and soft restart. It is: + <c>inet_gethost_native:control(Control)</c> <br></br> +<c>Control = {debug_level,Level} | soft_restart</c> <br></br> +<c>Level = integer() in the range 0-4</c>.</p> + <p>Own Id: OTP-5751 Aux Id: EABln25013</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.10</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>If several processes (at the same node) simultaneously + tried to start the same distributed application, this + could lead to <c>application:start</c> returning an + erroneous value, or even hang.</p> + <p>Own Id: OTP-5606 Aux Id: seq9838</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The manual pages for most of the Kernel and some of + the STDLIB modules have been updated, in particular + regarding type definitions.</p> + <p>The documentation of the return value for + <c>erts:info/1</c> has been corrected.</p> + <p>The documentation for <c>erlang:statistics/1</c> now + lists all possible arguments.</p> + <p>Own Id: OTP-5360</p> + </item> + <item> + <p>When the native resolver fails a <c>gethostbyaddr</c> + lookup, <c>nxdomain</c> should be returned. There should be + no attempt to fallback on a routine that succeeds if only + the syntax of the IP address is valid. This has been fixed.</p> + <p>Own Id: OTP-5598 Aux Id: OTP-5576</p> + </item> + <item> + <p>Replaced some tuple funs with the new <c>fun M:F/A</c> + construct.</p> + <p>The high-order functions in the <c>lists</c> module no + longer accept bad funs under any circumstances. + '<c>lists:map(bad_fun, [])</c>' used to return + '<c>[]</c>' but now causes an exception.</p> + <p>Unused, broken compatibility code in the <c>ets</c> + module was removed. (Thanks to Dialyzer.)</p> + <p>Eliminated 5 discrepancies found by Dialyzer in the + Appmon application.</p> + <p>Own Id: OTP-5633</p> + </item> + <item> + <p>The possibility to have comments following the list of + tuples in a config file (file specified with + the <c>-config</c> flag) has been added.</p> + <p>Own Id: OTP-5661 Aux Id: seq10003</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.9</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>'<c>erl -config sys.config</c>' would fail to start if + the <c>sys.config</c> file did not contain any whitespace + at all after the dot. (Thanks to Anders Nygren.)</p> + <p>Own Id: OTP-5543</p> + </item> + <item> + <p>A bug regarding tcp sockets which results in hanging + <c>gen_tcp:send/2</c> has been corrected. To encounter + this bug you needed one process that read from a socket, + one that wrote more date than the reader read out so the + sender got suspended, and then the reader closed the + socket. (Reported and diagnosed by Alexey Shchepin.)</p> + <p>Corrected a bug in the (undocumented and unsupported) + option <c>{packet,http}</c> for <c>gen_tcp.</c> + (Thanks to Claes Wikstrom and Luke Gorrie.)</p> + <p>Updated the documentation regarding the second argument to + <c>gen_tcp:recv/2</c>, the <c>Length</c> to receive.</p> + <p>Own Id: OTP-5582 Aux Id: seq9839</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>At startup, the Erlang resolver hosts table was used to + look up the name of the local (and possibly stand alone) + host. This was incorrect. The configured resolver method + is now used for this purpose.</p> + <p>Own Id: OTP-5393</p> + </item> + <item> + <p>The <c>erlang:port_info/1</c> BIF is now documented. Minor + corrections of the documentation for + <c>erlang:port_info/2</c>.</p> + <p>Added a note to the documentation of the <c>math</c> module + that all functions are not available on all platforms.</p> + <p>Added more information about the <c>+c</c> option in + the <c>erl</c> man page in the ERTS documentation.</p> + <p>Own Id: OTP-5555</p> + </item> + <item> + <p>The new <c>fun M:F/A</c> construct creates a fun that + refers to the latest version of <c>M:F/A.</c> This syntax is + meant to replace tuple funs <c>{M,F}</c> which have many + problems.</p> + <p>The new type test <c>is_function(Fun,A)</c> (which may be + used in guards) test whether <c>Fun</c> is a fun that can be + applied with <c>A</c> arguments. (Currently, <c>Fun</c> can + also be a tuple fun.)</p> + <p>Own Id: OTP-5584</p> + </item> + <item> + <p>According to the documentation <c>global</c> implements + the equivalent of <c>register/2</c>, which returns + <c>badarg</c> if a process is already registered. As it + turns out there is no check in <c>global</c> if a process is + registered under more than one name. If some process is + accidentaly or by design given several names, it is + possible that the name registry becomes inconsistent due + to the way the resolve function is called when name + clashes are discovered (see <c>register_name/3</c> in + <c>global(3)</c>).</p> + <p>In OTP R11B <c>global</c> will not allow the registration of + a process under more than one name. To help finding code + where <c>no</c> will be returned, a Kernel application + variable, <c>global_multi_name_action</c>, is hereby + introduced. Depending on its value (<c>info</c>, + <c>warning</c>, or <c>error</c>), messages are sent to + the error logger when <c>global</c> discovers that some + process is given more than one name. The variable only + affects the node where it is defined.</p> + <p>Own Id: OTP-5603</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.8</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>In case of a DNS lookup loop, <c>inet_db:getbyname</c> ends + up building an infinite list. This has been fixed.</p> + <p>Own Id: OTP-5449</p> + </item> + <item> + <p>When doing an <c>inet6</c> name lookup on an IPv4 address + it was possible to get an address on IPv4 format back. This + has been corrected. Some other minor inconsistencies + regarding IPv6 name lookup have also been corrected.</p> + <p>Own Id: OTP-5576</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.7</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Under certain circumstances the <c>net_kernel</c> could + emit spurious nodedown messages. This bug has been fixed.</p> + <p>Own Id: OTP-5396</p> + </item> + <item> + <p>Removed description of the <c>keep_zombies</c> + configuration parameter in the <c>kernel</c> man page.</p> + <p>Own Id: OTP-5497</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Eliminated Dialyzer warnings (caused by dead code) in + the <c>init</c> and <c>prim_file</c> modules.</p> + <p>Own Id: OTP-5496</p> + </item> + <item> + <p><c>inet_config</c> now also checks the environment variable + <c>ERL_INETRC</c> for a possible user configuration file. + See the ERTS User's Guide for details.</p> + <p>Own Id: OTP-5512</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.6</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The <c>c</c> option for the <c>+B</c> flag has been + introduced which makes it possible to use Ctrl-C + (Ctrl-Break on Windows) to interrupt the shell process + rather than to invoke the emulator break handler. All new + <c>+B</c> options are also supported on Windows (werl) as + of now. Furthermore, Ctrl-C on Windows has now been + reserved for copying text (what Ctrl-Ins was used for + previously). Ctrl-Break should be used for break handling. + Lastly, the documentation of the system flags has been + updated.</p> + <p>Own Id: OTP-5388</p> + </item> + <item> + <p>The possibility to start the Erlang shell in parallel + with the rest of the system was reintroduced for backwards + compatibility in STDLIB 1.13.1. The flag to be used for + this is now called <c>async_shell_start</c> and has + been documented. New shells started from the JCL menu are + not synchronized with <c>init</c> anymore. This makes it + possible to start a new shell (e.g. for debugging purposes) + even if the initial shell has not come up.</p> + <p>Own Id: OTP-5406 Aux Id: OTP-5218</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.5</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Documentation for <c>erlang:binary_to_float/1</c> deleted. + The BIF itself was removed several releases ago.</p> + <p>Updated documentation for <c>apply/2</c> and + <c>apply/3</c>.</p> + <p>Own Id: OTP-5391</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p><c>net_kernel:monitor_nodes/2</c> which takes a flag and an + option list has been added. By use of + <c>net_kernel:monitor_nodes/2</c> one can subscribe for + <c>nodeup/nodedown</c> messages with extra information. It + is now possible to monitor hidden nodes, and get + <c>nodedown</c> reason. See the <c>net_kernel(3)</c> + documentation for more information.</p> + <p>Own Id: OTP-5374</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.4</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The application master for an application now terminates + the application faster, which reduces the risk for + timeouts in other parts of the system.</p> + <p>Own Id: OTP-5363 Aux Id: EABln19084</p> + </item> + <item> + <p>A BIF <c>erlang:raise/3</c> has been added. See the manual + for details. It is intended for internal system programming + only, advanced error handling.</p> + <p>Own Id: OTP-5376 Aux Id: OTP-5257</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.3</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>With the <c>-eval</c> flag (<c>erl -eval Expr</c>), an + arbitrary expression can be evaluated during system + initialization. This is documented in <c>init(3)</c>.</p> + <p>Own Id: OTP-5260</p> + </item> + <item> + <p>The unsupported and undocumented modules <c>socks5</c>, + <c>socks5_auth</c>, <c>socks5_tcp</c>, and <c>socks5_udp</c> + have been removed.</p> + <p>Own Id: OTP-5266</p> + </item> + </list> + </section> + </section> + + <section> + <title>Kernel 2.10.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The Pman 'trace shell' functionality was broken and has + now been fixed. Furthermore, Pman could not correctly + find the pid of the active shell if more than one shell + process was running on the node. This has also been + corrected.</p> + <p>Own Id: OTP-5191</p> + </item> + <item> + <p>The documentation for the <c>auth:open/1</c> function + which no longer exists has been removed. (Thanks to + Miguel Barreiro.)</p> + <p>Own Id: OTP-5208</p> + </item> + <item> + <p>Corrected the <c>crc32/3</c> function in the undocumented + and unsupported <c>zlib</c> module.</p> + <p>Own Id: OTP-5227</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>You can now start Erlang with the <c>-rsh</c> flag which + gives you a remote initial shell instead of a local one. + Example:</p> + <pre> + erl -sname this_node -rsh other_node@other_host + </pre> + <p>Own Id: OTP-5210</p> + </item> + <item> + <p>If <c>/etc/hosts</c> specified two hosts with the same IP + address (on separate lines), only the last host would be + registered by inet_db during inet configuration. This has + been corrected now so that both aliases are registered + with the same IP address.</p> + <p>Own Id: OTP-5212 Aux Id: seq7128</p> + </item> + <item> + <p>The documentation for BIFs that take I/O lists have + been clarified. Those are <c>list_to_binary/1</c>, + <c>port_command/2</c>, <c>port_control/3</c>.</p> + <p>Documentation for all <c>is_*</c> BIFs (such as + <c>is_atom/1</c>) has been added.</p> + <p>Removed the documentation for + <c>erlang:float_to_binary/2</c> which was removed from + the run-time system several releases ago.</p> + <p>Own Id: OTP-5222</p> + </item> + </list> + </section> + </section> +</chapter> + |