diff options
Diffstat (limited to 'lib/stdlib/doc/src/notes.xml')
-rw-r--r-- | lib/stdlib/doc/src/notes.xml | 2704 |
1 files changed, 2704 insertions, 0 deletions
diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml new file mode 100644 index 0000000000..f7128b641d --- /dev/null +++ b/lib/stdlib/doc/src/notes.xml @@ -0,0 +1,2704 @@ +<?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>STDLIB 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 STDLIB application.</p> + +<section><title>STDLIB 1.16.4</title> + + <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> + [escript] The restriction that the first line in escripts + must begin with <c>#!</c> has been removed.</p> + <p> + [escript] Some command line options to the escript + executable has now been documented. For example you can + run an escript in the debugger by just adding a command + line option.</p> + <p> + [escript] The documentation of the escript header syntax + has been clarified. For example the header is optional. + This means that it is possible to directly "execute" + <c>.erl</c>, <c>.beam</c> and<c>.zip</c> files.</p> + <p> + Own Id: OTP-8215</p> + </item> + <item> + <p>Optimized array:from_orddict/1, it is now faster and + uses less memory if the orddict was sparse.</p> + <p>Changed array:reset/2, it will now never expand the + array which it could before for non fixed arrays. See the + documentation.</p> + <p> + Own Id: OTP-8216</p> + </item> + <item> + <p>The Erlang Pretty Printer (<c>erl_pp</c>) now puts the + leading <c>[</c> of list comprehensions as well as the + leading <c><<</c> of bit string comprehensions on a + separate line in order to expose the Cover counter of the + template.</p> + <p> + Own Id: OTP-8227</p> + </item> + <item> + <p>The extension ".xrl" used for Leex input files is now + recognized by the compiler.</p> + <p> + Own Id: OTP-8232</p> + </item> + <item> + <p> + Some clarifications have been made in the documentation + regarding <c>gen_server</c>, <c>gen_fsm</c>, and + <c>gen_event</c> behavior when handling <c>'EXIT'</c> + messages from the parent process. For more information + see the <seealso + marker="gen_server">gen_server(3)</seealso>, <seealso + marker="gen_fsm">gen_fsm(3)</seealso>, and <seealso + marker="gen_event">gen_event(3)</seealso> documentation.</p> + <p> + Own Id: OTP-8255 Aux Id: seq11419 </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>STDLIB 1.16.3.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + An erroneous type spec for <c>gen:start/6</c> caused + dialyzer to erroneously issue warnings when + <c>{spawn_opt, SpawnOptionList}</c> was passed in the + option list to the <c>gen_server</c> and <c>gen_fsm</c> + start functions.</p> + <p> + Own Id: OTP-8068 Aux Id: seq11323, seq11314 </p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.16.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>The linter used to crash on invalid <c>-opaque</c> + declarations.</p> + <p> + Own Id: OTP-8051</p> + </item> + <item> + <p>Bugs in <c>digraph:add_edge/5</c> and + <c>digraph:del_path/3</c> have been fixed. (Thanks to + Crystal Din.)</p> + <p> + Own Id: OTP-8066</p> + </item> + <item> + <p>When trying to insert objects with + <c>dets:insert_new()</c> into a Dets table of type + <c>duplicate_bag</c>, already existing objects would + sometimes be duplicated. This bug has been fixed. (Thanks + to Crystal Din.)</p> + <p> + Own Id: OTP-8070</p> + </item> + <item> + <p> + Running erlc in a very deep directory (with a path length + of more 256 or more characters) would cause the emulator + to crash in a call to <c>list_to_atom/1</c>. (Thanks to + Chris Newcombe.)</p> + <p> + Own Id: OTP-8124</p> + </item> + <item> + <p>A few minor bugs have been fixed in the Erlang Code + Preprocessor (<c>epp</c>).</p> + <p> + Own Id: OTP-8130</p> + </item> + <item> + <p>A bug in The Erlang Meta Interpreter (<c>erl_eval</c>) + has been fixed: exceptions generated in the template of + bit string comprehensions were not handled properly. + (Thanks to Ulf Wiger.)</p> + <p> + Own Id: OTP-8133</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Option <c>{capture,none}</c> was missing in documentation + for <c>re:run/3</c>.</p> + <p> + Own Id: OTP-8113</p> + </item> + <item> + <p>When <c>erl_scan:tokens()</c> returns an error tuple + <c>{error, ErrorInfo, EndLocation</c>}, the list + <c>LeftOverChars</c> is the remaining characters of the + input data, starting from <c>EndLocation</c>. It used to + be the empty list.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-8129</p> + </item> + <item> + <p>The Erlang Meta Interpreter (<c>erl_eval</c>) has been + somewhat optimized when it comes to interpreting + <c>receive</c>-expressions. (Thanks to Richard + Carlsson.)</p> + <p> + Own Id: OTP-8139</p> + </item> + <item> + <p>The Erlang Pretty Printer (<c>erl_pp</c>) has been + modified as to handle types.</p> + <p> + Own Id: OTP-8150</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.16.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>The text of tokens returned by the Erlang scanner + (<c>erl_scan</c>) was sometimes empty when the + <c>text</c> option was given and <c>StartLocation</c> was + a line. This bug has been fixed.</p> + <p> + Own Id: OTP-7965</p> + </item> + <item> + <p>The documentation for <c>base64:decode/1</c> has been + updated to point out that it strips whitespace.</p> + <p><c>base64:decode/1</c> and <c>base64:mime_decode/1</c> + would sometimes fail instead of stripping away non-base64 + characters.</p> + <p> + Own Id: OTP-7984</p> + </item> + <item> + <p> + Two types in the <c>gen</c> module were corrected.</p> + <p> + Own Id: OTP-8029 Aux Id: seq11296 </p> + </item> + <item> + <p> + <c>array:from_orddict([])</c> and + <c>array:from_list([])</c> would construct fixed arrays + instead of extendible arrays.</p> + <p> + Own Id: OTP-8033</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Interpreted escripts are now tail recursive.</p> + <p> + The function erl_eval:expr/5 has been introduced.</p> + <p> + Own Id: OTP-7933</p> + </item> + <item> + <p> + <c>gen_server:call/2,3</c> will be somewhat faster if the + calling process has a many messages in its message queue.</p> + <p> + Own Id: OTP-7979</p> + </item> + <item> + <p> + Random now supports seed with arity one, + <c>random:seed/1</c>, which takes a three-tuple.</p> + <p> + Own Id: OTP-8019</p> + </item> + <item> + <p>The <c>regexp</c> module now recognizes the escape + sequences <c>\xXY</c> and <c>\x{X...}</c>.</p> + <p> + Own Id: OTP-8024</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.16.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>The documentation of <c>dets:open_file/1</c> now + states that the file is repaired if it has not been + properly closed. (Thanks to Ulf Wiger.)</p> + <p> + Own Id: OTP-7895</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The Erlang scanner no longer returns the text of + tokens when the start location is a pair of a line and + column unless the new option <c>text</c> is supplied + (incompatibility with R13A).</p> <p>There are new + functions to access the attributes of tokens: + <c>attributes_info/1,2</c> and + <c>set_attribute/3</c>.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7892 Aux Id: OTP-7810 </p> + </item> + <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 type spec of filelib:wildcard/2 has been corrected.</p> + <p> + Own Id: OTP-7915</p> + </item> + <item> + <p>New functions: <c>gb_sets:is_disjoint/2</c>, + <c>ordsets:is_disjoint/2</c>, and + <c>gb_sets:is_disjoint/2</c>.</p> + <p> + Own Id: OTP-7947</p> + </item> + <item> + <p>The function <c>gb_trees:map/2</c> which was added in + R13A is now documented.</p> + <p> + Own Id: OTP-7948</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.16</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>Fixed a minor race conditions in + <c>gen_server:start*</c>: if one of these functions + returned <c>{error,Reason}</c> or <c>ignore</c>, the name + could still be registered (either locally or in + <c>global</c>).</p> + <p>A process started by <c>proc_lib</c> in some cases + depended on its process dictionary not to be erased, and + would crash when terminating abnormally and not generate + a proper crash report. This has been corrected (but the + initial call will not be shown in the error report if the + process dictionary has been erased). NOTE: There is no + longer any need to erase the process dictionary for + memory conservation reasons, since the actual call + arguments are no longer saved in the process + dictionary.</p> + <p> + Own Id: OTP-7669</p> + </item> + <item> + <p>The Erlang preprocessor used wrong line number when + stringifying macro arguments. (Thanks to John + Hughes.)</p> + <p> + Own Id: OTP-7702</p> + </item> + <item> + <p>A bug in the <c>qlc</c> module has been fixed: merge + join sometimes failed to return all answers. (Thanks to + Bernard Duggan.)</p> + <p> + Own Id: OTP-7714</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>A new option, <c>key_equality</c>, has been added to + <c>qlc:table/2</c>. This option makes it possible for + <c>qlc</c> to better handle tables that use <c>==/2</c> + when comparing keys for equality (examples of such tables + are ordered ETS tables and gb_table in qlc(3)).</p> + <p> + Own Id: OTP-6674</p> + </item> + <item> + <p>The functions <c>lists:seq/1,2</c> return the empty + list in a few cases when they used to generate an + exception, for example <c>lists:seq(1, 0)</c>. See + lists(3) for details. (Thanks to Richard O'Keefe.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7230</p> + </item> + <item> + <p> + The order of objects visited in select for ordered_set is + now documented.</p> + <p> + Own Id: OTP-7339</p> + </item> + <item> + <p> + It is now possible to debug code in escripts and + archives.</p> + <p> + Own Id: OTP-7626</p> + </item> + <item> + <p>Support for Unicode is implemented as described in + EEP10. Formatting and reading of unicode data both from + terminals and files is supported by the io and io_lib + modules. Files can be opened in modes with automatic + translation to and from different unicode formats. The + module 'unicode' contains functions for conversion + between external and internal unicode formats and the re + module has support for unicode data. There is also + language syntax for specifying string and character data + beyond the ISO-latin-1 range.</p> + <p>The interactive shell will support input and output of + unicode characters when the terminal and operating system + supports it.</p> + <p>Please see the EEP and the io/io_lib manual pages as + well as the stdlib users guide for details.</p> + <p><em>I/O-protocol incompatibilities:</em></p> + <p>The io_protocol between io_Server and client is + updated to handle protocol data in unicode formats. The + updated protocol is now documented. The specification + resides in the stdlib <em>users manual</em>, which is a + new part of the manual.</p> + <p><em>io module incompatibilities:</em></p> + <p>The io:put_chars, io:get_chars and io:get_line all + handle and return unicode data. In the case where + binaries can be provided (as to io:put_chars), they shall + be encoded in UTF-8. When binaries are returned (as by + io:get_line/get_chars when the io_server is set in + <em>binary mode</em>) the returned data is also + <em>always</em> encoded as UTF-8. The file module however + still returns byte-oriented data, why file:read can be + used instead of io:get_chars to read binary data in + ISO-latin-1.</p> + <p><em>io_lib module incompatibilities:</em></p> + <p>io_lib:format can, given new format directives (i.e + "~ts" and "~tc"), return lists containing integers larger + than 255. </p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7648 Aux Id: OTP-7580 OTP-7514 OTP-7494 + OTP-7443 OTP-7181 EEP10 EEP11 </p> + </item> + <item> + <p> + The function <c>pool:attach/1</c> now returns + <c>already_attached</c> if the node is already attached, + rather than <c>allready_attached</c> (sic!). (Thanks to + Edwin Fine.)</p> + <p> + Own Id: OTP-7653 Aux Id: OTP-7603 </p> + </item> + <item> + <p> + Preprocessor directives are now allowed in escripts. This + means that for example macros may be used in escripts.</p> + <p> + Own Id: OTP-7662</p> + </item> + <item> + <p>When a process started with <c>proc_lib</c>, + <c>gen_server</c>, or <c>gen_fsm</c> exits with reason + <c>{shutdown,Term}</c>, a crash report will no longer be + generated (to allow a clean shutdown, but still provide + additional information to process that are linked to the + terminating process).</p> + <p> + Own Id: OTP-7740 Aux Id: seq10847 </p> + </item> + <item> + <p> + A new BIF, <c>lists:keyfind/3</c>, has been added. It + works like <c>lists:keysearch/3</c> except that it does + not wrap the returned tuple in a <c>value</c> tuple in + case of success. (Thanks to James Hague for suggesting + this function.)</p> + <p> + Own Id: OTP-7752</p> + </item> + <item> + <p><c>lists:suffix(Suffix, List)</c> used to have a a + complexity of <c>length(Suffix)*length(List)</c> (which + could become quite slow for some inputs). It has now been + re-implemented so that its complexity is + <c>length(Suffix)+length(List)</c>. (Thanks to Richard + O'Keefe for the new implementation.)</p> + <p> + Own Id: OTP-7797</p> + </item> + <item> + <p>The Erlang scanner has been augmented as to return + white spaces, comments, and exact location of tokens. The + functions <c>string/3</c>, <c>tokens/4</c>, and + <c>token_info/1,2</c> are new. See erl_scan(3) for + details.</p> + <p><c>tokens/3,4</c> have been modified as to return a + list of tokens instead of an error when <c>eof</c> is + encountered before the dot.</p> + <p> + Own Id: OTP-7810</p> + </item> + <item> + <p> + <c>filelib:fold_files/5</c> now uses the <c>re</c> module + instead of the <c>regexp</c> module for regular + expression matching. In practice, this change will not be + a problem for most regular expressions used for + <c>filelib:fold_files/5</c>. (The major difference in + regular expression is that parenthesis and curly brackets + is treated as literal characters by <c>regexp</c> but as + special characters by <c>re</c>; fortunately, those + characters are rarely used in filenames.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7819</p> + </item> + <item> + <p> + <c>digraph:new(Type)</c> will now cause a <c>badarg</c> + exception if <c>Type</c> is not a valid type. Similarly, + <c>digraph_utils:subgraph/2,3</c> will now cause a + <c>badarg</c> if the arguments are invalid. (Those + functions used to return error tuples if something was + wrong.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7824</p> + </item> + <item> + <p>The argument passed to <c>random:uniform/1</c> must + now be an integer (as stated in the documentation). In + previous releases, a floating point number was also + allowed.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7827</p> + </item> + <item> + <p>The copyright notices have been updated.</p> + <p> + Own Id: OTP-7851</p> + </item> + <item> + <p>A few missing match spec functions was added to + dbg:fun2ms; exception_trace/0 and trace/2,3.</p> + <p>There is a new function queue:member/2.</p> + <p>A bug in io_lib:fread that made it accidentally + concatenate fields separated by newline has been + corrected. Reported and analyzed by Matthew Palmer to + erlang-patches.</p> + <p> + Own Id: OTP-7865</p> + </item> + </list> + </section> + +</section> + + +<section><title>STDLIB 1.15.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>A bug in the <c>qlc</c> module has been fixed: when + merge joining two query handles the temporary file used + for equivalence classes was not truncated properly which + could result in poor performance.</p> + <p> + Own Id: OTP-7552</p> + </item> + <item> + <p> + The characters 16#C0 and 16#E0 ("A" and "a" with grave + accent), were not properly converted by the + <c>string:to_lower/1</c> and <c>string:to_upper/1</c> + functions. (Thanks to Richard O'Keefe.)</p> + <p> + Own Id: OTP-7589</p> + </item> + <item> + <p> + The function <c>pool:attach/1</c> now returns + <c>already_attached</c> if the node is already attached, + rather than <c>allready_attached</c> (sic!). (Thanks to + Edwin Fine.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7603</p> + </item> + <item> + <p>The documentation for <c>io:get_line/1,2</c> now + mentions that the return value can also be + <c>{error,Reason}</c>.</p> + <p> + Own Id: OTP-7604 Aux Id: seq11063 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The split function is now added to the re library. + Exceptions and errors from both run, replace and split + are made more consistent.</p> + <p> + Own Id: OTP-7514 Aux Id: OTP-7494 </p> + </item> + <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> + 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> + Enabled explicit control of which types of files that + should be compressed in a ZIP archive.</p> + <p> + Own Id: OTP-7549 Aux Id: otp-6622 </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> + </list> + </section> + +</section> + +<section><title>STDLIB 1.15.4</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + A bug in the calendar module could cause + calendar:local_time_to_universal_time_dst/1 to return + duplicate identical values for local times in timezones + without DST. Multiple values should only be returned when + a local time is within the hour occurring twice due to + shift from DST to non-DST, and certainly only in + timezones with DST. The correct behaviour is now + implemented.</p> + <p> + Own Id: OTP-7344 Aux Id: seq10960 </p> + </item> + <item> + <p>The documentation of <c>(d)ets:init_table()</c> has + been corrected. (Thanks to Paul Mineiro.)</p> + <p> + Own Id: OTP-7413</p> + </item> + <item> + <p>The soft upper limit of 60 on the number of non-white + characters on a line, which was introduced in R12B-0 for + the control sequences <c>p</c> and <c>P</c> of the + functions <c>io:fwrite/2,3</c> and + <c>io_lib:fwrite/2</c>, has been removed. This means that + terms whose printed representation fits on a line will + have no NEWLINEs. The Erlang shell still uses the 60 + character limit, though.</p> + <p> + Own Id: OTP-7421 Aux Id: OTP-6708 </p> + </item> + <item> + <p>Some debug code has been removed from Dets.</p> + <p> + Own Id: OTP-7424</p> + </item> + <item> + <p>The documentation of <c>dets:match_delete/2</c> has + been corrected. (Thanks to Paul Mineiro.)</p> + <p> + Own Id: OTP-7445</p> + </item> + <item> + <p>Corrections of digraph(3). (Thanks to Vlad + Dumitrescu.)</p> + <p> + Own Id: OTP-7492</p> + </item> + <item> + <p> + For the process that an escript runs in, the + <c>trap_exit</c> process flag is now <c>false</c> instead + of <c>true</c> (as in previous releases). Scripts that + depend on the previous (counter-intuitive) behaviour + might not work. (Thanks to Bengt Kleberg.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-7517</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The documentation of <c>lists:(u)sort/2</c> now states + what is expected of an ordering function.</p> + <p> + Own Id: OTP-7489</p> + </item> + <item> + <p> + The re module is extended with repetitive matches (global + option) and replacement function.</p> + <p> + Own Id: OTP-7494 Aux Id: OTP-7181 </p> + </item> + <item> + <p>The Erlang shell now displays a nicer error message + when evaluating an undefined command. (Thanks to Richard + Carlsson.)</p> + <p> + Own Id: OTP-7495</p> + </item> + </list> + </section> + +</section> + + +<section><title>STDLIB 1.15.3</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + zip:unzip to/from binary with empty directories did not + work. (Thanks to Martin Dvorak.)</p> + <p> + Own Id: OTP-7248</p> + </item> + <item> + <p>The documentation of the control sequence <c>w</c> of + the <c>io_lib</c> module now states that floating point + numbers are printed accurately.</p> + <p> + Own Id: OTP-7324 Aux Id: OTP-7084 </p> + </item> + <item> + <p> + zip:unzip was not supporting a flavour of the zip format + found in jar-files.</p> + <p> + Own Id: OTP-7382 Aux Id: seq10970 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + An experimental module "re" is added to the emulator + which interfaces a publicly available regular expression + library for Perl-like regular expressions (PCRE). The + interface is purely experimental and *will* be subject to + change.</p> + <p> + The implementation is for reference and testing in + connection to the relevant EEP.</p> + <p> + Own Id: OTP-7181</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.15.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> When inserting many small objects, Dets sometimes + crashed when reaching the maximum number of slots. + (Thanks to Daniel Goertzen.) </p> + <p> + Own Id: OTP-7146</p> + </item> + <item> + <p>Processes linked to the Erlang shell did not get an + exit signal when the evaluator process was killed. This + bug, introduced in R12B-0, has been fixed.</p> + <p> + Own Id: OTP-7184 Aux Id: OTP-6554 </p> + </item> + <item> + <p> + Invalid arguments to <c>ets:update_counter/3</c> were not + handled correctly. A tuple position (<c>Pos</c>) less + than 1 caused the element directly following the key to + be updated (as if no position at all had been specified). + All invalid values for <c>Pos</c> will now fail with + <c>badarg</c>.</p> + <p> + Own Id: OTP-7226</p> + </item> + <item> + <p> + For certain terminals, io:columns/0 could return 0 + instead of enotsup. That is now corrected.</p> + <p> + Own Id: OTP-7229 Aux Id: seq10886 </p> + </item> + <item> + <p><c>qlc:info()</c> can now handle port identifiers, + pids, references, and funs. (Thanks to Wojciech Kaczmare + for reporting this bug.)</p> <p>When evaluating the + <c>parent_fun</c> messages sent to the process calling + <c>qlc:cursor()</c> were sometimes erroneously consumed. + This bug has been fixed.</p> + <p> + Own Id: OTP-7232</p> + </item> + <item> + <p><c>erl_parse:abstract()</c> can now handle bit + strings.</p> + <p> + Own Id: OTP-7234</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The <c>queue</c> module has been rewritten to make it + easier to use. Suggestions and discussion from and with + among others Lev Walkin, Anders Ramsell and Rober Virding + in december 2007 on [email protected]. It was + also discussed to change the internal representation to + contain length information which would speed up + <c>len/1</c> but that change has been postponed. Anyone + interested may write an EEP and try to reach an + acceptable compromise for queue overhead and thereby the + speed of all other operations than <c>len/1</c>. The + <c>queue</c> module is now optimized for fast and minimal + garbage <c>in/2</c> and <c>out/1</c> and such. See the + documentation.</p> + <p>New functions: <c>is_queue/1</c>, <c>get/1</c>, + <c>get_r/1</c>, <c>peek/1</c>, <c>peek_r/1</c>, + <c>drop/1</c>, <c>drop_r/1</c> and <c>liat/1</c>. + <c>is_queue/1</c> is a new predicate, <c>liat/1</c> is a + correction of an old misspelling, and the others + (<c>get</c>*, <c>peek</c>* and <c>drop</c>*) are new + interface functions.</p> + <p> + Own Id: OTP-7064</p> + </item> + <item> + <p>The functions <c>io_lib:write/1,2</c> and + <c>io_lib:print/1,4</c> have been changed when it comes + to writing floating point numbers. This change affects + the control sequences <c>p</c>, <c>P</c>, <c>w</c>, and + <c>W</c> of the <c>io_lib</c> module. (Thanks to Bob + Ippolito for code contribution.) </p> + <p> + Own Id: OTP-7084</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 new BIF ets:update_element/3. To update individual + elements within an ets-tuple, without having to read, + update and write back the entire tuple.</p> + <p> + Own Id: OTP-7200</p> + </item> + <item> + <p><c>string:join/2</c> now accepts an empty list as + first argument.</p> + <p> + Own Id: OTP-7231 Aux Id: OTP-6671 </p> + </item> + <item> + <p><c>qlc:info/1,2</c> accepts a new option, + <c>depth</c>. The type <c>SelectedObjects</c> used in the + description of <c>qlc:table/2</c> has been augmented.</p> + <p> + Own Id: OTP-7238</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>STDLIB 1.15.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Ets:select/3 in combination with + ets:repair_continuation/2 and ordered_set data tables + could result in function_clause although used as + intended. This is now corrected. Thanks to Paul Mineiro + for finding and isolating the bug!</p> + <p> + Own Id: OTP-7025</p> + </item> + <item> + <p>The compiler warning for the deprecated function + <c>ftp:close/1</c> now mentions the correct replacement + function.</p> + <p>The warning for the removed functions in the + <c>httpd_util</c> module have been changed to say they + have been removed, not merely deprecated. (Thanks to + Fredrik Thulin.)</p> + <p> + Own Id: OTP-7034 Aux Id: seq10825 </p> + </item> + <item> + <p>In <c>(Expr)#r{}</c> (no fields are updated), + <c>Expr</c> is no longer evaluated more than once. There + is also a test that <c>Expr</c> is of the correct record + type. (Thanks to Dominic Williams.)</p> + <p> + Own Id: OTP-7078 Aux Id: OTP-4962 </p> + </item> + <item> + <p>Documentation bugfixes and clarifications.</p> (Thanks + to Joern ([email protected]), Matthias Lang, and Richard + Carlsson.) + <p> + Own Id: OTP-7079</p> + </item> + <item> + <p>Duplicated objects were sometimes not deleted from the + list of answers when a QLC table was traversed using a + match specification. (Thanks to Dmitri Girenko.)</p> + <p> + Own Id: OTP-7114</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> + <item> + <p> + It is now possible to hibernate a + gen_server/gen_event/gen_fsm. In gen_server and gen_fsm, + hibernation is triggered by returning the atom + 'hibernate'�instead of a timeout value. In the gen_event + case hibernation is triggered by a event handler + returning a tuple with an extra element containing the + atom 'hibernate'.</p> + <p> + Own Id: OTP-7026 Aux Id: seq10817 </p> + </item> + <item> + <p>Some undocumented debug functionality has been added + to Dets.</p> + <p> + Own Id: OTP-7066</p> + </item> + <item> + <p>The functions <c>digraph_utils:is_tree/1</c>, + <c>digraph_utils:is_arborescence/1</c>, and + <c>digraph_utils:arborescence_root/1</c> are new.</p> + <p> + Own Id: OTP-7081</p> + </item> + <item> + <p> + The compiler could generate suboptimal code for record + updates if the record update code consisted of multiple + source code lines.</p> + <p> + Own Id: OTP-7101</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.15</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>Bugs have been fixed in <c>qlc</c>:</p> <list + type="bulleted"> <item>Setting the <c>lookup_fun</c> + option of <c>qlc:table/2</c> to <c>undefined</c> could + cause a crash.</item> <item>If a QLC restricted some + column of a table in such a way that a traversal using a + match specification was possible and the QLC also + compared the key column or some indexed column of the the + table with a column of some other table, <c>qlc</c> + always chose to traverse the table first, never + considering lookup join. This has been changed so that + lookup join is always preferred; if an initial traversal + using the match specification is desired, the query needs + to be rewritten introducing an extra QLC with the + filter(s) restricting the column.</item> <item>When + trying to find candidates for match specifications and + lookup, filters using variables from one generator only + are ignored unless they are placed immediately after the + generator and possibly other filters using variables from + the same generator. In particular, filters joining two + tables should not be placed between the generator and the + filters using the generator only.</item> <item>The + call-back function <c>TraverseFun</c> used for + implementing QLC tables is allowed to return a term other + than a list since STDLIB 1.14 (OTP-5195). However, when + the returned term was a fun <c>qlc</c> often tried to + call the fun instead of returning it.</item> </list> <p>A + few minor optimizations have been implemented as + well.</p> + <p> + Own Id: OTP-6673</p> + </item> + <item> + <p>A bug concerning the use of parameterized modules from + the shell has been fixed.</p> + <p> + Own Id: OTP-6785</p> + </item> + <item> + <p>A bug regarding the size expression of the bit syntax + has been fixed in the <c>erl_eval</c> module.</p> + <p> + Own Id: OTP-6787</p> + </item> + <item> + <p> + The log_mf_h event handler didn't close the index file + when it was done reading it causing a file descriptor + leak.</p> + <p> + Own Id: OTP-6800</p> + </item> + <item> + <p> + Definitions for the <c>filename()</c> and + <c>dirname()</c> types have been added to the + documentation for the <c>filelib</c> module.</p> + <p> + Own Id: OTP-6870</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>A bug concerning the evaluation of the <c>++/2</c> + operator has been fixed in <c>erl_eval</c>. (Thanks to + Matthew Dempsky.)</p> + <p> + Own Id: OTP-6977</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p>The behaviour of the internal functions gen:call/3,4 + has been changed slightly in the rare case that when the + caller was linked to the called server, and the server + crashed during the call; its exit signal was consumed by + the gen:call/3,4 code and converted to an exit exception. + This exit signal is no longer consumed.</p> + <p>To even notice this change, 1) the calling process has + to be linked to the called server.</p> + <p> + 2) the call must not be remote by name that is it must be + local or remote by pid, local by name or global by name.</p> + <p> + 3) the calling process has to have set + <c>process_flag(trap_exit, true)</c>.</p> + <p> + 4) the server has to crash during the call.</p> + <p> + 5) the calling process has to be sensitive to getting + previously consumed <c>{'EXIT',Pid,Reason}</c> messages + in its message queue.</p> + <p>The old behaviour was once the only way for a client + to notice if the server died, but has since + <c>erlang:monitor(process, {Name,Node})</c> was + introduced and used in gen:call been regarded as an + undesired behaviour if not a bug.</p> + <p>The affected user APIs are: + <c>gen_server:call/2,3</c>, + <c>gen_fsm:sync_send_event/2,3</c>, + <c>gen_fsm:sync_send_all_state_event/2,3</c>, + <c>gen_event:_</c>, <c>sys:_</c> and maybe a few others + that hardly will be noticed.</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-3954 Aux Id: Seq 4538 </p> + </item> + <item> + <p>When an exception occurs the Erlang shell now displays + the class, the reason, and the stacktrace in a clearer + way (rather than dumping the raw EXIT tuples as before). + <c>proc_lib:format/1</c> displays the exception of crash + reports in the same clearer way.</p> <p>The new shell + command <c>catch_exception</c> and the new application + configuration parameter <c>shell_catch_exception</c> can + be used for catching exceptions that would normally exit + the Erlang shell.</p> + <p> + Own Id: OTP-6554 Aux Id: OTP-6289 </p> + </item> + <item> + <p>The function <c>string:join/2</c> joins strings in a + list with a separator. Example: '<c>string:join(["a", + "b", "c"], ", ") gives "a, b, c"</c>'</p> + <p> + Own Id: OTP-6671</p> + </item> + <item> + <p>The control sequence <c>P</c> of the <c>Format</c> + argument of the functions <c>io:fwrite/2,3</c> and + <c>io_lib:fwrite/2</c> now inserts fewer line breaks when + printing tuples and lists. A soft upper limit of 60 on + the number of non-white characters on a line has been + introduced.</p> + <p> + Own Id: OTP-6708</p> + </item> + <item> + <p> + The new module <c>array</c> provides a fast functional + array implementation.</p> + <p> + Own Id: OTP-6733</p> + </item> + <item> + <p>Functions that have long been deprecated have now been + removed from the following modules: <c>dict</c>, + <c>erl_eval</c>, <c>erl_pp</c>, <c>io</c>, <c>io_lib</c>, + <c>lists</c>, <c>orddict</c>, <c>ordsets</c>, + <c>sets</c>, and <c>string</c>.</p> + <p>The undocumented function <c>lists:zf/3</c> has also + been removed (use a list comprehension or + <c>lists:zf/2</c> instead).</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6845</p> + </item> + <item> + <p> + Minor documentation corrections for file:pread/2 and + file:pread/3.</p> + <p> + Own Id: OTP-6853</p> + </item> + <item> + <p> + Contract directives for modules in Kernel and STDLIB.</p> + <p> + Own Id: OTP-6895</p> + </item> + <item> + <p>The <c>ets:fixtable/2</c> function, which has been + deprecated for several releases, has been removed.</p> + <p>The <c>ets:info/1</c> function has been reimplemented + as a BIF, which guarantees that information returned is + consistent.</p> + <p>The <c>ets:info/2</c> function now fails with reason + <c>badarg</c> if the second argument is invalid. + (Dialyzer can be used to find buggy code where the second + argument is misspelled.)</p> + <p> + *** POTENTIAL INCOMPATIBILITY ***</p> + <p> + Own Id: OTP-6906</p> + </item> + <item> + <p>The Erlang pretty printer <c>erl_pp</c> now inserts + more newlines in order to facilitate line coverage + analysis by <c>Cover</c>. (Thanks to Thomas Arts.)</p> + <p> + Own Id: OTP-6911</p> + </item> + <item> + <p> + The documentation for ets:safe_fixtable/2, ets:foldl/3, + and ets:foldr/3 is now clearer about what will happen if + objects are inserted during table traversals.</p> + <p> + Own Id: OTP-6928 Aux Id: seq10779 </p> + </item> + <item> + <p> + It is now possible to extract files in tar files directly + into binaries. It is also possible to add files to tar + files directly from binaries.</p> + <p> + Own Id: OTP-6943</p> + </item> + <item> + <p>The functions <c>keystore/4</c> and <c>keytake/3</c> + are new in the <c>lists</c> module.</p> + <p> + Own Id: OTP-6953</p> + </item> + <item> + <p>The new <c>qlc</c> option <c>tmpdir_usage</c> can be + used for outputting messages onto the error logger when a + temporary file is about to be created, or to prohibit the + usage of temporary files altogether.</p> + <p> + Own Id: OTP-6964</p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.14.5.3</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The allowed syntax for -type() and -spec() was updated.</p> + <p> + Own Id: OTP-6861 Aux Id: OTP-6834 </p> + </item> + </list> + </section> + +</section> + +<section><title>STDLIB 1.14.5.2</title> + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The compiler will for forward compatibility ignore the + -type() and -spec() attributes that will be introduced in + the R12B release.</p> + <p> + Own Id: OTP-6834</p> + </item> + </list> + </section> + +</section> +<section><title>STDLIB 1.14.5.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + The log_mf_h event handler didn't close the index file + when it was done reading it causing a file descriptor + leak.</p> + <p> + Own Id: OTP-6800</p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + The dict:size/1 and orddict:size/1 functions have been + documented.</p> + <p> + Own Id: OTP-6818</p> + </item> + </list> + </section> + +</section> + + <section> + <title>STDLIB 1.14.5</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Bugs have been fixed in Dets concerning comparison + (==) and matching (=:=).</p> + <p>The STDLIB manual pages + have been updated as to more carefully state when terms + are matched and when they are compared.</p> + <p>Own Id: OTP-4738 Aux Id: OTP-4685 </p> + </item> + <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>A bug in QLC's parse transform has been fixed.</p> + <p>Own Id: OTP-6590</p> + </item> + <item> + <p>A bug concerning <c>lists:sort/1</c> and + <c>lists:keysort/2</c> and a mix of floating point + numbers and integers has been fixed.</p> + <p>Own Id: OTP-6606</p> + </item> + <item> + <p>When calling <c>erlang:garbage_collect/0</c> in the + Erlang shell not only the evaluator process (the one + returned by calling <c>self()</c> in the Erlang shell) is + garbage collected, but also the process holding the + history list.</p> + <p>Own Id: OTP-6659</p> + </item> + <item> + <p>Functions of the <c>beam_lib</c> module that used to + catch exceptions and return a tuple + <c>{'EXIT',Reason}</c> now exit with the reason + <c>Reason</c>.</p> + <p>Own Id: OTP-6711</p> + </item> + <item> + <p>The <c>erl_eval</c> module now calls the non-local + function handler whenever an operator is evaluated + (exceptions are <c>andalso</c>, <c>orelse</c>, and + <c>catch</c>). The non-local function handler is now also + called when the function or operator occurs in a guard + test (such calls used to be ignored).</p> + <p>These changes affect the Erlang shell when running in + restricted mode: the callback function + <c>non_local_allowed/3</c> is now called for operators + such as <c>'!'/2</c>. This means that + <c>non_local_allowed/3</c> may need to be changed as to + let operators through. Note that <c>erlang:'!'/2</c> as + well as <c>erlang:send/2,3</c> have to be restricted in + order to stop message passing in the shell.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-6714 Aux Id: seq10374 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The new compiler option <c>warn_obsolete_guard</c> can + be used for turning on warnings for calls to old type + testing BIFs.</p> + <p>Own Id: OTP-6585</p> + </item> + <item> + <p>For scripts written using <c>escript</c>, there is a new + function <c>escript:script_name/0</c>, which can be used + to retrieve the pathame of the script. The documentation + has been clarified regarding pre-defined macros such as + ?MODULE and the module name.</p> + <p>Own Id: OTP-6593</p> + </item> + <item> + <p>Minor Makefile changes.</p> + <p>Own Id: OTP-6689 Aux Id: OTP-6742 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.4</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The MD5 calculation of a BEAM file done by + <c>code:module_md5/1</c>, <c>beam_lib:md5/1</c>, and by + the compiler for the default value of the <c>vsn</c> + attribute have all been changed so that its result will + be the same on all platforms; modules containing funs + could get different MD5s on different platforms.</p> + <p>Own Id: OTP-6459</p> + </item> + <item> + <p>When sorting terms using the <c>file_sorter</c> module + (the option <c>Format</c> set to <c>term</c>), file + errors were not always properly handled. This bug has + been fixed.</p> + <p>The directory supplied with the + <c>tmpdir</c> option is no longer checked unless it is + actually used. The error reason <c>not_a_directory</c> + can no longer be returned; instead a <c>file_error</c> + tuple is returned</p> + <p>Own Id: OTP-6526</p> + </item> + <item> + <p>Bugs regarding <c>try</c>/<c>catch</c> have been fixed + in the <c>erl_eval</c> module.</p> + <p>Own Id: OTP-6539</p> + </item> + <item> + <p>When sorting the operands of a join operation, QLC + called <c>file:open/3</c> with bad arguments. This bug + has been fixed.</p> + <p>Own Id: OTP-6562 Aux Id: seq10606 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The functions <c>beam_lib:cmp/1</c> and + <c>beam_lib:strip/1</c> (and similar functions) have been + updated to handle optional chunks (such as "FunT") in + more general way in order to be future compatible.</p> + <p>The function <c>beam_lib:chunks/3</c> has been + added.</p> + <p>The function <c>beam_lib:md5/1</c> has been added.</p> + <p>Own Id: OTP-6443</p> + </item> + <item> + <p>Added base64 as a module to stdlib, encoding and decoding</p> + <p>Own Id: OTP-6470</p> + </item> + <item> + <p>Added the functions to_upper/1 and to_lower/1 to the + string module. These provide case conversion for ISO/IEC + 8859-1 characters (Latin1) and strings.</p> + <p>Own Id: OTP-6472</p> + </item> + <item> + <p>The callback function <c>non_local_allowed/3</c> used + by the restricted shell can now return the value + <c>{{restricted,NewFuncSpec,NewArgList},NewState}</c> + which can be used for letting the shell call some other + function than the one specified.</p> + <p>Own Id: OTP-6497 Aux Id: seq10555 </p> + </item> + <item> + <p>There is a new <c>escript</c> program that can be used + for writing scripts in Erlang. Erlang scripts don't need + to be compiled and any arguments can be passed to them + without risk that they are interpreted by the Erlang + system.</p> + <p>Own Id: OTP-6505</p> + </item> + <item> + <p>The <c>Format</c> argument of the functions + <c>io:fwrite/2,3</c> and <c>io_lib:fwrite/2</c> is now + allowed to be a binary.</p> + <p>Own Id: OTP-6517</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.3.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The control sequences <c>p</c> and <c>P</c> of the + <c>Format</c> argument of the functions + <c>io:fwrite/2,3</c> and <c>io_lib:fwrite/2</c> could + cause a <c>badarg</c> failure when applied to binaries. + This bug was introduced in STDLIB 1.14.3. (Thanks to + Denis Bilenko.)</p> + <p>Own Id: OTP-6495</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Added the option {cwd, Dir} to make zip-archives with + relative pathnames without having to do (a global) + file:set_cwd.</p> + <p>Own Id: OTP-6491 Aux Id: seq10551 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.3</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The <c>spawn_opt/2,3,4,5</c> option <c>monitor</c> -- + introduced in Kernel 2.11.2 -- is currently not possible + to use when starting a process using <c>proc_lib</c>, + that is, also when starting a gen_server, gen_fsm etc. </p> + <p>This limitation has now been properly documented and the + behavior of the <c>gen_fsm</c>, <c>gen_server</c>, and + <c>proc_lib</c><c>start</c> and <c>start_link</c> + functions when providing this option has been changed + from hanging indefinitely to failing with reason + <c>badarg</c>.</p> + <p>(Thanks to Fredrik Linder)</p> + <p>Own Id: OTP-6345</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The control sequence <c>P</c> of the <c>Format</c> + argument of the functions <c>io:fwrite/2,3</c> and + <c>io_lib:fwrite/2</c> now replaces the tail of binary + strings with <c>...</c> when the maximum depth has been + reached. For instance, <c><![CDATA[io:fwrite("~P", [<<"a binary string">>, 3]).]]></c> prints <c><![CDATA[<<"a binary"...>>]]></c>.</p> + <p>The indentation takes more care not to exceed the + right margin, if possible.</p> + <p>If the maximum depth is + reached while printing a tuple, <c>,...</c> is printed + instead of <c>|...</c> (this change applies to the + control sequence <c>W</c> as well).</p> + <p>Own Id: OTP-6354</p> + </item> + <item> + <p>The Erlang shell command <c>h/0</c> that prints the + history list now avoids printing (huge) terms referred to + by <c>v/1</c> but instead just prints the call to + <c>v/1</c>.</p> + <p>Own Id: OTP-6390</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.2.2</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The functions <c>dets:select/1,3</c>, + <c>dets:match/1,3</c>, and <c>dets:match_object/1,3</c> + have been changed as to never return + <c>{[],Continuation}</c>. This change affects the + corresponding functions in Mnesia.</p> + <p>Bugs have been + fixed in QLC: <c>qlc:info()</c> could crash if the + <c>tmpdir</c> option did not designate a valid directory; + the results of looking up keys are kept in RAM, which + should improve performance.</p> + <p>Own Id: OTP-6359</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.2.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>A bug in <c>erl_pp:exprs()</c> has been fixed.</p> + <p>Own Id: OTP-6321 Aux Id: seq10497 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14.2</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The control sequences <c>p</c> and <c>P</c> of the + <c>Format</c> argument of the functions + <c>io:format/2,3</c> and <c>io_lib:format/2</c> did not + handle binaries very well. This bug, introduced in + stdlib-1.14, has been fixed.</p> + <p>Own Id: OTP-6230</p> + </item> + <item> + <p><c>filelib:wildcard(Wc, PathWithRedundantSlashes)</c>, + where <c>PathWithRedundantSlashes</c> is a directory path + containing redundant slashes, such as <c>/tmp/</c> or + <c>//tmp</c>, could return incorrect results. (Thanks to + Martin Bjorklund.)</p> + <p>Own Id: OTP-6271</p> + </item> + <item> + <p>The Erlang code preprocessor crashed if the predefined + macros ?MODULE or ?MODULE_STRING were used before the + module declaration. This bug has been fixed.</p> + <p>Own Id: OTP-6277</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Support for faster join of two tables has been added + to the <c>qlc</c> module. There are two kinds of fast + joins: lookup join that uses existing indices, and merge + join that takes two sorted inputs. There is a new + <c>join</c> option that can be used to force QLC to use a + particular kind of join in some QLC expression.</p> + <p>Several other changes have also been included:</p> + <p></p> + <list type="bulleted"> + <item> + <p>The new <c>tmpdir</c> option of <c>cursor/2</c>, + <c>eval/2</c>, <c>fold/4</c>, and <c>info/2</c> can be + used to set the directory that join uses for temporary + files. The option also overrides the <c>tmpdir</c> option + of <c>keysort/3</c> and <c>sort/2</c>.</p> + </item> + <item> + <p>The new <c>lookup</c> option can be used to + assert that constants are looked up when evaluating some + QLC expression.</p> + </item> + <item> + <p>The <c>cache</c> and <c>cache_all</c> options + accept new tags: <c>ets</c>, <c>list</c>, and <c>no</c>. + The tag <c>list</c> caches answers in a list using a + temporary file if the answers cannot be held in RAM. + Combining <c>{cache,list}</c> and <c>{unique, true}</c> + is equivalent to calling <c>sort/2</c> with the option + <c>unique</c> set to <c>true</c>. The old tags + <c>true</c> (equivalent to <c>ets</c>) and <c>false</c> + (equivalent to <c>no</c>) are recognized for backward + compatibility.</p> + </item> + <item> + <p>The new option <c>max_list_size</c> can be used + to set the limit where merge join starts to use temporary + files for large equivalence classes and when answers + cached in lists are put on temporary files.</p> + </item> + <item> + <p>There is a new callback <c>is_sorted_key</c> to + be supplied as an option to <c>table/2</c>.</p> + </item> + <item> + <p>QLC analyzes each and every QLC expression when + trying to find constants for the lookup function. + Hitherto only QLC expressions with exactly one generator + were analyzed.</p> + <p>Note that only filters with guard + syntax placed immediately after the generator are + analyzed. The restriction to guard filters is an + incompatible change. See <c>qlc(3)</c> for further + details.</p> + </item> + <item> + <p>In a similar way several match specifications + for traversal of QLC tables can be utilized for different + generators of one single QLC expression.</p> + </item> + <item> + <p>A bug has been fixed: when caching answers to a + sufficiently complex query it could happen that some + answers were not returned.</p> + </item> + </list> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-6038</p> + </item> + <item> + <p>The Erlang pretty printer (<c>erl_pp</c>) is now much + faster when the code is deeply nested. A few minor bugs + have been fixed as well.</p> + <p>Own Id: OTP-6227 Aux Id: OTP-5924 </p> + </item> + <item> + <p>The Erlang shell now tries to garbage collect large + binaries. Under certain circumstances such binaries could + otherwise linger on for an indefinite amount of time.</p> + <p>Own Id: OTP-6239</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>STDLIB 1.14.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The functions <c>c:y/1,2</c> which call + <c>yecc:file/1,2</c> are now listed by + <c>c:help/0</c>.</p> + <p>Documentation of <c>c:y/1,2</c> has been added to + <c>c(3)</c>.</p> + <p>The fact that the control sequence character <c>s</c> + recognizes binaries and deep character lists has been + documented in <c>io(3)</c>. This feature was added in + R11B-0 (OTP-5403).</p> + <p>Own Id: OTP-6140</p> + </item> + <item> + <p>The shell command rr() sometimes failed to read record + definitions from file(s). This problem has been fixed.</p> + <p>Own Id: OTP-6166 Aux Id: OTP-5878 </p> + </item> + <item> + <p>The nonlocal function handler in <c>erl_eval</c>, which + is used for implementing the restricted mode of the + Erlang shell, did not handle calls to + <c>erlang:apply/3</c> correctly. This bug has been fixed.</p> + <p>Own Id: OTP-6169 Aux Id: seq10374 </p> + </item> + <item> + <p>ets:rename/1 could deadlock, or crash the SMP emulator + when the table wasn't a named table.</p> + <p>ets:next/2, and ets:prev/2 could return erroneous results + on the SMP emulator.</p> + <p>Own Id: OTP-6198 Aux Id: seq10392, seq10415 </p> + </item> + <item> + <p>When closing a Dets table the space management data was + sometimes saved in such a way that opening the table + could not be done without repairing the file. This bug + has been fixed.</p> + <p>Own Id: OTP-6206</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.14</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>A bugfix in QLC: two of the call-back functions used + for implementing QLC tables, <c>TraverseFun</c> and + <c>LookupFun</c>, are now allowed to return a term other + than a list. Such a term is immediately returned as the + results of the current query, and is useful mostly for + returning error tuples.</p> + <p>Several other minor bugs have been also been fixed.</p> + <p>Own Id: OTP-5195</p> + </item> + <item> + <p>The STDLIB modules <c>error_logger_file_h</c> and + <c>error_logger_tty_h</c> now read the environment + variable <c>utc_log</c> from the SASL application.</p> + <p>Own Id: OTP-5535</p> + </item> + <item> + <p><c>ets:info/1</c> has been corrected to behave according + to the documentation and return a list of tuples, not a + tuple with tuples.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5639</p> + </item> + <item> + <p>Referencing a so far undeclared record from the default + value of some record declaration is from now on considered + an error by the linter. It is also an error if the default + value of a record declaration uses or binds a variable.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5878</p> + </item> + <item> + <p>When a file <c>.hrl</c> file is included using + <c>-include_lib</c>, the include path is temporarily + updated to include the directory the <c>.hrl</c> file was + found in, which will allow that <c>.hrl</c> file to itself + include files from the same directory as itself using + <c>-include</c>. (Thanks to Richard Carlsson.)</p> + <p>Own Id: OTP-5944</p> + </item> + <item> + <p>Corrected <c>filelib:ensure_dir/1</c> which sometimes + returned <c>true</c> and sometimes <c>ok</c> to always + return <c>ok</c> when successful. This goes against the + documentation which said <c>true</c>, but <c>ok</c> was + judged to be a more logical return value.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5960 Aux Id: seq10240 </p> + </item> + <item> + <p>The shell now handles records better when used in calls + on the form <c>{Module, Function}(ArgList)</c>.</p> + <p>Own Id: OTP-5990 Aux Id: OTP-5876 </p> + </item> + <item> + <p>The functions <c>lists:ukeysort/2</c> and + <c>lists:ukeymerge/3</c> have been changed in such a way + that two tuples are considered equal if their keys + match.</p> + <p>For the sake of consistency, <c>lists:usort/2</c> and + <c>lists:umerge/3</c> have been modified too: two elements + are considered equal if they compare equal.</p> + <p>The <c>file_sorter</c> module has been modified in a + similar way: the <c>unique</c> option now applies to the + key (<c>keysort()</c> and <c>keymerge()</c>) and the + ordering function (the option <c>{order, Order} </c>).</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-6019</p> + </item> + <item> + <p>Correction in documentation for + <c>ets:update_counter/3</c>; failure with <c>badarg</c> + also if the counter to be updated is the key.</p> + <p>Own Id: OTP-6072</p> + </item> + <item> + <p>When sorting terms using the <c>file_sorter</c> module + and an ordering fun, the sort was not always stable. This + bug has been fixed.</p> + <p>Own Id: OTP-6088</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Improvements of the linter:</p> + <list type="bulleted"> + <item> + <p>The <c>compile</c> attribute is recognized after + function definitions.</p> + </item> + <item> + <p>The new compiler option + <c>nowarn_deprecated_function</c> can be used for + turning off warnings for calls to deprecated functions.</p> + </item> + <item> + <p>The new compiler option + <c>{nowarn_unused_function,[{Name,Arity}]}</c> turns off + warnings for unused local functions for the mentioned + functions. The new options + <c>{nowarn_deprecated_function,[{Module,Name,Arity}]}</c> + and <c>{nowarn_bif_clash,[{Name,Arity}]}</c> work + similarly.</p> + </item> + </list> + <p>The Erlang code preprocessor <c>epp</c> now recognizes + the <c>file</c> attribute. This attribute is meant to be + used by tools such as Yecc that generate source code + files.</p> + <p>Own Id: OTP-5362</p> + </item> + <item> + <p>The formatting option <c>~s</c> of <c>io:fwrite</c> and + <c>io_lib:fwrite</c> has been extended to handle arguments + that are binaries or I/O lists.</p> + <p>Own Id: OTP-5403</p> + </item> + <item> + <p>The control sequences <c>p</c> and <c>P</c> of the + <c>Format</c> argument of the functions + <c>io:format/2,3</c> and <c>io_lib:format/2</c> have been + changed as to display the contents of binaries containing + printable characters as strings.</p> + <p>Own Id: OTP-5485</p> + </item> + <item> + <p>The linter emits warnings for functions exported more + than once in <c>export</c> attributes.</p> + <p>Own Id: OTP-5494</p> + </item> + <item> + <p>A manual for STDLIB has been added, <c>stdlib(6)</c>. It + mentions the configuration parameters for the Erlang + shell.</p> + <p>Own Id: OTP-5530</p> + </item> + <item> + <p>Added the <c>zip</c> module with functions for reading + and creating zip archives. See <c>zip(3)</c>.</p> + <p>Own Id: OTP-5786</p> + </item> + <item> + <p>Simple-one-for-one supervisors now store the pids of + child processes using <c>dict</c> instead of a list. This + significantly improves performance when there are many + dynamic supervised child processes. (Thanks to Mickaël + Rémond et al.)</p> + <p>Own Id: OTP-5898</p> + </item> + <item> + <p>When given the new option '<c>strict_record_tests</c>', + the compiler will generate code that verifies the record + type for '<c>R#record.field</c>' operations in guards. Code + that verifies record types in bodies has already been + generated since R10B, but in this release there will be a + '<c>{badrecord,RecordTag}</c>' instead of a + '<c>badmatch</c>' if the record verification test fails. + See the documentation for the <c>compile</c> module for + more information.</p> + <p>The Erlang shell always applies strict record tests.</p> + <p>Own Id: OTP-5915 Aux Id: OTP-5714 </p> + </item> + <item> + <p>The Erlang pretty printer (<c>erl_pp</c>) now tries to + insert line breaks at appropriate places.</p> + <p>Own Id: OTP-5924</p> + </item> + <item> + <p>The <c>public</c> option has been removed from + <c>digraph:new/1</c>. The reason is that several + functions in the <c>digraph</c> module are implemented + using multiple ETS accesses, which is not thread safe. + (Thanks to Ulf Wiger.)</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5985</p> + </item> + <item> + <p>The function <c>lists:keyreplace/4</c> checks that the + fourth argument (<c>NewTuple</c>) is a tuple.</p> + <p>Own Id: OTP-6023</p> + </item> + <item> + <p>Added an example of how to reconstruct source code from + debug info (abstract code) to <c>beam_lib(3)</c>. (Thanks + to Mats Cronqvist who wrote the example.)</p> + <p>Own Id: OTP-6073</p> + </item> + <item> + <p>The new compiler option <c>warn_unused_record</c> is used + for finding unused locally defined record types.</p> + <p>Own Id: OTP-6105</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.12</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p><c>shell_default:xm/1</c> has been added. It calls + <c>xref:m/1</c>.</p> + <p>Own Id: OTP-5405 Aux Id: OTP-4101 </p> + </item> + <item> + <p>Warnings are output whenever so far undeclared records are + referenced from some default value of a record + declaration. In STDLIB 1.14 (R11B) such forward references + will cause a compilation error.</p> + <p>Own Id: OTP-5878</p> + </item> + <item> + <p>The linter's check of the <c>deprecated</c> attribute did + not take the compile option <c>export_all</c> into + account. This bug has been fixed.</p> + <p>Own Id: OTP-5917</p> + </item> + <item> + <p>The Erlang pretty printer did not handle <c>try/catch</c> + correctly. This bug has been fixed.</p> + <p>Own Id: OTP-5926</p> + </item> + <item> + <p>Corrected documentation for <c>lists:nthtail/3</c>.</p> + <p>Added documentation for <c>lists:keymap/3</c>.</p> + <p>Tried to clarify some other type declarations and + function descriptions in <c>lists(3)</c>.</p> + <p>Corrected documentation for <c>timer:now_diff/2</c>.</p> + <p>Fixed broken links in <c>gen_fsm(3)</c>, + <c>gen_server(3)</c>, <c>io_lib(3)</c> and <c>lib(3)</c>.</p> + <p>Own Id: OTP-5931</p> + </item> + <item> + <p>Type checks have been added to functions in + <c>lists.erl</c>.</p> + <p>Own Id: OTP-5939</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The new STDLIB module <c>erl_expand_records</c> expands + records in abstract code. It is used by the Erlang shell, + which means that Compiler is no longer used by the shell.</p> + <p>Own Id: OTP-5876 Aux Id: OTP-5435 </p> + </item> + <item> + <p>The compiler will now warn that the + <c>megaco:format_versions/1</c> function is deprecated.</p> + <p>Own Id: OTP-5976</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.11</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>When calling <c>gen_server:enter_loop</c> with a + registered server name, it was only checked that the + registered name existed, not that it actually was the + name of the calling process.</p> + <p>Own Id: OTP-5854</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>More detail on <c>beam_lib:version/1</c> in + documentation.</p> + <p>Own Id: OTP-5789</p> + </item> + <item> + <p>The new function <c>io:read/3</c> works like + <c>io:read/1,2</c> but takes a third argument, + <c>StartLine</c>.</p> + <p>Own Id: OTP-5813</p> + </item> + <item> + <p>The new function <c>gen_fsm:enter_loop/4,5,6</c>, similar + to <c>gen_server:enter_loop/3,4,5</c>, has been added.</p> + <p>Own Id: OTP-5846 Aux Id: seq10163 </p> + </item> + <item> + <p>The function <c>c:i/1</c> is now exported.</p> + <p>Own Id: OTP-5848 Aux Id: seq10164 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.10</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>A couple of type errors have been fixed in <c>sofs</c>.</p> + <p>Own Id: OTP-5739</p> + </item> + <item> + <p>The pre-processor used to complain that the macro + definition '<c>-define(S(S), ??S).</c>' was circular, + which it isn't. (Thanks to Richard Carlsson.)</p> + <p>Own Id: OTP-5777</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.9</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The linter, QLC and the module <c>erl_pp</c> did not + handle the new '<c>fun M:F/A</c>' construct in all + situations. This problem has been fixed.</p> + <p>Own Id: OTP-5644</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>Replaced some tuple funs with the new <c>fun M:F/A</c> + construct.</p> + <p>The high-order functions in the lists 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 <c>c:i/0</c> function will now run in a paged mode if + there are more than 100 processes in the system. (Thanks + to Ulf Wiger.)</p> + <p><c>erlang:system_info(process_count)</c> has been + optimized and does now return exactly the same value as + <c>length(processes())</c>. Previously + <c>erlang:system_info(process_count)</c> did not include + exiting processes which are included in + <c>length(processes())</c>.</p> + <p>The <c>+P</c> flag for <c>erl</c>, which sets the maximum + number of processes allowed to exist at the same, no longer + accepts values higher than 134217727. (You will still + probably run out of memory before you'll be able to reach + that limit.)</p> + <p>Own Id: OTP-5645 Aux Id: seq9984 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.8</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Very minor corrections in <c>beam_lib</c> and its + documentation.</p> + <p>Own Id: OTP-5589</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <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> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.7</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p><c>filelib:wildcard/2</c> was broken (it ignored its + second argument).</p> + <p>Also, <c>filelib:wildcard("Filename")</c> (where the + argument does not contain any meta-characters) would + always return <c>["Filename"]</c>. Corrected so that an + empty list will be returned if <c>"Filename"</c> does not + actually exist. (Same correction in + <c>filelib:wildcard/2</c>.) (This change is a slight + incompatibility.)</p> + <p><c>filelib:wildcard/1,2</c> will generate a different + exception when given bad patterns such as <c>"{a,"</c>. The + exception used to be caused by + '<c>exit(missing_delimiter)</c>' but is now + '<c>erlang:error({badpattern,missing_delimiter})</c>'.</p> + <p>Own Id: OTP-5523 Aux Id: seq9824 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>Further improvements of encrypted debug info: New option + <c>encrypt_debug_info</c> for compiler.</p> + <p>Own Id: OTP-5541 Aux Id: seq9837 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.6</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>When opening a Dets table read only an attempt was + sometimes made to re-hash the table resulting in an error + message. This problem has been fixed.</p> + <p>Own Id: OTP-5487 Aux Id: OTP-4989 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>It is now possible to encrypt the debug information in + Beam files, to help keep the source code secret. See the + documentation for <c>compile</c> on how to provide the key + for encrypting, and the documentation for <c>beam_lib</c> + on how to provide the key for decryption so that tools such + as the Debugger, <c>xref</c>, or <c>cover</c> can be used.</p> + <p>The <c>beam_lib:chunks/2</c> functions now accepts an + additional chunk type <c>compile_info</c> to retrieve + the compilation information directly as a term. (Thanks + to Tobias Lindahl.)</p> + <p>Own Id: OTP-5460 Aux Id: seq9787 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.5</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Closing a Dets table kept in RAM would cause a crash if + the file could not be written. This problem has been + fixed by returning an error tuple.</p> + <p>Own Id: OTP-5402</p> + </item> + <item> + <p><c>erl_pp</c> now correctly pretty-prints <c>fun F/A</c>.</p> + <p>Own Id: OTP-5412</p> + </item> + <item> + <p>The Erlang shell failed if the compiler was not in the + code path. This problem has been fixed, but in order to + evaluate records the compiler is still needed.</p> + <p>Own Id: OTP-5435</p> + </item> + <item> + <p>Corrected the example in the documentation for + <c>ets:match/2</c>. Also clarified that + <c>ets:update_counter/3</c> updates the counter atomically. + (Thanks to Anders Svensson.)</p> + <p>Own Id: OTP-5452 Aux Id: seq9770, seq9789 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <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> + <item> + <p>The compiler will now produce warnings when using the + deprecated functions in the <c>snmp</c> module.</p> + <p>Own Id: OTP-5425</p> + </item> + <item> + <p>The function <c>c:zi/0</c> has been removed. Use + <c>c:i/0</c> instead.</p> + <p>Own Id: OTP-5432</p> + </item> + <item> + <p>Corrected two minor bugs found by the Dialyzer: + Calling a parameterized module from a restricted shell + (i.e. if <c>shell:start_restricted/1</c> has been used) + would crash the shell evaluator. A debug printout in + <c>gen_fsm</c> had a clause that would never match; causing + less information to be printed.</p> + <p>And a somewhat more serious one also found by + Dialyzer: <c>rpc:yield/1</c> would crash unless the call + started by <c>rpc:async_call/4</c> had already finished; + <c>rpc:nb_yield(Key,infinity)</c> would also crash.</p> + <p>Cleaned up and removed redundant code found by + Dialyzer in <c>erlang:dmonitor_p/2</c>.</p> + <p>Own Id: OTP-5462</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.4</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Bugs in the Erlang shell have been fixed.</p> + <p>Own Id: OTP-5327</p> + </item> + <item> + <p>Some dead code reported by Dialyzer was eliminated.</p> + <p>A bug in <c>dbg</c> when tracing to wrap trace files has + been corrected. It failed to delete any already existing + wrap trace files with the same names when starting a new + wrap trace.</p> + <p>Own Id: OTP-5329</p> + </item> + <item> + <p>The linter could output invalid warnings about bit + patterns in record initializations. This problem has been + fixed.</p> + <p>Own Id: OTP-5338</p> + </item> + <item> + <p><c>ordsets:is_set(NoList)</c>, where <c>NoList</c> is any + term except a list, would crash. For consistency with + <c>sets:is_set/1</c> and <c>gb_sets:is_set/1</c>, it now + returns <c>false</c>.</p> + <p>Own Id: OTP-5341</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> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The <c>deprecated</c> attribute is now checked by the + linter. See <c>xref(3)</c> for a description of the + <c>deprecated</c> attribute.</p> + <p>Own Id: OTP-5276</p> + </item> + <item> + <p>The restricted shell will now indicate if the return + value from a user predicate is on an incorrect form.</p> + <p>Own Id: OTP-5335</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.3</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Bugs concerning unused and shadowed variables have been + fixed in the linter.</p> + <p>Own Id: OTP-5091</p> + </item> + <item> + <p>A bug in the evaluator that caused the shell to choke on + bit syntax expressions has been fixed.</p> + <p>Own Id: OTP-5237</p> + </item> + <item> + <p><c>io:format/2</c> et.al no longer crashes for some + combinations of precision and value for format character + "g". Previously it crashed if the precision P was 4 or lower + and the absolute value of the float to print was lower + than 10^4 but 10^(P-1) or higher. Now it will not crash + depending on the value of the float.</p> + <p>Own Id: OTP-5263</p> + </item> + <item> + <p>Bugs in the handling of the bit syntax have been fixed in + the Erlang shell.</p> + <p>Own Id: OTP-5269</p> + </item> + <item> + <p><c>gb_sets:del_element/2</c> was changed to do the + same as <c>gb_sets:delete_any/2</c> which was the + original intention, not as <c>gb_sets:delete/2</c>. Code + that relies on <c>gb_sets:del_element/2</c> causing an + error if the element does not exist must be changed to + call <c>gb_sets:delete/2</c> instead.</p> + <p>The documentation was also updated to explicitly + document functions that were only referred to as + 'aliases' of a documented function. Also, a list of all + functions common to the <c>gb_sets</c>, <c>sets</c>, and + <c>ordsets</c> was added.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-5277</p> + </item> + <item> + <p>Debug messages have been removed from the QLC module.</p> + <p>Own Id: OTP-5283</p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The size of continuations returned from + <c>dets:match/1,3</c>, <c>dets:match_object/1,3</c>, and + <c>dets:select/1,3</c> has been reduced. This affects the + amount of data Mnesia sends between nodes while + evaluating QLC queries.</p> + <p>Own Id: OTP-5232</p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.2</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The <c>-rsh</c> switch for starting a remote shell + (introduced with OTP-5210) clashed with an already existing + switch used by <c>slave</c>. Therefore the switch for + the remote shell is now instead named <c>-remsh</c>.</p> + <p>Own Id: OTP-5248 Aux Id: OTP-5210 </p> + </item> + </list> + </section> + </section> + + <section> + <title>STDLIB 1.13.1</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The Pman 'trace shell' functionality was broken as 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>When the undocumented feature "parameterized modules" was + used, the ?MODULE macro did not work correctly.</p> + <p>Own Id: OTP-5224</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>The man page for the <c>lists</c> module has been updated + with description of the new <c>zip</c>, <c>unzip</c>, + and <c>partition/2</c> functions.</p> + <p>Own Id: OTP-5213</p> + </item> + <item> + <p>The top level group leader used to be listed as job #1 in + the job list in JCL mode. Since there is no shell + associated with this process that can be connected to, it + will no longer be listed.</p> + <p>Own Id: OTP-5214</p> + </item> + <item> + <p>The possibility to start the Erlang shell in parallel + with the rest of the system has been reintroduced for + backwards compatibility. Note that this old behaviour is + error prone and should not be used unless for some reason + necessary.</p> + <p>Own Id: OTP-5218 Aux Id: seq9534 </p> + </item> + <item> + <p>The <c>shell</c> commands <c>rr/1,2,3</c> now accepts + wildcards when reading record definitions from BEAM + files.</p> + <p>Own Id: OTP-5226</p> + </item> + </list> + </section> + </section> +</chapter> + |