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.