Bug fix release : otp_src_R12B-1 Build date : 2008-02-06 This is bug fix release 1 for the R12B release. You can download the full source distribution from http://www.erlang.org/download/otp_src_R12B-1.tar.gz http://www.erlang.org/download/otp_src_R12B-1.readme (this file) Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README that is part of the distribution. The Windows binary distribution can be downloaded from http://www.erlang.org/download/otp_win32_R12B-1.exe 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-1.tar.gz http://www.erlang.org/download/otp_doc_man_R12B-1.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ------------------------------------------------------------ OTP-7100 Memory management improvements especially for the runtime system with SMP support: The runtime system with SMP support can now use multiple, thread specific instances of most memory allocators. This improves performance since it reduces lock contention in the memory allocators. It may however increase memory usage for some applications. The runtime system with SMP support will by default enable this feature on most allocators. The amount of instances used can be configured. driver_alloc(), driver_realloc(), and driver_free() now use their own erts specific memory allocator instead of the default malloc() implementation on the system. The default configuration of some allocators have been changed to fit applications that use much memory better. Some new erts_alloc configuration parameters have been added. erts_alloc_config has been modified to be able to create configurations suitable for multiple instances of allocators. The returned value from erlang:system_info({allocator, Alloc}) has been changed. This since an allocator may now run in multiple instances. If you for some reason want the memory allocators to be configured as before, you can pass the +Mea r11b command-line argument to erl. For more information see the erts_alloc(3), the erts_alloc_config(3), and the erlang(3) documentation. --- documentation ------------------------------------------------------------ OTP-7016 Added missing parenthesis in an example of the binary comprehensions in the Reference manual. (Thanks to igwan.) OTP-7125 Corrected the example in Common Caveats, section 3.4. (Thanks to Ulf Wiger.) --- otp ------------------------------------------------------------ OTP-7058 All config.{guess,sub} files in OTP have been updated and all applications using these files now use the same versions. The makefile variable TARGET is now exported in the top makefile. (Thanks to Christian Faulhammer and Sergei Golovan) OTP-7059 A failure in a recursive make is now propagated. (Thanks to Christian Faulhammer) OTP-7092 When building from source, the configure script is better at finding problems with static linking of OpenSSL. Dynamic linking is instead selected when such problems occur. Dynamic linking of OpenSSL is now also possible to force by giving the option --enable-dynamic-ssl-lib to configure. --- common_test-1.3.1 ------------------------------------------------------------ OTP-7111 The rx library, included with common_test, failed to build on on some architectures because the -fPIC compiler option was missing. --- compiler-4.5.1 ------------------------------------------------------------ OTP-7018 A match expression inside a function call could cause a false "a term is constructed but never used" warning. OTP-7022 The compiler could crash if a binary tail was matched out, and then used in a binary append operation. (Thanks to Oleg Avdeev.) Similarly, the compiler could crash if a binary tail was matched out, and then used (incorrectly) in binary construction in an integer field. (Thanks to Fredrik Svahn.) Or was incorrectly used in a float field. Or was used in a binary field with a given length. (Thanks to Chih - Wei Yu.) OTP-7029 Matching an empty binary in a record and then using the same record again could cause a compiler crash. (Thanks to Fredrik Thulin.) OTP-7073 In rare circumstances, constants containing floating points and integers could be confused. Example: f(a) -> [1]; f(b) -> [1.0]. Both f(a) and f(b) would return [1]. OTP-7094 Some bit syntax code such as matching d(_,<<>>) -> one; d(0,<>) ->two. could crash the compiler. (Thanks to Simon Cornish.) OTP-7101 The compiler could generate suboptimal code for record updates if the record update code consisted of multiple source code lines. OTP-7102 In unusual circumstances, a call to a fun could fail due to an unsafe optimization. (Thanks to Simon Cornish.) OTP-7113 Bit syntax matching with a guard containing two or more uses of andalso/orelse could cause the compiler to crash. (Thanks to Mateusz Berezecki.) OTP-7117 This was only a problem if you generated or wrote your own Core Erlang code: The Core Erlang optimizer code could move nested calls such as erlang:'<'(erlang:length(L), 2) as case expression into a guard, which would change the semantics. (Thanks to Robert Virding.) --- debugger-3.1.1.2 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. --- dialyzer-1.7.2 ------------------------------------------------------------ OTP-7134 The warnings returned by the Erlang interface now contains a tag describing the type of warning. --- docbuilder-0.9.8 ------------------------------------------------------------ OTP-7027 The generated html should now be valid xhtml (with a few exceptions to be fixed in next version). --- erl_interface-3.5.5.4 ------------------------------------------------------------ OTP-7093 Corrected FreeBSD build error. --- erts-5.6.1 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. OTP-7006 The SMP emulator on sparc64 erroneously used the sparc32 atomic and the sparc32 spinlock implementations which caused it to crash. OTP-7008 Call tracing the new guard BIFs byte_size, bit_size, or tuple_size and the loading a module that uses one of those functions, could cause the emulator to terminate. OTP-7014 configuring --enable-darwin-universal or --enable-darwin-64bit on MacOSX could result in a non optimized emulator. Top level configure script now corrected. OTP-7015 configuring --with-gd did not produce correct include flags for percept. OTP-7035 Environment variables weren't handled in thread safe manner in the runtime system with SMP support on Windows. erl_drv_putenv(), and erl_drv_getenv() has been introduced for use in drivers. Do not use putenv(), or getenv() directly in drivers. For more information see the erl_driver documentation. OTP-7067 HIPE: Corrected the choice of interface to the send/3 and setnode/3 BIFs for native-compiled code. Using the incorrect interface could, in unusual circumstances, lead to random runtime errors. OTP-7068 Garbage collections could become extremely slow when there were many keys in the process dictionary. (Thanks to Fredrik Svahn.) OTP-7070 The duplicate documentation directory in the windows installation is removed. OTP-7079 Documentation bugfixes and clarifications. (Thanks to Joern (opendev@gmail.com), Matthias Lang, and Richard Carlsson.) OTP-7080 The runtime system with SMP support not using the native atomic integer implementation part of OTP could deadlock when run on a system with more than one logical processor. That is, only the runtime system with SMP support on other hardware platforms than x86, x86_64, sparc32, and powerpc32 were effected by this bug. OTP-7085 Bit syntax construction with a small integer in a non-byte aligned field wider than the CPU's word size could cause garbage bits in the beginning of the field. OTP-7086 All Windows versions older than Windows 2000 are now not supported by the Erlang runtime system. This since there was a need for usage of features introduced in Windows 2000. OTP-7100 Memory management improvements especially for the runtime system with SMP support: The runtime system with SMP support can now use multiple, thread specific instances of most memory allocators. This improves performance since it reduces lock contention in the memory allocators. It may however increase memory usage for some applications. The runtime system with SMP support will by default enable this feature on most allocators. The amount of instances used can be configured. driver_alloc(), driver_realloc(), and driver_free() now use their own erts specific memory allocator instead of the default malloc() implementation on the system. The default configuration of some allocators have been changed to fit applications that use much memory better. Some new erts_alloc configuration parameters have been added. erts_alloc_config has been modified to be able to create configurations suitable for multiple instances of allocators. The returned value from erlang:system_info({allocator, Alloc}) has been changed. This since an allocator may now run in multiple instances. If you for some reason want the memory allocators to be configured as before, you can pass the +Mea r11b command-line argument to erl. For more information see the erts_alloc(3), the erts_alloc_config(3), and the erlang(3) documentation. OTP-7104 The break handling code (run when Ctrl-C is hit) could could potentially deadlock the runtime system with SMP support. OTP-7120 The sctp driver has been updated to work against newer lksctp packages e.g 1.0.7 that uses the API spelling change adaption -> adaptation. Older lksctp (1.0.6) still work. The erlang API in gen_sctp.erl and inet_sctp.hrl now spells 'adaptation' regardless of the underlying C API. OTP-7122 On Unix, denormalized floating point numbers could not be created using list_to_float/1 or binary_to_term/1. (Thanks to Matthew Dempsky.) OTP-7127 A bug in erlang:phash2/1 on 64-bit platforms has been fixed. (Thanks to Scott Lystig Fritchie.) OTP-7130 Native atomic integers and spin-locks are now also available for the runtime system with SMP support on sparc64. OTP-7131 FP exceptions support for sparc64 userspace on Linux has been added. Note that FP exception support is now turned off by default, so to actually enable it you need to do './configure --enable-fp-exceptions'. OTP-7132 The emulator could under rare circumstances crash while garbage collecting. --- gs-1.5.8 ------------------------------------------------------------ OTP-7115 Uses wish85 if available and fixed 'gs error: gstk_port_handler: error in input : unknown option "-sta"' error. Thanks Vance Shipley --- hipe-3.6.5 ------------------------------------------------------------ OTP-7067 HIPE: Corrected the choice of interface to the send/3 and setnode/3 BIFs for native-compiled code. Using the incorrect interface could, in unusual circumstances, lead to random runtime errors. OTP-7133 The HiPE compiler's SPARC backend has been rewritten, improving its correctness and long-term maintainability. --- inets-5.0.1 ------------------------------------------------------------ OTP-7040 [httpd] - Deprecated function httpd:start/1 did not accept all inputs that it had done previously. This should now work again. OTP-7041 [httpd] - Changed validity check on bind_address so that it uses inet:getaddr instead of inet:gethostbyaddr as the former puts a too hard restriction on the bind_address. OTP-7042 [httpc] - Internal process now does try-catch and terminates normally in case of HTTP parse errors. Semantical the client works just as before returning an error message to the client, even if the error massage has been enhanced, but there is no supervisor report in the shell of a internal process crashing. (Which was the expected behavior and not a fault.) --- inets-5.0.2 ------------------------------------------------------------ OTP-6661 [httpd] - Error logs now has a pretty and a compact format and access logs can be written on the common log format or the extended common log format. OTP-7024 [httpc] - Added acceptance of missing reason phrase to the relaxed mode. OTP-7043 [httpc] - A new option has been added to enable the client to act as lower version clients, by default the client is an HTTP/1.1 client. --- kernel-2.12.1 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. OTP-7009 tuple_size/1 and byte_size/1 have been substituted for size/1. OTP-7013 file:read/2 and file:consult_stream/1,3 did not use an empty prompt on I/O devices. This bug has now been corrected. OTP-7120 The sctp driver has been updated to work against newer lksctp packages e.g 1.0.7 that uses the API spelling change adaption -> adaptation. Older lksctp (1.0.6) still work. The erlang API in gen_sctp.erl and inet_sctp.hrl now spells 'adaptation' regardless of the underlying C API. --- megaco-3.7.1 ------------------------------------------------------------ OTP-6919 Use of depricated function erlang:fault replaced by erlang:error. OTP-6971 When the megaco application receives two instances of the same transaction requests (re-send) within too small a time, there is a small possibility that both are passed on to the user via a call to the callback function (handle_trans_request). OTP-6992 Failure to parse SDP attribute FMTP rows. OTP-6999 Fixed a reply timer race condition problem resulting in (case clause) error message. OTP-7000 Updated documentation for function megaco:connect/4. OTP-7005 Reporting of error(s) detected during loading of the flex driver has been improved, by calling the erlang:format_error function. OTP-7124 Corrected usage of function file:open/2 (the Modes argument is a list). --- odbc-2.10 ------------------------------------------------------------ OTP-7062 Enhanced configure to among other things work better when there is a library found but it is not usable e.i. 32 bit library in 64 bit build. --- os_mon-2.1.5 ------------------------------------------------------------ OTP-7108 CPU utilization, on linux, is now measured via a port program instead of os:cmd in erlang. This should enhance performance. --- parsetools-1.4.3 ------------------------------------------------------------ OTP-7009 tuple_size/1 and byte_size/1 have been substituted for size/1. --- percept-0.6.2 ------------------------------------------------------------ OTP-7126 A new module, percept_profile, can now be used to collect profiling data even if the percept application is not installed. This should help profiling erlang application on target machines without libgd installed. --- runtime_tools-1.7.1 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. OTP-7100 Memory management improvements especially for the runtime system with SMP support: The runtime system with SMP support can now use multiple, thread specific instances of most memory allocators. This improves performance since it reduces lock contention in the memory allocators. It may however increase memory usage for some applications. The runtime system with SMP support will by default enable this feature on most allocators. The amount of instances used can be configured. driver_alloc(), driver_realloc(), and driver_free() now use their own erts specific memory allocator instead of the default malloc() implementation on the system. The default configuration of some allocators have been changed to fit applications that use much memory better. Some new erts_alloc configuration parameters have been added. erts_alloc_config has been modified to be able to create configurations suitable for multiple instances of allocators. The returned value from erlang:system_info({allocator, Alloc}) has been changed. This since an allocator may now run in multiple instances. If you for some reason want the memory allocators to be configured as before, you can pass the +Mea r11b command-line argument to erl. For more information see the erts_alloc(3), the erts_alloc_config(3), and the erlang(3) documentation. --- snmp-4.10.1 ------------------------------------------------------------ OTP-7083 There is a bug in snmp_pdus:enc_oct_str_tag/1. All the enc_* functions are supposed to return a flat list, but the second clause of this function does not. If it gets a binary it returns a deep list. OTP-7109 The SNMP application contains some simple utility functions that wrappes dbg. These functions is intended to make it easy to enable tracing on individual functions. There where some miscellaneous errors which has been corrected. OTP-7110 Corrected usage of function file:open/2 (the Modes argument is a list). OTP-7119 Old style funs cleanup in the MIB compiler. OTP-7121 [agent] Remeoved invalid guard. There was an invalid guard on the start function of the top agent supervisor. OTP-7123 [manager] Fixed usage of inet:gethostname/1. --- ssh-0.9.9.5 ------------------------------------------------------------ OTP-7063 Documentation update of ssh. OTP-7089 ssh_cm hanged when connection was closed during handshake. (Triggered by putty 0.60 client.) OTP-7090 Same listener is used for both sshd and sftpd. Previously the sftpd server had to be run on a separate port, now the sshd listener will start an sftpd server when an sftp client connects. OTP-7135 Fixed crash in server when receiving an empty ignore-msg. (From the putty 0.60 client.) --- stdlib-1.15.1 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. OTP-7009 tuple_size/1 and byte_size/1 have been substituted for size/1. OTP-7025 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! OTP-7026 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'. OTP-7034 The compiler warning for the deprecated function ftp:close/1 now mentions the correct replacement function. The warning for the removed functions in the httpd_util module have been changed to say they have been removed, not merely deprecated. (Thanks to Fredrik Thulin.) OTP-7066 Some undocumented debug functionality has been added to Dets. OTP-7078 In (Expr)#r{} (no fields are updated), Expr is no longer evaluated more than once. There is also a test that Expr is of the correct record type. (Thanks to Dominic Williams.) OTP-7079 Documentation bugfixes and clarifications. (Thanks to Joern (opendev@gmail.com), Matthias Lang, and Richard Carlsson.) OTP-7081 The functions digraph_utils:is_tree/1, digraph_utils:is_arborescence/1, and digraph_utils:arborescence_root/1 are new. OTP-7101 The compiler could generate suboptimal code for record updates if the record update code consisted of multiple source code lines. OTP-7114 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.) --- test_server-3.2.1 ------------------------------------------------------------ OTP-7091 When init_per_suite or end_per_suite terminated due to runtime failure, test_server failed to format the line number information properly and crashed. This error has now been fixed. --- tools-2.6.1 ------------------------------------------------------------ OTP-6944 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 p of the io_lib module. Superfluous empty lines have been removed from code examples and from Erlang shell examples. OTP-7009 tuple_size/1 and byte_size/1 have been substituted for size/1. OTP-7095 The coverage analysis tool cover now handles the short-circuit Boolean expressions andalso/2 and orelse/2 properly.