Bug fix release : otp_src_R14B01 Build date : 2010-12-07 This is R14B01, the first maintenance release for the R14B major release. You can find the README file for the release at http://www.erlang.org/download/otp_src_R14B01.readme (this file) The source distribution and binary distribution for Windows can be downloaded from http://www.erlang.org/download/otp_src_R14B01.tar.gz http://www.erlang.org/download/otp_win32_R14B01.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_R14B01.tar.gz.torrent http://www.erlang.org/download/otp_win32_R14B01.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_R14B01.tar.gz http://www.erlang.org/download/otp_doc_man_R14B01.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ---------------------------------------------------------- OTP-8922 == erts stdlib == New ETS option compressed, to enable a more compact storage format at the expence of heavier table operations. For test and evaluation, erl +ec can be used to force compression on all ETS tables. OTP-8926 == erts kernel == There is now a new function inet:getifaddrs/0 modeled after C library function getifaddrs() on BSD and LInux that reports existing interfaces and their addresses on the host. This replaces the undocumented and unsupported inet:getiflist/0 and inet:ifget/2. --- otp ----------------------------------------------------------------- OTP-8942 Fixed pretty rare infinite loop when refining the types of an SCC whose functions all returned none() (thanks to Stavros Aronis). Fixed pretty rare crash when taking the infimum of two tuple_sets. Fixed pretty rare crash when using parameterized types containing unbound variables (thanks to Nicolas Trangez for reporting it). Deeper unfolding of recursive types (thanks to Maria Christakis). Fixed some incomplete and erroneous specs in modules of kernel and stdlib. Fixed problems in the handling of remote types in records used as types (thanks to Nico Kruber for the report and to Maria Christakis for the fix). Fixed handling of nested opaque types (thanks to Thorsten Schuett for reporting it and to Maria Christakis for fixing it). --- ssh ----------------------------------------------------------------- OTP-8807 The processes ssh_subsystem_sup and one ssh_channel_sup was not terminated when a connection was closed. OTP-8908 The fix regarding OTP-8863 was not included in the previous version as stated. --- asn1-1.6.15 --------------------------------------------------------- OTP-8866 The encoding of ExtensionAdditionGroup (for PER and UPER) is corrected. OTP-8948 A race condition when several processes in parallel start to do encode/decode using the driver could cause an error log regarding crashing port owner process. This race is now eliminated. --- common_test-1.5.1.1 ------------------------------------------------- OTP-8894 Added vts.tool file to common_test so that vts shows up in webtool --- common_test-1.5.2 --------------------------------------------------- OTP-8895 Updated ct:get_status documentation to describe no_tests_running return value. OTP-8907 ct:parse_table can now handle multiline sql rows OTP-8921 Fixed race condition test failures in the test suites testing common test's parallel groups feature. OTP-8935 The include directive of testspecs now work when used on a remote node. OTP-8936 The run_test executable has been renamed to the less generic ct_run to better work with other applications. run_test will remain until R16B at which point it will be removed. --- compiler-4.7.2 ------------------------------------------------------ OTP-8864 The compiler would translate binary comprehensions containing tail segments in a way that would would confuse Dialyzer. For instance: [42 || <<_:8/integer, _/bits>> <= Bits] would produce a Dialyzer warning. OTP-8865 Code such as foo(A) -> <> would crash the compiler. OTP-8888 The compiler could fail with an internal error when variables were exported from a receive block but the return value of the receive block were not used. (Thanks to Jim Engquist for reporting this error.) OTP-8949 Two compiler bugs (that would cause the compiler to terminate) reported by Christopher Williams have been fixed. --- cosNotification-1.1.15 ---------------------------------------------- OTP-8846 Switched from using the deprecated regexp to re instead. OTP-8900 A corbaloc http string could return an EXIT message, instead of a system exception, if the HTTP server closed the socket without returning a complete message. I.e. header and a body containing a stringified IOR. --- crypto-2.0.2 -------------------------------------------------------- OTP-8752 AES CTR encryption support in crypto. --- debugger-3.2.5 ------------------------------------------------------ OTP-8976 Miscellaneous updates --- dialyzer-2.4.0 ------------------------------------------------------ OTP-8962 - Added ability to supply multiple PLTs for the analysis (option --plts). Currently these PLTs must be independent (i.e., no module appears in more than one PLT) and there must not include files with module name clashes. - Strengthened and streamlined hard-coded type information for some BIFs and key library functions. OTP-8979 - Fixed pretty rare infinite loop when refining the types of an SCC whose functions all returned none() (thanks to Stavros Aronis). - Fixed pretty rare crash when taking the infimum of two tuple_sets. --- docbuilder-0.9.8.9 -------------------------------------------------- OTP-8946 Fix compatibility issues with docbuilder for R11 documentation patches. --- edoc-0.7.6.8 -------------------------------------------------------- OTP-8855 Compiler warnings were eliminated. --- erl_docgen-0.2.3 ---------------------------------------------------- OTP-8600 Fix format_man_pages so it handles all man sections and remove warnings/errors in various man pages. OTP-8720 Support for using Dialyzer specifications and types has been added. This is an experimental release; changes are expected before the new functionality is used when building the OTP documentation. --- erl_interface-3.7.1.1 ----------------------------------------------- OTP-8874 The erl_interface tracelevel for erlang messages was incorrect. This has now been fixed. --- erl_interface-3.7.2 ------------------------------------------------- OTP-8890 erl_call: remove get_hostent get_hostent does not properly handle IPv4 addresses on little endian platforms and fails with hostnames beginning with a number. Remove get_hostent and use ei_gethostbyname directly since gethostbyname supports IPv4 addresses. (Thanks to Michael Santos) OTP-8891 teach ei_x_format to handle unary - and + (Thanks to Steve Vinoski) OTP-8893 Fix zero byte allocation in registry. (Thanks to Michael Santos) OTP-8943 Check the length of the node name to prevent an overflow. Memory error control of ei_alloc_big. (Thanks to Michael Santos) OTP-8945 erl_term_len() in erl_interface could returned too large values for integers (since R14B) and too small values for refs (since R9B). --- erts-5.8.1.2 -------------------------------------------------------- OTP-8875 Fix that the documentation top index generator can handle an Ericsson internal application group. OTP-8902 In embedded mode, on_load handlers that called code:priv_dir/1 or other functions in code would hang the system. Since the crypto application now contains an on_loader handler that calls code:priv_dir/1, including the crypto application in the boot file would prevent the system from starting. Also extended the -init_debug option to print information about on_load handlers being run to facilitate debugging. --- erts-5.8.2 ---------------------------------------------------------- OTP-8600 Fix format_man_pages so it handles all man sections and remove warnings/errors in various man pages. OTP-8847 The configure command line argument --enable-ethread-pre-pentium4-compatibility had no effect. This option is now also automatically enabled if required on the build machine. OTP-8859 The help texts produced by the configure scripts in the top directory and in the erts directory have been aligned and cleaned up. OTP-8861 When the runtime system had fewer schedulers than logical processors, the system could get an unnecessarily large amount reader groups. OTP-8876 Windows 2003 and Windows XP pre SP3 would sometimes not start the Erlang R14B VM at all due to a bug in the cpu topology detection. The bug affects Windows only, no other platform is even remotely affected. The bug is now corrected. OTP-8877 The HiPE run-time in the 64-bit emulator could do a 64-bit write to a 32-bit struct field. It happened to be harmless on Intel/AMD processors. Corrected. (Thanks to Mikael Pettersson.) OTP-8878 run_rel has been updated to support Solaris's /dev/ptmx device and to load the necessary STREAMS modules so that to_erl can provide terminal echo of keyboard input. (Thanks to Ryan Tilder.) OTP-8887 The Erlang VM now supports Unicode filenames. The feature is turned on by default on systems where Unicode filenames are mandatory (Windows and MacOSX), but can be enabled on other systems with the '+fnu' emulator option. Enabling the Unicode filename feature on systems where it is not default is however considered experimental and not to be used for production. Together with the Unicode file name support, the concept of "raw filenames" is introduced, which means filenames provided without implicit unicode encoding translation. Raw filenames are provided as binaries, not lists. For further information, see stdlib users guide and the chapter about using Unicode in Erlang. Also see the file module manual page. OTP-8889 A bug in erl_drv_tsd_get() and enif_tsd_get() could cause an emulator crash. These functions are currently not used in OTP. That is, the crash only occur on systems with user implemented NIF libraries, or drivers that use one of these functions. OTP-8892 Buffer overflows have been prevented in erlc, dialyzer, typer, run_test, heart, escript, and erlexec. (Thanks to Michael Santos.) OTP-8901 The runtime system is now less eager to suspend processes sending messages over the distribution. The default value of the distribution buffer busy limit has also been increased from 128 KB to 1 MB. This in order to improve throughput. OTP-8912 The distribution buffer busy limit can now be configured at system startup. For more information see the documentation of the erl +zdbbl command line flag. (Thanks to Scott Lystig Fritchie) OTP-8914 Calling erlang:system_info({cpu_topology, CpuTopologyType}) with another CpuTopologyType element than one of the documented atoms defined, detected, or used caused an emulator crash. (Thanks to Paul Guyot) OTP-8916 The inet driver internal buffer stack implementation has been rewritten in order to reduce lock contention. OTP-8922 New ETS option compressed, to enable a more compact storage format at the expence of heavier table operations. For test and evaluation, erl +ec can be used to force compression on all ETS tables. OTP-8925 The ERTS internal rwlock implementation could get into an inconsistent state. This bug was very seldom triggered, but could be during heavy contention. The bug was introduced in R14B (erts-5.8.1). The bug was most likely to be triggered when using the read_concurrency option on an ETS table that was frequently accessed from multiple processes doing lots of writes and reads. That is, in a situation where you typically don't want to use the read_concurrency option in the first place. OTP-8926 There is now a new function inet:getifaddrs/0 modeled after C library function getifaddrs() on BSD and LInux that reports existing interfaces and their addresses on the host. This replaces the undocumented and unsupported inet:getiflist/0 and inet:ifget/2. OTP-8932 Tracing to port could cause an emulator crash when unloading the trace driver. OTP-8937 Removed use of CancelIoEx on Windows that had been shown to cause problems with some drivers. OTP-8939 Support for detection of CPU topology and binding of schedulers on FreeBSD 8 have been added. (Thanks to Paul Guyot) OTP-8944 The fallback implementation used when no native atomic implementation was found did not compile. (Thanks to Patrick Baggett, and Tuncer Ayaz) OTP-8950 Some integer values used during load balancing could under rare circumstances wrap causing a load unbalance between schedulers. OTP-8952 Several bugs related to hibernate/3 and HiPE have been corrected. (Thanks to Paul Guyot.) OTP-8955 Support for soft and hard links on Windows versions and filesystems that support them is added. OTP-8956 The win32 virtual machine is now linked large address aware. his allows the Erlang VM to use up to 3 gigs of address space on Windows instead of the default of 2 gigs. OTP-8958 The windows VM now correctly handles appending to large files (> 4GB). OTP-8969 Name resolving of IPv6 addresses has been implemented for Windows versions that support it. The use of ancient resolver flags (AI_V4MAPPED | AI_ADDRCONFIG) to the getaddrinfo() function has been removed since e.g FreeBSD regard mapped IPv4 addresses to be a security problem and the semantics of the address configured flag is uncertain. --- et-1.4.2 ------------------------------------------------------------ OTP-8904 Fix error when module et was used in et_selector trace patterns. --- eunit-2.1.6 --------------------------------------------------------- OTP-8600 Fix format_man_pages so it handles all man sections and remove warnings/errors in various man pages. --- hipe-3.7.8 ---------------------------------------------------------- OTP-8855 Compiler warnings were eliminated. --- inets-5.5.1 --------------------------------------------------------- OTP-8600 Fix format_man_pages so it handles all man sections and remove warnings/errors in various man pages. OTP-8906 [httpc] Pipelined and queued requests not processed when connection closed remotelly. OTP-8927 Miscellaneous inet6 related problems. OTP-8940 Updated http-server to make sure URLs in error-messages are URL-encoded. Added support in http-client to use URL-encoding. Also added the missing include directory for the inets application. --- jinterface-1.5.3.2 -------------------------------------------------- OTP-8854 The OtpMbox class did not have a hash() method, which it should have because it overrides equals(). --- kernel-2.14.1.1 ----------------------------------------------------- OTP-8875 Fix that the documentation top index generator can handle an Ericsson internal application group. OTP-8902 In embedded mode, on_load handlers that called code:priv_dir/1 or other functions in code would hang the system. Since the crypto application now contains an on_loader handler that calls code:priv_dir/1, including the crypto application in the boot file would prevent the system from starting. Also extended the -init_debug option to print information about on_load handlers being run to facilitate debugging. --- kernel-2.14.2 ------------------------------------------------------- OTP-8887 The Erlang VM now supports Unicode filenames. The feature is turned on by default on systems where Unicode filenames are mandatory (Windows and MacOSX), but can be enabled on other systems with the '+fnu' emulator option. Enabling the Unicode filename feature on systems where it is not default is however considered experimental and not to be used for production. Together with the Unicode file name support, the concept of "raw filenames" is introduced, which means filenames provided without implicit unicode encoding translation. Raw filenames are provided as binaries, not lists. For further information, see stdlib users guide and the chapter about using Unicode in Erlang. Also see the file module manual page. OTP-8926 There is now a new function inet:getifaddrs/0 modeled after C library function getifaddrs() on BSD and LInux that reports existing interfaces and their addresses on the host. This replaces the undocumented and unsupported inet:getiflist/0 and inet:ifget/2. --- mnesia-4.4.16 ------------------------------------------------------- OTP-8855 Compiler warnings were eliminated. OTP-8960 Sometimes a 'log_header' record was added to tables when invoking mnesia:restore/2 with the option 'recreate_tables'. Thanks Vance Shipley. --- observer-0.9.8.4 ---------------------------------------------------- OTP-8857 The multitrace.erl installation example file is now installed in the examples directory. (Thanks to Peter Lemenkov.) --- odbc-2.10.9 --------------------------------------------------------- OTP-8917 Ipv6 is now supported on Windows as well as on UNIX for internal socket communication. (ODBC uses sockets instead of the "Erlang port pipes" as some ODBC-drivers are known to mess with stdin/stdout.) Loopback address constants are used when connecting the c-side to the erlang-side over local socket API avoiding getaddrinfo problems, and the {ip, loopback} option is added as a listen option on the erlang-side. Also cleaned up the TIME_STAMP contribution. --- orber-3.6.18 -------------------------------------------------------- OTP-8846 Switched from using the deprecated regexp to re instead. OTP-8900 A corbaloc http string could return an EXIT message, instead of a system exception, if the HTTP server closed the socket without returning a complete message. I.e. header and a body containing a stringified IOR. --- parsetools-2.0.5 ---------------------------------------------------- OTP-8919 The formating of Yecc's error messages has been improved. (Thanks to Joe Armstrong.) --- public_key-0.10 ----------------------------------------------------- OTP-8964 Improved dialyzer specs. --- ssh-2.0.2 ----------------------------------------------------------- OTP-8849 SSH no longer use deprecated public_key functions. OTP-8863 The ssh_system_sup did not catch noproc and shutdown messages. OTP-8881 In some cases a crash report was generated when a connection was closing down. This was caused by a race condition between two processes. --- ssh-2.0.3 ----------------------------------------------------------- OTP-8918 The fix regarding OTP-8849 was not included in the previous version as stated. --- ssl-4.1.1 ----------------------------------------------------------- OTP-8870 For testing purposes ssl now also support some anonymous cipher suites when explicitly configured to do so. OTP-8897 Correct handling of client certificate verify message When checking the client certificate verify message the server used the wrong algorithm identifier to determine the signing algorithm, causing a function clause error in the public_key application when the key-exchange algorithm and the public key algorithm of the client certificate happen to differ. OTP-8930 Sends an error alert instead of crashing if a crypto function for the selected cipher suite fails. --- stdlib-1.17.2 ------------------------------------------------------- OTP-8856 When several clients accessed a Dets table simultaneously, one of them calling dets:insert_new/2, the Dets server could crash. Alternatively, under the same conditions, ok was sometimes returned instead of true. (Thanks to John Hughes.) OTP-8879 The documentation filelib:wildcard/1,2 now describes the character set syntax for wildcards. OTP-8892 Buffer overflows have been prevented in erlc, dialyzer, typer, run_test, heart, escript, and erlexec. (Thanks to Michael Santos.) OTP-8898 When several clients accessed a Dets table simultaneously, inserted or updated objects were sometimes lost due to the Dets file being truncated. (Thanks to John Hughes.) OTP-8899 When several clients accessed a Dets table simultaneously, modifications of the Dets server's internal state were sometimes thrown away. The symptoms are diverse: error with reason bad_object; inserted objects not returned by lookup(); et cetera. (Thanks to John Hughes.) OTP-8903 If a Dets table was closed after calling bchunk/2, match/1,3, match_object/1,3, or select/1,3 and then opened again, a subsequent call using the returned continuation would normally return a reply. This bug has fixed; now the call fails with reason badarg. OTP-8911 Cover did not collect coverage data for files such as Yecc parses containing include directives. The bug has been fixed by modifying epp, the Erlang Code Preprocessor. OTP-8915 Using a float for the number of copies for string:copies/2 resulted in an infinite loop. Now it will fail with an exception instead. (Thanks to Michael Santos.) OTP-8922 New ETS option compressed, to enable a more compact storage format at the expence of heavier table operations. For test and evaluation, erl +ec can be used to force compression on all ETS tables. OTP-8923 If a Dets table with fewer slots than keys was opened and then closed after just a lookup, the contents were no longer well-formed. This bug has been fixed. (Thanks to Matthew Evans.) OTP-8938 In a supervisor, when it terminates a child, if that child happens to have exited fractionally early, with normal, the supervisor reports this as an error. This should not be reported as an error. OTP-8959 The default maximum number of slots of a Dets table has been changed as to be equal to the maximum number of slots. (Thanks to Richard Carlsson.) --- syntax_tools-1.6.7 -------------------------------------------------- OTP-8976 Miscellaneous updates --- test_server-3.4.2 --------------------------------------------------- OTP-8976 Miscellaneous updates --- tools-2.6.6.2 ------------------------------------------------------- OTP-8853 eprof: API sort mismatch has now been fixed. OTP-8963 eprof: fix division by zero in statistics --- wx-0.98.8 ----------------------------------------------------------- OTP-8951 Add wxSystemSettings which was missing in the previous release, despite previous comments. Fix an external loop when stopping erlang nicely. Separate OpenGL to it's own dynamic loaded library, so other graphic libraries can reuse the gl module and it will not waste memory if not used. --- xmerl-1.2.7 --------------------------------------------------------- OTP-8599 An empty element declared as simpleContent was not properly validated. OTP-8600 Fix format_man_pages so it handles all man sections and remove warnings/errors in various man pages. OTP-8947 Fix entity checking so there are no fatal errors for undefined entities when option skip_external_dtd is used.