Major relese : otp_src_R12B-0 Build date : 2007-12-04 R12B-0 is a major new release of Erlang/OTP. You can download the full source distribution from http://www.erlang.org/download/otp_src_R12B-0.tar.gz http://www.erlang.org/download/otp_src_R12B-0.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_R12B-0.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_R12B-0.tar.gz http://www.erlang.org/download/otp_doc_man_R12B-0.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- HIGHLIGHTS ------------------------------------------------------------ OTP-5979 Megaco: Added support for the full v3-standard (including segmentation). OTP-6554 When an exception occurs the Erlang shell now displays the class, the reason, and the stacktrace in a clearer way (rather than dumping the raw EXIT tuples as before). proc_lib:format/1 displays the exception of crash reports in the same clearer way. The new shell command catch_exception and the new application configuration parameter shell_catch_exception can be used for catching exceptions that would normally exit the Erlang shell. OTP-6558 Bitstrings (bit-level) binaries and binary comprehensions are now part of the language. See the Reference Manual. OTP-6560 The windows version of erlang now has SMP support. The SMP emulator is run by default on machines which shows more than one virtual or physical processor. OTP-6619 A new implementation of ssl is released as a alpha version in ssl-3.9 it will later replace the old implementation in ssl-4.0. The new implementation can be accessed by providing the option {ssl_imp, new} to the ssl:connect and ssl:listen functions. OTP-6690 [httpc] - Profiles are now supported i.e. the options available in set_options/1 can be set locally for a certain profile and do not have to affect all HTTP-requests issued in the Erlang node. Calls to the HTTP client API functions not using the profile argument will use the default profile. OTP-6705 A new uniform Inets interface provides a flexible way to start/stop inets services and get information about running services. See inets(3). This also means that inflexibilities in the HTTP server has been removed and more default values has been added. OTP-6733 The new module array provides a fast functional array implementation. OTP-6794 percept is a new application to profile concurrency. OTP-6850 Literal lists, tuples, and binaries are no longer constructed at run-time as they used to be, but are stored in a per-module constant pool. Literals that are used more than once are stored only once. This is not a change to the language, only in the details of its implementation. Therefore, the implications of this change is described in the Efficiency Guide. OTP-6851 The size of the code generated by yecc has been reduced. A note regarding the includefile option: although yecc can cope with includefiles based on some earlier yeccpre.hrl it is recommended for efficiency reasons to update includefiles as to follow the pattern in the latest yeccpre.hrl. OTP-6857 The Erlang driver API has been extended with a portable POSIX thread like API for multi-threading. The Erlang driver thread API provides: Threads Mutexes Condition variables Read/Write locks Thread specific data For more information see the erl_driver(3) documentation. OTP-6869 Possible to override global SSL parameters when using local interfaces. OTP-6882 Optimization using bitstr in encode/decode functions. Active with [per_bin, optimize] options. OTP-6902 Two new guard BIFs have been introduced as a recommended replacement for size/1. (The size/1 BIF will be removed no earlier than in R14B.) The BIFs are tuple_size/1 to calculate the size of a tuple and byte_size/1 to calculate the number of bytes needed for the contents of the binary or bitstring (rounded up to the nearest number of bytes if necessary). There is also a new bit_size/1 BIF that returns the exact number of bits that a binary or bitstring contains. OTP-6962 The Efficiency Guide has been updated and extended to cover many more topics, such as the bit syntax construction and matching. OTP-6989 Test Server is a portable test server for automated application testing. The server can run test suites on local or remote targets and log progress and results to HTML pages. The main purpose of Test Server is to act as engine inside customized test tools. A callback interface for such framework applications is provided. OTP-6990 Common Test is a portable application for automated testing. It is suitable for black-box testing of target systems of any type (i.e. not necessarily implemented in Erlang), as well as for white-box testing of Erlang/OTP programs. Black-box testing is performed via standard O&M interfaces (such as SNMP, HTTP, Corba, Telnet, etc) and, if required, via user specific interfaces. White-box testing of Erlang/OTP programs is easily accomplished by calling the target API functions directly from the test case functions. Common Test executes test suite programs automatically, without operator interaction. Test progress and results is printed to logs on HTML format, easily browsed with a standard web browser. A number of libraries are provided that contain useful support functions to fill various testing needs and requirements. --- documentation ------------------------------------------------------------ OTP-6866 The top page of the OTP-documentation is updated. There is no use of frames any more and the navigation bar at the left uses Javascript to achieve a navigation tree where nodes can be expanded and contracted. OTP-6962 The Efficiency Guide has been updated and extended to cover many more topics, such as the bit syntax construction and matching. --- otp ------------------------------------------------------------ OTP-6846 The mnemosyne and mnesia_session applications have been removed. Use qlc instead of mnemosyne. --- asn1-1.4.6 ------------------------------------------------------------ OTP-5067 Now the asn1-compiler supports two root lists in SEQUENCE and SET according to alternative three in ComponentTypeLists (X.680 07/2002 section 24.1), i.e. with an extension list between two ellipses. OTP-6763 Parsing and encoding/decoding of type constrained with SIZE with extension is now recovered. OTP-6769 inline failed because tring to use a removed module. OTP-6770 Fixed problem with a reference to a type from an object. The failure was caused bye change of type name when using inline option. OTP-6786 Handling of decode pattern for exclusive decode was false in the case when an undecoded component had more than one following elements that should be decoded. --- asn1-1.5 ------------------------------------------------------------ OTP-6835 Now generating records in .hrl file for instances of parameterized SEQUENCE or SET. OTP-6882 Optimization using bitstr in encode/decode functions. Active with [per_bin, optimize] options. --- common_test-1.3.0 ------------------------------------------------------------ OTP-6990 Common Test is a portable application for automated testing. It is suitable for black-box testing of target systems of any type (i.e. not necessarily implemented in Erlang), as well as for white-box testing of Erlang/OTP programs. Black-box testing is performed via standard O&M interfaces (such as SNMP, HTTP, Corba, Telnet, etc) and, if required, via user specific interfaces. White-box testing of Erlang/OTP programs is easily accomplished by calling the target API functions directly from the test case functions. Common Test executes test suite programs automatically, without operator interaction. Test progress and results is printed to logs on HTML format, easily browsed with a standard web browser. A number of libraries are provided that contain useful support functions to fill various testing needs and requirements. --- compiler-4.5 ------------------------------------------------------------ OTP-6558 Bitstrings (bit-level) binaries and binary comprehensions are now part of the language. See the Reference Manual. OTP-6801 The 'compressed' option for the compiler has been documented. OTP-6824 If the value of a list comprehension is not used, such as in '[do_something(X) || X <- List], ok', a result list will no longer be built. For more details, see the Efficiency Guide. If the value of an expression is not used, and the expression has no side effects except for possibly throwing an exception, a warning will be generated. Examples: 'self(),ok' and '{error,Reason},ok'. OTP-6829 Three new functions have been added to the compile module: noenv_file/2, noenv_forms/2, and noenv_output_generated/1. OTP-6838 Many bit syntax operations, both construction and matching, are faster. For further information, see the Efficiency Guide. OTP-6850 Literal lists, tuples, and binaries are no longer constructed at run-time as they used to be, but are stored in a per-module constant pool. Literals that are used more than once are stored only once. This is not a change to the language, only in the details of its implementation. Therefore, the implications of this change is described in the Efficiency Guide. Example 1: In the expression element(BitNum-1, {1,2,4,8,16,32,64,128}), the tuple used to be constructed every time the expression was executed, which could be detrimental to performance in two ways if the expression was executed in a loop: the time to build the tuple itself and the time spent in garbage collections because the heap filled up with garbage faster. Example 2: Literal strings, such as "abc", used to be stored in the compiled code compactly as a byte string and expanded to a list at run-time. Now all strings will be stored expanded to lists (such as [$a,$b,$c]) in the constant pool. That means that the string will be faster to use at run-time, but that it will require more space even when not used. If space is an issue, you might want to use binary literals (that is, <<"abc">>) instead of string literals for infrequently used long strings (such as error messages). OTP-6862 Recursive calls now usually consume less stack than in R11B. See the Efficiency Guide. OTP-6885 The compiler used to allow that a binary field without size could be used in other positions than at the end in bit syntax pattern. For instance, > = Bin]]> used to compile, but now the compilation will fail with an an error message. Also, it is now longer permitted to give a literal string in a binary pattern a type or a size; for instance, > = Bin]]> will no longer compile. (In previous releases, there would always be a badmatch exception at run-time.) OTP-6902 Two new guard BIFs have been introduced as a recommended replacement for size/1. (The size/1 BIF will be removed no earlier than in R14B.) The BIFs are tuple_size/1 to calculate the size of a tuple and byte_size/1 to calculate the number of bytes needed for the contents of the binary or bitstring (rounded up to the nearest number of bytes if necessary). There is also a new bit_size/1 BIF that returns the exact number of bits that a binary or bitstring contains. OTP-6966 The two internal functions erl_bifs:is_bif/3 and erl_bifs:is_guard/3 have been removed. They were unsupported, undocumented, and unmaintained. --- dialyzer-1.7.1 ------------------------------------------------------------ OTP-6997 Use of success typings is now default, is robust and detects significantly more errors than in previous versions. Dialyzer now accepts and takes into account type information in record declarations and in contracts -- see related paper in Erlang'07 workshop. Various OTP applications (e.g. stdlib and kernel) are partially annotated with appropriate contracts specifying types information for their functions. The type previously known as unit() has been renamed to no_return(). Its use in a contract as the return type of a function now silences off the "function has no local return" dialyzer warning without use of the corresponding option. --- docbuilder-0.9.1 ------------------------------------------------------------ OTP-6775 Line breaks within pre are now always preserved. The definition of name in the cref DTD is now correctly handled. docb_transform: The HTML snippet returned by the Module:head() callback function is now placed below the title in the HTML file (as specified in the documentation), not on the same line. docb_gen: Added option sort_functions. Fixed bugs in cites and terms DTD, and also in book, bookinsidecover and report DTDs which are not officially supported (yet). License info added to all DTD files. Corrections and clarifications made to the User's Guide. --- erts-5.5.5.1 ------------------------------------------------------------ OTP-6745 The documentation of process_flag(priority, Level) has been updated, see the erlang(3) documentation. OTP-6789 Restored speed of bit-syntax matching of 32 bits integers. OTP-6800 The log_mf_h event handler didn't close the index file when it was done reading it causing a file descriptor leak. OTP-6806 The internal (rarely used) DNS resolver has been modified to not use the domain search list when asked to resolve an absolute name; a name with a terminating dot. There was also a bug causing it to create malformed DNS queries for absolute names that has been corrected, correction suggested by Scott Lystig Fritchie. The code has also been corrected to look up cached RRs in the same search order as non-cached, now allows having the root domain among the search domains, and can now actually do a zone transfer request. OTP-6811 zlib:close/1 would leave an EXIT message in the message queue if the calling process had the trap_exit flag enabled. OTP-6816 All exported functions in gzio.c have now been renamed to avoid conflict with drivers that are indirectly linked with an external zlib library. OTP-6817 Calling binary_to_term/1 with certain invalid binaries would crash the emulator. OTP-6818 The dict:size/1 and orddict:size/1 functions have been documented. --- erts-5.5.5.2 ------------------------------------------------------------ OTP-6842 ets:select/3 on ordered_set and with a chunksize a multiple of 1000 gave all elements instead of just 1000. Also ets:slot/2 on ordered set could give unexpected results on SMP emulator. Both problems are corrected. --- erts-5.5.5.3 ------------------------------------------------------------ OTP-6872 Creating a named table using ets:new/2 or renaming a named table using ets:rename/2 could in rare circumstances succed, meaning that there would be two or more tables with the same name. Now such call will fail with a badarg exception as it is supposed to do. ets:delete/1 used on a named table now removes the name immediately so that a new table with the same name can be created. Turning on call trace on the internal BIF that implements ets:delete/1 would crash the emulator. SMP emulator only: Using ets:rename/2 on a table that ets:safe_fixtable/2 has been used on could casue an emulator crash or undefined behaviour because of a missing lock. --- erts-5.5.5.4 ------------------------------------------------------------ OTP-6879 Data passed to a driver via erlang:port_call could be corrupted when the runtime system with SMP support was used. (Thanks to YAMASHINA Hio.) OTP-6880 In the SMP emulator, if serveral processes called ets:update_counter/3 (even for different tables) when the counter values exceeded 27 bits, the counter values could be corrupted or the emulator could crash. --- erts-5.5.5.5 ------------------------------------------------------------ OTP-6907 Hanging writes on temporarilly unavailable NFS filesystems could cause the execution of (not file related) erlang code to get blocked even though I/O threads were used. This is now corrected. --- erts-5.6 ------------------------------------------------------------ OTP-6291 A bug for raw files when reading 0 bytes returning 'eof' instead of empty data has been corrected. OTP-6558 Bitstrings (bit-level) binaries and binary comprehensions are now part of the language. See the Reference Manual. OTP-6560 The windows version of erlang now has SMP support. The SMP emulator is run by default on machines which shows more than one virtual or physical processor. OTP-6755 The details of the compressed term format has been documented in erl_ext_dist.txt. (Thanks to Daniel Goertzen.) OTP-6756 The runtime system with SMP support is now started by default if more than one logical processor are detected. For more information, see the erl(3) documentation. OTP-6779 The external format for Erlang terms and the distribution protocol are now documented in ERTS User's Guide. OTP-6823 The ErlDrvTermData term types used by driver_output_term() and driver_send_term() have been extended with the term types ERL_DRV_BUF2BINARY, ERL_DRV_EXT2TERM, and ERL_DRV_UINT. ERL_DRV_BUF2BINARY is used for passing and creating a binary, ERL_DRV_EXT2TERM is used for passing terms encoded with the external term format, and ERL_DRV_UINT is used for passing unsigned integers. Also the data types ErlDrvUInt and ErlDrvSInt have been added which makes it more obvious how arguments to term types are interpreted with regards to width and signedness. The incorrect data types ErlDriverTerm, ErlDriverBinary, and ErlDriverPort in the erl_driver(3) documentation have been replaced with the correct data types ErlDrvTermData, ErlDrvBinary, and ErlDrvPort. For more information see the erl_driver(3) documentation. OTP-6831 Miscellaneous improvements of the erts internal thread library. It now support optimized atomic operations and spin-locks on windows. Fall-backs based on mutexes and/or spin-locks for missing optimized atomic operations, spin-locks, or rwlocks has been implemented. This makes it possible to compile the runtime system with SMP support on a lot more platforms. Default stack size on OpenBSD has been increased to 256 kilo-words. OTP-6833 On the 64-bit Erlang emulator, bit syntax construction with integers containing more than 60 bits ("big numbers") into fields with more than 60 bits could produce incorrect results. OTP-6838 Many bit syntax operations, both construction and matching, are faster. For further information, see the Efficiency Guide. OTP-6848 When the runtime system failed to allocate memory for binaries, it could dead lock while writing the erl_crash.dump. OTP-6850 Literal lists, tuples, and binaries are no longer constructed at run-time as they used to be, but are stored in a per-module constant pool. Literals that are used more than once are stored only once. This is not a change to the language, only in the details of its implementation. Therefore, the implications of this change is described in the Efficiency Guide. Example 1: In the expression element(BitNum-1, {1,2,4,8,16,32,64,128}), the tuple used to be constructed every time the expression was executed, which could be detrimental to performance in two ways if the expression was executed in a loop: the time to build the tuple itself and the time spent in garbage collections because the heap filled up with garbage faster. Example 2: Literal strings, such as "abc", used to be stored in the compiled code compactly as a byte string and expanded to a list at run-time. Now all strings will be stored expanded to lists (such as [$a,$b,$c]) in the constant pool. That means that the string will be faster to use at run-time, but that it will require more space even when not used. If space is an issue, you might want to use binary literals (that is, <<"abc">>) instead of string literals for infrequently used long strings (such as error messages). OTP-6857 The Erlang driver API has been extended with a portable POSIX thread like API for multi-threading. The Erlang driver thread API provides: Threads Mutexes Condition variables Read/Write locks Thread specific data For more information see the erl_driver(3) documentation. OTP-6862 Recursive calls now usually consume less stack than in R11B. See the Efficiency Guide. OTP-6876 The deprecated BIFs erlang:old_binary_to_term/1 and erlang:info/1 have been removed. OTP-6878 Calls to driver call-backs triggered by external events are now scheduled and interleaved with execution of Erlang processes also on the runtime system without SMP support. OTP-6891 Faster arithmetic of integers of more than 27 bits signed (or 60 bits signed on an 64-bit CPU), and also faster integer multiplication. (Thanks to Tony Rogvall.) OTP-6899 Significant improvements of the process_info BIFs: process_info/2 can now be called with a list of items as second argument in order to atomically retrieve information about multiple items. process_info/[1,2] has been optimized in the runtime system with SMP support. The whole scheduler could previously be blocked for a significant period of time in process_info/[1,2] waiting for a lock on the process being inspected. The Erlang process calling process_info/[1,2] can still be blocked for a significant period of time waiting for the lock, but the scheduler will now be able to run other processes while the process calling process_info/[1,2] waits for the lock. process_info/2 now accept a few more items than before. The documentation of process_info/[1,2] has been improved. For more information see the erlang(3) documentation. OTP-6901 open_port({}, []) could crash the emulator. (Thanks to Matthew Dempsky.) OTP-6902 Two new guard BIFs have been introduced as a recommended replacement for size/1. (The size/1 BIF will be removed no earlier than in R14B.) The BIFs are tuple_size/1 to calculate the size of a tuple and byte_size/1 to calculate the number of bytes needed for the contents of the binary or bitstring (rounded up to the nearest number of bytes if necessary). There is also a new bit_size/1 BIF that returns the exact number of bits that a binary or bitstring contains. OTP-6906 The ets:fixtable/2 function, which has been deprecated for several releases, has been removed. The ets:info/1 function has been reimplemented as a BIF, which guarantees that information returned is consistent. The ets:info/2 function now fails with reason badarg if the second argument is invalid. (Dialyzer can be used to find buggy code where the second argument is misspelled.) OTP-6920 The runtime system with SMP support could deadlock if a process called the erlang:suspend_process(Pid) BIF or the erlang:garbage_collect(Pid) BIF while the process identified by Pid was currently running and the process calling the BIFs was terminated during the call to the BIFs. Processes suspending each other via the erlang:suspend_process/1 BIF or garbage collecting each other via the erlang:garbage_collect/1 BIF could deadlock each other when the runtime system with SMP support was used. OTP-6933 The functions io:columns/0, io:columns/1, io:rows/0 and io:rows/1 are added to allow the user to get information about the terminal geometry. The shell takes some advantage of this when formatting output. For regular files and other io-devices where height and width are not applicable, the functions return {error,enotsup}. Potential incompatibility: If one has written a custom io-handler, the handler has to either return an error or take care of io-requests regarding terminal height and width. Usually that is no problem as io-handlers, as a rule of thumb, should give an error reply when receiving unknown io-requests, instead of crashing. OTP-6946 dbg could leave traced processes in a suspended state if the tracer process was killed with exit reason kill. erlang:suspend_process/2 has been introduced which accepts an option list as second argument. For more information see the erlang(3) documentation. Processes suspended via erlang:suspend_process/[1,2] will now be automatically resumed if the process that called erlang:suspend_process/[1,2] terminates. Processes could previously be suspended by one process and resumed by another unless someone was tracing the suspendee. This is not possible anymore. The process resuming a process has to be the one that suspended it. OTP-6951 driver_caller() can now also be used from the start callback of a driver. OTP-6961 The emulator can now be compiled for 64bit intel, as well as a 32bit universal binary on darwin/MacOSX 10.4 and 10.5. OTP-6967 file:write_file/3, file:write/2 and file:read/2 could crash (contrary to documentation) for odd enough file system problems, e.g write to full file system. This bug has now been corrected. In this process the file module has been rewritten to produce better error codes. Posix error codes now originate from the OS file system calls or are generated only for very similar causes (for example 'enomem' is generated if a memory allocation fails, and 'einval' is generated if the file handle in Erlang is a file handle but currently invalid). More Erlang-ish error codes are now generated. For example {error,badarg} is now returned from file:close/1 if the argument is not of a file handle type. See file(3). The possibility to write a single byte using file:write/2 instead of a list or binary of one byte, contradictory to the documentation, has been removed. OTP-6968 If open_port fails because all available ports are already in use, it will now throw a system_limit exception instead of an enfile exception. (enfile might still be thrown if the operating system would return ENFILE.) OTP-6974 Monitor messages produced by the system monitor functionality, and garbage collect trace messages could contain erroneous heap and/or stack sizes when the actual heaps and/or stacks were huge. As of erts version 5.6 the large_heap option to erlang:system_monitor/[1,2] has been modified. The monitor message is sent if the sum of the sizes of all memory blocks allocated for all heap generations is equal to or larger than the specified size. Previously the monitor message was sent if the memory block allocated for the youngest generation was equal to or larger than the specified size. OTP-6975 The spawn_monitor/1 and spawn_monitor/3 BIFs are now auto-imported (i.e. they no longer need an erlang: prefix). OTP-6994 On Windows, the werl window now handles resize, so that the whole window can be utilized. Text selection is also updated to be line oriented instead of rectangle oriented as in earlier versions. OTP-7001 Kqueue support (kernel-poll) has been enabled on FreeBSD. The problem with kqueue not detecting writes on a pipe on FreeBSD was actually not a kqueue issue, but a writev on pipes issue. Neither poll(), nor select() detected the write when the bug hit. NetBSD and DragonFlyBSD probably have or have had the same bug. This bug should have been fixed in FreeBSD 6.3 and FreeBSD 7.0 thanks to Jean-Sebastien Pedron. OTP-7003 inet:getopts/2 returned random values on Windows Vista. --- ic-4.2.15 ------------------------------------------------------------ OTP-6855 If an inherited function name begun with a capital letter the generated stub/skeleton oe_tc/1 function was incorrect. --- ic-4.2.16 ------------------------------------------------------------ OTP-6965 Added links to classes inherited from Jinterface in the User's Guide. --- inets-5.0 ------------------------------------------------------------ OTP-6485 [httpd, httpc] - Deprecated base64 decode/encode functions have been removed. Inets uses base64 in STDLIB instead. OTP-6572 [httpd] - It is now possible to restrict the length of acceptable URI:s in the HTTP server. OTP-6690 [httpc] - Profiles are now supported i.e. the options available in set_options/1 can be set locally for a certain profile and do not have to affect all HTTP-requests issued in the Erlang node. Calls to the HTTP client API functions not using the profile argument will use the default profile. OTP-6705 A new uniform Inets interface provides a flexible way to start/stop inets services and get information about running services. See inets(3). This also means that inflexibilities in the HTTP server has been removed and more default values has been added. OTP-6916 [tftp] Logged errors have been changed to be logged warnings. OTP-6982 [httpc] - The client will now return the proper value when receiving a HTTP 204 code instead of hanging. OTP-6993 The Inets application now has to be explicitly started and stopped i.e. it will not automatically be started as a temporary application as it did before. Although a practical feature when testing things in the shell it is not desirable that people take advantage of this and not start the Inets application in a correct way in their products. Added functions to the Inets API that call application:start/stop. --- inviso-0.5 ------------------------------------------------------------ OTP-6881 The following bugs/improvements have been done: Internal interworking between inviso_rt and inviso_rt_meta. The call function used by inviso_rt to call inviso_rt_meta is now protected with a monitor. Inviso_rt_meta now includes the timestamp of the incoming meta trace message when calling the call-callback. (Makes it possible to add a "better" timestamp to the ti-file.) Bug in inviso_tool making it not remove trace patterns when terminating. Bug in internal function h_start_session making inviso_tool crash if there were no active nodes to start the session on. The user-inviso_tool and inviso API-inviso control component request/response gen_server protocols had default time-out. Since many trace operations can be time consuming, a longer time-out is necessary. Improved overload protection. It is now possible to let the overload protection renew itself (e.g after an exit from an external overload protector). Inviso_rt_meta now fully uses the exception_trace match spec action term. Run Trace Case API (as in contrast to activate and deactivate trace case APIs) in inviso_tool. Flush trace-port API added to inviso. Get_session_data API added to inviso_tool. Improved inviso_tool:stop making it possible to name nodes which shall not have their trace patterns removed when inviso_tool terminates. Bug in handling of writing multiple ti-entries if returned from a call/return_from call-back in inviso_rt_meta Process trace flags are no longer explicitly removed by the inviso_tool when it terminates. Not necessary. Inviso_tool get_autostart_data adopted to standard autostarter. --- inviso-0.6 ------------------------------------------------------------ OTP-6918 In this release the following has been fixed and enhanced: Autostart: It is now possible to configure modules that shall be loaded by the autostart mechanism. This because it is not certain that all application systems make use of the OTP boot script to set up paths to all Erlang modules. Runtime_tools/Inviso: A bug in the fetch_log functionality has been fixed. Further a bug that was (supposedly) fixed in a previous patch concerning meta-tracer write_ti has been fixed (again) in this patch. A bug in inviso_as_lib making remote autostart config file updates fail has been fixed. Inviso: inviso_tool has been given a flush API. --- jinterface-1.4 ------------------------------------------------------------ OTP-6809 Jinterface has been updated to handle compressed terms, bitstring, new (IEEE) floats and bignums. This has caused a few incompatibilities. com.ericsson.otp.erlang.OtpOutputStream now extends java.io.ByteArrayOutputStream, previously java.lang.Object, and hence the method size() now return the number of bytes in the stream as dictated by the new parent class and not the buffer length as before. The new method length() returns what the old size() did return. The method count() is deprecated as it returns the same as the new size(). com.ericsson.otp.erlang.OtpErlangLong now can handle larger values than 64-bit. Previously when larger than 64-bit integers were sent to a Jinterface node, it caused an com.ericsson.otp.erlang.OtpDecodeException. Now the integer is accepted, but the return value of longValue() is silently truncated, as opposed to the return value of intValue() that now and previously raises an com.ericsson.otp.erlang.OtpRangeException for unrepresentable values. The new methods isLong() and isULong() can be used to determine if the value fits in a long. --- kernel-2.11.5.1 ------------------------------------------------------------ OTP-6745 The documentation of process_flag(priority, Level) has been updated, see the erlang(3) documentation. OTP-6789 Restored speed of bit-syntax matching of 32 bits integers. OTP-6800 The log_mf_h event handler didn't close the index file when it was done reading it causing a file descriptor leak. OTP-6806 The internal (rarely used) DNS resolver has been modified to not use the domain search list when asked to resolve an absolute name; a name with a terminating dot. There was also a bug causing it to create malformed DNS queries for absolute names that has been corrected, correction suggested by Scott Lystig Fritchie. The code has also been corrected to look up cached RRs in the same search order as non-cached, now allows having the root domain among the search domains, and can now actually do a zone transfer request. OTP-6811 zlib:close/1 would leave an EXIT message in the message queue if the calling process had the trap_exit flag enabled. OTP-6816 All exported functions in gzio.c have now been renamed to avoid conflict with drivers that are indirectly linked with an external zlib library. OTP-6817 Calling binary_to_term/1 with certain invalid binaries would crash the emulator. OTP-6818 The dict:size/1 and orddict:size/1 functions have been documented. --- kernel-2.11.5.2 ------------------------------------------------------------ OTP-6893 The kernel parameter dist_auto_connect once could fail to block a node if massive parallell sends were issued during a transient failure of network communication --- kernel-2.12 ------------------------------------------------------------ OTP-6291 A bug for raw files when reading 0 bytes returning 'eof' instead of empty data has been corrected. OTP-6836 A bug in gen_udp:fdopen reported by David Baird and also found by Dialyzer has been fixed. OTP-6853 Minor documentation corrections for file:pread/2 and file:pread/3. OTP-6884 Calling error_logger:tty(true) multiple times does not give multiple error log printouts. OTP-6886 The deprecated functions file:file_info/1, init:get_flag/1, init:get_flags/0, and init:get_args/0 have been removed. OTP-6931 The global name server now ignores nodeup messages when the command line flag -connect_all false has been used. (Thanks to Trevor Woollacott.) OTP-6933 The functions io:columns/0, io:columns/1, io:rows/0 and io:rows/1 are added to allow the user to get information about the terminal geometry. The shell takes some advantage of this when formatting output. For regular files and other io-devices where height and width are not applicable, the functions return {error,enotsup}. Potential incompatibility: If one has written a custom io-handler, the handler has to either return an error or take care of io-requests regarding terminal height and width. Usually that is no problem as io-handlers, as a rule of thumb, should give an error reply when receiving unknown io-requests, instead of crashing. OTP-6938 The undocumented and unsupported functions inet:ip_to_bytes/1, inet:ip4_to_bytes/1, inet:ip6_to_bytes/1, and inet:bytes_to_ip6/16 have been removed. OTP-6967 file:write_file/3, file:write/2 and file:read/2 could crash (contrary to documentation) for odd enough file system problems, e.g write to full file system. This bug has now been corrected. In this process the file module has been rewritten to produce better error codes. Posix error codes now originate from the OS file system calls or are generated only for very similar causes (for example 'enomem' is generated if a memory allocation fails, and 'einval' is generated if the file handle in Erlang is a file handle but currently invalid). More Erlang-ish error codes are now generated. For example {error,badarg} is now returned from file:close/1 if the argument is not of a file handle type. See file(3). The possibility to write a single byte using file:write/2 instead of a list or binary of one byte, contradictory to the documentation, has been removed. OTP-6970 Added new checksum combine functions to zlib. And fixed a bug in zlib:deflate. Thanks Matthew Dempsky. OTP-6974 Monitor messages produced by the system monitor functionality, and garbage collect trace messages could contain erroneous heap and/or stack sizes when the actual heaps and/or stacks were huge. As of erts version 5.6 the large_heap option to erlang:system_monitor/[1,2] has been modified. The monitor message is sent if the sum of the sizes of all memory blocks allocated for all heap generations is equal to or larger than the specified size. Previously the monitor message was sent if the memory block allocated for the youngest generation was equal to or larger than the specified size. OTP-6975 The spawn_monitor/1 and spawn_monitor/3 BIFs are now auto-imported (i.e. they no longer need an erlang: prefix). OTP-6983 All functions in the code module now fail with an exception if they are called with obviously bad arguments, such as a tuple when an atom was expected. Some functions now also fail for undocumented argument types (for instance, ensure_loaded/1 now only accepts an atom as documented; it used to accept a string too). Dialyzer will generally emit warnings for any calls that use undocumented argument types. Even if the call happens to still work in R12B, you should correct your code. A future release will adhere to the documentation. OTP-7003 inet:getopts/2 returned random values on Windows Vista. --- megaco-3.6.1 ------------------------------------------------------------ OTP-6803 An empty time-zone adjustement was incorrectly allowed when decoding SDP using megaco:decode_sdp/1. Also the parsing of attributes was to restrictive. --- megaco-3.6.2 ------------------------------------------------------------ OTP-6921 When timers expire while a connection cancel (megaco:cancel) is in progress, there is a raise condition possibillity. This has been eliminated. --- megaco-3.6.3 ------------------------------------------------------------ OTP-6992 Failure to parse SDP attribute FMTP rows. OTP-7000 Updated documentation for function megaco:connect/4. --- megaco-3.7 ------------------------------------------------------------ OTP-5979 Added support for the full v3-standard (including segmentation). OTP-6804 SDP support updated according to RFC 4566. OTP-6865 Added a way for the transport module to transfer extra information to the user callback module callback functions upon receipt of a message. This is done by adding an extra argument when calling the (new) message delivery function(s) process_received_message/5 or receive_message/5. Similarly, the UserReply part of the return value for the megaco:call function can now also include such extra information. OTP-6976 Improve the utility functions for information retrieval: megaco:info, megaco:system_info, megaco:conn_info and megaco:user_info. --- mnesia-4.3.6 ------------------------------------------------------------ OTP-6300 Rearranging fragmented tables is an O(N^2) operation. OTP-6903 A bug causing lots of records to be lost at startup from an installed fallback has been fixed. The bug did however not show up when a backup file generated with mnesia:backup/1 or mnesia:backup_checkpoint/2 was installed as fallback. In order to trigger the bug, the items in the backup file had to be rearranged in such an order that records from different tables were interleaved with each other. OTP-6904 Mnesia sometimes failed to commit schema operations on all nodes, this have been seen on smp machines but could happen on single processor as well with some bad timing. OTP-6908 mnesia:select/1 failed to return all matches on remote nodes if something was written to the table earlier in the same transaction. --- mnesia-4.3.7 ------------------------------------------------------------ OTP-6936 Removed a memory leak on ram-only nodes, introduced in mnesia-4.3.6. --- mnesia-4.4 ------------------------------------------------------------ OTP-6856 Mnesia's snmp operations snmp_get_row/2, snmp_get_next_index/2 and snmp_get_mnesia_key/2 have been made context aware, i.e. inside a transaction they will compensate for table updates made earlier in the same transaction. This might cause a performance drop if a lot of updates have been made before the invocation of these functions. OTP-6923 Introduced erlang:phash/2 as new default for fragmented tables. Already existing tables will continue to use whatever hash function they were using. OTP-6981 Mnesia ignored the module argument to mnesia:restore/2. Thanks Paul Minerio. --- odbc-2.0.9 ------------------------------------------------------------ OTP-6984 The odbc application now has to be explicitly started and stopped e.i. it will not automatically be started as a temporary application as it did before. Although a practical feature when testing things in the shell it is not desirable that people take advantage of this and not start the odbc application in a correct way in their products. Added functions to the odbc API that calls application:start/stop. OTP-6987 Changed Makefile.in so that odbc is not disabled on 64-bits architectures. It was earlier disabled due to that it had never been tested in that environment. --- orber-3.6.8 ------------------------------------------------------------ OTP-6844 When a local port range has been defined (i.e. iiop_out_ports), Orber set the socket option reuseaddr to true and after one timed out connection attempt no other port in the given range is used for that particular connect attempt. OTP-6868 The parameter ssl_client_ciphers was used on the server side as well instead of ssl_server_ciphers. OTP-6869 Possible to override global SSL parameters when using local interfaces. OTP-6912 The configuration parameter iiop_max_in_requests was ignored, until the first incoming request arrived, if iiop_packet_size was set at the same time. --- os_mon-2.1.3 ------------------------------------------------------------ OTP-6860 Extended memsup memory probing on linux to use a port program to probe memory usage. This is faster then the previous implementation. --- parsetools-1.4.2 ------------------------------------------------------------ OTP-6851 The size of the code generated by yecc has been reduced. A note regarding the includefile option: although yecc can cope with includefiles based on some earlier yeccpre.hrl it is recommended for efficiency reasons to update includefiles as to follow the pattern in the latest yeccpre.hrl. --- percept-0.5.0 ------------------------------------------------------------ OTP-6794 percept is a new application to profile concurrency. --- runtime_tools-1.6.7 ------------------------------------------------------------ OTP-6881 The following bugs/improvements have been done: Internal interworking between inviso_rt and inviso_rt_meta. The call function used by inviso_rt to call inviso_rt_meta is now protected with a monitor. Inviso_rt_meta now includes the timestamp of the incoming meta trace message when calling the call-callback. (Makes it possible to add a "better" timestamp to the ti-file.) Bug in inviso_tool making it not remove trace patterns when terminating. Bug in internal function h_start_session making inviso_tool crash if there were no active nodes to start the session on. The user-inviso_tool and inviso API-inviso control component request/response gen_server protocols had default time-out. Since many trace operations can be time consuming, a longer time-out is necessary. Improved overload protection. It is now possible to let the overload protection renew itself (e.g after an exit from an external overload protector). Inviso_rt_meta now fully uses the exception_trace match spec action term. Run Trace Case API (as in contrast to activate and deactivate trace case APIs) in inviso_tool. Flush trace-port API added to inviso. Get_session_data API added to inviso_tool. Improved inviso_tool:stop making it possible to name nodes which shall not have their trace patterns removed when inviso_tool terminates. Bug in handling of writing multiple ti-entries if returned from a call/return_from call-back in inviso_rt_meta Process trace flags are no longer explicitly removed by the inviso_tool when it terminates. Not necessary. Inviso_tool get_autostart_data adopted to standard autostarter. --- runtime_tools-1.6.8 ------------------------------------------------------------ OTP-6918 In this release the following has been fixed and enhanced: Autostart: It is now possible to configure modules that shall be loaded by the autostart mechanism. This because it is not certain that all application systems make use of the OTP boot script to set up paths to all Erlang modules. Runtime_tools/Inviso: A bug in the fetch_log functionality has been fixed. Further a bug that was (supposedly) fixed in a previous patch concerning meta-tracer write_ti has been fixed (again) in this patch. A bug in inviso_as_lib making remote autostart config file updates fail has been fixed. Inviso: inviso_tool has been given a flush API. --- runtime_tools-1.7 ------------------------------------------------------------ OTP-6939 The undocumented and unsupported function dbg:tracer/1 has been removed. The undocumented, unsupported, and broken function dbg:i/1 has been removed. OTP-6946 dbg could leave traced processes in a suspended state if the tracer process was killed with exit reason kill. erlang:suspend_process/2 has been introduced which accepts an option list as second argument. For more information see the erlang(3) documentation. Processes suspended via erlang:suspend_process/[1,2] will now be automatically resumed if the process that called erlang:suspend_process/[1,2] terminates. Processes could previously be suspended by one process and resumed by another unless someone was tracing the suspendee. This is not possible anymore. The process resuming a process has to be the one that suspended it. --- sasl-2.1.5.2 ------------------------------------------------------------ OTP-6998 Minor updates. --- snmp-4.9.4 ------------------------------------------------------------ OTP-6771 The snmp documentation source has been converted from SGML to XML. OTP-6784 [agent] Unexpected worker process termination. When the agent is multi-threaded (multi_thread = true), sending a request to the agent with an invalid context could lead to an unexpected worker process termination. This is a non-fatal problem since the master-agent would simply create a new worker process. --- snmp-4.9.5 ------------------------------------------------------------ OTP-6805 [agent] The order in which the processes in the snmp agent where terminated was incorrect. This could, in some case's, lead to incomming request(s) beeing processed during the application termination phase. This, in turn, could lead to various process crashes (when expected resources where no longer available). OTP-6815 [agent] In version 4.9.4 some requests could be handled single threaded regardless of the value of the multi_thread config option. --- snmp-4.9.6 ------------------------------------------------------------ OTP-6840 [compiler] The MIB compiler did not handle import of the macro from the MIB RFC1155-SMI. OTP-6843 Bad length check (i.e. none) when decoding AuthenticationParameters. --- snmp-4.10 ------------------------------------------------------------ OTP-6649 [agent] Added support for message filtering in the network interface module provided with the application. The component that actually make the filter decisions is the network interface filter module. This module must implement the network interface filter behaviour for message filtering. See also the Configuring the application chapter of the User's Guide to see how to configure this feature. OTP-6841 Add ability to modify Audit Trail Log type in run-time for both agent and manager. OTP-6898 Add ability to modify the request limit in run-time for both agent and manager. OTP-6945 Added buffer sizes (both receive and send) of the udp socket(s) when calling the snmpa:info and snmpm:info function(s). --- ssh-0.9.9.2 ------------------------------------------------------------ OTP-6727 The caller was hanged when listening with ssh_sshd:listen (or ssh_sftpd:listen) on a port and IP already in use. Now an error is returned instead. Cd ../.. didn't work when connecting to a ssh_sftpd server. --- ssl-3.9 ------------------------------------------------------------ OTP-4677 All inet options are available in the new ssl implementation that is released as a alpha in ssl-3.9 and will replace the old implementation in ssl-4.0. This will not be fixed in the old implementation. OTP-5510 The new ssl implementation released as a alpha in this version supports upgrading of a tcp connection to a ssl connection so that http client and servers may implement RFC 2817. OTP-6619 A new implementation of ssl is released as a alpha version in ssl-3.9 it will later replace the old implementation in ssl-4.0. The new implementation can be accessed by providing the option {ssl_imp, new} to the ssl:connect and ssl:listen functions. The new implementation is Erlang based and all logic is in Erlang and only payload encryption calculations are done in C via the crypto application. The main reason for making a new implementation is that the old solution was very crippled as the control of the ssl-socket was deep down in openssl making it hard if not impossible to support all inet options, ipv6 and upgrade of a tcp connection to a ssl connection. The alpha version has a few limitations that will be removed before the ssl-4.0 release. Main differences and limitations in the alpha are listed below. The new ssl requires the crypto application. The option reuseaddr is supported and the default value is false as in gen_tcp. Old ssl is patched to accept that the option is set to true to provide a smoother migration between the versions. In old ssl the option is hard coded to true. ssl:version/0 is replaced by ssl:versions/0 ssl:ciphers/0 is replaced by ssl:cipher_suites/0 ssl:pid/1 is a meaningless function in new ssl and will be deprecated in ssl-4.0 until it is removed it will return a valid but meaningless pid. New API functions are ssl:shutdown/2, ssl:cipher_suites/[0,1] and ssl:versions/0 Diffie-Hellman keyexchange is not supported. Not all inet packet types are supported. CRL and policy certificate extensions are not supported. In this alpha only sslv3 is enabled, although tlsv1 and tlsv1.1 versions are implemented and will be supported in future versions. For security reasons sslv2 is not supported. OTP-6637 New ssl implementation, released as alpha in ssl-3.9, supports ipv6. It will not be supported in the old implementation. OTP-6926 ssl_prim.erl was passing an FD rather than an #sslsocket to ssl_broker:ssl_accept_prim. This could cause problems in the deprecated accept function, this will not cause any more problems however this function is deprecated! --- stdlib-1.14.5.1 ------------------------------------------------------------ OTP-6745 The documentation of process_flag(priority, Level) has been updated, see the erlang(3) documentation. OTP-6789 Restored speed of bit-syntax matching of 32 bits integers. OTP-6800 The log_mf_h event handler didn't close the index file when it was done reading it causing a file descriptor leak. OTP-6806 The internal (rarely used) DNS resolver has been modified to not use the domain search list when asked to resolve an absolute name; a name with a terminating dot. There was also a bug causing it to create malformed DNS queries for absolute names that has been corrected, correction suggested by Scott Lystig Fritchie. The code has also been corrected to look up cached RRs in the same search order as non-cached, now allows having the root domain among the search domains, and can now actually do a zone transfer request. OTP-6811 zlib:close/1 would leave an EXIT message in the message queue if the calling process had the trap_exit flag enabled. OTP-6816 All exported functions in gzio.c have now been renamed to avoid conflict with drivers that are indirectly linked with an external zlib library. OTP-6817 Calling binary_to_term/1 with certain invalid binaries would crash the emulator. OTP-6818 The dict:size/1 and orddict:size/1 functions have been documented. --- stdlib-1.14.5.2 ------------------------------------------------------------ OTP-6834 The compiler will for forward compatibility ignore the -type() and -spec() attributes that will be introduced in the R12B release. --- stdlib-1.14.5.3 ------------------------------------------------------------ OTP-6861 The allowed syntax for -type() and -spec() was updated. --- stdlib-1.15 ------------------------------------------------------------ OTP-3954 The behaviour of the internal functions gen:call/3,4 has been changed slightly in the rare case that when the caller was linked to the called server, and the server crashed during the call; its exit signal was consumed by the gen:call/3,4 code and converted to an exit exception. This exit signal is no longer consumed. To even notice this change, 1) the calling process has to be linked to the called server. 2) the call must not be remote by name that is it must be local or remote by pid, local by name or global by name. 3) the calling process has to have set process_flag(trap_exit, true). 4) the server has to crash during the call. 5) the calling process has to be sensitive to getting previously consumed {'EXIT',Pid,Reason} messages in its message queue. The old behaviour was once the only way for a client to notice if the server died, but has since erlang:monitor(process, {Name,Node}) was introduced and used in gen:call been regarded as an undesired behaviour if not a bug. The affected user APIs are: gen_server:call/2,3, gen_fsm:sync_send_event/2,3, gen_fsm:sync_send_all_state_event/2,3, gen_event:_, sys:_ and maybe a few others that hardly will be noticed. OTP-6554 When an exception occurs the Erlang shell now displays the class, the reason, and the stacktrace in a clearer way (rather than dumping the raw EXIT tuples as before). proc_lib:format/1 displays the exception of crash reports in the same clearer way. The new shell command catch_exception and the new application configuration parameter shell_catch_exception can be used for catching exceptions that would normally exit the Erlang shell. OTP-6671 The function string:join/2 joins strings in a list with a separator. Example: 'string:join(["a", "b", "c"], ", ") gives "a, b, c"' OTP-6673 Bugs have been fixed in qlc: Setting the lookup_fun option of qlc:table/2 to undefined could cause a crash. If a QLC restricted some column of a table in such a way that a traversal using a match specification was possible and the QLC also compared the key column or some indexed column of the the table with a column of some other table, qlc always chose to traverse the table first, never considering lookup join. This has been changed so that lookup join is always preferred; if an initial traversal using the match specification is desired, the query needs to be rewritten introducing an extra QLC with the filter(s) restricting the column. When trying to find candidates for match specifications and lookup, filters using variables from one generator only are ignored unless they are placed immediately after the generator and possibly other filters using variables from the same generator. In particular, filters joining two tables should not be placed between the generator and the filters using the generator only. The call-back function TraverseFun used for implementing QLC tables is allowed to return a term other than a list since STDLIB 1.14 (OTP-5195). However, when the returned term was a fun qlc often tried to call the fun instead of returning it. A few minor optimizations have been implemented as well. OTP-6708 The control sequence P of the Format argument of the functions io:fwrite/2,3 and io_lib:fwrite/2 now inserts fewer line breaks when printing tuples and lists. A soft upper limit of 60 on the number of non-white characters on a line has been introduced. OTP-6733 The new module array provides a fast functional array implementation. OTP-6785 A bug concerning the use of parameterized modules from the shell has been fixed. OTP-6787 A bug regarding the size expression of the bit syntax has been fixed in the erl_eval module. OTP-6800 The log_mf_h event handler didn't close the index file when it was done reading it causing a file descriptor leak. OTP-6845 Functions that have long been deprecated have now been removed from the following modules: dict, erl_eval, erl_pp, io, io_lib, lists, orddict, ordsets, sets, and string. The undocumented function lists:zf/3 has also been removed (use a list comprehension or lists:zf/2 instead). OTP-6853 Minor documentation corrections for file:pread/2 and file:pread/3. OTP-6870 Definitions for the filename() and dirname() types have been added to the documentation for the filelib module. OTP-6906 The ets:fixtable/2 function, which has been deprecated for several releases, has been removed. The ets:info/1 function has been reimplemented as a BIF, which guarantees that information returned is consistent. The ets:info/2 function now fails with reason badarg if the second argument is invalid. (Dialyzer can be used to find buggy code where the second argument is misspelled.) OTP-6911 The Erlang pretty printer erl_pp now inserts more newlines in order to facilitate line coverage analysis by Cover. (Thanks to Thomas Arts.) OTP-6928 The documentation for ets:safe_fixtable/2, ets:foldl/3, and ets:foldr/3 is now clearer about what will happen if objects are inserted during table traversals. OTP-6943 It is now possible to extract files in tar files directly into binaries. It is also possible to add files to tar files directly from binaries. OTP-6953 The functions keystore/4 and keytake/3 are new in the lists module. OTP-6964 The new qlc option tmpdir_usage can be used for outputting messages onto the error logger when a temporary file is about to be created, or to prohibit the usage of temporary files altogether. OTP-6967 file:write_file/3, file:write/2 and file:read/2 could crash (contrary to documentation) for odd enough file system problems, e.g write to full file system. This bug has now been corrected. In this process the file module has been rewritten to produce better error codes. Posix error codes now originate from the OS file system calls or are generated only for very similar causes (for example 'enomem' is generated if a memory allocation fails, and 'einval' is generated if the file handle in Erlang is a file handle but currently invalid). More Erlang-ish error codes are now generated. For example {error,badarg} is now returned from file:close/1 if the argument is not of a file handle type. See file(3). The possibility to write a single byte using file:write/2 instead of a list or binary of one byte, contradictory to the documentation, has been removed. OTP-6977 A bug concerning the evaluation of the ++/2 operator has been fixed in erl_eval. (Thanks to Matthew Dempsky.) --- test_server-3.2.0 ------------------------------------------------------------ OTP-6989 Test Server is a portable test server for automated application testing. The server can run test suites on local or remote targets and log progress and results to HTML pages. The main purpose of Test Server is to act as engine inside customized test tools. A callback interface for such framework applications is provided. --- tools-2.6 ------------------------------------------------------------ OTP-6758 The cover tool could use huge amounts of memory when used in a distributed system. --- webtool-0.8.3.2 ------------------------------------------------------------ OTP-6998 Minor updates. --- xmerl-1.1.5 ------------------------------------------------------------ OTP-6720 The head of a substitutionGroup may have type anyType and thus allow members of any type. This was overseen, but is now corrected. OTP-6739 A recursive group reference in a redefine refers to the definition in the redefined schema. See 4.2.2 in XMLSchema part1 "Schema Representation Constraint: Individual Component Redefinition" bullet 2. OTP-6752 Solved some content model problems, for instance in some cases failed when more than one choice. --- xmerl-1.1.6 ------------------------------------------------------------ OTP-6773 Parsing XML with option {validation,schema} is now corrected. OTP-6877 union type is now supported OTP-6910 Now xmerl validates as expected when a sequence has a present group member and a following element.