Bug fix release : otp_src_R11B-5 Build date : 2007-06-12 This is bug fix release 5 for the R11B release. You can download the full source distribution from http://www.erlang.org/download/otp_src_R11B-5.tar.gz http://www.erlang.org/download/otp_src_R11B-5.readme (this file) Note: To unpack the TAR archive you need a GNU TAR compatible program. For instance, on MacOS X before 10.3 you must use the 'gnutar' command; you can't use the 'tar' command or StuffIt to unpack the sources. 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_R11B-5.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_R11B-5.tar.gz http://www.erlang.org/download/otp_doc_man_R11B-5.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ------------------------------------------------------------ OTP-6605 Erlang/OTP is now also distributed with most platform independent build results pre-built. For more information see the README file in the top directory. OTP-6641 New application: DocBuilder, providing functionality for generating HTML documentation for Erlang modules and Erlang/OTP applications from XML source code and/or EDoc comments in Erlang source code. This is the first version of DocBuilder to be released as part of Erlang/OTP. Previously it has been used as an internal tool only. --- documentation ------------------------------------------------------------ OTP-6675 Corrected an error in Getting Started: the operator for "less than or equal" is =<. (Thanks to Douglas Livingstone). Fixed a typo in Reference Manual/Compilation and Code Loading/Code Replacement. (Thanks to Matthias Lang). Corrected an error in Reference Manual/Expressions/Try, the syntax of a try expression of is try Exprs ..., not try Expr .... (Thanks to Erik Stenman). --- otp ------------------------------------------------------------ OTP-6605 Erlang/OTP is now also distributed with most platform independent build results pre-built. For more information see the README file in the top directory. OTP-6742 The makefile variable ERL_FLAGS has been removed from all makefiles in OTP, since it collided with the environment variable ERL_FLAGS which is used by the Erlang runtime system. The collision occurred when the user had the environment variable ERL_FLAGS set while building OTP. The environment variable ERL_FLAGS can now be used to pass flags to the Erlang runtime system also when building OTP. --- appmon-2.1.9 ------------------------------------------------------------ OTP-6683 Fixed dialyzer warning in appmon_info. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- asn1-1.4.5 ------------------------------------------------------------ OTP-6601 Merging modules by inline earlier disabled the driver (used in modules generated with [ptimized]/[optimized,driver] options). Now this is repaired. OTP-6698 The compiler now handle all forms of ObjectSetSpec according to ITU-T recommendation X.681 (ISO/IEC 8824-2:2002). OTP-6702 Checking phase now aware of which module an INSTANCE OF is declared in. OTP-6707 Enhanced support of referencing object sets by ObjectSetFromObjects. OTP-6717 Support for parameterized object in an object set. --- compiler-4.4.5 ------------------------------------------------------------ OTP-6630 The compiler would crash if you tried to combine to non-list literals with '++' (for instance, an_atom++"string"). OTP-6689 Minor Makefile changes. --- cosEvent-2.1.1 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosEventDomain-1.1.1 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosFileTransfer-1.1.3 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosNotification-1.1.5 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosProperty-1.1.4 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosTime-1.1.1 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- cosTransactions-1.2.2 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- crypto-1.5.1.1 ------------------------------------------------------------ OTP-6680 The linked in driver for the crypto application is now linked statically against the OpenSSL libraries, to avoid installation and runtime problems in connection to the OpenSSL library locations. OTP-6689 Minor Makefile changes. --- debugger-3.1.1.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- dialyzer-1.7.0 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6736 Dialyzer can now use success typings to find discrepancies. As a consequence significantly more discrepancies are detected. The downside is that the analysis takes about 2 to 2.5 times longer than in previous versions, and may also result in some warnings that might be harder to interpret even though they are correct. This has been a major change, worth of increasing the version number. New command-line options: --succ_typings Use the success typings analysis. --dataflow (default) Use the previous analysis. The new type unit() has been introduced to handle the return type of non-terminating functions such as servers. Dialyzer's code server uses a compressed representation and the analysis requires significantly less memory than in previous versions. --- docbuilder-0.9 ------------------------------------------------------------ OTP-6641 New application: DocBuilder, providing functionality for generating HTML documentation for Erlang modules and Erlang/OTP applications from XML source code and/or EDoc comments in Erlang source code. This is the first version of DocBuilder to be released as part of Erlang/OTP. Previously it has been used as an internal tool only. --- edoc-0.7.3 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6737 Dialyzer warnings were eliminated. --- erts-5.5.4.1 ------------------------------------------------------------ OTP-6598 Setting the time on the system while using heart on a linux machine where the emulator was built with clock_gettime support (default from Linux 2.6/erts-5.5.4 and upwards), could make the heart command fire. This was due to bug in the heart executable which is now corrected. --- erts-5.5.4.2 ------------------------------------------------------------ OTP-6580 The default stack size for threads in the async-thread pool has been shrunk to 8 kilowords, i.e., 32 KB on 32-bit architectures. This small default size has been chosen since the amount of async-threads might be quite large. The default stack size is enough for drivers delivered with Erlang/OTP, but might not be sufficiently large for other dynamically linked in drivers that use the driver_async() functionality. A suggested stack size for threads in the async-thread pool can be configured via the +a command line argument of erl(1). OTP-6602 When a port steals control over a file descriptor from another port, the stealing port tests if the other port is alive. This in order to be able to give an accurate error message. In the runtime system with SMP support, this test was done without appropriate locks held. This could in worst case lead to an erroneous error message; therefore, this bug is to be considered harmless. --- erts-5.5.4.3 ------------------------------------------------------------ OTP-6592 process_flag/2 accepts the new flag sensitive. OTP-6627 process_flag(trap_exit, Bad) where Bad was a term not equal to true or false, didn't fail with badarg as it should; instead, the failure was silently ignored. This bug was introduced in erts-5.5.2 OTP-6628 The minimum and default stack size for async-threads has been increased to 16 kilowords. This since the previous minimum and default stack size of 8 kilowords proved to be too small (introduced in erts-5.5.4.2). --- erts-5.5.5 ------------------------------------------------------------ OTP-6591 The functions in gzio.c have been renamed to avoid conflict with drivers that indirectly linked with an external zlib library. OTP-6593 For scripts written using escript, there is a new function escript:script_name/0, 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. OTP-6600 The section Guards in the chapter The Abstract Format of the ERTS User's Guide has been updated. OTP-6625 Corrected protocol layer flue for socket options SO_LINGER, SO_SNDBUF and SO_RCVBUF, for SCTP. OTP-6681 The behaviour of the inet option {active,once} on peer close is improved and documented. OTP-6684 The inet option send_timeout for connection oriented sockets is added to allow for timeouts in communicating send requests to the underlying TCP stack. OTP-6685 The emulator without SMP support dumped core if an async-thread finished a job after the emulator had begun writing an erl_crash.dump. OTP-6686 In bit syntax matching, integer fields with greater size than 16Mb would fail to match. (Thanks to Bertil Karlsson and Francesco Pierfederici.) Matching out a 32-bit integer not aligned on a byte boundary from a binary could cause an heap overflow (and subsequent termination of the emulator). A module that contained bit syntax construction with a literal field size greater than 16Mb would fail to load. Several other similar bugs having to do with huge field sizes were eliminated. Attempting to construct a binary longer than 536870911 bytes will now fail with a system_limit exception (rather than fail in mysterious ways or construct an binary with incorrect contents). Similarily, attempting to match a binary longer than 536870911 bytes will now fail (instead of producing an incorrect result). This limitation has been documented in the Efficiency Guide. (The limit is in the 32-bit emulator; use the 64-bit emulator if you need to handle larger binaries than 536870911.) OTP-6692 Bugs in rem and div of very large numbers are corrected. OTP-6693 erlang:system_info({allocator, Alloc}) didn't allocate enough heap when a bignum was part of the result which could cause an emulator crash. OTP-6697 The command line flag -args_file FileName, and the environment variables ERL_AFLAGS, and ERL_ZFLAGS for the erl command have been added. For more information see the erl(1) documentation. OTP-6699 It was previously not possible to pass erts_alloc the same configuration via the command-line, as used by default. A +M* command-line argument that configure a size of some sort can now be passed a value that equals the size of the address space. The value used, in this case, will be "the size of the address space" - 1. OTP-6729 SysIOVec* driver_peekq(ErlDrvPort port, int *vlen) did not update *vlen if port was invalid. *vlen is now set to -1 if the port is invalid. The efile driver expects *vlen to be updated also when the port is invalid. This situation occurs seldom, but when the runtime system has async-threads enabled and ports are killed it can. When it occured the runtime system crashed. OTP-6731 The is_constant/1 type test has been deprecated. is_constant/1 is improperly named and almost entirely undocumented. --- et-1.0.0.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- gs-1.5.7 ------------------------------------------------------------ OTP-6682 Fixed font size and some bugs in the generic file dialog, which is undocumented and mainly intended for internal use (today it is only used by Pman). The file priv/bitmap/fup.bm has been added and the module tool_genfd removed. Also fixed dialyzer warning in gs_packer. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- hipe-3.6.3 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6738 Miscellanous updates. --- ic-4.2.13 ------------------------------------------------------------ OTP-6701 Minor Makefile changes. --- inets-4.7.12 ------------------------------------------------------------ OTP-6573 [httpd] - When calling httpd:restart there was a file descriptor and ets table leek due to the fact that the semantics of the function restart is not restart but reload. OTP-6596 [tftp] Crash in tftp_engine:terminate/3 caused big crash report. The file was however transferred as normal, but the ugly printout is now gone. --- inets-4.7.13 ------------------------------------------------------------ OTP-6642 [tftp] The TFTP client/server implements now a more relaxed interpretation of the RFC 1350 regarding re-receive of data packets. If multiple copies of the same data packet is received the spurious ones are silently ignored. --- inets-4.7.14 ------------------------------------------------------------ OTP-6691 [tftp] The TFTP client/server implements now a more relaxed interpretation of the RFC 1350 regarding re-receive of acknowledgments. If multiple copies of the same acknowledgments is received the spurious ones are silently ignored. --- inets-4.7.15 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6706 [tftp] The TFTP client/server implements now a more relaxed interpretation of the RFC 1350 regarding re-receive of acknowledgments. If multiple copies of the same acknowledgments is received the spurious ones are silently ignored. This fix was intended for inets-4.7.14 but accidently it was not included in that release. --- inets-4.7.16 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- inviso-0.3 ------------------------------------------------------------ OTP-6677 In this release the first working version of the inviso_tool is included. Updates and small bugfixes in the inviso application. --- inviso-0.4 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6703 A bug in inviso_rt_meta caused an ETS table containing information on initiated (init_tpm) functions to be lost when suspending tracing. Further an enhancement to inviso_rt has been introduced making it possible to activate process trace flags based on globally registered names. It is then not an error to activate a global name on a node where the name does not reside. The process count in the return value will simply be set to zero (hence exactly one node in the NodeResult part of the return value will indicate one matching process found). A bug was found in fetch_log API. At the same time the fetch_log functionality was enhanced to also offer flow control making fetcher processes send chunks of transferred file data at a slower pace. --- kernel-2.11.4.1 ------------------------------------------------------------ OTP-6594 A bug in gen_udp:open that broke the 'fd' option has been fixed. --- kernel-2.11.4.2 ------------------------------------------------------------ OTP-6592 process_flag/2 accepts the new flag sensitive. OTP-6627 process_flag(trap_exit, Bad) where Bad was a term not equal to true or false, didn't fail with badarg as it should; instead, the failure was silently ignored. This bug was introduced in erts-5.5.2 OTP-6628 The minimum and default stack size for async-threads has been increased to 16 kilowords. This since the previous minimum and default stack size of 8 kilowords proved to be too small (introduced in erts-5.5.4.2). --- kernel-2.11.5 ------------------------------------------------------------ OTP-6537 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. OTP-6615 The undocumented feature gen_tcp:fdopen/2 was broken in R11B-4. It is now fixed again. OTP-6625 Corrected protocol layer flue for socket options SO_LINGER, SO_SNDBUF and SO_RCVBUF, for SCTP. OTP-6676 Corrected cancelation of timers in three places in the inet_res module. (Problem found by Dialyzer.) OTP-6681 The behaviour of the inet option {active,once} on peer close is improved and documented. OTP-6684 The inet option send_timeout for connection oriented sockets is added to allow for timeouts in communicating send requests to the underlying TCP stack. OTP-6689 Minor Makefile changes. OTP-6715 The documentation of process_flag(priority, Level) has been updated, see the erlang(3) documentation. --- megaco-3.6 ------------------------------------------------------------ Improvements and new features: OTP-6609 Improved erl_dist codec handling of megaco_compressed codec config. OTP-6442 The behaviour megaco_transport have been updated to include another legal return value for the send_message function. OTP-6441 Add ability to decrement the timeout time for incremental timers. OTP-6185 Miscellaneous minor performance improvements of the text codec's Fixed bugs and malfunctions: OTP-6578 Missing documentation link in module megaco_user. Incompatibilities: OTP-6609 The interface of the megaco_compressed callback module has been changed, see the megaco_edist_compress behaviour module for more details. --- megaco-3.6.0.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- mnemosyne-1.2.7.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6728 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- mnesia-4.3.5 ------------------------------------------------------------ OTP-6587 The internal index tables on bag tables where not always cleaned correctly. Thanks Christopher Faulet and Salazard Remy. OTP-6709 Changing the copy type with mnesia:change_table_copy/3 on a node which was down was not handled correctly, that caused an eternal table lock on the alive nodes. Thanks Hal Snyder. --- mnesia_session-1.1.6.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6728 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- observer-0.9.7.4 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- odbc-2.0.8 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- orber-3.6.6 ------------------------------------------------------------ OTP-6696 It is now possible to configure incoming connections which overrides some global configuration parameters. See orber:add_listen_interface/2/3. OTP-6701 Minor Makefile changes. --- os_mon-2.1.2.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- otp_mibs-1.0.4.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- parsetools-1.4.1.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- pman-2.6 ------------------------------------------------------------ OTP-6012 Some maintenance work to replace deprecated guard expressions etc. somehow grew into a larger rewrite of parts of the Pman code, fixing some of the more blatant errors and removing unused code. The default font has been changed, so now the entire text on buttons etc. should be visible on most platforms. Saving and restoring trace options to/from file now works. Selecting different sets of processes to hide/view should now work in a more consistent and logical way. It is now possible to select more than one module or process to hide/show. OTP-6689 Minor Makefile changes. --- runtime_tools-1.6.6 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6700 An experimental tool called erts_alloc_config has been added. erts_alloc_config is intended to be used to aid creation of an erts_alloc configuration that is suitable for a limited number of runtime scenarios. For more information see the erts_alloc_config(3) documentation. OTP-6703 A bug in inviso_rt_meta caused an ETS table containing information on initiated (init_tpm) functions to be lost when suspending tracing. Further an enhancement to inviso_rt has been introduced making it possible to activate process trace flags based on globally registered names. It is then not an error to activate a global name on a node where the name does not reside. The process count in the return value will simply be set to zero (hence exactly one node in the NodeResult part of the return value will indicate one matching process found). A bug was found in fetch_log API. At the same time the fetch_log functionality was enhanced to also offer flow control making fetcher processes send chunks of transferred file data at a slower pace. --- sasl-2.1.5.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- snmp-4.9.3 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6712 Changing own [usm] passphrase when agent is multi-threaded did not work. --- ssh-0.9.9.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- ssl-3.1.1 ------------------------------------------------------------ OTP-6612 A bug in ssl_accept could cause all ssl connections to hang when a connection attempt was closed by the client while the server was in ssl_accept --- ssl-3.1.1.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- stdlib-1.14.5 ------------------------------------------------------------ OTP-4738 Bugs have been fixed in Dets concerning comparison (==) and matching (=:=). The STDLIB manual pages have been updated as to more carefully state when terms are matched and when they are compared. OTP-6537 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. OTP-6585 The new compiler option warn_obsolete_guard can be used for turning on warnings for calls to old type testing BIFs. OTP-6590 A bug in QLC's parse transform has been fixed. OTP-6593 For scripts written using escript, there is a new function escript:script_name/0, 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. OTP-6606 A bug concerning lists:sort/1 and lists:keysort/2 and a mix of floating point numbers and integers has been fixed. OTP-6659 When calling erlang:garbage_collect/0 in the Erlang shell not only the evaluator process (the one returned by calling self() in the Erlang shell) is garbage collected, but also the process holding the history list. OTP-6689 Minor Makefile changes. OTP-6711 Functions of the beam_lib module that used to catch exceptions and return a tuple {'EXIT',Reason} now exit with the reason Reason. OTP-6714 The erl_eval module now calls the non-local function handler whenever an operator is evaluated (exceptions are andalso, orelse, and catch). 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). These changes affect the Erlang shell when running in restricted mode: the callback function non_local_allowed/3 is now called for operators such as '!'/2. This means that non_local_allowed/3 may need to be changed as to let operators through. Note that erlang:'!'/2 as well as erlang:send/2,3 have to be restricted in order to stop message passing in the shell. --- toolbar-1.3.0.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- tools-2.5.5 ------------------------------------------------------------ OTP-6586 Minor updates of Xref. OTP-6689 Minor Makefile changes. --- tv-2.1.4.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6728 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- typer-0.1.0.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. --- webtool-0.8.3.1 ------------------------------------------------------------ OTP-6689 Minor Makefile changes. OTP-6725 Obsolete guard tests (such as list()) have been replaced with the modern guard tests (such as is_list()). --- xmerl-1.1.3 ------------------------------------------------------------ OTP-6599 Memory consumption decreased: moved transforming from utf-8 to unicode from an extra pass of the document to the occasion when a character is parsed. Removed use of lists:subtract. Those changes also speeds up parsing in some scenarios. --- xmerl-1.1.4 ------------------------------------------------------------ OTP-6679 An additional format is possible for the simple syntax: {Fun, State}. The fun should retrieve the replacement in simple syntax format. The semantics of fun: fun(State) -> code that creates replacement, then returns {SimpleSyntax,NewState} | done