Major release : otp_src_R15B Build date : 2011-12-14 R15B is a major new release of Erlang/OTP. You can download the full source distribution from http://www.erlang.org/download/otp_src_R15B.tar.gz http://www.erlang.org/download/otp_src_R15B.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_R15B.exe http://www.erlang.org/download/otp_win64_R15B.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_R15B.tar.gz http://www.erlang.org/download/otp_doc_man_R15B.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ---------------------------------------------------------- OTP-4779 == observer == A new GUI for Observer. Integrating pman, etop, appmon and tv into observer with tracing facilities. OTP-7053 == ssl == The erlang distribution can now be run over the new ssl implementation. All options can currently not be set but it is enough to replace to old ssl implementation. OTP-9312 == public_key ssl crypto == public_key, ssl and crypto now supports PKCS-8 OTP-9449 == common_test == Common Test hooks are now in a final supported version. The Common Test hooks allow you to abstract out initialization behaviour that is common to multiple test suites into one place and also extend the behaviour of a suite without changing the suite itself. For more information see the Common Test user's guide. OTP-9468 == erts == Line number and filename information are now included in exception backtraces as a fourth element in the MFA tuple. The information will be pretty-printed by the shell and used by common_test to provide better indication of where a test case. OTP-9795 == otp erts == The driver interface has been changed to enable 64-bit aware drivers. Most importantly the return types for ErlDrvEntry callbacks 'call' and 'control' has ben enlarged which require drivers to be changed or they will cause emulator crashes. See Rewrites for 64-bit driver interface in the driver manual. Due to this driver version management is now mandatory. A driver that is not written with version management or a driver that was compiled with the wrong major version will be not be loaded by the emulator. --- otp ----------------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9698 Remove exec bit from files: info files, dat, bat Remove exec bit from files related to: XML, make, C Remove exec bit from: erl, hrl, xml, html, asn, gif, xpm (Thanks to Ricardo Catalinas Jiménez) OTP-9787 Improve spelling throughout documentation, code comments and error messages (Thanks to Tuncer Ayaz) OTP-9795 The driver interface has been changed to enable 64-bit aware drivers. Most importantly the return types for ErlDrvEntry callbacks 'call' and 'control' has ben enlarged which require drivers to be changed or they will cause emulator crashes. See Rewrites for 64-bit driver interface in the driver manual. Due to this driver version management is now mandatory. A driver that is not written with version management or a driver that was compiled with the wrong major version will be not be loaded by the emulator. OTP-9812 Remove unused */doc/src/make.dep files These dependency files was once used when building the documentation, but are no longer needed. --- appmon-2.1.14 ------------------------------------------------------- OTP-9810 Eliminate use of deprecated regexp module OTP-9813 Miscellaneous documentation build updates --- asn1-1.6.19 --------------------------------------------------------- OTP-9419 The linked-in driver used for ber decode and per encode has been replaced with nifs. To enable the usage of nifs pass the nif option to erlc or asn1rt:compile when compiling. If you previously used the linked-in driver, you have to recompile your ASN1 modules with the current version of asn1 application as the linked-in driver modules have been removed. OTP-9440 A few of the heavy calculations which are done for encoding and decoding operations when dealing with SEQUENCE OF and DEFAULT in runtime have been moved to be done in compile time instead. OTP-9441 When compiling an ASN.1 ber module with the +nif option, the module will use a new nif for ber encoding, increasing performance by about 5%. OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. --- common_test-1.6 ----------------------------------------------------- OTP-9156 A Getting Started chapter has been added to the Common Test User's Guide. OTP-9235 The test case group info function has been implemented in Common Test. Before execution of a test case group, a call is now made to TestSuite:group(GroupName). The function returns a list of test properties, e.g. to specify timetrap values, require configuration data, etc (analogue to the test suite- and test case info function). The scope of the properties set by group(GroupName) is all test cases and sub-groups of group GroupName. OTP-9449 Common Test hooks are now in a final supported version. The Common Test hooks allow you to abstract out initialization behaviour that is common to multiple test suites into one place and also extend the behaviour of a suite without changing the suite itself. For more information see the Common Test user's guide. OTP-9543 A new built-in common test hook has been added which captures error_logger and SASL event and prints them in the testcase log. To disable this (and any other built-in hooks) pass 'enable_builtin_hooks false' to common test. OTP-9569 Common Test now calls info functions also for the init/end_per_suite/1 and init/end_per_group/2 configuration functions. These can be used e.g. to set timetraps and require external configuration data relevant only for the configuration functions in question (without affecting properties set for groups and test cases in the suite). The info function for init/end_per_suite(Config) is init/end_per_suite(), and for init/end_per_group(GroupName,Config) it's init/end_per_group(GroupName). Info functions can not be used with init/end_per_testcase(TestCase, Config), since these configuration functions execute on the test case process and will use the same properties as the test case (i.e. properties set by the test case info function, TestCase()). OTP-9676 It's now possible to read the full name of the test case log file during execution. One way to do this is to lookup it up as value of the key tc_logfile in the test case Config list (which means it can also be read by a pre- or post Common Test hook function). The data is also sent with the event #event{name=tc_logfile,data={{Suite,Func},LogFileName}}, and can be read by any installed event handler. OTP-9706 The look of the HTML log files generated by Common Test and Test Server has been improved (and made easier to customize) by means of a CSS file. OTP-9709 Functions ct:fail(Format, Args) and ct:comment(Format, Args) have been added in order to make printouts of formatted error and comment strings easier (no need for the user to call io_lib:format/2 explicitly). OTP-9774 The order in which ct hooks are executed for cleanup hooks (i.e. *_end_per_* hooks) has been reversed. OTP-9775 Printouts to stdout may be captured during test case execution. This is useful in order to e.g. read and parse tty printouts from the SUT during test case execution (if necessary, say, to determine the outcome of the test). The capturing session is started with ct:capture_start/0, and stopped with ct:capture_stop/0. The list of buffered strings is read and purged with ct:capture_get/0/1. It's possible to filter out printouts made with ct:log/2/3 and ct:pal/2/3 from the captured list of strings. This is done by calling capture_get/1 with a list of log categories to exclude. OTP-9809 The syntax for specifying test case groups in the all/0 list has been extended to include execution properties for both groups and sub-groups. The properties specified in all/0 for a group overrides the properties specified in the group declaration (in groups/0). The main purpose of this extension is to make it possible to run the same set of tests, but with different properties, without having to declare copies of the group in question. Also, the same syntax may be used in test specifications in order to change properties of groups at the time of execution, without having to edit the test suite. Please see the User's Guide for details and examples. --- compiler-4.8 -------------------------------------------------------- OTP-9621 Add '-callback' attributes in stdlib's behaviours Replace the behaviour_info(callbacks) export in stdlib's behaviours with -callback' attributes for all the callbacks. Update the documentation with information on the callback attribute Automatically generate 'behaviour_info' function from '-callback' attributes 'behaviour_info(callbacks)' is a special function that is defined in a module which describes a behaviour and returns a list of its callbacks. This function is now automatically generated using the '-callback' specs. An error is returned by lint if user defines both '-callback' attributes and the behaviour_info/1 function. If no type info is needed for a callback use a generic spec for it. Add '-callback' attribute to language syntax Behaviours may define specs for their callbacks using the familiar spec syntax, replacing the '-spec' keyword with '-callback'. Simple lint checks are performed to ensure that no callbacks are defined twice and all types referred are declared. These attributes can be then used by tools to provide documentation to the behaviour or find discrepancies in the callback definitions in the callback module. Add callback specs into 'application' module in kernel Add callback specs to tftp module following internet documentation Add callback specs to inets_service module following possibly deprecated comments OTP-9643 Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23. The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats. OTP-9667 The calculation of the 'uniq' value for a fun (see erlang:fun_info/1) was too weak and has been strengthened. It used to be based on the only the code for the fun body, but it is now based on the MD5 of the BEAM code for the module. OTP-9752 filename:find_src/1,2 will now work on stripped BEAM files (reported by Per Hedeland). The HiPE compiler will also work on stripped BEAM files. The BEAM compiler will no longer include compilation options given in the source code itself in M:module_info(compile) (because those options will be applied anyway if the module is re-compiled). OTP-9770 Inlining binary matching could cause an internal compiler error. (Thanks to Rene Kijewski for reporting this bug.) --- cosEvent-2.1.12 ----------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosEventDomain-1.1.12 ----------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosFileTransfer-1.1.13 ---------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosNotification-1.1.18 ---------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosProperty-1.1.15 -------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosTime-1.1.12 ------------------------------------------------------ OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- cosTransactions-1.2.12 ---------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- crypto-2.1 ---------------------------------------------------------- OTP-9312 public_key, ssl and crypto now supports PKCS-8 OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9640 Add DES and Triple DES cipher feedback (CFB) mode functions to crypto. (Thanks to Paul Guyot) OTP-9778 Add sha256, sha384 and sha512 support for crypto:rsa_verify. --- debugger-3.2.7 ------------------------------------------------------ OTP-9643 Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23. The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats. OTP-9699 Fix "OK" spelling in debugger messages and variables Simple code refactor in the debugger: renames all the occurrences of "Ok" to "OK" in the code, variable names and strings. This improves the consistency of the code and follows the GTK UI where "OK" is always used.(Thanks to Ricardo Catalinas Jiménez) --- dialyzer-2.5 -------------------------------------------------------- OTP-9707 Fix false warning about closure application Whenever a variable that could hold one of two or more possible closures was used in a particular application, the application was assumed to fail if ONE of the closures would fail in this application. This has been corrected to infer failing application if ALL possible closures would fail in the particular application. Change category of 'might also return' warnings Dialyzer emits warnings like the following "The specification for _ states that the function might also return _ but the inferred return is _", which are actually underspecifications and not wrong type specifications. This patch makes sure that they are filed under the appropriate category. OTP-9731 Wrap up behaviours patch for Dialyzer Enable warnings by default, add two options for suppressing them Fix warning formatting and update testsuites. Detection of callback-spec discrepancies Allow none() as return value in callbacks Behaviour callback discrepancy detection for Dialyzer Add lookup function for callbacks Store callbacks in codeserver and PLT Collect callback definitions during compilation Update inets results OTP-9758 No warnings for underspecs with remote types Fix crash in Typer Fix Dialyzer's warning for its own code Fix Dialyzer's warnings in HiPE Add file/line info in a particular Dialyzer crash Update inets test results OTP-9761 Optimize the joining of maps in dialyzer_dataflow. OTP-9776 Correct callback spec in application module Refine warning about callback specs with extra ranges Cleanup autoimport compiler directives Fix Dialyzer's warnings in typer Fix Dialyzer's warning for its own code Fix bug in Dialyzer's behaviours analysis Fix crash in Dialyzer Variable substitution was not generalizing any unknown variables. --- diameter-1.0 -------------------------------------------------------- OTP-9605 Add support for TLS over TCP. RFC 3588 requires that a Diameter server support TLS. In practice this seems to mean TLS over SCTP since there are limitations with running over SCTP: see RFC 6083 (DTLS over SCTP), which is a response to RFC 3436 (TLS over SCTP). The current RFC 3588 draft acknowledges this by equating TLS with TLS/TCP and DTLS/SCTP. TLS handshaking can take place either following a CER/CEA that negotiates TLS using the Inband-Security-Id AVP (the method documented in RFC 3588) or immediately following connection establishment (the method added to the current draft). OTP-9639 Improvements to the dictionary parser. The dictionary parser now emits useful error messages in case of faults in the input file, also identifying the line number at which the fault was detected. There are semantic checks that were missing in the previous parser, a fault in the interpretation of vendor id's in combination with @inherits has been fixed and @end can be used to terminate parsing explicitly instead of always parsing to end of file. OTP-9641 Improve dictionary reusability. Reusing a dictionary just to get a different generated module name or prefix previously required taking a copy of the source, which may consist of several files if inheritance is used, just to edit a couple of lines which don't affect the semantics of the Diameter application being defined. Options --name, --prefix and --inherits have been added to diameterc to allow corresponding values to be set at compile time. OTP-9654 Add capabilities_cb transport option. Its value is a function that's applied to the transport reference and capabilities record after capabilities exchange. If a callback returns anything but 'ok' then the connection is closed. In the case of an incoming CER, the callback can return a result code with which to answer. Multiple callbacks can be specified and are applied until either all return 'ok' or one doesn't. This provides a way to reject a peer connection. OTP-9708 Add @codecs to dictionary format. The semantics are similar to @custom_types but results in codec functions of the form TypeName(encode|decode, AvpName, Data) rather than AvpName(encode|decode, TypeName, Data). That is, the role of the AVP name and Diameter type name are reversed. This eliminates the need for exporting one function for each AVP sharing a common specialized encode/decode. OTP-9756 Fix faulty cleanup after diameter:remove_transport/2. Removing a transport removed the configuration but did not prevent the transport process from being restarted. OTP-9777 Add #diameter_callback{} for more flexible callback configuration. The record allows individual functions to be configured for each of the diameter_app(3) callbacks, as well as a default callback. --- edoc-0.7.9.1 -------------------------------------------------------- OTP-9813 Miscellaneous documentation build updates --- erl_docgen-0.3 ------------------------------------------------------ OTP-9614 Bug fixes concerning the generation of manpages. OTP-9617 Fix syntax bug in eix files. OTP-9721 The docbuilder application is removed in R15 and parts still used in the OTP documentation build process and the DTD documentation is moved to erl_docgen. OTP-9759 Bug fix concerning the generation of manpages. OTP-9772 Fixed an arity calculation bug for erlang functions in the documentation index for html and pdf. --- erl_interface-3.7.6 ------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9799 An error when getting global names on OS X Lion has been fixed. The error caused truncated strings to be returned from the function. OTP-9810 Eliminate use of deprecated regexp module --- erts-5.9 ------------------------------------------------------------ OTP-7687 An option list argument can now be passed to file:read_file_info/2, file:read_link_info/2 and file:write_file_info/3 and set time type information in the call. Valid options are {time, local}, {time, universal} and {time, posix}. In the case of posix time no conversions are made which makes the operation a bit faster. OTP-7775 A number of memory allocation optimizations have been implemented. Most optimizations reduce contention caused by synchronization between threads during allocation and deallocation of memory. Most notably: Synchronization of memory management in scheduler specific allocator instances has been rewritten to use lock-free synchronization. Synchronization of memory management in scheduler specific pre-allocators has been rewritten to use lock-free synchronization. The 'mseg_alloc' memory segment allocator now use scheduler specific instances instead of one instance. Apart from reducing contention this also ensures that memory allocators always create memory segments on the local NUMA node on a NUMA system. OTP-9014 The ethread atomic memory operations API used by the runtime system has been extended and improved. The ethread library now also performs runtime tests for presence of hardware features, such as for example SSE2 instructions, instead of requiring this to be determined at compile time. All uses of the old deprecated atomic API in the runtime system have been replaced with the use of the new atomic API. In a lot of places this change imply a relaxation of memory barriers used. OTP-9239 gen_sctp:open/0-2 may now return {error,eprotonosupport} if SCTP is not supported gen_sctp:peeloff/1 has been implemented and creates a one-to-one socket which also are supported now OTP-9240 Sendfile has been added to the file module's API. sendfile/2 is used to read data from a file and send it to a tcp socket using a zero copying mechanism if available on that OS. Thanks to Tuncer Ayaz and Steve Vinovski for original implementation OTP-9389 Honor option packet_size for http packet parsing by both TCP socket and erlang:decode_packet. This gives the ability to accept HTTP headers larger than the default setting, but also avoid DoS attacks by accepting lines only up to whatever length you wish to allow. For consistency, packet type line also honor option packet_size. (Thanks to Steve Vinoski) OTP-9392 enif_get_reverse_list function added to nif API. This function should be used to reverse small lists which are deep within other structures making it impractical to do the reverse in Erlang. OTP-9394 Fix faulty integer terms created by NIF API from 64-bit integers on halfword emulator. (Thanks to Paolo Negri and Paul Davis) OTP-9421 The deprecated concat_binary/1 BIF has been removed. Use list_to_binary or iolist_to_binary/1 instead. OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9468 Line number and filename information are now included in exception backtraces as a fourth element in the MFA tuple. The information will be pretty-printed by the shell and used by common_test to provide better indication of where a test case. OTP-9486 All binary constants used to be handled as heap binaries (i.e. the entire binary would be copied when sent to another process). Binary constants larger than 64 bytes are now refc binaries (i.e. the actual data in the binary will not be copied when sent to another process). OTP-9497 If a float and an integer is compared, the integer is only converted to a float if the float datatype can contain it. Otherwise the float is converted to an integer. OTP-9616 A few contracts in the lists module have been corrected. OTP-9624 The Unicode noncharacter code points 16#FFFE and 16#FFFE were not allowed to be encoded or decoded using the unicode module or bit syntax. That was inconsistent with the other noncharacters 16#FDD0 to 16#FDEF that could be encoded/decoded. To resolve the inconsistency, 16#FFFE and 16#FFFE can now be encoded and decoded. (Thanks to Alisdair Sullivan.) OTP-9629 Add NIF function enif_is_number This function allows for easily determining if a term represents or not a number (integer, float, small or big).(Thanks to Filipe David Manana) OTP-9631 The ERTS internal system block functionality has been replaced by new functionality for blocking the system. The old system block functionality had contention issues and complexity issues. The new functionality piggy-backs on thread progress tracking functionality needed by newly introduced lock-free synchronization in the runtime system. When the functionality for blocking the system isn't used, there is more or less no overhead at all. This since the functionality for tracking thread progress is there and needed anyway. OTP-9632 An ERTS internal, generic, many to one, lock-free queue for communication between threads has been introduced. The many to one scenario is very common in ERTS, so it can be used in a lot of places in the future. Currently it is used by scheduling of certain jobs, and the async thread pool, but more uses are planned for the future. Drivers using the driver_async functionality are not automatically locked to the system anymore, and can be unloaded as any dynamically linked in driver. Scheduling of ready async jobs is now also interleaved in between other jobs. Previously all ready async jobs were performed at once. OTP-9645 Make epp search directory of current file first when including another file This completes a partial fix in R11 that only worked for include_lib(). (Thanks to Richard Carlsson) OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. OTP-9662 Changed the internal BIF calling convention. Will make simpler faster code and allow BIFs with an arbitrary arity. OTP-9668 Fixed memory leak in enif_inspect_io_list_as_binary when applied on a process independent environment. OTP-9671 Windows native critical sections are now used internally in the runtime system on Windows as mutex implementation. This since they perform better under extreme contention than our own implementation. OTP-9675 Convert some erl_nif macros into inline functions. Allow for better compile time type checking. (Thanks to Tuncer Ayaz) OTP-9692 The number of beam catches allowed in code are no longer statically defined and will grow according to its need. OTP-9693 Add missing parenthesis in heart doc. Add missing spaces in the Reference Manual distributed section. In the HTML version of the doc those spaces are necessary to separate those words. OTP-9695 The +scl command line flag has been added. It can be used for disabling compaction of scheduler load. For more information see the erl(1) documentation. OTP-9697 Fixes module erlang doc style: option description (Thanks to Ricardo Catalinas Jiménez) OTP-9701 Specifying a scope to binary:match/3 when using multiple searchstrings resulted in faulty return values. This is now corrected. OTP-9705 The runtime system crashed if more than one thread tried to exit the runtime system at the same time. OTP-9712 The build system has been updated so that Erlang/OTP can be built on Mac OS X Lion systems without a GCC compiler. The INSTALL guide has been updated with instructions on how to install a GCC compiler and build Erlang/OTP with it, in order to get a run-time system with better performance. OTP-9714 Fix documentation for erlang:process_flag/2 For the subsection about process_flag(save_calls, N) there's an unrelated paragraph about process priorities which was copied from the preceeding subsection regarding process_flag(priority, Level). (Thanks to Filipe David Manana) OTP-9720 When loading a module, the system use to run on a single scheduler during the entire loading process. This has been changed to only take down the system just before inserting the loaded code into the system tables, resulting in a much shorter disruption if a module is loaded in a busy system. (Suggested by Bob Ippolito.) OTP-9724 Possible to run HiPE without floating point exceptions (FPE). Useful on platforms that lack reliable FPE. Slower float operations compared to HiPE with FPE. OTP-9726 As of ERTS version 5.9 (OTP-R15B) the runtime system will by default not bind schedulers to logical processors. 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. In some cases this performance penalty might be severe. Due to this, we change the default so that the user must make an active decision in order to bind schedulers. OTP-9727 Calls to erlang:system_flag(schedulers_online, N) and/or erlang:system_flag(multi_scheduling, block|unblock) could cause internal data used by this functionality to get into an inconsistent state. When this happened various problems occurred. This bug was quite hard to trigger, so hopefully no-one has been effected by it. A spinlock used by the run-queue management sometimes got heavily contended. This code has now been rewritten, and the spinlock has been removed. OTP-9749 The use of erlang:system_flag(scheduler_bind_type, _) and erlang:system_flag(cpu_topology, _) have been deprecated and scheduled for removal in erts-5.10/OTP-R16. For more information see the documentation of erlang:system_flag/2. OTP-9766 An ancient workaround for a Windows bug was removed from the open_port code, open_port({spawn,...}...) is now faster. Thanks to Daniel Goertzen. OTP-9767 The use of deprecated 32bit time_t on 32bit Windows is removed. OTP-9771 The NIF reload mechanism is deprecated. Do not use it as an upgrade method for live production systems. It might be removed in future releases. It can still serve as a development feature but a warning message will be logged each time it is used. OTP-9795 The driver interface has been changed to enable 64-bit aware drivers. Most importantly the return types for ErlDrvEntry callbacks 'call' and 'control' has ben enlarged which require drivers to be changed or they will cause emulator crashes. See Rewrites for 64-bit driver interface in the driver manual. Due to this driver version management is now mandatory. A driver that is not written with version management or a driver that was compiled with the wrong major version will be not be loaded by the emulator. OTP-9810 Eliminate use of deprecated regexp module OTP-9818 Use libdlpi to get physical address (Thanks to Trond Norbye) --- eunit-2.2.2 --------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. --- gs-1.5.15 ----------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9810 Eliminate use of deprecated regexp module --- hipe-3.9 ------------------------------------------------------------ OTP-9724 Possible to run HiPE without floating point exceptions (FPE). Useful on platforms that lack reliable FPE. Slower float operations compared to HiPE with FPE. OTP-9751 HiPE compiler: The possibility to compile and load selected functions from a module has been removed. OTP-9752 filename:find_src/1,2 will now work on stripped BEAM files (reported by Per Hedeland). The HiPE compiler will also work on stripped BEAM files. The BEAM compiler will no longer include compilation options given in the source code itself in M:module_info(compile) (because those options will be applied anyway if the module is re-compiled). OTP-9758 No warnings for underspecs with remote types Fix crash in Typer Fix Dialyzer's warning for its own code Fix Dialyzer's warnings in HiPE Add file/line info in a particular Dialyzer crash Update inets test results OTP-9768 Optimize erl_types:t_unify(). OTP-9776 Correct callback spec in application module Refine warning about callback specs with extra ranges Cleanup autoimport compiler directives Fix Dialyzer's warnings in typer Fix Dialyzer's warning for its own code Fix bug in Dialyzer's behaviours analysis Fix crash in Dialyzer Variable substitution was not generalizing any unknown variables. --- ic-4.2.28 ----------------------------------------------------------- OTP-9630 Incorrect use of ets:match changed to ets:match_object. --- ic-4.2.29 ----------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9630 Incorrect use of ets:match changed to ets:match_object. --- inets-5.7.2 --------------------------------------------------------- OTP-9655 [httpd] XSS prevention did not work for hex-encoded URL's. OTP-9674 [httpd] GET request with malformed header date caused server crash (non-fatal) with no reply to client. Will now result in a reply with status code 400. --- inets-5.8 ----------------------------------------------------------- OTP-9359 [httpc] Deprecated interface module http has been removed. It has (long been) replaced by http client interface module httpc. OTP-9522 [httpc|httpd] The old ssl implementation (based on OpenSSL), has been deprecated. The config option that specified usage of this version of the ssl app, *ossl*, has been removed. OTP-9545 [ftpc] Add a config option to specify a data connect timeout. That is how long the ftp client will wait for the server to connect to the data socket. If this timeout occurs, an error will be returned to the caller and the ftp client process will be terminated. OTP-9621 Add '-callback' attributes in stdlib's behaviours Replace the behaviour_info(callbacks) export in stdlib's behaviours with -callback' attributes for all the callbacks. Update the documentation with information on the callback attribute Automatically generate 'behaviour_info' function from '-callback' attributes 'behaviour_info(callbacks)' is a special function that is defined in a module which describes a behaviour and returns a list of its callbacks. This function is now automatically generated using the '-callback' specs. An error is returned by lint if user defines both '-callback' attributes and the behaviour_info/1 function. If no type info is needed for a callback use a generic spec for it. Add '-callback' attribute to language syntax Behaviours may define specs for their callbacks using the familiar spec syntax, replacing the '-spec' keyword with '-callback'. Simple lint checks are performed to ensure that no callbacks are defined twice and all types referred are declared. These attributes can be then used by tools to provide documentation to the behaviour or find discrepancies in the callback definitions in the callback module. Add callback specs into 'application' module in kernel Add callback specs to tftp module following internet documentation Add callback specs to inets_service module following possibly deprecated comments OTP-9628 [httpc] Wrong Host header in IPv6 HTTP requests. When a URI with a IPv6 host is parsed, the brackets that encapsulates the address part is removed. This value is then supplied as the host header. This can cause problems with some servers. A workaround for this is to use headers_as_is and provide the host header with the request call. To solve this a new option has been added, ipv6_host_with_brackets. This option specifies if the host value of the host header shall include the brackets or not. By default, it does not (as before). OTP-9655 [httpd] XSS prevention did not work for hex-encoded URL's. OTP-9674 [httpd] GET request with malformed header date caused server crash (non-fatal) with no reply to client. Will now result in a reply with status code 400. OTP-9715 [httpd] Fix logging of content length in mod_log. Garrett Smith OTP-9733 [httpd] Sometimes entries in the transfer log was written with the message size as list of numbers. This list was actually the size as a string, e.g. "123", written with the control sequence ~w. This has now been corrected so that any string is converted to an integer (if possible). OTP-9736 Fixed various problems detected by Dialyzer. --- inviso-0.6.3 -------------------------------------------------------- OTP-9798 The inviso application has been deprecated and will be removed in the R16 release. OTP-9810 Eliminate use of deprecated regexp module --- jinterface-1.5.5 ---------------------------------------------------- OTP-9806 JInterface: improve OtpOutputStream buffer allocation Previously, the buffer was increased linearly by 2048 bytes. I now propose to use an exponential increase function (similar to Javas ArrayList, e.g. always at least +50%). This significantly increases performance of e.g. doRPC for large parameters. (Thanks to Nico Kruber) --- kernel-2.15 --------------------------------------------------------- OTP-7687 An option list argument can now be passed to file:read_file_info/2, file:read_link_info/2 and file:write_file_info/3 and set time type information in the call. Valid options are {time, local}, {time, universal} and {time, posix}. In the case of posix time no conversions are made which makes the operation a bit faster. OTP-9023 file:list_dir/1,2 will now fill an buffer entire with filenames from the efile driver before sending it to an erlang process. This will speed up this file operation in most cases. OTP-9212 Calls to global:whereis_name/1 have been substituted for calls to global:safe_whereis_name/1 since the latter is not safe at all. The reason for not doing this earlier is that setting a global lock masked out a bug concerning the restart of supervised children. The bug has now been fixed by a modification of global:whereis_name/1. (Thanks to Ulf Wiger for code contribution.) A minor race conditions in gen_fsm:start* has been fixed: if one of these functions returned {error, Reason} or ignore, the name could still be registered (either locally or in global. (This is the same modification as was done for gen_server in OTP-7669.) The undocumented function global:safe_whereis_name/1 has been removed. OTP-9239 gen_sctp:open/0-2 may now return {error,eprotonosupport} if SCTP is not supported gen_sctp:peeloff/1 has been implemented and creates a one-to-one socket which also are supported now OTP-9240 Sendfile has been added to the file module's API. sendfile/2 is used to read data from a file and send it to a tcp socket using a zero copying mechanism if available on that OS. Thanks to Tuncer Ayaz and Steve Vinovski for original implementation OTP-9389 Honor option packet_size for http packet parsing by both TCP socket and erlang:decode_packet. This gives the ability to accept HTTP headers larger than the default setting, but also avoid DoS attacks by accepting lines only up to whatever length you wish to allow. For consistency, packet type line also honor option packet_size. (Thanks to Steve Vinoski) OTP-9508 disk_log:reopen/2,3 and disk_log:breopen/3 could return the error reason from file:rename/2 rather than the reason {file_error, Filename, Reason}. This bug has been fixed. The message {disk_log, Node, {error, disk_log_stopped}} which according the documentation is sent upon failure to truncate or reopen a disk log was sometimes turned into a reply. This bug has been fixed. OTP-9540 Environment variable 'shutdown_timeout' is added to kernel application. Earlier, application_controller would hang forever if an application top supervisor did not terminate upon a shutdown request. If this new environment variable is set to a positive integer T, then application controller will now give up after T milliseconds and instead brutally kill the application. For backwards compatibility, the default value for shutdown_timeout is 'infinity'. OTP-9621 Add '-callback' attributes in stdlib's behaviours Replace the behaviour_info(callbacks) export in stdlib's behaviours with -callback' attributes for all the callbacks. Update the documentation with information on the callback attribute Automatically generate 'behaviour_info' function from '-callback' attributes 'behaviour_info(callbacks)' is a special function that is defined in a module which describes a behaviour and returns a list of its callbacks. This function is now automatically generated using the '-callback' specs. An error is returned by lint if user defines both '-callback' attributes and the behaviour_info/1 function. If no type info is needed for a callback use a generic spec for it. Add '-callback' attribute to language syntax Behaviours may define specs for their callbacks using the familiar spec syntax, replacing the '-spec' keyword with '-callback'. Simple lint checks are performed to ensure that no callbacks are defined twice and all types referred are declared. These attributes can be then used by tools to provide documentation to the behaviour or find discrepancies in the callback definitions in the callback module. Add callback specs into 'application' module in kernel Add callback specs to tftp module following internet documentation Add callback specs to inets_service module following possibly deprecated comments OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. OTP-9673 make tab completion work in remote shells (Thanks to Mats Cronqvist) OTP-9693 Add missing parenthesis in heart doc. Add missing spaces in the Reference Manual distributed section. In the HTML version of the doc those spaces are necessary to separate those words. OTP-9713 Fixes net_kernel:get_net_ticktime() doc Adds missing description when `ignored' is returned. (Thanks to Ricardo Catalinas Jiménez ) OTP-9764 While disk_log eagerly collects logged terms for better performance, collecting too much data may choke the system and cause huge binaries to be written. In order to remedy the situation a (small) limit on the amount of data that is collected before writing to disk has been introduced. OTP-9776 Correct callback spec in application module Refine warning about callback specs with extra ranges Cleanup autoimport compiler directives Fix Dialyzer's warnings in typer Fix Dialyzer's warning for its own code Fix bug in Dialyzer's behaviours analysis Fix crash in Dialyzer Variable substitution was not generalizing any unknown variables. OTP-9785 Fix a crash when file:change_time/2,3 are called with invalid dates Calling file:change_time/2,3 with an invalid date tuple (e.g file:change_time("file.txt", {undefined, undefined})) will cause file_server_2 to crash. error_logger will shutdown and the whole VM will stop. Change behavior to validate given dates on system boundaries. (i.e before issuing a server call).(Thanks to Ahmed Omar) --- megaco-3.16 --------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9672 The encoding and decoding algorithms now use nifs instead of a linked-in driver. OTP-9679 The profiling test tool has been rewritten. Hĺkan Mattsson. --- mnesia-4.5.1 -------------------------------------------------------- OTP-9657 Allow schema operations when using different mnesia versions. OTP-9689 Fix deadlock in mnesia:del_table_copy/2. --- mnesia-4.6 ---------------------------------------------------------- OTP-8970 Implemented a new option to mnesia:create_table/2 which allows the user to assign 'ets' and 'dets' options not available in mnesia. OTP-9657 Allow schema operations when using different mnesia versions. OTP-9722 Reduce calls to phash in key_to_frag_number Original code calls phash 1..2 times, based on which fragment the hashed key targets and how many fragments exist. New code always calls phash only once. Add mnesia_frag_hash test (Thanks to Philip Robinson) OTP-9786 Fixed a sticky lock bug which caused mnesia:read(Tab, Key, write) return undefined. OTP-9804 Use the synchronous log_terms instead of alog_terms in mnesia_log:ets2dcd() This avoids the situation where mnesia could dump a very large ets table in its entirety into the message queue of the disk_log process, causing memory blowup and choking the disk logger. (Thanks to Richard Carlsson) --- observer-1.0 -------------------------------------------------------- OTP-4779 A new GUI for Observer. Integrating pman, etop, appmon and tv into observer with tracing facilities. OTP-9403 The following new features are added to ttb: A one-command trace setup is added, ttb:start_trace/4. The following new options are added to ttb:tracer/2: shell - Show trace messages on the console in real time timer - Time constrained tracing overload - Overload protection flush - Flush file trace port buffers with given frequency resume - Automatically resume tracing after node restart A new shortcut is added for common tracer settings similar to using the dbg module directly, ttb:tracer(shell | dbg). Some shortcuts are added for commonly used match specifications in ttb:tp and ttb:tpl. The Options argument to functions ttb:tracer, ttb:write_config, ttb:stop and ttb:format may now be one single option instead of a list. The history buffer of the last trace is now always automatically dumped to the file ttb_last_config when ttb:stop is called. The following new options are added to ttb:stop/1: fetch_dir - Specify where to store fetched logs {format,FormatOpts} - Specify options to use when formatting the fetched logs return_fetch_dir - Indicate that the return value from ttb:stop/1 should include the name of the directory where the fetched logs are stored The option disable_sort is added to ttb:format/2. When this option is used, trace messages from different logs are not merged according to timestamps, but just appended one log after the other. OTP-9430 The following non backwards compatible changes are done in ttb: When setting up trace with ttb, the 'timestamp' trace flag will now always be set. The 'fetch' option to ttb:stop/1 is removed since it is now default behavior that trace logs are fetched when stopping ttb. Fetching can be disabled with the 'nofetch' option to ttb:stop/1. The name of the upload directory is changed from ttb_upload-Timestamp to ttb_upload_FileName-Timestamp. To format the output using 'et', you now need to provide the option {handler,ttb:get_et_handler()} instead of {handler,et}. When formatting a trace log, the handler state was earlier reset after each trace file, this is now changed so the handler state is passed not only from one trace message to the next in the same file, but also from one file to the next. OTP-9431 The following bugs in ttb have been corrected: ttb:tracer/2 would earlier crash when trying to set up tracing for a diskless node to wrap files, i.e. when option {file,{local,{wrap,Filename,Size,Count}}} was used. ttb:stop([fetch]) would sometimes silently fail if multiple nodes with different current working directories were traced. ttb:stop([fetch]) would crash if the tracer was started with option {file,{local,Filename}} A deadlock would sometimes occur due to an information printout from the ttb_control process when ttb was stopped. OTP-9665 The file trace port to which the IP trace client relays all traces from diskless nodes was not flushed and closed properly on ttb:stop. This has been corrected. --- odbc-2.10.12 -------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9716 An ODBC process should exit normally if its client exits with 'shutdown' There is nothing strange about the client shutting down, so the ODBC process should exit normally to avoid generating a crash report for a non-problem. (Thanks to Magnus Henoch) --- orber-3.6.23 -------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9728 Remove usage of ssl:seed/1 in orber test cases. OTP-9773 The SSL option handling has been changed. There are now two new orber options ssl_server_options and ssl_client_options which takes a list of options to the socket. The old options are now deprecated and removed from the documentation but they can still be used for backward compatibility as long as the two new options not are used. If ssl_server_options and ssl_client_options contain an TCP option that orber needs to set to a specific value it will be skipped and a warning will be written to the error_log. --- os_mon-2.2.8 -------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. --- otp_mibs-1.0.7 ------------------------------------------------------ OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. --- parsetools-2.0.7 ---------------------------------------------------- OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. --- percept-0.8.6.1 ----------------------------------------------------- OTP-9813 Miscellaneous documentation build updates --- pman-2.7.1.1 -------------------------------------------------------- OTP-9813 Miscellaneous documentation build updates --- public_key-0.14 ----------------------------------------------------- OTP-9312 public_key, ssl and crypto now supports PKCS-8 OTP-9414 The asn1 decoder/encoder now uses a runtime nif from the asn1 application if it is available. --- reltool-0.5.7.1 ----------------------------------------------------- OTP-9742 Added recommendation about RootDir parameter to reltool:eval_target_spec/3. --- runtime_tools-1.8.7 ------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9458 Two new built-in trace pattern aliases have been added: caller_trace (c) and caller_exception_trace (cx). See the dbg:ltp/0 documentation for more info. OTP-9651 Earlier dbg:stop only did erlang:trace_delivered and did not flush the trace file driver. Therefore there could still be trace messages that were delivered to the driver (guaranteed by erlang:trace_delivered) but not yet written to the file when dbg:stop returned. Flushing is now added on each node before the dbg process terminates. OTP-9658 File handles created by the trace_file_drv driver was inherited to child processes. This is now corrected. --- sasl-2.2 ------------------------------------------------------------ OTP-9438 Fix the mechanism for upgrading emulator. The appup files for kernel, stdlib and sasl do now recognize two major releases back and include a 'restart_new_emulator' instruction. Appup files can include regular expressions for matching earlier releases. The mechanism for upgrading the emulator is changed so 'restart_new_emulator' will be the first instruction executed. The rest of the upgrade instruction will be executed after the emulator restart. A new upgrade instruction 'restart_emulator' is added for the case where the emulator shall be restarted after all other upgrade instructions. OTP-9717 Add release_handler:which_releases/1 This is an extension to which_releases that allows a user to specify the status of the releases they wish to be returned. For instance it allows for quickly determining which release is 'permanent' without the need of parsing the entire release list. (Thanks to Joe Williams) OTP-9746 Add copy of rel file in releases/Vsn in release tar file systool:make_tar stores the rel file in the releases directory. When unpacking with release_handler:unpack_release, the file is automatically moved to releases/Vsn/. If, however, the tar file is unpacked manually, the rel file might not be moved, and the next release unpacked might overwrite the rel file. To overcome this, systools:make_tar now stores a copy of the rel file in releases/Vsn/ directly and it is not longer necessary to move the file after unpacking. The reason for keeping the file in the releases directory also is that is needs to be extracted separately before the release version (Vsn) is known. --- snmp-4.21.2 --------------------------------------------------------- OTP-9690 Bad note store GC timer deactivation. Wrong field in the state record was set (timeout instead active). Stefan Grundmann --- snmp-4.21.3 --------------------------------------------------------- OTP-9618 [compiler] Improved version info printout from the MIB compiler frontend escript. OTP-9718 [compiler] Fix the --warnings/--W option parsing in the snmpc wrapper script. The short warning option was incorrectly '--w', instead of as documented '--W'. This has now been corrected. Tuncer Ayaz OTP-9745 [agent] Version 4.20 introduced a change that broke trap sending from subagents. Due to a bug in the test code, this was not discovered, until that bug was fixed. OTP-9747 [agent] When sending an error message (reply) regarding snmpUnknownPDUHandlers, the agent used the wrong OID. --- snmp-4.21.4 --------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9618 [compiler] Improved version info printout from the MIB compiler frontend escript. OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. OTP-9690 Bad note store GC timer deactivation. Wrong field in the state record was set (timeout instead active). Stefan Grundmann OTP-9718 [compiler] Fix the --warnings/--W option parsing in the snmpc wrapper script. The short warning option was incorrectly '--w', instead of as documented '--W'. This has now been corrected. Tuncer Ayaz OTP-9745 [agent] Version 4.20 introduced a change that broke trap sending from subagents. Due to a bug in the test code, this was not discovered, until that bug was fixed. OTP-9747 [agent] When sending an error message (reply) regarding snmpUnknownPDUHandlers, the agent used the wrong OID. OTP-9748 [agent] An error in the tests suite masked errors in the agent. OTP-9779 [agent] Removed use of old style tuple funs. --- ssh-2.0.9 ----------------------------------------------------------- OTP-9451 Erlang/OTP can now be built using parallel make if you limit the number of jobs, for instance using 'make -j6' or 'make -j10'. 'make -j' does not work at the moment because of some missing dependencies. OTP-9796 Ssh behaviours now use the new directive "-callback". Parameters will be further specified in a later version of ssh. --- ssl-5.0 ------------------------------------------------------------- OTP-7048 Support for the old ssl implementation is dropped and the code is removed. OTP-7053 The erlang distribution can now be run over the new ssl implementation. All options can currently not be set but it is enough to replace to old ssl implementation. OTP-9312 public_key, ssl and crypto now supports PKCS-8 OTP-9683 Implements a CBC timing attack counter measure. Thanks to Andreas Schultz for providing the patch. OTP-9696 Invalidation handling of sessions could cause the time_stamp field in the session record to be set to undefined crashing the session clean up process. This did not affect the connections but would result in that the session table would grow. OTP-9703 Changed code to use ets:foldl and throw instead of ets:next traversal, avoiding the need to explicitly call ets:safe_fixtable. It was possible to get a badarg-crash under special circumstances. OTP-9734 Send ssl_closed notification to active ssl user when a tcp error occurs. OTP-9739 Mitigates an SSL/TLS Computational DoS attack by disallowing the client to renegotiate many times in a row in a short time interval, thanks to Tuncer Ayaz for alerting us about this. OTP-9744 If a passive receive was ongoing during a renegotiation the process evaluating ssl:recv could be left hanging for ever. OTP-9750 Implements the 1/n-1 splitting countermeasure to the Rizzo Duong BEAST attack, affects SSL 3.0 and TLS 1.0. Thanks to Tuncer Ayaz for alerting us about this. --- stdlib-1.18 --------------------------------------------------------- OTP-8713 Improved algorithm in module random. Avoid seed values that are even divisors of the primes and by that prevent getting sub-seeds that are stuck on zero. Worst case was random:seed(0,0,0) that produced a series of only zeros. This is an incompatible change in the sense that applications that relies on reproducing a specific series for a given seed will fail. The pseudo random output is still deterministic but different compared to earlier versions. OTP-9212 Calls to global:whereis_name/1 have been substituted for calls to global:safe_whereis_name/1 since the latter is not safe at all. The reason for not doing this earlier is that setting a global lock masked out a bug concerning the restart of supervised children. The bug has now been fixed by a modification of global:whereis_name/1. (Thanks to Ulf Wiger for code contribution.) A minor race conditions in gen_fsm:start* has been fixed: if one of these functions returned {error, Reason} or ignore, the name could still be registered (either locally or in global. (This is the same modification as was done for gen_server in OTP-7669.) The undocumented function global:safe_whereis_name/1 has been removed. OTP-9222 If a child of a supervisor terminates with reason {shutdown,Term} it is now handled by the supervisor as if the reason was 'shutdown'. For children with restart type 'permanent', this implies no change. For children with restart type 'transient', the child will no longer be restarted and no supervisor report will be written. For children with restart type 'temporary', no supervisor report will be written. OTP-9381 Minor improvement of documentation regarding supervisor restart strategy for temporary and transient child processes. OTP-9607 A Dets table with sufficiently large buckets could not always be repaired. This bug has been fixed. The format of Dets files has been modified. When downgrading tables created with the new system will be repaired. Otherwise the modification should not be noticeable. OTP-9616 A few contracts in the lists module have been corrected. OTP-9621 Add '-callback' attributes in stdlib's behaviours Replace the behaviour_info(callbacks) export in stdlib's behaviours with -callback' attributes for all the callbacks. Update the documentation with information on the callback attribute Automatically generate 'behaviour_info' function from '-callback' attributes 'behaviour_info(callbacks)' is a special function that is defined in a module which describes a behaviour and returns a list of its callbacks. This function is now automatically generated using the '-callback' specs. An error is returned by lint if user defines both '-callback' attributes and the behaviour_info/1 function. If no type info is needed for a callback use a generic spec for it. Add '-callback' attribute to language syntax Behaviours may define specs for their callbacks using the familiar spec syntax, replacing the '-spec' keyword with '-callback'. Simple lint checks are performed to ensure that no callbacks are defined twice and all types referred are declared. These attributes can be then used by tools to provide documentation to the behaviour or find discrepancies in the callback definitions in the callback module. Add callback specs into 'application' module in kernel Add callback specs to tftp module following internet documentation Add callback specs to inets_service module following possibly deprecated comments OTP-9622 If a Dets table had been properly closed but the space management data could not been read, it was not possible to repair the file. This bug has been fixed. OTP-9624 The Unicode noncharacter code points 16#FFFE and 16#FFFE were not allowed to be encoded or decoded using the unicode module or bit syntax. That was inconsistent with the other noncharacters 16#FDD0 to 16#FDEF that could be encoded/decoded. To resolve the inconsistency, 16#FFFE and 16#FFFE can now be encoded and decoded. (Thanks to Alisdair Sullivan.) OTP-9637 Fix a few tests that used to fail on the HiPE platform. OTP-9643 Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23. The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats. OTP-9645 Make epp search directory of current file first when including another file This completes a partial fix in R11 that only worked for include_lib(). (Thanks to Richard Carlsson) OTP-9646 ms_transform: Fix incorrect `variable shadowed' warnings This patch removes incorrect passing of variable bindings from one function clause to another. (Thanks to Haitao Li) OTP-9647 Explicitly kill dynamic children in supervisors According to the supervisor's documentation: "Important note on simple-one-for-one supervisors: The dynamically created child processes of a simple-one-for-one supervisor are not explicitly killed, regardless of shutdown strategy, but are expected to terminate when the supervisor does (that is, when an exit signal from the parent process is received)." All is fine as long as we stop simple_one_for_one supervisor manually. Dynamic children catch the exit signal from the supervisor and leave. But, if this happens when we stop an application, after the top supervisor has stopped, the application master kills all remaining processes associated to this application. So, dynamic children that trap exit signals can be killed during their cleanup (here we mean inside terminate/2). This is unpredictable and highly time-dependent. In this commit, supervisor module is patched to explicitly terminate dynamic children accordingly to the shutdown strategy. NOTE: Order in which dynamic children are stopped is not defined. In fact, this is "almost" done at the same time. Stack errors when dynamic children are stopped Because a simple_one_for_one supervisor can have many workers, we stack errors during its shutdown to report only one message for each encountered error type. Instead of reporting the child's pid, we use the number of concerned children. (Thanks to Christopher Faulet) OTP-9648 Allow an infinite timeout to shutdown worker processes Now, in child specification, the shutdown value can also be set to infinity for worker children. This restriction was removed because this is not always possible to predict the shutdown time for a worker. This is highly application-dependent. Add a warning to docs about workers' shutdown strategy (Thanks to Christopher Faulet) OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. OTP-9669 A badarg would sometimes occur in supervisor when printing error reports and the child pid was undefined. This has been corrected. OTP-9691 Fix re:split spec not to accept option 'global'(Thanks to Shunichi Shinohara) OTP-9737 The deprecated 'regexp' module has been removed. Use the 're' module instead. OTP-9752 filename:find_src/1,2 will now work on stripped BEAM files (reported by Per Hedeland). The HiPE compiler will also work on stripped BEAM files. The BEAM compiler will no longer include compilation options given in the source code itself in M:module_info(compile) (because those options will be applied anyway if the module is re-compiled). --- syntax_tools-1.6.7.2 ------------------------------------------------ OTP-9643 Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23. The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats. OTP-9810 Eliminate use of deprecated regexp module --- test_server-3.5 ----------------------------------------------------- OTP-9235 The test case group info function has been implemented in Common Test. Before execution of a test case group, a call is now made to TestSuite:group(GroupName). The function returns a list of test properties, e.g. to specify timetrap values, require configuration data, etc (analogue to the test suite- and test case info function). The scope of the properties set by group(GroupName) is all test cases and sub-groups of group GroupName. OTP-9706 The look of the HTML log files generated by Common Test and Test Server has been improved (and made easier to customize) by means of a CSS file. --- toolbar-1.4.2.1 ----------------------------------------------------- OTP-9813 Miscellaneous documentation build updates --- tools-2.6.6.6 ------------------------------------------------------- OTP-9643 Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23. The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats. OTP-9649 Tuple funs (a two-element tuple with a module name and a function) are now officially deprecated and will be removed in R16. Use 'fun M:F/A' instead. To make you aware that your system uses tuple funs, the very first time a tuple fun is applied, a warning will be sent to the error logger. OTP-9656 Update system profiling principles to reflect eprof performance improvements. OTP-9694 [cover] fix leftover {'DOWN', ..} msg in callers queue After stopping cover with cover:stop() there could still be a {'DOWN',...} leftover message in the calling process's message queue. This unexpected leftover could be eliminated if erlang:demonitor/2 with option flush would be used in certain points OTP-9791 Add deps as erlang-flymake include directory. Update erlang-flymake to recognize the "deps" folder as an include directory. This makes erlang-flymake compatible with the rebar dependency management tool's default folder structure, which puts included dependencies in "deps".(Thanks to Kevin Albrecht) OTP-9810 Eliminate use of deprecated regexp module --- tv-2.1.4.8 ---------------------------------------------------------- OTP-9810 Eliminate use of deprecated regexp module --- typer-0.9.3 --------------------------------------------------------- OTP-9758 No warnings for underspecs with remote types Fix crash in Typer Fix Dialyzer's warning for its own code Fix Dialyzer's warnings in HiPE Add file/line info in a particular Dialyzer crash Update inets test results OTP-9776 Correct callback spec in application module Refine warning about callback specs with extra ranges Cleanup autoimport compiler directives Fix Dialyzer's warnings in typer Fix Dialyzer's warning for its own code Fix bug in Dialyzer's behaviours analysis Fix crash in Dialyzer Variable substitution was not generalizing any unknown variables. --- webtool-0.8.9.1 ----------------------------------------------------- OTP-9813 Miscellaneous documentation build updates --- wx-0.99.1 ----------------------------------------------------------- OTP-9702 Implemented wxSystemOptions. Load Opengl from libGL.so.1 instead libGL.so to work around linux problems. OTP-9725 Fixed a deadlock in the driver, which could happen if a callback caused another callback to be invoked. --- xmerl-1.3 ----------------------------------------------------------- OTP-9664 Updates to the xml scanner xmerl_scan is now returning xmlComment records in the output.

