Major relese : otp_src_R14A Build date : 2010-06-16 R14A is a major new release of Erlang/OTP. You can download the full source distribution from http://www.erlang.org/download/otp_src_R14A.tar.gz http://www.erlang.org/download/otp_src_R14A.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_R14A.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_R14A.tar.gz http://www.erlang.org/download/otp_doc_man_R14A.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ---------------------------------------------------------- OTP-8217 == erts stdlib compiler == The module binary from EEP31 (and EEP9) is implemented. OTP-8485 == common_test == It is now possible for the user to provide specific callback modules that handle test configuration data, so that data on arbitray form can be accessed (e.g. by reading files or by communicating with a configuration server process). Two default callback modules have been introduced in Common Test: ct_config_plain and ct_config_xml. The former is used to handle the traditional Common Test configuration files (with terms on key-value tuple form) and the latter to handle configuration data on XML representation. OTP-8555 == erts == New NIF features: Send messages from a NIF, or from thread created by NIF, to any local process (enif_send) Store terms between NIF calls (enif_alloc_env, enif_make_copy) Create binary terms with user defined memory management (enif_make_resource_binary) And some incompatible changes made to the API. For more information see the warning text in erl_nif(3). OTP-8623 == compiler erts hipe stdlib == Receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.) OTP-8650 == common_test == The run_test script has been replaced by a program (with the same name) which can be executed without explicit installation. The start flags are the same as for the legacy start script. OTP-8706 == erts hipe tools == eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores). Note: The API for the eprof has been cleaned up and extended. See the documentation. --- documentation ------------------------------------------------------- OTP-8477 The guard BIF is_boolean/1 (introduced in R10B) has now been included in the lists of BIFs allowed in guards in the Reference Manual. OTP-8559 If the 'fop' program (needed for building PDF files) cannot not be found, it is now possible to build the HTML and man pages anyway (there will also be dummy PDF files with no real content created). (Thanks to Tuncer Ayaz.) --- otp ----------------------------------------------------------------- OTP-8512 The INSTALL.md, INSTALL-CROSS.md, and INSTALL-WIN32.md "readme files" are now included in both the HTML and the PDF documentation. OTP-8541 Added cross configuration file for mips-linux. (Thanks to Matthias Lang for the configuration) --- appmon-2.1.12 ------------------------------------------------------- OTP-8674 Warnings due to new autoimported BIFs removed --- asn1-1.6.14 --------------------------------------------------------- OTP-8565 By default, the ASN.1 compiler is now silent in the absence of warnings or errors. The new 'verbose' option or the '-v' option for erlc can be given to show extra information (for instance, about the files that are generated). (Thanks to Tuncer Ayaz.) --- common_test-1.5 ----------------------------------------------------- OTP-8485 It is now possible for the user to provide specific callback modules that handle test configuration data, so that data on arbitray form can be accessed (e.g. by reading files or by communicating with a configuration server process). Two default callback modules have been introduced in Common Test: ct_config_plain and ct_config_xml. The former is used to handle the traditional Common Test configuration files (with terms on key-value tuple form) and the latter to handle configuration data on XML representation. OTP-8490 It is now possible to execute test suites that are not necessarily available on the local file system, but have been loaded on the test node in advance (e.g. sent as binaries from a remote node and loaded by RPC). A requirement is that the no_auto_compile (or {auto_compile,false}) parameter has been set. OTP-8500 Test Server will now call the end_per_testcase/2 function even if the test case has been terminated explicitly (with abort_current_testcase/1), or after a timetrap timeout. Under these circumstances the return value of end_per_testcase is completely ignored. Therefore the function will not be able to change the reason for test case termination by returning {fail,Reason}, nor will it be able to save data with {save_config,Data}. OTP-8570 It is now possible to use the test specification term 'init' to start Common Test nodes automatically, as well as have initial function calls evaluated on the nodes. A default callback module for the 'init' term, ct_slave, has been introduced to enable Common Test Master to perform host login and node startup operations over ssh. OTP-8621 Process calls using monitors in Common Test would not clear the inbox of remaining DOWN messages. This has been fixed. OTP-8650 The run_test script has been replaced by a program (with the same name) which can be executed without explicit installation. The start flags are the same as for the legacy start script. OTP-8689 Previously, a repeat property of a test case group specified the number of times the group should be repeated after the main test run. I.e. {repeat,N} would case the group to execute 1+N times. To be consistent with the behaviour of the run_test repeat option, this has been changed. N now specifies the absolute number of executions instead. OTP-8690 With the run_test -erl_args option, it's possible to divide the options on the run_test command line into ones that Common Test should process (those preceding -erl_args, and ones it should ignore (those succeeding -erl_args). Options preceding -erl_args that Common Test doesn't recognize are also ignored (i.e. the same behaviour as earlier versions of Common Test). OTP-8691 Directories added with -pa or -pz in the pre-erl_args part of the run_test command line will be converted from relative to absolute, this to avoid problems loading user modules when Common Test switches working directory during the test run. OTP-8693 The timetrap handling has been made more user controllable by means of new start options and new ct interface functions. With the 'multiply_timetraps' start option, it's possible to specify a value which all timetrap timeout values get multiplied by. This is useful e.g. to extend the timetraps temporarily while running cover or trace. The 'scale_timetraps' start option switches on or off the Test Server timetrap scaling feature (which tries to detect if the tests may benefit from extended timetraps, e.g. due to running certain test tools, and performs the scaling automatically). Furthermore, the ct:timetrap/1 function has been introduced, which makes it possible to set/reset timetraps during test execution. Also, a ct:sleep/1 function is now available, which takes the timetrap parameters into account when calculating the time to suspend the process. OTP-8694 A new run_test start option, event_handler_init, has been added that takes a start argument which gets passed to the init function of the event handler. --- compiler-4.7 -------------------------------------------------------- OTP-8217 The module binary from EEP31 (and EEP9) is implemented. OTP-8552 Several problems in the inliner have been fixed. OTP-8579 Local and imported functions now override the auto-imported BIFs when the names clash. The pre R14 behaviour was that auto-imported BIFs would override local functions. To avoid that old programs change behaviour, the following will generate an error: * Doing a call without explicit module name to a local function having a name clashing with the name of an auto-imported BIF that was present (and auto-imported) before OTP R14A * Explicitly importing a function having a name clashing with the name of an autoimported BIF that was present (and autoimported) before OTP R14A * Using any form of the old compiler directive nowarn_bif_clash If the BIF was added or auto-imported in OTP R14A or later, overriding it with an import or a local function will only result in a warning, To resolve clashes, you can either use the explicit module name erlang to call the BIF, or you can remove the auto-import of that specific BIF by using the new compiler directive -compile({no_auto_import,[F/A]})., which makes all calls to the local or imported function without explicit module name pass without warnings or errors. The change makes it possible to add auto-imported BIFs without breaking or silently changing old code in the future. However some current code ingeniously utilizing the old behaviour or the nowarn_bif_clash compiler directive, might need changing to be accepted by the compiler. OTP-8584 The undocumented, unsupport, and deprecated function lists:flat_length/1 has been removed. OTP-8597 Nested records can now be accessed without parenthesis. See the Reference Manual for examples. (Thanks to YAMASHINA Hio and Tuncer Ayaz.) OTP-8602 It is now possible to suppress the warning in code such as "list_to_integer(S), ok" by assigning the ignored value "_" like this: "_ = list_to_integer(S), ok". OTP-8623 receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.) OTP-8668 The compiler optimizes record operations better. --- cosEvent-2.1.9 ------------------------------------------------------ OTP-8543 Test suites published. --- cosEventDomain-1.1.9 ------------------------------------------------ OTP-8543 Test suites published. --- cosNotification-1.1.14 ---------------------------------------------- OTP-8489 Added missing trailing bracket to define in hrl-file. OTP-8543 Test suites published. --- cosProperty-1.1.12 -------------------------------------------------- OTP-8543 Test suites published. --- cosTime-1.1.9 ------------------------------------------------------- OTP-8543 Test suites published. --- cosTransactions-1.2.10 ---------------------------------------------- OTP-8489 Added missing trailing bracket to define in hrl-file. OTP-8543 Test suites published. --- crypto-2.0 ---------------------------------------------------------- OTP-8333 crypto application changed to use NIFs instead of driver. OTP-8551 des_ecb_encrypt/2 and des_ecb_decrypt/2 has been added to the crypto module. The crypto:md4/1 function has been documented. OTP-8584 The undocumented, unsupport, and deprecated function lists:flat_length/1 has been removed. OTP-8700 New variants of crypto:dss_sign and crypto:dss_verify with an extra argument to control how the digest is calculated. --- debugger-3.2.3 ------------------------------------------------------ OTP-8674 Warnings due to new autoimported BIFs removed OTP-8687 The predefined builtin type tid() has been removed. Instead, ets:tid() should be used. --- dialyzer-2.3.0 ------------------------------------------------------ OTP-8699 Various changes to dialyzer-related files for R14. - Dialyzer properly supports the new attribute -export_type and checks that remote types only refer to exported types. A warning is produced if some files/applications refer to types defined in modules which are neither in the PLT nor in the analyzed applications. - Support for detecting data races involving whereis/1 and unregister/1. - More precise identification of the reason(s) why a record construction violates the types declared for its fields. - Fixed bug in the handling of the 'or' guard. - Better handling of the erlang:element/2 BIF. - Complete handling of Erlang BIFs. --- erl_interface-3.7 --------------------------------------------------- OTP-8684 compact IEEE 754 double encoding in external binary format for ei Implement the compact IEEE 754 double encoding in external binary format for ei. Encoding for ei now always produces the NEW_FLOAT_EXT format. Decoding and term printing handle both the old ERL_FLOAT_EXT encoding and the new NEW_FLOAT_EXT encoding. Legacy erl_interface code also handles the new encoding, but still produces the ERL_FLOAT_EXT encoding by default. Also enable the DFLAG_NEW_FLOATS distribution flag. ei_get_type() will return ERL_FLOAT_EXT regardless if the external format is encoded with ERL_FLOAT_EXT or NEW_FLOAT_EXT for doubles. Reduce the number of copies of the code for encoding and decoding doubles throughout ei and erl_interface by instead calling the ei encoding and decoding functions wherever possible. Restore commented-out float tests in ei_decode_SUITE and ei_encode_SUITE in lib/erl_interface/test. Modify them to make them match the style of other tests in the same suites. These changes are based on an ei float patch from Serge Aleynikov originally submitted against R12B-2 in July 2008 and reworked by Steve Vinoski May 2010. --- erts-5.7.5.1 -------------------------------------------------------- OTP-8475 Driver threads, such as async threads, using port data locks peeked at the port status field without proper locking when looking up the driver queue. OTP-8487 A call to the BIF unregister(RegName) when a port had the name RegName registered in the runtime system without SMP support caused a runtime system crash. (Thanks to Per Hedeland for the bugfix and test case.) OTP-8591 Fix memory management bug causing crash of non-SMP emulator with async threads enabled. The bug did first appear in R13B03. --- erts-5.8 ------------------------------------------------------------ OTP-8086 The grammar for match specifications in ERTS users guide only described the tracing dialect of match specifications. An informal grammar for the ETS dialect is added. OTP-8217 The module binary from EEP31 (and EEP9) is implemented. OTP-8474 New NIF API function enif_make_new_binary OTP-8477 The guard BIF is_boolean/1 (introduced in R10B) has now been included in the lists of BIFs allowed in guards in the Reference Manual. OTP-8484 The use of mmap() was unnecessarily disabled when cross compiling. The configure arguments --with-ssl, and --with-odbc refused to accept libraries outside of $erl_xcomp_sysroot when cross compiling for no good reason. The configure argument --with-odbc didn't handle the value yes correct. The configure arguments --with-odbc, and --without-odbc have also been added to the configure help. (Thanks to Steve Vinoski for reporting these issues) OTP-8521 Added function zip:foldl/3 to iterate over zip archives. Added functions to create and extract escripts. See escript:create/2 and escript:extract/2. The undocumented function escript:foldl/3 has been removed. The same functionality can be achieved with the more flexible functions escript:extract/2 and zip:foldl/3. Record fields has been annotated with type info. Source files as been adapted to fit within 80 chars and trailing whitespace has been removed. OTP-8539 A regular expression with many levels of parenthesis could cause a buffer overflow. That has been corrected. (Thanks to Michael Santos.) OTP-8548 erlang:decode_packet(httph_bin,..) could return corrupt header strings or even crash the VM. This has been fixed. It only happened on 32-bit VM if the header name was unknown and between 16 and 20 characters long. Sockets with simular packet option did not suffer from this bug. OTP-8549 The runtime system crashed if fewer logical processors were found than reported by sysconf( SC_NPROCESSORS_CONF). OTP-8555 New NIF features: Send messages from a NIF, or from thread created by NIF, to any local process (enif_send) Store terms between NIF calls (enif_alloc_env, enif_make_copy) Create binary terms with user defined memory management (enif_make_resource_binary) And some incompatible changes made to the API. For more information see the warning text in erl_nif(3). OTP-8559 If the 'fop' program (needed for building PDF files) cannot not be found, it is now possible to build the HTML and man pages anyway (there will also be dummy PDF files with no real content created). (Thanks to Tuncer Ayaz.) OTP-8562 When defining macros the closing right parenthesis before the dot is now mandatory. OTP-8579 Local and imported functions now override the auto-imported BIFs when the names clash. The pre R14 behaviour was that auto-imported BIFs would override local functions. To avoid that old programs change behaviour, the following will generate an error: Doing a call without explicit module name to a local function having a name clashing with the name of an auto-imported BIF that was present (and auto-imported) before OTP R14A Explicitly importing a function having a name clashing with the name of an autoimported BIF that was present (and autoimported) before OTP R14A Using any form of the old compiler directive nowarn_bif_clash If the BIF was added or auto-imported in OTP R14A or later, overriding it with an import or a local function will only result in a warning, To resolve clashes, you can either use the explicit module name erlang to call the BIF, or you can remove the auto-import of that specific BIF by using the new compiler directive -compile({no_auto_import,[F/A]})., which makes all calls to the local or imported function without explicit module name pass without warnings or errors. The change makes it possible to add auto-imported BIFs without breaking or silently changing old code in the future. However some current code ingeniously utilizing the old behaviour or the nowarn_bif_clash compiler directive, might need changing to be accepted by the compiler. OTP-8589 A bug in re that could cause certain regular expression matches never to terminate is corrected. (Thanks to Michael Santos and Gordon Guthrie.) OTP-8612 Port locks could be prematurely destroyed. OTP-8614 The erlang:open_port spawn and spawn_executable directives can include an {env,Env} directive to set up environment variables for the spawned process. A bug prevented applications from using {env,Env} to set an environment variable whose value ended with a '=' (equal sign) character; the trailing equal sign was mistaken as an indication that an environment variable was to be cleared from the environment of the spawned process. (Thanks to Steve Vinoski.) OTP-8618 The empd program could loop and consume 100% CPU time if an unexpected error ocurred in listen() or accept(). Now epmd will terminate if a non-recoverable error occurs. (Thanks to Michael Santos.) OTP-8623 receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.) OTP-8632 When kernel poll has been enabled, a livelock could in rare circumstances occur. Problem reported by Chetan Ahuja, fix by Mikael Pettersson. OTP-8637 The functions file:advise/4 and file:datasync/1 have been added. (Thanks to Filipe David Manana.) OTP-8640 New NIF API functions: enif_make_atom_len, enif_make_existing_atom_len, enif_make_string_len, enif_get_atom_length, enif_get_list_length, enif_is_list, enif_is_tuple (by Tuncer Ayaz) OTP-8641 Windows: Closing port of program that stalled without reading all data could deadlock scheduler thread. OTP-8654 On some combination of Montavista Linux on Cavium Octeon processors, some socket-related system calls returned other numbers than -1 for errors. This caused a core dump in inet_drv.c. Now the code works around this problem. OTP-8658 Missing memory barriers in erts_poll() could cause the runtime system to hang indefinitely. OTP-8659 Support for using gcc's built-in functions for atomic memory access has been added. This functionallity will be used if available and no other native atomic implementation in ERTS is available. OTP-8660 The number of spinlocks used when implementing atomic fall-backs when no native atomic implementation is available has been increased from 16 to 1024. OTP-8661 Writer preferred pthread read/write locks has been enabled on Linux. OTP-8662 ethr_rwmutex_tryrlock() acquired and refused to acquire a lock with inverted logic. The lock was however never acquired in a thread unsafe manner. (Thanks to JR Zhang for noting this issue) OTP-8663 Extreme combinations of register/unregister in a highly parallell SMP application could crash the VM. The error is corrected. OTP-8666 The runtime system will by default bind schedulers to logical processors using the default_bind bind type if the amount of schedulers are at least equal to the amount of logical processors configured, binding of schedulers is supported, and a CPU topology is available at startup. NOTE: If the Erlang runtime system is the only operating system process that binds threads to logical processors, this improves the performance of the runtime system. However, if other operating system processes (as for example another Erlang runtime system) also bind threads to logical processors, there might be a performance penalty instead. If this is the case you, are are advised to unbind the schedulers using the +sbtu command line argument, or by invoking erlang:system_flag(scheduler_bind_type, unbound). OTP-8667 On Windows, files are now opened with FILE_SHARE_DELETE to get closer to Unix semantics. OTP-8669 The recently added BIFs erlang:min/2, erlang:max/2 and erlang:port_command/3 are now auto-imported (as they were originally intended to be). Due to the recent compiler change (OTP-8579), the only impact on old code defining it's own min/2, max/2 or port_command/3 functions will be a warning, the local functions will still be used. The warning can be removed by using -compile({no_auto_import,[min/2,max/2,port_command/3]}). in the source file. OTP-8670 There is a new option 'exclusive' to file:open/2 that uses the OS O_EXCL flag where supported to open the file in exclusive mode. OTP-8671 Now, binary_to_term/2 is auto-imported. This will cause a compile warning if and only if a module has got a local function with that name. OTP-8673 Alignment of scheduler data and run queues were adjusted. OTP-8675 erlang:system_info(multi_scheduling) sometimes erroneously returned enabled when it should have returned blocked. OTP-8677 Call time breakpoint tracing Introduce a call_time option to erlang:trace_pattern/3.This option enables call time breakpoint tracing on code that is executed by processes with call tracing enabled. Call time tracing stores the number of calls and the time spent of each function with this trace pattern enabled. The information can be retrieved with erlang:trace_info/2 Add a scheduler array for BpData. To solve the issue of multiple schedulers constantly updating the head pointer to the bp data wheel, each scheduler now has its own entrypoint to the wheel. This head pointer can be updated without a locking being taken. Teach call count tracing to use atomics Call count previously used a global lock for accessing and writing its counter in the breakpoint. This is now changed to atomics instead. The change will let call count tracing and cprof to scale better when increasing the number of schedulers. OTP-8685 Fix bug causing erlang:decode_packet and enif_make_string to generate faulty strings with negative character values for ascii values larger than 127. (Thanks to Paul Guyot) OTP-8701 open_port/2 with the spawn and spawn_executable options can include an {env,Env} option. In some cases unsetting variables would not work on Unix (typically if more variables were unset than were actually present in the environment). OTP-8706 eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores). Note: The API for the eprof has been cleaned up and extended. See the documentation. --- gs-1.5.12 ----------------------------------------------------------- OTP-8674 Warnings due to new autoimported BIFs removed --- hipe-3.7.6 ---------------------------------------------------------- OTP-8623 receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.) OTP-8699 Various changes to dialyzer-related files for R14. - Dialyzer properly supports the new attribute -export_type and checks that remote types only refer to exported types. A warning is produced if some files/applications refer to types defined in modules which are neither in the PLT nor in the analyzed applications. - Support for detecting data races involving whereis/1 and unregister/1. - More precise identification of the reason(s) why a record construction violates the types declared for its fields. - Fixed bug in the handling of the 'or' guard. - Better handling of the erlang:element/2 BIF. - Complete handling of Erlang BIFs. OTP-8706 eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores). Note: The API for the eprof has been cleaned up and extended. See the documentation. --- ic-4.2.25 ----------------------------------------------------------- OTP-8639 The documentation can now be built and installed without Java. --- inets-5.3.1 --------------------------------------------------------- OTP-8508 [httpc] Badly formated error reason for errors occuring during initial connec to a servert. Also, the possible error reasons was not properly documented. OTP-8509 [httpd] Issues with ESI erl_script_timeout.

