Bug fix release : otp_src_R10B-7 Build date : 2005-08-31 This is a bug fix release 7 for the R10B release. You can download the full source distribution from http://www.erlang.org/download/otp_src_R10B-7.tar.gz http://www.erlang.org/download/otp_src_R10B-7.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_R10B-7.exe The documentation at http://www.erlang.org will be updated. You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_R10B-7.tar.gz http://www.erlang.org/download/otp_doc_man_R10B-7.tar.gz For some OTP applications there are more detailed release notes in the HTML documentation. We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- appmon -------------------------------------------------------------- OTP-5633 Replaced some tuple funs with the new fun M:F/A construct. The high-order functions in the lists module no longer accept bad funs under any circumstances. 'lists:map(bad_fun, [])' used to return '[]' but now causes an exception. Unused, broken compatibility code in the ets module was removed. (Thanks to Dialyzer.) Eliminated 5 discrepancies found by Dialyzer in the appmon application. --- compiler ------------------------------------------------------------ OTP-5632 Updating at least two fields of a record with a literal string could cause the compiler to generate dangerous code that could cause a crash at run-time (e.g. R#r{a="abc",b=1}). (Thanks to Mikael Karlsson.) Unecessary tests (such as a 'case' with two case branches that were identical) could cause the compiler to crash. (Thanks to Fredrik Thulin.) The validation pass of the compiler could generate an error for correct code when floating point operations were used in try/catch statements. In bit syntax construction, any field following a binary field would always be marked as "aligned" (which may or may not be correct). That would cause the hipe native compiler to generate incorrect code if the field was in fact unaligned. (Thanks to Per Gustafsson.) Some complex guard expressions (such as A#a.b==""; A#a.b==undefined) would crash the compiler. (Thanks to Sean Hinde.) Compilation speed has been increased for modules with many functions and/or atoms (such as modules generated by the asn1 application or other code generators). --- erts ---------------------------------------------------------------- OTP-5621 Timezone data is now initialized better. (was a problem at least on NetBSD 2.0.2) Thanks to Rich Neswold. OTP-5634 The hybrid-heap emulator ('erl -hybrid') is much more stable. We have corrected all known bugs that caused it to dump core while running our test suites. OTP-5645 The c:i/0 function will now run in a paged mode if there are more than 100 processes in the system. (Thanks to Ulf Wiger.) erlang:system_info(process_count) has been optimized and does now return exactly the same value as length(processes()). Previously erlang:system_info(process_count) did not include exiting processes which are included in length(processes()). The +P flag for 'erl', 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.) OTP-5674 The term-building driver functions driver_output_term() and driver_send_term() have been updated: The ERL_DRV_FLOAT type has been added. For the ERL_DRV_BINARY type, the length and offset are now validated against the length of the driver binary. The ERL_DRV_PID type is now implemented (it was documented, but not implemented). OTP-5692 Fixed rare memory leaks in erlang:demonitor/1 when distributed monitors were removed. OTP-5693 Processes were sometimes unnecessarily garbage collected when terminating. These unnecessary garbage collections have now been eliminated. --- inets ------------------------------------------------------------ OTP-5635 Some data doesn't pass through http_base_64:decode/1 correctly. The decoding routine fails whenever a 4-character group of the encoding ends with "9" or "99". If it ends with 99, two bytes will be lost in the decode routine. If it ends with a single 9, one byte will be lost in the decode. OTP-5642 [server] The server did not handle the config directive BindAddress value "*" properly. When creating the option list for the listen call, everything beside the atom undefined (if BindAddress was never given) and an 4-tuple (e.g. BindAddress value is 192.168.0.30) was incorrectly assumed to be an ipv6 address. For undefined (no BindAddress), inets attempts to figure out if it is running on a ipv6-machine, and if so, add the inet6 option when calling listen. The same approach should be used when BindAddress is assigned the value "*". OTP-5648 [server,esi] Web server does not handle status-code returned by an esi function. I.e. the esi-function can no longer control the status code. OTP-5649 [server,esi] Corrected header format. First character was lower case, and there where no space after the ":" character, example: content-length:0. Now, first character was upper case, and a space after the ":" character, example: Content-Length: 0 OTP-5650 [server,cgi] Parsing of the status header field could cause a crash. OTP-5662 [ftp, client] Calling ftp:recv/2 twice on the same connection failed due to that the last message on the ctrl channel was not appropriately taken care of. This could potentially cause a problem for any operation performed on the same connection where there had previously been an ftp:recv/2 call. Also, in some cases, when the process tries to close the data connection, it does not take into account that the data connection may actually not have been established. OTP-5663 [ftp, client] Added open option: mode. Deprecates function force_active/1 OTP-5665 [ftp, client] Enhanced error handling, mainly so the ftp client behaves gracefully when the user does strange things such as violate the user API. OTP-5680 [ftp, client] - A new option {progress, {CBmodule, CBFunction, InitProgressTerm} has been added to allow users to create things such as progress bars in there GUI's. The option affects ftp:send/[3,4] and ftp:recv/[3,4]. OTP-5682 [ftp-client] - The FTP error code 550 was handled in an unexpected way. Some earlier versions of inets had a workaround for this in ftp:recv_bin/2 that was eliminated during restructuring of the ftp module while implementing ipv6 capabilities. The problem is now fixed. OTP-5686 [http, client] Post request with a body in binary format failed as length was used instead of size. OTP-5690 [ftp, client] - For some FTP commands the FTP server will send more than one reply on the FTP control channel. In the case of a fast FTP server the client would sometimes wrongly disregard the second answer as trailing garbage attached to the first reply. OTP-5691 [http, client] - Added new API function http:request/1 OTP-5694 [httpd, server] - mod_cgi is implemented according to CGI-1.1 RFC 3875, an early implementation was based on some draft that is not totally compliant to the RFC. Documentation was updated. Also some code was restructured to facilitate testing and maintenance of the server. --- kernel -------------------------------------------------------------- OTP-5360 The manual pages for most of the Kernel and some of the STDLIB modules have been updated, in particular regarding type definitions. The documentation of the return value for erts:info/1 has been corrected. The documentation for erlang:statistics/1 now lists all possible arguments. OTP-5598 When the native resolver fails a gethostbyaddr lookup, nxdomain should be returned. There should be no attempt to fallback on a routine that succeeds if only the syntax of the IP address is valid. This has been fixed. OTP-5606 If several processes (at the same node) simultaneously tried to start the same distributed application, this could lead to application:start returning an erroneous value, or even hang. OTP-5633 Replaced some tuple funs with the new fun M:F/A construct. The high-order functions in the lists module no longer accept bad funs under any circumstances. 'lists:map(bad_fun, [])' used to return '[]' but now causes an exception. Unused, broken compatibility code in the ets module was removed. (Thanks to Dialyzer.) Eliminated 5 discrepancies found by Dialyzer in the appmon application. OTP-5661 The possibility to have comments following the list of tuples in a config file (file specified with the -config flag) has been added. --- orber ------------------------------------------------------------ OTP-5658 The documentation referred to two different context definitions, the incorrect ServiceContext and the correct IOP_ServiceContext. The hrl file PATH/include/corba.hrl also contained the incorrect record definition. This has now been updated so that only IOP_ServiceContext is used and referred to. OTP-5659 Reduced overhead when using outgoing ACL with a local interface defined. OTP-5660 Added guards to ensure that, when so required, a list of IOP_ServiceContext's is passed instead of, for example, just the context record. OTP-5671 Native interceptors may now export new_in_connection and new_out_connection operations with arity 5. If this is the case, information about the local interface and port is passed to the interceptor. Orber's built in interceptors have been changed to include this information as well. OTP-5672 In some cases, e.g. incorrect GIOP headers or a CancelRequest containing a non-existing RequestId, the incoming connection would be terminated. OTP-5673 If combining the 'Use Current Interface in IOR' and 'Use IPv6' flags, exported IOR:s conatined an incorrect host address. --- stdlib -------------------------------------------------------------- OTP-5360 The manual pages for most of the Kernel and some of the STDLIB modules have been updated, in particular regarding type definitions. The documentation of the return value for erts:info/1 has been corrected. The documentation for erlang:statistics/1 now lists all possible arguments. OTP-5633 Replaced some tuple funs with the new fun M:F/A construct. The high-order functions in the lists module no longer accept bad funs under any circumstances. 'lists:map(bad_fun, [])' used to return '[]' but now causes an exception. Unused, broken compatibility code in the ets module was removed. (Thanks to Dialyzer.) Eliminated 5 discrepancies found by Dialyzer in the appmon application. OTP-5644 The linter, QLC and the module erl_pp did not handle the new 'fun M:F/A' construct in all situations. This problem has been fixed. OTP-5645 The c:i/0 function will now run in a paged mode if there are more than 100 processes in the system. (Thanks to Ulf Wiger.) erlang:system_info(process_count) has been optimized and does now return exactly the same value as length(processes()). Previously erlang:system_info(process_count) did not include exiting processes which are included in length(processes()). The +P flag for 'erl', 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.) --- snmp ------------------------------------------------------------ OTP-5490 Added support for The Advanced Encryption Standard (AES) Cipher Algorithm in the SNMP User-based Security Model (RFC 3826). OTP-5636 [manager] Reset of USM-cache when unregister agent. OTP-5637 [manager] Improved asynch error reporting. --- tools --------------------------------------------------------------- OTP-5653 The cross reference tool Xref did not handle the new 'fun M:F/A' construct properly. This problem has been fixed.