Bug fix release : otp_src_R12B-4 Build date : 2008-09-03 This is bug fix release 4 for the R12B release. You can find the README file for the release at http://www.erlang.org/download/otp_src_R12B-4.readme (this file) The source distribution and binary distribution for Windows can be downloaded from http://www.erlang.org/download/otp_src_R12B-4.tar.gz http://www.erlang.org/download/otp_win32_R12B-4.exe The distribution can also be downloaded using the BitTorrent protocol. Use the following torrent files to download the source distribution and binary distribution for Windows: http://www.erlang.org/download/otp_src_R12B-4.tar.gz.torrent http://www.erlang.org/download/otp_win32_R12B-4.exe.torrent Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README file that is part of the distribution. The on-line documentation can be found at: http://www.erlang.org/doc/ You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_R12B-4.tar.gz http://www.erlang.org/download/otp_doc_man_R12B-4.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ------------------------------------------------------------ OTP-7348 Performance for ETS intensive applications should now be better in the SMP emulator. Also, ETS table identifiers (as returned by ets:new/2) are now spread out in wider range than before (using 28 bits in a 32-bit emulator) to make sure that the table identifier for a deleted table will not be quickly re-used. NOTE: Table identifiers can now be negative integers. Programs that (incorrectly) assume that table identifiers can only be positive integers might stop to work. (The type of a table identifier is intentionally not documented, and may change in a future release.) OTP-7404 New BIF erlang:decode_packet/3 that extracts a protocol packet from a binary. Similar to the socket option {packet, Type}. Also documented the socket packet type http and made it official. NOTE: The tuple format for http packets sent from an active socket has been changed in an incompatible way. OTP-7406 The source code for the documentation for some applications (erts, kernel, stdlib, and several others) are now included in the source tar ball. There is currently no Makefile support for building HTML files from the source (such support will be included in a future release). OTP-7477 Termination of a process that takes a long time can now be preempted, i.e., the terminating process will be rescheduled for later continuation of termination so that other processes can execute. Termination of a process that owns many and/or large ets tables typically takes a long time. --- documentation ------------------------------------------------------------ OTP-7506 In the section about binary construction, the reference manual now mentions what happens when an integer value does not fit into an integer segment of size N (namely, that the N least significant bits will be put into into the binary and that the most significant bits will be silently discarded). (Thanks to Edwin Fine.) --- otp ------------------------------------------------------------ OTP-7406 The source code for the documentation for some applications (erts, kernel, stdlib, and several others) are now included in the source tar ball. There is currently no Makefile support for building HTML files from the source (such support will be included in a future release). OTP-7499 A minimal source distribution can now be created by invoking ./otp_build remove_prebuilt_files. For more information see the distributed README file. --- asn1-1.6 ------------------------------------------------------------ OTP-7335 The ASN.1 compiler has got a new backend supporting PER UNALIGNED. Previously there was only support for PER ALIGNED. OTP-7374 Now the asn1-compiler handles unions and intersections of PermittedAlphabet constraints. OTP-7375 Now is ordering, accordering to the canonical order, of components in a SET added. Canonical order is described in X.691 9.2 and X.680 8.6 OTP-7400 The precedence rules for extended constraints have been misinterpreted. The rule says for instance that if there are more than one constraint on a type that have extensionmark, only the last of the extensionmarks would be kept. This affects the encoding of PER and is now corrected. OTP-7403 A constrained number with a singlevalue constraint that is extensible was falsely encoded/decoded in aligned/unaligned PER. This is now corrected. OTP-7407 With the undocumented option no_final_padding the whole encoded message is not padded to a border of a byte. Thus the returned encoded message is a bitstring. --- common_test-1.3.3 ------------------------------------------------------------ OTP-7112 Various updates and improvements, plus some minor bug fixes, have been implemented in Common Test and Test Server. OTP-7518 It is now possible, by means of the new function ct:abort_current_testcase/1 or test_server_ctrl:abort_current_testcase/1, to abort the currently executing test case. --- compiler-4.5.4 ------------------------------------------------------------ OTP-7498 Certain complex bit syntax matching operations matching out binaries and having several clauses could give incorrect results (the matched out binaries were too short). (Thanks to Christian von Roques for bug report and correction.) --- crypto-1.5.2.1 ------------------------------------------------------------ OTP-7521 Minor performance optimization. --- dialyzer-1.8.2 ------------------------------------------------------------ OTP-7522 Minor updates. --- erl_interface-3.5.8 ------------------------------------------------------------ OTP-7448 Fixed bug in erl_interface when decoding broken data --- erts-5.6.3.1 ------------------------------------------------------------ OTP-7399 Doing local call trace on bit syntax matching code that has been optimized with delayed sub-binary creation could crash the emulator. --- erts-5.6.3.2 ------------------------------------------------------------ OTP-7415 Calls to erlang:memory/[0,1] could cause the runtime system with SMP support to crash. --- erts-5.6.3.3 ------------------------------------------------------------ OTP-7422 Binary construction with an integer field of size 0 at the end of the constructed binary (and the size given in a variable), would cause a write of one byte outside the memory reserved for the binary, which in turn could cause an emulator crash. OTP-7464 A race condition in the dynamic driver implementation could cause an emulator crash. (Thanks to Paul Fisher) OTP-7474 Calls to erlang:system_info(allocated_areas) could cause the runtime system with SMP support to crash. OTP-7475 The env option to open_port() could cause the runtime system with SMP support to crash. OTP-7480 Operations that needed to block other threads in the runtime system with SMP support unnecessarily waited for async threads to block. Most important the erlang:memory/[0,1] bif, code loading, and the erlang:trace/3 bif. --- erts-5.6.4 ------------------------------------------------------------ OTP-7348 Performance for ETS intensive applications should now be better in the SMP emulator. Also, ETS table identifiers (as returned by ets:new/2) are now spread out in wider range than before (using 28 bits in a 32-bit emulator) to make sure that the table identifier for a deleted table will not be quickly re-used. NOTE: Table identifiers can now be negative integers. Programs that (incorrectly) assume that table identifiers can only be positive integers might stop to work. (The type of a table identifier is intentionally not documented, and may change in a future release.) OTP-7404 New BIF erlang:decode_packet/3 that extracts a protocol packet from a binary. Similar to the socket option {packet, Type}. Also documented the socket packet type http and made it official. NOTE: The tuple format for http packets sent from an active socket has been changed in an incompatible way. OTP-7406 The source code for the documentation for some applications (erts, kernel, stdlib, and several others) are now included in the source tar ball. There is currently no Makefile support for building HTML files from the source (such support will be included in a future release). OTP-7408 Double backslashes in format string passed to the erts internal printf implementation produced erroneous results. No such format strings were passed to the erts internal printf implementation, i.e., the bug was therefore completely harmless. (Thanks to Perry Smith.) OTP-7410 Large files are now handled on Windows, where the filesystem supports it. OTP-7468 A lot of frequently accessed memory counters (erts internal) have been removed. This since they hurt performance on the runtime system with SMP support. As a result erlang:memory/[0,1] will only deliver a result if all erts_alloc(3) allocators are enabled (default). The result delivered when all erts_alloc(3) allocators are enabled are both more accurate and less accurate than before. More memory than before are included in the result, but the different parts that are summed are not gathered atomically. A call to erlang:memory/[0,1] is much cheaper for the system than before. This since the information isn't gathered atomically anymore which was very expensive. OTP-7470 Pre-allocators used for, for example, timers, and messages have been rewritten to be scheduler specific. That is, different schedulers will now allocate from different pools which reduces lock contention. OTP-7471 On Mac OS X, file:sync/1 now guarantees that all filesystem buffers are written to the disk by using the fcntl() with F_FULLFSYNC option. Previously, file:sync/1 called fsync(), which only guaranteed that the data had been transferred to the disk drive. (Thanks to Jan Lehnardt.) OTP-7477 Termination of a process that takes a long time can now be preempted, i.e., the terminating process will be rescheduled for later continuation of termination so that other processes can execute. Termination of a process that owns many and/or large ets tables typically takes a long time. OTP-7493 Using 16#ffffFFFF as a timeout value in receive...after would often cause a timeout almost at once due to an 32-bit integer overflow. (Thanks to Serge Aleynikov and Matthias Lang.) OTP-7494 The re module is exdended with repetitive matches (global option) and replacement function. OTP-7506 In the section about binary construction, the reference manual now mentions what happens when an integer value does not fit into an integer segment of size N (namely, that the N least significant bits will be put into into the binary and that the most significant bits will be silently discarded). (Thanks to Edwin Fine.) OTP-7517 For the process that an escript runs in, the trap_exit process flag is now false instead of true (as in previous releases). Scripts that depend on the previous (counter-intuitive) behaviour might not work. (Thanks to Bengt Kleberg.) OTP-7520 Setting the {active,once} for a socket (using inets:setopts/2) is now specially optimized (because the {active,once} option is typically used much more frequently than other options). OTP-7526 A bug in the string:to_integer/1 builtin made the emulator unstable. This is now corrected. (Thanks to Lev Walkin.) --- hipe-3.6.8 ------------------------------------------------------------ OTP-7522 Minor updates. --- inets-5.0.10 ------------------------------------------------------------ OTP-7450 Enhanced an info report. OTP-7454 Changed error message from {wrong_type,{document_root,"/tmp/htdocs"}} to {invalid_option,{non_existing, document_root,"/tmp/htdocs"}}. OTP-7490 Relative paths in directory authentication did not work as intended, this has now been fixed. OTP-7512 The query-string passed to the callback function was not compliant with the documentation, it is now. --- kernel-2.12.4 ------------------------------------------------------------ OTP-7404 New BIF erlang:decode_packet/3 that extracts a protocol packet from a binary. Similar to the socket option {packet, Type}. Also documented the socket packet type http and made it official. NOTE: The tuple format for http packets sent from an active socket has been changed in an incompatible way. OTP-7410 Large files are now handled on Windows, where the filesystem supports it. OTP-7520 Setting the {active,once} for a socket (using inets:setopts/2) is now specially optimized (because the {active,once} option is typically used much more frequently than other options). --- megaco-3.8.1 ------------------------------------------------------------ OTP-7398 Improve (test case) coverage OTP-7417 Some minor documentation cleanup of the "The transaction sender" chapter of the User's Guide. OTP-7444 The event parameter value for completion event ce of the dd package was incorrectly encoded as type Value instead of as a quoted string. OTP-7449 DigitMap ([0-9ef]) incorrectly interpreted as ([0-9]ef). OTP-7455 Receiving an unexpected segment reply could case an case clause crash. Now a warning message will be issued instead. OTP-7457 The flex scanner had problems parsing wildcarded service-change request, ammRequest (with add) and notifyRequest. OTP-7459 Processing requests when "autoconnecting" caused function cause after reboot. --- mnesia-4.4.4 ------------------------------------------------------------ OTP-7419 Mnesia did not garbage collect transaction decisions on disk based nodes if no transactions where made on the local node. --- mnesia-4.4.5 ------------------------------------------------------------ OTP-7466 mnesia:clear_table/1 does not require that all replicas of the table are available anymore. --- odbc-2.10.3 ------------------------------------------------------------ OTP-7418 Configure update for mac. --- os_mon-2.1.7 ------------------------------------------------------------ OTP-7409 Memory information in memsup:get_system_memory_data/0 now has additional entries in its property list for linux. OTP-7505 Fixed a build error that occurred on NetBSD (Thanks to Per Hedeland and Raphael Langerhorst) --- snmp-4.11.1 ------------------------------------------------------------ OTP-7412 Added utility functions for transforming DateAndTime as [int()] to strings; date_and_time_to_string/2 and date_and_time_to_string2/1. Also added new validation function validate_date_and_time/2. OTP-7426 [compiler] The MIB compiler didn't properly handle the REFERENCE part of a MIB definition. The actual reference string was thrown away. OTP-7432 [manager] Encryption error when attempting to send version 3 inform-requests. --- ssh-1.0 ------------------------------------------------------------ OTP-7356 The architecture of the ssh processes has been reconstructed to fit in a supervision tree as to become a real OTP application and benefit from this when starting and stopping. OTP-7485 Removed some special handling of prompts that made ssh behave differently than openssh. OTP-7502 Support for pty option echo off added. Requires kernel from R12B-4. OTP-7503 The ssh API has been enhanced a lot of old API functions has become deprecated. OTP-7504 Bug in encoding of pty opts has been fixed. --- stdlib-1.15.4 ------------------------------------------------------------ OTP-7344 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. OTP-7413 The documentation of (d)ets:init_table() has been corrected. (Thanks to Paul Mineiro.) OTP-7421 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 p and P of the functions io:fwrite/2,3 and io_lib:fwrite/2, 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. OTP-7424 Some debug code has been removed from Dets. OTP-7445 The documentation of dets:match_delete/2 has been corrected. (Thanks to Paul Mineiro.) OTP-7489 The documentation of lists:(u)sort/2 now states what is expected of an ordering function. OTP-7492 Corrections of digraph(3). (Thanks to Vlad Dumitrescu.) OTP-7494 The re module is exdended with repetitive matches (global option) and replacement function. OTP-7495 The Erlang shell now displays a nicer error message when evaluating an undefined command. (Thanks to Richard Carlsson.) OTP-7517 For the process that an escript runs in, the trap_exit process flag is now false instead of true (as in previous releases). Scripts that depend on the previous (counter-intuitive) behaviour might not work. (Thanks to Bengt Kleberg.) --- test_server-3.2.3 ------------------------------------------------------------ OTP-7112 Various updates and improvements, plus some minor bug fixes, have been implemented in Common Test and Test Server. OTP-7447 When a testcase terminated due to a timetrap, io sent to the group leader from framework:end_tc/3 (using ct:pal/2/3 or ct:log/2/3) would cause deadlock. This has been fixed. OTP-7518 It is now possible, by means of the new function ct:abort_current_testcase/1 or test_server_ctrl:abort_current_testcase/1, to abort the currently executing test case. --- tools-2.6.2 ------------------------------------------------------------ OTP-7423 A bug in the Xref scanner has been fixed. OTP-7509 A bug in Fprof where the function 'undefined' appeared to call 'undefined' has been corrected. --- typer-0.1.4 ------------------------------------------------------------ OTP-7522 Minor updates. --- xmerl-1.1.10 ------------------------------------------------------------ OTP-6053 Changed the examples in "Customization Functions Tutorial" to correct Erlang code. OTP-6873 The XPath function contains() now implemented. See XPath 1.0 section 4.2. OTP-7430 Fixed xmerl_scan's problem with contents of numeric character references followed by UTF-8 characters. OTP-7473 Fixed an incorrect guard for xmerl_scan:to_ucs/2. OTP-7496 Some bug corrections of xmerl XPath implementation, most provided by Matthew Dempsky.