*) The "erl_script_timeout" config option is ducumented as a number of seconds. But when parsing the config, in the new format (not a config file), it was handled as if in number of milliseconds. *) When the erl-script-timeout time was exceeded, the server incorrectly marked the answer as sent, thereby leaving client hanging (with an incomplete answer). This has been changed, so that now the socket will be closed. --- inets-5.3.2 --------------------------------------------------------- OTP-8542 [httpc] Memory leak plugged. The profile manager never cleaned up in its handler database. This meant that with each new request handler, another entry was created that was never deleted. Eventually the request id counter (used as a key) would wrap, but the machine would most likely run out of memory before that happened. OTP-8607 [httpc] https requests with default port not handled properly. Jebu Ittiachen. --- inets-5.3.3 --------------------------------------------------------- OTP-8609 [httpc] Made cookie handling more case insensitive. OTP-8610 [httpc|httpd] Some netscape cookie dates are given with a 2-digit year (e.g. 06 = 2006). OTP-8624 [httpd] Added support (again) for the documented debugging features. See the User's Guide Configuration chapter for more info. --- inets-5.4 ----------------------------------------------------------- OTP-7907 [httpc|httpd] - Now allow the use of the "new" ssl, by using the essl tag instead. See the http_option option in the httpc:request/4,5 or the socket-type section of the Communication properties chapter for more info. OTP-8564 Deprecated functions designated to be removed in R14 has been removed. Also, some new functions has been marked as deprecated (the old http client api module). OTP-8573 [httpd] Improved mod_alias. Now able to do better URL rewrites. --- kernel-2.13.5.1 ----------------------------------------------------- OTP-8502 A race condition in os:cmd/1 could cause the caller to get stuck in os:cmd/1 forever. OTP-8506