Functions xmerl_scan:file/2 and xmerl_scan:string/2 now accepts a new option {comments, Flag} for filtering of comments.
Default (true) is that #xmlComment records are returned from the scanner and this flag should be set to false if one don't want comments in the output. Add default_attrs option

When default_attrs is true any attribute with a default value defined in the doctype but not in the attribute axis of the currently scanned element is added to it. Allow whole documents to be returned

Functions xmerl_scan:file/2 and xmerl_scan:string/2 now accepts a new option {document, true} to produce a whole document as a xmlDocument record instead of just the root element node.
This option is the only way to get to the top-level comments and processing instructions without hooking through the customization functions. Those nodes are needed to implement [Canonical XML][c14n-xml] support.
[c14n-xml]: http://www.w3.org/TR/2008/PR-xml-c14n11-20080129/ Canonical XML Parents and namespace are tracked in #xmlAttribute nodes Parents are tracked in #xmlPI nodes Set vsn field in #xmlDecl record Fix namespace-conformance constraints

See [Namespaces in XML 1.0 (Third Edition)][1]: The prefix xml is by definition bound to the namespace name http://www.w3.org/XML/1998/namespace. It MAY, but need not, be declared, and MUST NOT be bound to any other namespace name. Other prefixes MUST NOT be bound to this namespace name, and it MUST NOT be declared as the default namespace.
The prefix xmlns is used only to declare namespace bindings and is by definition bound to the namespace name http://www.w3.org/2000/xmlns/. It MUST NOT be declared . Other prefixes MUST NOT be bound to this namespace name, and it MUST NOT be declared as the default namespace. Element names MUST NOT have the prefix xmlns.
In XML documents conforming to this specification, no tag may contain two attributes which have identical names, or have qualified names with the same local part and with prefixes which have been bound to namespace names that are identical.
[1] http://www.w3.org/TR/REC-xml-names/ Updates of xmerl's Xpath functionality. Add #xmlPI support to xmerl_xpath:write_node/1 Fix processing-instruction(name?) Fix path filters, support more top-level primary expressions Accumulate comments in element nodes Implement namespace axis

Namespace nodes are represented as #xmlNsNode records. Now that the namespace axis is correctly implemented, attributes nodes corresponding to attributes that declare namespaces are ignored.
See [5.3 Attribute Nodes][xpath-5.3]:
There are no attribute nodes corresponding to attributes that declare namespaces.
[xpath-5.3]: http://www.w3.org/TR/xpath/#attribute-nodes (Thanks to Anthony Ramine) OTP-9670 Fix character check of non-characters due to change in unicode module. OTP-9753 Treat , as special in xmerl_xpath_scan. (Thanks to Anneli Cuss) OTP-9810 Eliminate use of deprecated regexp module OTP-9821 Fix bug in namespace handling for attributes when the namespace_conformant flag is set to true.