Use an infinity timeout in all calls to gen_server:call() in the sasl application.

--- kernel-2.13.5.2 ----------------------------------------------------- OTP-8643 Under certain circumstances the net kernel could hang. (Thanks to Scott Lystig Fritchie.) --- kernel-2.13.5.3 ----------------------------------------------------- OTP-8686 A bug introduced in kernel-2.13.5.3 has been fixed. --- kernel-2.14 --------------------------------------------------------- OTP-3626 os:find_executable can now be fed with the complete name of the executable on Windows and still find it. I.e os:find_executable("werl.exe") will work as os:find_executable("werl"). OTP-8527 As of this version, the global name server no longer supports nodes running Erlang/OTP R11B. OTP-8611 The file module's functions write,read and read_line now handles named io_servers like 'standard_io' and 'standard_error' correctly. OTP-8635 The shell's line editing has been improved to more resemble the behaviour of readline and other shells. (Thanks to Dave Peticolas) OTP-8637 The functions file:advise/4 and file:datasync/1 have been added. (Thanks to Filipe David Manana.) OTP-8643 Under certain circumstances the net kernel could hang. (Thanks to Scott Lystig Fritchie.) OTP-8652 The kernel DNS resolver was leaking one or two ports if the DNS reply could not be parsed or if the resolver(s) caused noconnection type errors. Bug now fixed. A DNS specification borderline truncated reply triggering the port leakage bug has also been fixed. OTP-8653 When exchanging groups between nodes pg2 did not remove duplicated members. This bug was introduced in R13B03 (kernel-2.13.4). OTP-8670 There is a new option 'exclusive' to file:open/2 that uses the OS O_EXCL flag where supported to open the file in exclusive mode. OTP-8686 A bug introduced in kernel-2.13.5.3 has been fixed. --- megaco-3.14.1 ------------------------------------------------------- OTP-8561 A minor compiler related performance improvement. OTP-8529 A raise condition when, during high load, processing both the original and a resent message and delivering this as two separate messages to the user. Note that this solution only protects against multiple reply deliveries! OTP-8627 Fix shared libraries installation. The flex shared lib(s) were incorrectly installed as data files. OTP-8634 Eliminated a possible raise condition while creating pending counters. --- megaco-3.14.1.1 ----------------------------------------------------- OTP-8696 Performance chapter updated --- mnesia-4.4.14 ------------------------------------------------------- OTP-8519 Added mnesia:subscribe(activity) contributed by Bernard Duggan. --- observer-0.9.8.3 ---------------------------------------------------- OTP-8708 The test suite has been updated for R14A. --- odbc-2.10.8 --------------------------------------------------------- OTP-7452 ODBC now handles the types SQL_WCHAR and SQL_WVARCHAR. Thanks to Juhani Ränkimies. ODBC also has a new connection option to return all strings as binaries and also expect strings to be binaries in the param_query function. These changes provides some unicode support. OTP-8484 The use of mmap() was unnecessarily disabled when cross compiling. The configure arguments --with-ssl, and --with-odbc refused to accept libraries outside of $erl_xcomp_sysroot when cross compiling for no good reason. The configure argument --with-odbc didn't handle the value yes correct. The configure arguments --with-odbc, and --without-odbc have also been added to the configure help. (Thanks to Steve Vinoski for reporting these issues) OTP-8511 Now supports SQL_TYPE_TIMESTAMP on the format {{YY, MM, DD}, {HH, MM, SS}}. Thanks to Juhani Ränkimies. --- orber-3.6.16 -------------------------------------------------------- OTP-8489 Added missing trailing bracket to define in hrl-file. OTP-8543 Test suites published. --- parsetools-2.0.3 ---------------------------------------------------- OTP-8483 Yecc failed to report reduce/reduce conflicts where one of the reductions involved the root symbol. This bug has been fixed. (Thanks to Manolis Papadakis.) OTP-8486 A bug introduced in Parsetools 1.4.4 (R12B-2) has been fixed. (Thanks to Manolis Papadakis.) --- public_key-0.6 ------------------------------------------------------ OTP-7046 Support for Diffie-Hellman. ssl-3.11 requires public_key-0.6. OTP-8553 Moved extended key usage test for ssl values to ssl. OTP-8557 Fixes handling of the option fail_if_no_peer_cert and some undocumented options. Thanks to Rory Byrne. OTP-7046 Support for Diffie-Hellman. ssl-3.11 requires public_key-0.6. OTP-8517 New ssl now properly handles ssl renegotiation, and initiates a renegotiation if ssl/ltls-sequence numbers comes close to the max value. However RFC-5746 is not yet supported, but will be in an upcoming release. OTP-8545 When gen_tcp is configured with the {packet,http} option, it automatically switches to expect HTTP Headers after a HTTP Request/Response line has been received. This update fixes ssl to behave in the same way. Thanks to Rory Byrne. OTP-8554 Ssl now correctly verifies the extended_key_usage extension and also allows the user to verify application specific extensions by supplying an appropriate fun. OTP-8560 Fixed ssl:transport_accept/2 to return properly when socket is closed. Thanks to Rory Byrne. --- public_key-0.7 ------------------------------------------------------ OTP-8626 Certificates without any extensions could not be handled by public_key. OTP-8649 Code cleanup and minor bugfixes. --- reltool-0.5.4 ------------------------------------------------------- OTP-8521 Added function zip:foldl/3 to iterate over zip archives. Added functions to create and extract escripts. See escript:create/2 and escript:extract/2. The undocumented function escript:foldl/3 has been removed. The same functionality can be achieved with the more flexible functions escript:extract/2 and zip:foldl/3. Record fields has been annotated with type info. Source files as been adapted to fit within 80 chars and trailing whitespace has been removed. OTP-8590 A new escript, called reltool, has been introduced in order to simplify the usage of the reltool application from makefiles. The handling of applications included in releases has been improved. Applications that are required to be started before other applications in a release are now automatically included in the release. The kernel and stdlib applications are always included as they are mandatory. Applications that are (explicitly or implicitly) included in a release are now automatically included as if they were explicitly included with the incl_cond flag. A new embedded_app_type option has been introduced. It is intended to be used for embedded systems where all included applications must be loaded from the boot script, as these systems does not utilize dynamic code loading. If embedded_app_type is set to something else than undefined, all included applications will be included in both the release as well as in the boot script. If the profile is embedded the embedded_app_type option defaults to load. A new function called reltool:get_status/1 has been introduced. It returns status about the configuration in the server. The API functions that may take PidOrOptions as input and actually gets Options does now print out warnings. The internal error handling has been improved. For example {error,Reason} is always returned in case of errors even when the server dies. app and appup files has been added as well as a corresponding test suite. Various cleanups has been made in the code and in the documentation. --- runtime_tools-1.8.4 ------------------------------------------------- OTP-8705 Miscellaneous updates. --- sasl-2.1.9.1 -------------------------------------------------------- OTP-8502 A race condition in os:cmd/1 could cause the caller to get stuck in os:cmd/1 forever. OTP-8506

Use an infinity timeout in all calls to gen_server:call() in the sasl application.

--- sasl-2.1.9.2 -------------------------------------------------------- OTP-8619 In R13B04 sys:get_status was modified to invoke format_status/2 in the callback module if the module exports that function. This resulted in a change to the term returned from calling sys:get_status on the supervisor module, since supervisor is a gen_server and gen_server exports format_status. The sasl release_handler_1 module had a dependency on the pre-R13B04 term returned by sys:get_status when invoked on a supervisor, so the R13B04 change broke that dependency. This problem has been fixed by change release_handler_1 to handle both the pre-R13B04 and R13B04 terms that sys:get_status can return from a supervisor. --- snmp-4.16.1 --------------------------------------------------------- OTP-8480 [agent] A minor mnesia related performance improvement. OTP-8481 [manager] Fixed an upgrade/downgrade problem. Upgrade/downgrade from/to 4.13.5 did not work for the net-if process. This has now been fixed --- snmp-4.16.2 --------------------------------------------------------- OTP-8574 The SMI specifies that an table row OID should be named: { "1" }. An option has been introduced, relaxed_row_name_assign_check, that allows for a more liberal numbering scheme. OTP-8594 Changes to make snmp (forward) compatible with the new version of the crypto application (released in R14). As of R14, crypto is implemented using NIFs. Also, the API is more strict. OTP-8648 [manager] Changed default value for the MIB server cache. Auto GC is now on by default. OTP-8563 Decoding of Counter64 values larger then 9306882749598007295 fails. Counter64 is encoded as an 64 bit signed integer, but is actually an unsigned integer, which the decoder does not take into account. OTP-8595 [compiler] Fails to compile non-contiguous BITS. Per Hedeland OTP-8646 [manager] Raise condition causing the manager server process to crash. Unregistering an agent while traffic (set/get-operations) is ongoing could cause a crash in the manager server process (raise condition). --- snmp-4.17 ----------------------------------------------------------- OTP-8478 [agent] Added very basic support for multiple SNMPv3 EngineIDs in a single agent. --- ssh-1.1.9 ----------------------------------------------------------- OTP-8550 The function ssh:connect/4 was not exported. OTP-8644 Aligned error message with used version (SSH_FX_FAILURE vs SSH_FX_NOT_A_DIRECTORY, the latter introduced in version 6). OTP-8645 Resolved race condition when another connection is started before a channel is opened in the first connection. OTP-8535 The configuration parameter ip_v6_disabled is now available, which makes it possible for the user to alter the IP version SSH shall use. OTP-8534 The ssh_connection:send operation now accepts infinity as timeout. OTP-8524 The connection handler now include stack traces when a channel message is not handled correctly. --- ssh-2.0 ------------------------------------------------------------- OTP-8524 The connection handler now include stack traces when a channel message is not handled correctly. OTP-8534 The ssh_connection:send operation now accepts infinity as timeout. OTP-8535 The configuration parameter ip_v6_disabled is now available, which makes it possible for the user to alter the IP version SSH shall use. OTP-8550 The function ssh:connect/4 was not exported. OTP-8596 Removed deprecated modules (ssh_ssh, ssh_sshd and ssh_cm) and functions (ssh_sftp:connect and ssh_sftp:stop). OTP-8644 Aligned error message with used version (SSH_FX_FAILURE vs SSH_FX_NOT_A_DIRECTORY, the latter introduced in version 6). OTP-8645 Resolved race condition when another connection is started before a channel is opened in the first connection. --- ssl-3.10.9 ---------------------------------------------------------- OTP-8510 Fixed a crash in the certificate certification part. --- ssl-3.11 ------------------------------------------------------------ OTP-7046 Support for Diffie-Hellman. ssl-3.11 requires public_key-0.6. OTP-8553 Moved extended key usage test for ssl values to ssl. OTP-8557 Fixes handling of the option fail_if_no_peer_cert and some undocumented options. Thanks to Rory Byrne. OTP-7046 Support for Diffie-Hellman. ssl-3.11 requires public_key-0.6. OTP-8517 New ssl now properly handles ssl renegotiation, and initiates a renegotiation if ssl/ltls-sequence numbers comes close to the max value. However RFC-5746 is not yet supported, but will be in an upcoming release. OTP-8545 When gen_tcp is configured with the {packet,http} option, it automatically switches to expect HTTP Headers after a HTTP Request/Response line has been received. This update fixes ssl to behave in the same way. Thanks to Rory Byrne. OTP-8554 Ssl now correctly verifies the extended_key_usage extension and also allows the user to verify application specific extensions by supplying an appropriate fun. OTP-8560 Fixed ssl:transport_accept/2 to return properly when socket is closed. Thanks to Rory Byrne. --- ssl-4.0 ------------------------------------------------------------- OTP-8587 New ssl now support client/server-certificates signed by dsa keys. OTP-8695 Ssl has now switched default implementation and removed deprecated certificate handling. All certificate handling is done by the public_key application. --- stdlib-1.17 --------------------------------------------------------- OTP-8217 The module binary from EEP31 (and EEP9) is implemented. OTP-8470 The Erlang code preprocessor (epp) sent extra messages on the form {eof,Location} to the client when parsing the file attribute. This bug, introduced in R11B, has been fixed. OTP-8473 The abstract type 'fun' could not be printed by the Erlang pretty printer (erl_pp). This bug has been fixed. OTP-8501 The erlang pretty printer (erl_pp) no longer quotes atoms in types. OTP-8503 The Erlang code preprocessor (epp) now considers records with no fields as typed. OTP-8521 Added function zip:foldl/3 to iterate over zip archives. Added functions to create and extract escripts. See escript:create/2 and escript:extract/2. The undocumented function escript:foldl/3 has been removed. The same functionality can be achieved with the more flexible functions escript:extract/2 and zip:foldl/3. Record fields has been annotated with type info. Source files as been adapted to fit within 80 chars and trailing whitespace has been removed. OTP-8522 The Erlang parser no longer duplicates the singleton type undefined in the type of record fields without initial value. OTP-8539 A regular expression with many levels of parenthesis could cause a buffer overflow. That has been corrected. (Thanks to Michael Santos.) OTP-8562 When defining macros the closing right parenthesis before the dot is now mandatory. OTP-8567 The function erl_scan:reserved_word/1 no longer returns true when given the word spec. This bug was introduced in STDLIB-1.15.3 (R12B-3). OTP-8577 Some properties of a compiled re pattern are defined to allow for guard tests. OTP-8579 Local and imported functions now override the auto-imported BIFs when the names clash. The pre R14 behaviour was that auto-imported BIFs would override local functions. To avoid that old programs change behaviour, the following will generate an error: Doing a call without explicit module name to a local function having a name clashing with the name of an auto-imported BIF that was present (and auto-imported) before OTP R14A Explicitly importing a function having a name clashing with the name of an autoimported BIF that was present (and autoimported) before OTP R14A Using any form of the old compiler directive nowarn_bif_clash If the BIF was added or auto-imported in OTP R14A or later, overriding it with an import or a local function will only result in a warning, To resolve clashes, you can either use the explicit module name erlang to call the BIF, or you can remove the auto-import of that specific BIF by using the new compiler directive -compile({no_auto_import,[F/A]})., which makes all calls to the local or imported function without explicit module name pass without warnings or errors. The change makes it possible to add auto-imported BIFs without breaking or silently changing old code in the future. However some current code ingeniously utilizing the old behaviour or the nowarn_bif_clash compiler directive, might need changing to be accepted by the compiler. OTP-8584 The undocumented, unsupport, and deprecated function lists:flat_length/1 has been removed. OTP-8589 A bug in re that could cause certain regular expression matches never to terminate is corrected. (Thanks to Michael Santos and Gordon Guthrie.) OTP-8597 Nested records can now be accessed without parenthesis. See the Reference Manual for examples. (Thanks to YAMASHINA Hio and Tuncer Ayaz.) OTP-8623 receive statements that can only read out a newly created reference are now specially optimized so that it will execute in constant time regardless of the number of messages in the receive queue for the process. That optimization will benefit calls to gen_server:call(). (See gen:do_call/4 for an example of a receive statement that will be optimized.) OTP-8625 The beam_lib:cmp/2 function now compares BEAM files in stricter way. The BEAM files will be considered different if there are any changes except in the compilation information ("CInf") chunk. beam_lib:cmp/2 used to ignore differences in the debug information (significant for Dialyzer) and other chunks that did not directly change the run-time behavior. OTP-8628 The documentation of lists:keysort/2 states that the sort is stable. OTP-8630 When a gen_server, gen_fsm process, or gen_event terminates abnormally, sometimes the text representation of the process state can occupy many lines of the error log, depending on the definition of the state term. A mechanism to trim out parts of the state from the log has been added (using a format_status/2 callback). See the documentation. OTP-8635 The shell's line editing has been improved to more resemble the behaviour of readline and other shells. (Thanks to Dave Peticolas) OTP-8656 Calling sys:get_status() for processes that have globally registered names that were not atoms would cause a crash. Corrected. (Thanks to Steve Vinoski.) OTP-8657 The Erlang scanner has been augmented with two new tokens: .. and .... OTP-8664 Expressions evaluating to integers can now be used in types and function specifications where hitherto only integers were allowed ("Erlang_Integer"). OTP-8665 The Erlang code preprocessor (epp) did not correctly handle premature end-of-input when defining macros. This bug, introduced in STDLIB 1.16, has been fixed. OTP-8668 The compiler optimizes record operations better. OTP-8669 The recently added BIFs erlang:min/2, erlang:max/2 and erlang:port_command/3 are now auto-imported (as they were originally intended to be). Due to the recent compiler change (OTP-8579), the only impact on old code defining it's own min/2, max/2 or port_command/3 functions will be a warning, the local functions will still be used. The warning can be removed by using -compile({no_auto_import,[min/2,max/2,port_command/3]}). in the source file. OTP-8671 Now, binary_to_term/2 is auto-imported. This will cause a compile warning if and only if a module has got a local function with that name. OTP-8687 The predefined builtin type tid() has been removed. Instead, ets:tid() should be used. --- syntax_tools-1.6.6 -------------------------------------------------- OTP-8709 Minor changes and clean-ups. --- test_server-3.4 ----------------------------------------------------- OTP-8492 Returning {fail,Reason} from the framework end_tc function was not handled properly by Test Server for all test suite functions. OTP-8495 It is now possible for the Test Server framework end_tc function to change the status of the test case from ok or auto-skipped to failed by returning {fail,Reason}. OTP-8500 Test Server will now call the end_per_testcase/2 function even if the test case has been terminated explicitly (with abort_current_testcase/1), or after a timetrap timeout. Under these circumstances the return value of end_per_testcase is completely ignored. Therefore the function will not be able to change the reason for test case termination by returning {fail,Reason}, nor will it be able to save data with {save_config,Data}. OTP-8682 If the framework end_tc function would hang and get aborted by Test Server, there was no indication of failure in the logs. This has been fixed. OTP-8689 Previously, a repeat property of a test case group specified the number of times the group should be repeated after the main test run. I.e. {repeat,N} would case the group to execute 1+N times. To be consistent with the behaviour of the run_test repeat option, this has been changed. N now specifies the absolute number of executions instead. --- tools-2.6.6 --------------------------------------------------------- OTP-8469 A race condition affecting Cover has been removed. OTP-8472 Xref has been updated to use the re module instead of the deprecated regexp module. OTP-8530 Emacs improvements: Fixed emacs-mode installation problems. Fixed a couple of -spec and -type indentation and font-lock problems. Fixed error messages on emacs-21. Magnus Henoch fixed several issues. Ralf Doering, Klas Johansson and Chris Bernard contributed various emacs-eunit improvements. Klas Johansson and Dave Peticolas added emacs-flymake support. OTP-8647 When given the option {builtins,true} Xref now adds calls to operators. OTP-8706 eprof has been reimplemented with support in the Erlang virtual machine and is now both faster (i.e. slows down the code being measured less) and scales much better. In measurements we saw speed-ups compared to the old eprof ranging from 6 times (for sequential code that only uses one scheduler/core) up to 84 times (for parallel code that uses 8 cores). Note: The API for the eprof has been cleaned up and extended. See the documentation. --- tv-2.1.4.5 ---------------------------------------------------------- OTP-8674 Warnings due to new autoimported BIFs removed --- webtool-0.8.7 ------------------------------------------------------- OTP-8651 Up until now Netscape has been the default web browser on Unix/Linux. Webtool has now been updated to start Firefox as default browser instead. --- wx-0.98.6 ----------------------------------------------------------- OTP-8656 Calling sys:get_status() for processes that have globally registered names that were not atoms would cause a crash. Corrected. (Thanks to Steve Vinoski.) --- xmerl-1.2.5 --------------------------------------------------------- OTP-8537 All Erlang files are now built by the test server instead of the test directory Makefile. Erlang files in data directories are now built by the test suites instead of using prebuilt versions under version control. Removed a number of obsolete guards. OTP-8599 An empty element declared as simpleContent was not properly validated.