Major relese : otp_src_R13A
Build date : 2009-03-17
R13A is a beta release of the next R13B major release.
We do not recommend it for use in live products.
In the R13B release, there may be incompatibilities
in new features that were introduced in this R13A release
(for instance in the Unicode support).
You can download the full source distribution from
http://www.erlang.org/download/otp_src_R13A.tar.gz
http://www.erlang.org/download/otp_src_R13A.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_R13A.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_R13A.tar.gz
http://www.erlang.org/download/otp_doc_man_R13A.tar.gz
We also want to thank those that sent us patches, suggestions and bug
reports,
The OTP Team
--- HIGHLIGHTS ------------------------------------------------------------
OTP-7463 The inets http client will now use persistent
connections without pipelining as default and if a pipeline
timeout is set it will pipeline the requests on the
persistent connections.
OTP-7500 The runtime system with SMP support now uses multiple,
scheduler specific run queues, instead of one globally shared
run queue.
The lock protecting the shared run queue was heavily
contended, and the shared run queue also caused Erlang
processes to randomly migrate between schedulers with
negative cache effects as a result.
With the current scheduler specific run queue solution, lock
contention due to run queue protection has been reduced, and
Erlang processes are only migrated when needed to balance the
load between the schedulers. The reduced amount of migration
also reduce lock contention on locks protecting the scheduler
specific instances of the erts internal memory allocators.
The scheduler specific run queues are also a necessity for a
lot of future planned NUMA (Non-Uniform Memory Access)
specific optimizations.
OTP-7511 The conf case in Test Server has been extended with
properties that make it possible to execute test cases in
parallel, in sequence and in shuffled order. It is now also
possible to repeat test cases according to different
criteria. The properties can be combined, making it possible
to e.g. repeat a conf case a certain number of times and
execute the test cases in different (random) order every
time. The properties are specified in a list in the conf case
definition: {conf, Properties, InitCase, TestCases, EndCase}.
The available properties are: parallel, sequence, shuffle,
repeat, repeat_until_all_ok, repeat_until_any_ok,
repeat_until_any_fail, repeat_until_all_fail.
OTP-7571 The snmp application: A proper discover procedure has been
implemented.
OTP-7648 Support for Unicode is implemented as described in EEP10.
Formatting and reading of unicode data both from terminals
and files is supported by the io and io_lib modules. Files
can be opened in modes with automatic translation to and from
different unicode formats. The module 'unicode' contains
functions for conversion between external and internal
unicode formats and the re module has support for unicode
data. There is also language syntax for specifying string and
character data beyond the ISO-latin-1 range.
The interactive shell will support input and output of
unicode characters when the terminal and operating system
supports it.
Please see the EEP and the io/io_lib manual pages as well as
the stdlib users guide for details.
I/O-protocol incompatibilities:
The io_protocol between io_Server and client is updated to
handle protocol data in unicode formats. The updated protocol
is now documented. The specification resides in the stdlib
users manual, which is a new part of the manual.
io module incompatibilities:
The io:put_chars, io:get_chars and io:get_line all handle and
return unicode data. In the case where binaries can be
provided (as to io:put_chars), they shall be encoded in
UTF-8. When binaries are returned (as by
io:get_line/get_chars when the io_server is set in binary
mode) the returned data is also always encoded as UTF-8. The
file module however still returns byte-oriented data, why
file:read can be used instead of io:get_chars to read binary
data in ISO-latin-1.
io_lib module incompatibilities:
io_lib:format can, given new format directives (i.e "~ts" and
"~tc"), return lists containing integers larger than 255.
OTP-7748 The short-circuit operators andalso and orelse no longer
guarantees that their second argument is either true or
false. As a consequence, andalso/orelse are now
tail-recursive.
OTP-7826 Nodes belonging to different independent clusters can now
co-exist on the same host with the help of a new environment
variable setting ERL_EPMD_PORT.
OTP-7836 [manager] A major flaw was discovered with the agent
handling.
First, TargetName was never used as intended, as a unique
identifier for the target (agent in this case).
Second, TargetName had a *default value*, which meant that
several agents could have the same TargetName, causing
unpredictable behaviour in the manager.
Third, EngineID was not a mandatory config option and had
furthermore also a *default value*.
These problems has been solved in the following way: First, a
new set of api functions has been introduced (and
documented): snmpm:register_user/4,
snmpm:register_user_monitor/4, snmpm:register_agent/3,
snmpm:unregister_agent/2, snmpm:agent_info/2,
snmpm:update_agent_info/4, snmpm:sync_get/3,4,5,6,
snmpm:async_get/3,4,5,6, snmpm:sync_get_next/3,4,5,6,
snmpm:async_get_next/3,4,5,6, snmpm:sync_set/3,4,5,6,
snmpm:async_set/3,4,5,6, snmpm:sync_get_bulk/5,6,7,8,
snmpm:async_get_bulk/5,6,7,8 that all use TargetName (and
not, as previously, Addr and Port) to identify the agent
(also snmpm:which_agents/0 has been changed).
Second, for backward compatibility, the old functions still
exist, but are no longer documented and are now wrappers for
the new functions, including erroneous default value for
EngineID and all. The TargetName is however generated from
the Addr, Port and Version provided in the config options.
Third, the behaviour of the SNMP manager user (snmpm_user)
has been changed to reflect this, i.e. handle_pdu/4,
handle_trap/3, handle_inform/3 and handle_report/3. Also the
the return-value of handle_agent/4. The old (non-documented)
callback-functions (using Addr and Port) will still be called
if the agent was registered using the old registration
functions.
OTP-7839 Test case groups have been introduced. With this feature it's
possible to execute groups (possibly nested) of test cases,
each group wrapped with a call to function init_per_group/2
and end_per_group/2. Group definitions are done by means of
the new call-back function groups/0, which should return a
list of definitions. A group definition contains a name tag,
a list of properties and a list of test cases (including
possible nested group definitions). The properties make it
possible to execute test cases in parallel, in sequence and
in shuffled order. It is also possible to repeat test cases
according to different criteria. The properties can be
combined, making it possible to e.g. repeat a conf case a
certain number of times and execute the test cases in
different (random) order every time. Available properties
are: parallel, sequence, shuffle, repeat,
repeat_until_all_ok, repeat_until_any_ok,
repeat_until_any_fail and repeat_until_all_fail. Please see
the Common Test User's Guide for details.
OTP-7859 A first beta release of wxErlang.
OTP-7864 The analysis accepts opaque type declarations and detects
violations of opaqueness of terms of such types. Starting
with R13, many Erlang/OTP standard libraries (array, dict,
digraph, ets, gb_sets, gb_trees, queue, and sets) contain
opaque type declarations of their main data types. Dialyzer
will spit out warnings in code that explicitly depends on the
structure of these terms.
Added support for handling UTF segments in bitstreams and for
detecting obvious type errors in these segments. Warning:
This code is not terribly tested though since there are very
few Erlang programs which use Unicode-based binaries - not
surprising since this is a new language feature of R13.
Strengthened the discrepancy identification when testing for
equality and matching between terms of different types. This
detects more bugs in code.
Added warning for M:F(...) calls where M is not a module term
and F is not an atom. Previously, such calls where found to
fail but the reason for the failure was not reported.
Added a convenient shorthand for the --no_check_plt option
(-n).
Added the --dump_callgraph option for dumping the callgraph
of all files that are analyzed into a specified file. The
callgraph either be dumped in raw format, in .dot format, or
converted to a .ps (postscript) file. Note that in large
callgraphs the generated postscript file might not be
interpretable by Ghostview. (Thanks to Ilya Khlopotov for the
initial version of this functionality.)
--- documentation ------------------------------------------------------------
OTP-7686 An example in Getting Started With Erlang has been corrected.
(Thanks to Xynos K (AT).)
OTP-7779 A section about the '--' operator has been added under
"Common Caveats".
OTP-7855 The escape sequences \x and \{ have been assigned new
interpretations (they used to return the ASCII code for x and
{ respectively). One or more octal characters inside curly
brackets after a leading backslash is from now on an
alternative to the existing syntax \NNN, but can also be used
for codes greater than 255. In a similar fashion, one or more
hexadecimal characters can be put inside curly brackets after
a leading \x. Furthermore, the escape sequences \xH and \xHH,
where N is a hexadecimal character, can be used for codes
less than 256.
NOTE: These new escape sequences are still considered
experimental and may be changed in the R13B release.
--- otp ------------------------------------------------------------
OTP-7606 Various additions to configure script due to requests from
open source customers:
- configure --enable-m64-build
will try to add -m64 to compile and link commands where
appropriate regardless of platform. Darwin (MacOS X) users
should still use --enable-darwin-64bit though.
- configure --enable-dynamic-ssl is now default (but binary
distributions are still built with
--disable-dynamic-ssl)
- If m4 is not found on the
system, hipe will not be built.
--- appmon-2.1.10.1 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- asn1-1.6.3 ------------------------------------------------------------
OTP-7678 Can now handle default values of simple types that is
provided on its own format, i.e. not just as asn1_DEFAULT.
OTP-7681 constrained number with a valuerange greater than 512 now has
the proper interpretation of the values that causes shift to
the next number of units (bits), According to limit condition
2^m < "range" =< 2^(m + 1) then the number of bits are m + 1.
--- asn1-1.6.4 ------------------------------------------------------------
OTP-7708 A a SEQUENCE OF with a type that is a CHOICE with ellipses
occured falsely a compile error. The error causing that is
now removed.
--- asn1-1.6.5 ------------------------------------------------------------
OTP-7734 For a BIT STRING with SIZE constraint higher than 255
compiled with [per_bin,optimize, compact_bit_string]
an improper io-list was created and sent to the c-driver for
complete encoding. This error has been resolved.
--- asn1-1.6.6 ------------------------------------------------------------
OTP-7759 Decode of an open_type when the value was empty tagged type
encoded with indefinite length failed. This is now corrected.
OTP-7763 Encode of BIT STRING with size of exact length, on
compact_bit_string format in UNALIGNED PER failed when value
had the right size, i.e. no padding needed.
--- asn1-1.6.8 ------------------------------------------------------------
OTP-7876 A BIT STRING with a size constraint that has a single value
and an extension as in BIT STRING (SIZE (16,...)) was
erroneous encoded/decoded. This is now corrected and follows
X.691 Section 15.6.
--- common_test-1.3.5 ------------------------------------------------------------
OTP-7663 It is now possible for the Common Test user to disable the
auto-compile feature. This is done by specifying the run_test
flag -no_auto_compile, or the ct:run_test/1 option
{auto_compile,false}.
OTP-7749 If the Erlang runtime system was started without access to an
erlang shell (e.g. -noshell), compilation errors would cause
a crash in the Common Test application. Without access to a
shell, Common Test can not promt the user to choose to
continue or abort the test session, but must assume that the
session should proceed.
OTP-7758 A new function, ct:get_config/3, has been added to Common
Test that makes it possible to - if a particular config
variable has been defined in multiple config files - return
all matching values for the variable. The order of the
elements in the returned list is the same as the specified
order of the config files.
OTP-7781 Because a telnet connection was always identified by a config
variable alias, it was impossible to open multiple
connections using the same telnet host data entry in the
config file. This limitation has been removed by making it
possible to associate a connection with handle value only
(i.e. multiple connections may be opened using the same
config variable). See ct_telnet:open/4 for details.
OTP-7782 A new syntax for defining default config data values has been
introduced. In previous versions of Common Test, to define
and access a default value for a config variable (in the
suite info- or test case info function), an alias name had to
be used. With the new syntax you may define default values
without reference to aliases, like this:
{default_config,VarName,DefaultValue}. Please see the User's
Guide for more info.
OTP-7783 In previous versions of Common Test, whenever a config
variable got associated with a name (by means of a require
statement), the config variable name was replaced with the
new name. This introduced unwanted dependencies between test
cases (e.g. if one test case would introduce a new name, the
following test cases could no longer access the config data
by means of the original variable). This functionality has
now been updated so that when new names are introduced with
require, they become aliases (references) instead of
replacements. Hence, config data elements can always, at any
time, be accessed by means of the original config variable
names.
--- common_test-1.3.6 ------------------------------------------------------------
OTP-7750 When running a test which includes all suites in a test
directory, if the auto compilation would fail for one suite,
all following suites would be excluded from the test. This
was an unwanted behaviour and has been corrected. Now all
suites will always be compiled and only the failing ones
excluded from the test (and logged as missing).
OTP-7800 The step functionality in Common Test (based on interaction
with Debugger) was broken. This has been fixed, and some new
step features have also been added. Please see the Common
Test User's Guide for details.
OTP-7803 It is now possible for the user to specify include
directories that Common Test will pass along to the compiler
when suite and help modules are being compiled (which Common
Test performs automatically before running tests).
--- common_test-1.4 ------------------------------------------------------------
OTP-7838 A support client module for SSH and SFTP, ct_ssh, has been
introduced in Common Test.
OTP-7839 Test case groups have been introduced. With this feature it's
possible to execute groups (possibly nested) of test cases,
each group wrapped with a call to function init_per_group/2
and end_per_group/2. Group definitions are done by means of
the new call-back function groups/0, which should return a
list of definitions. A group definition contains a name tag,
a list of properties and a list of test cases (including
possible nested group definitions). The properties make it
possible to execute test cases in parallel, in sequence and
in shuffled order. It is also possible to repeat test cases
according to different criteria. The properties can be
combined, making it possible to e.g. repeat a conf case a
certain number of times and execute the test cases in
different (random) order every time. Available properties
are: parallel, sequence, shuffle, repeat,
repeat_until_all_ok, repeat_until_any_ok,
repeat_until_any_fail and repeat_until_all_fail. Please see
the Common Test User's Guide for details.
OTP-7842 It is now possible to use DES3 encrypted configuration files
with Common Test.
OTP-7853 In previous versions of Common Test, only one FTP connection
could be opened per configuration target name. This has been
updated so that multiple connections may be opened. The
possibility to use named connections is still supported.
OTP-7856 The Erlang mode for Emacs has been updated with new and
modified skeletons for Common Test and TS. Syntax for test
case groups in Common Test (and conf cases with properties in
TS) has been added and a new minimal Common Test suite
skeleton has been introduced.
--- compiler-4.6 ------------------------------------------------------------
OTP-7650 The compiler could crash if the size for a binary segment in
matching was a complex literal such as binary or tuple.
OTP-7655 The compiler generates more compact and faster code for
matching of complex constants (such as constant lists and
tuples).
OTP-7673 The undocumented, unsupported, and deprecated guard BIF
is_constant/1 has been removed.
OTP-7679 For some complex guards which used andalso/orelse, the
compiler would crash. (Thanks to Hunter Morris.)
OTP-7690 Code that (incorrectly) used the the value of nested
applications of setelement/3 in bit syntax construction could
crash the compiler.
OTP-7707 Modules containing huge integers (consisting of several
hundreds of thousands of digits or more) could be slow to
compile. This problem has been corrected.
OTP-7718 The compiler generates better code for many guard
expressions, and especially for guards that use
andalso/orelse or record fields.
(In technical terms, andalso/orelse in a guard would case the
creation of a stack frame and saving of all x registers that
could potentially be alive after the guard and restoring all
x registers before leaving the guard. For certain guards, far
too many x registers were saved and subsequently restored. In
this version of the compiler, no stack frame is created and
no x registers are saved and restored.)
OTP-7737 The default size for the resulting binary created by a binary
comprehension was 64Kb in R12B (it would grow if needed).
This was often far too much. In this release, the default is
changed to 256 bytes. Furthermore, for most binary
comprehensions without filters, the exact size of the
resulting binary can be calculated beforehand and the
compiler now generates code that does that calculation.
OTP-7748 The short-circuit operators andalso and orelse no longer
guarantees that their second argument is either true or
false. As a consequence, andalso/orelse are now
tail-recursive.
OTP-7793 The compiler will refuse to a compile file where the module
name in the file differs from the output file name.
When compiling using erlc, the current working directory will
no be included in the code path (unless explicitly added
using "-pa .").
OTP-7844 If the generator in a list comprehension is given a non-list
term, there will now be function_clause exception instead of
a case_clause exception (as it was in all releases before
R12B).
OTP-7846 There will no longer be any warnings for list comprehensions
without generators, as such list comprehension have turned
out to be useful.
OTP-7850 Warnings for obsolete guard tests are now turned on. (That
is, writing list(L) in a guard instead of is_list(L) will
generate a warning.)
The warnings can be turned off using the
nowarn_obsolete_guard option.
OTP-7851 The copyright notices have been updated.
OTP-7873 If a module contains an exported function with the same name
as an auto-imported BIF (such as length/1), any calls to the
BIF must have an explicit erlang: prefix, or there will be a
compilation error (such calls would only generate a warning
in previous releases).
(The reason for the change is to avoid breaking code in a
future major release, R14 or R15, in which we plan to make
calls without a module prefix always call the local function
in the same module even if there is an auto-imported BIF with
the same name.)
--- cosEvent-2.1.5 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosEventDomain-1.1.5 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosFileTransfer-1.1.7 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosNotification-1.1.10 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosProperty-1.1.8 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosTime-1.1.5 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- cosTransactions-1.2.6 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- crypto-1.6 ------------------------------------------------------------
OTP-7674 The dh_compute_key sometimes returned a SharedSecret of
incorrect size.
OTP-7762 Optimization for drivers by creating small binaries direct on
process heap.
--- debugger-3.1.1.5 ------------------------------------------------------------
OTP-7750 When running a test which includes all suites in a test
directory, if the auto compilation would fail for one suite,
all following suites would be excluded from the test. This
was an unwanted behaviour and has been corrected. Now all
suites will always be compiled and only the failing ones
excluded from the test (and logged as missing).
OTP-7800 The step functionality in Common Test (based on interaction
with Debugger) was broken. This has been fixed, and some new
step features have also been added. Please see the Common
Test User's Guide for details.
OTP-7803 It is now possible for the user to specify include
directories that Common Test will pass along to the compiler
when suite and help modules are being compiled (which Common
Test performs automatically before running tests).
--- debugger-3.2 ------------------------------------------------------------
OTP-7366 Added a new gui, start with debugger:start(gs) for old gui.
OTP-7673 The undocumented, unsupported, and deprecated guard BIF
is_constant/1 has been removed.
--- dialyzer-1.9.0 ------------------------------------------------------------
OTP-7864 The analysis accepts opaque type declarations and detects
violations of opaqueness of terms of such types. Starting
with R13, many Erlang/OTP standard libraries (array, dict,
digraph, ets, gb_sets, gb_trees, queue, and sets) contain
opaque type declarations of their main data types. Dialyzer
will spit out warnings in code that explicitly depends on the
structure of these terms.
Added support for handling UTF segments in bitstreams and for
detecting obvious type errors in these segments. Warning:
This code is not terribly tested though since there are very
few Erlang programs which use Unicode-based binaries - not
surprising since this is a new language feature of R13.
Strengthened the discrepancy identification when testing for
equality and matching between terms of different types. This
detects more bugs in code.
Added warning for M:F(...) calls where M is not a module term
and F is not an atom. Previously, such calls where found to
fail but the reason for the failure was not reported.
Added a convenient shorthand for the --no_check_plt option
(-n).
Added the --dump_callgraph option for dumping the callgraph
of all files that are analyzed into a specified file. The
callgraph either be dumped in raw format, in .dot format, or
converted to a .ps (postscript) file. Note that in large
callgraphs the generated postscript file might not be
interpretable by Ghostview. (Thanks to Ilya Khlopotov for the
initial version of this functionality.)
--- docbuilder-0.9.8.5 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- edoc-0.7.6.3 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- erl_interface-3.6 ------------------------------------------------------------
OTP-7826 Nodes belonging to different independent clusters can now
co-exist on the same host with the help of a new environment
variable setting ERL_EPMD_PORT.
--- erts-5.6.5.1 ------------------------------------------------------------
OTP-7641 When chunk reading a disk log opened in read_only mode,
bad terms could crash the disk log process.
OTP-7665 A corrected bug in ets for bag and duplicate_bag. A delete/2 or
lookup_element/3 could miss objects in a fixed table
if one or more objects with the same key had already been
deleted.
OTP-7682 A bug fixed for TCP sockets with option {packet,http}.
An HTTP request with an absolute URI was returned with a
corrupt path string. This bug did only exist in R12B-4 and
R12B-5.
OTP-7731 Calling gen_tcp:send() from several processes on
socket with option send_timeout could lead to much
longer timeout than specified. The solution is a new socket
option {send_timeout_close,true} that will do
automatic close on timeout. Subsequent calls to send will
then immediately fail due to the closed connection.
OTP-7738 A process being garbage collected via the
garbage_collect/1 BIF or the
check_process_code/2 BIF didn't handle message receive
and resume correctly during the garbage collect. When this
occurred, the process returned to the state it had before the
garbage collect instead of entering the new state.
--- erts-5.7 ------------------------------------------------------------
OTP-7339 The order of objects visited in select for ordered_set is now
documented.
OTP-7500 The runtime system with SMP support now uses multiple,
scheduler specific run queues, instead of one globally shared
run queue.
The lock protecting the shared run queue was heavily
contended, and the shared run queue also caused Erlang
processes to randomly migrate between schedulers with
negative cache effects as a result.
With the current scheduler specific run queue solution, lock
contention due to run queue protection has been reduced, and
Erlang processes are only migrated when needed to balance the
load between the schedulers. The reduced amount of migration
also reduce lock contention on locks protecting the scheduler
specific instances of the erts internal memory allocators.
The scheduler specific run queues are also a necessity for a
lot of future planned NUMA (Non-Uniform Memory Access)
specific optimizations.
OTP-7609 OpenSource:
FreeBSD leap-seconds are handled according to patch submitted
by OpenSource user Kenji Rikitake. No test case covers this
functionality (unsupported platform).
OTP-7648 Support for Unicode is implemented as described in EEP10.
Formatting and reading of unicode data both from terminals
and files is supported by the io and io_lib modules. Files
can be opened in modes with automatic translation to and from
different unicode formats. The module 'unicode' contains
functions for conversion between external and internal
unicode formats and the re module has support for unicode
data. There is also language syntax for specifying string and
character data beyond the ISO-latin-1 range.
The interactive shell will support input and output of
unicode characters when the terminal and operating system
supports it.
Please see the EEP and the io/io_lib manual pages as well as
the stdlib users guide for details.
I/O-protocol incompatibilities:
The io_protocol between io_Server and client is updated to
handle protocol data in unicode formats. The updated protocol
is now documented. The specification resides in the stdlib
users manual, which is a new part of the manual.
io module incompatibilities:
The io:put_chars, io:get_chars and io:get_line all handle and
return unicode data. In the case where binaries can be
provided (as to io:put_chars), they shall be encoded in
UTF-8. When binaries are returned (as by
io:get_line/get_chars when the io_server is set in binary
mode) the returned data is also always encoded as UTF-8. The
file module however still returns byte-oriented data, why
file:read can be used instead of io:get_chars to read binary
data in ISO-latin-1.
io_lib module incompatibilities:
io_lib:format can, given new format directives (i.e "~ts" and
"~tc"), return lists containing integers larger than 255.
OTP-7649 The format of the string returned by
erlang:system_info(system_version) (as well as the first
message when Erlang is started) has changed. The string now
contains the both the OTP version number as well as the erts
version number.
OTP-7659 Message passing has been further optimized for parallel
execution. Serial message passing is slightly more expensive
than before, but parallel send to a common receiver is much
cheaper.
OTP-7660 Lock contention on the atom table lock when decoding Erlang
terms on the external format has been drastically reduced.
OTP-7665 A corrected bug in ets for bag and duplicate_bag. A delete/2
or lookup_element/3 could miss objects in a fixed table if
one or more objects with the same key had already been
deleted.
OTP-7670 A new driver call-back stop_select is introduced to allow
drivers to de-select and then close a file descriptor in a
safe way in a SMP emulator. The old way was not strictly
according to posix standard and could in some rare cases lead
to unexpected behavior. A new flag ERL_DRV_USE can be passed
to driver_select() to tell it that the descriptor should be
closed. stop_select is then called when it is safe to do so.
Old drivers will however still work as before.
OTP-7673 The undocumented, unsupported, and deprecated guard BIF
is_constant/1 has been removed.
OTP-7682 A bug fixed for TCP sockets with option {packet,http}. An
HTTP request with an absolute URI was returned with a corrupt
path string. This bug did only exist in R12B-4 and R12B-5.
OTP-7688 run_erl did in some cases fail to extract control sequences
from to_erl (like: winsize=X,Y) and did instead send them to
be interpreted by the erlang shell.
OTP-7692 The Erlang process lock implementation has been improved by
Mat Hostetter at Tilera Corporation.
OTP-7725 A {nodedown, Node} message passed by the
net_kernel:monitor_nodes/X functionality is now guaranteed to
be sent after Node has been removed from the result returned
by erlang:nodes/Y.
OTP-7731 Calling gen_tcp:send() from several processes on socket with
option send_timeout could lead to much longer timeout than
specified. The solution is a new socket option
{send_timeout_close,true} that will do automatic close on
timeout. Subsequent calls to send will then immediately fail
due to the closed connection.
OTP-7746 A bug in the installer on Windows not updating file
associations properly is now corrected.
OTP-7747 More space than necessary could be allocated in binaries when
appending to a binary (also in a binary comprehension) and
the data appended did not consist of wholes bytes (e.g. 13
bits).
OTP-7748 The short-circuit operators andalso and orelse no longer
guarantees that their second argument is either true or
false. As a consequence, andalso/orelse are now
tail-recursive.
OTP-7752 A new BIF, lists:keyfind/3, has been added. It works like
lists:keysearch/3 except that it does not wrap the returned
tuple in a value tuple in case of success. (Thanks to James
Hague for suggesting this function.)
OTP-7755 The gen_sctp option sctp_peer_addr_params,
#sctp_paddrparams{address={IP,Port} was erroneously decoded
in the inet driver. This bug has now been corrected.
OTP-7762 Optimization for drivers by creating small binaries direct on
process heap.
OTP-7764 I bsl N could cause the Erlang virtual machine to run of
memory instead generating a system_limit if N was absurdly
huge. (Thanks to Daniel Hedlund.)
There would always be a garbage collection when evaluating I
bsl N or I bsr N if I was a bignum.
If I is an integer and N a bignum, I bsl N will now cause the
correct system_limit exception instead of bad_arith as in
earlier releases.
If I is an integer and N a bignum, I bsr N will return either
0 or -1 depending on the sign of I instead of causing a
bad_arith exception as in earlier releases.
OTP-7777 Scheduler threads can now be bound to logical processors on
newer Linux and Solaris systems. More systems will be
supported in the future.
In some cases performance has increased drastically when
binding schedulers. Schedulers are not bound by default,
though. This since it might cause a performance degradation
if multiple programs have bound to processors, e.g. multiple
Erlang runtime systems. For more information see the
documentation of erlang:system_flag/2.
In order to bind scheduler threads the CPU topology need to
be known. On some newer Linux and Solaris systems the runtime
system automatically detects the CPU topology. If the
emulator isn't able to automatically detect the CPU topology,
the CPU topology can be defined. For more information see the
documentation of erlang:system_flag/2.
OTP-7784 Outstanding async driver jobs leaked memory if the issuing
port died before the async jobs completed.
OTP-7793 The compiler will refuse to a compile file where the module
name in the file differs from the output file name.
When compiling using erlc, the current working directory will
no be included in the code path (unless explicitly added
using "-pa .").
OTP-7796 A bug in the dynamic library loading affecting, among others,
OpenSolaris is now corrected. (Thanks to Paul Fisher.)
OTP-7804 The BIFs atom_to_binary/2, binary_to_atom/2, and
binary_to_existing_atom/2 have been added.
OTP-7811 The amount of schedulers online can now be changed during
operation. The amount of schedulers online defaults to the
same amount as available logical processors. For more
information see the documentation of erlang:system_flag/2 and
erl.
OTP-7812 The deprecated functions erlang:fault/1, erlang:fault/2, and
file:rawopen/2 have been removed.
OTP-7817 run_erl compile errors fixed for FreeBSD
OTP-7818 Erts internal dynamically allocated process and port specific
data for rarely used data. This is used to reduce memory
usage of processes and ports that do not use specific
functionality. More functionality will be moved to process
and port specific data in future releases.
OTP-7821 New packet type http_bin for gen_tcp sockets and
erlang:decode_packet. It works like http except that strings
are returned as binaries instead of lists.
OTP-7822 The obsolete wd_keeper program for embedded Solaris systems
has been removed.
OTP-7826 Nodes belonging to different independent clusters can now
co-exist on the same host with the help of a new environment
variable setting ERL_EPMD_PORT.
OTP-7841 There are new functions erlang:min/2 and erlang:max/2 to
calculate the minimum and maximum of two terms, respectively.
Note that the functions are not auto-imported, so they need
to be imported explicitly or the erlang prefix must be used
when calling them.
OTP-7851 The copyright notices have been updated.
OTP-7852 Enhanced build environment for cross compilation to Tilera
Tile architecture.
Support for native ethread atomics on Tilera Tile64/TilePro
(Thanks to Tilera Corporation).
OTP-7855 The escape sequences \x and \{ have been assigned new
interpretations (they used to return the ASCII code for x and
{ respectively). One or more octal characters inside curly
brackets after a leading backslash is from now on an
alternative to the existing syntax \NNN, but can also be used
for codes greater than 255. In a similar fashion, one or more
hexadecimal characters can be put inside curly brackets after
a leading \x. Furthermore, the escape sequences \xH and \xHH,
where N is a hexadecimal character, can be used for codes
less than 256.
NOTE: These new escape sequences are still considered
experimental and may be changed in the R13B release.
OTP-7861 The PCRE library's exported function names are now prefixed
with erts_ in the erlang emulator to avoid clashes with
dynamically loaded drivers.
OTP-7866 A bug in the inet driver for SCTP on Solaris showing for e.g
gen_sctp:abort/1 and gen_sctp:eof/1 has been corrected. Patch
suggestion by Simon Cornish.
OTP-7872 A runtime system with SMP support will now be built by
default on most platforms if a usable posix thread library or
native windows threads are found.
For more information see the top README file.
--- et-1.3.1 ------------------------------------------------------------
OTP-7830 Changed copyright
--- eunit-2.0.1 ------------------------------------------------------------
OTP-7877 Miscellaneous updates.
--- gs-1.5.10 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- hipe-3.7 ------------------------------------------------------------
OTP-7877 Miscellaneous updates.
--- ic-4.2.20 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- inets-5.0.13 ------------------------------------------------------------
OTP-7463 [httpc] - The inets http client will now use persistent
connections without pipelining as default and if a pipeline
timeout is set it will pipeline the requests on the
persistent connections.
OTP-7723 Ssl did not work correctly with the use of new style
configuration due to an old internal format that was not
changed correctly in all places.
OTP-7724 [httpd] - added option ssl_password_callback_arguments.
OTP-7726 Changed the socket use so that it will become more robust to
non-functional ipv6 and fallback on ipv4. This changes may
for very special os-configurations cause a problem when used
with erts-versions pre R13.
OTP-7815 Removed deprecated function httpd_util:key1search/[2,3]
OTP-7857 [httpc] - Now streams 200 and 206 results and not only 200
results.
--- jinterface-1.5 ------------------------------------------------------------
OTP-7832 A number of fixes and improvements from the ErlIDE group;
Vlad Dumitrescu and Jakob Cederlund: JDK 1.5 is now a minimal
requirement for building Jinterface. New method:
OtpEpmd.lookupNames. OtpErlangList is now iterable.
Non-proper lists are now allowed - you have to test if a list
is proper or not. Non-proper lists can also be created. New
methods: isProper, getHead, getTail and getNthTail. The get
tail methods creates a sublist object that re-uses the
original list. OtpErlangPid is now Comparable. Empty atoms
can now be constructed, a missing feature pointed out by
Sebastien Boisgerault on erlang-questions.
--- kernel-2.12.5.1 ------------------------------------------------------------
OTP-7641 When chunk reading a disk log opened in read_only mode,
bad terms could crash the disk log process.
OTP-7665 A corrected bug in ets for bag and duplicate_bag. A delete/2 or
lookup_element/3 could miss objects in a fixed table
if one or more objects with the same key had already been
deleted.
OTP-7682 A bug fixed for TCP sockets with option {packet,http}.
An HTTP request with an absolute URI was returned with a
corrupt path string. This bug did only exist in R12B-4 and
R12B-5.
OTP-7731 Calling gen_tcp:send() from several processes on
socket with option send_timeout could lead to much
longer timeout than specified. The solution is a new socket
option {send_timeout_close,true} that will do
automatic close on timeout. Subsequent calls to send will
then immediately fail due to the closed connection.
OTP-7738 A process being garbage collected via the
garbage_collect/1 BIF or the
check_process_code/2 BIF didn't handle message receive
and resume correctly during the garbage collect. When this
occurred, the process returned to the state it had before the
garbage collect instead of entering the new state.
--- kernel-2.13 ------------------------------------------------------------
OTP-6688 Erlang programs can now access STDERR on platforms where such
a file descriptor is available by using the io_server
'standard_error', i.e.
io:format(standard_error,"~s~n",[ErrorMessage]),
OTP-7641 When chunk reading a disk log opened in read_only mode, bad
terms could crash the disk log process.
OTP-7647 gen_tcp:send() did sometimes (only observed on Solaris)
return {error,enotconn} instead of the expected
{error,closed} as the peer socket had been explicitly closed.
OTP-7649 The format of the string returned by
erlang:system_info(system_version) (as well as the first
message when Erlang is started) has changed. The string now
contains the both the OTP version number as well as the erts
version number.
OTP-7661 As of this version, the global name server no longer supports
nodes running Erlang/OTP R10B.
OTP-7725 A {nodedown, Node} message passed by the
net_kernel:monitor_nodes/X functionality is now guaranteed to
be sent after Node has been removed from the result returned
by erlang:nodes/Y.
OTP-7731 Calling gen_tcp:send() from several processes on socket with
option send_timeout could lead to much longer timeout than
specified. The solution is a new socket option
{send_timeout_close,true} that will do automatic close on
timeout. Subsequent calls to send will then immediately fail
due to the closed connection.
OTP-7755 The gen_sctp option sctp_peer_addr_params,
#sctp_paddrparams{address={IP,Port} was erroneously decoded
in the inet driver. This bug has now been corrected.
OTP-7812 The deprecated functions erlang:fault/1, erlang:fault/2, and
file:rawopen/2 have been removed.
OTP-7826 Nodes belonging to different independent clusters can now
co-exist on the same host with the help of a new environment
variable setting ERL_EPMD_PORT.
OTP-7851 The copyright notices have been updated.
--- megaco-3.9.2 ------------------------------------------------------------
OTP-7671 The text encoders (v1, v2, v3, ...) all failed to properly
encode the DigitMapDescriptor.
OTP-7672 The mini decoder some time incorrectly identifies plain text
as tokens.
--- megaco-3.9.3 ------------------------------------------------------------
Note:
Version 3.9.3 supports code replacement in runtime from/to version 3.9.2, 3.9.1.1,
3.9.1, 3.9, 3.8.2, 3.8.1 and 3.8 except when using any of the drivers (flex for
text or asn1 for binary).
OTP-7700 Memory leak in the flex scanner. There was a memory leak in
the flex scanner function for handling Property Parameters.
--- megaco-3.9.4 ------------------------------------------------------------
OTP-7728 Improve the error handling of megaco_tcp for received
messages.
OTP-7733 Segmenting a reply failed (with a badmatch) if the message
did not actually need to be segmented (e.g. was withing the
size limit, max_pdu_size).
--- megaco-3.10 ------------------------------------------------------------
OTP-7713 Added new API function megaco:connect/5 and the corresponding
new megaco_user callback function
megaco_user:handle_connect/3. The purpose of this is to be
able to pass information to the megaco_user:handle_connect/3
function by calling the megaco:connect/5 function.
OTP-7743 Update file headers with new copyright notice.
--- megaco-3.10.0.1 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- mnesia-4.4.8 ------------------------------------------------------------
OTP-7753 With bad timing several api functions could return or exit
with a bad error message when mnesia was shutting down.
OTP-7835 mnesia:clear_table/1 cleared all nodes table content even if
the table was local_content only type.
--- observer-0.9.8 ------------------------------------------------------------
OTP-7519 etop would crash if the emulator's custom allocators had been
turned off (e.g. using the +Meamin option).
OTP-7851 The copyright notices have been updated.
--- odbc-2.10.4 ------------------------------------------------------------
OTP-7720 param_query now handles the in_or_out parameter correctly.
OTP-7721 Changed the internal socket use so that it will become more
robust to non-functional ipv6 and fallback on ipv4.
--- orber-3.6.11 ------------------------------------------------------------
OTP-7837 Updated file headers.
--- os_mon-2.2 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- otp_mibs-1.0.5 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- parsetools-1.4.6 ------------------------------------------------------------
OTP-7798 Updated file headers.
--- percept-0.8 ------------------------------------------------------------
OTP-7693 A problem with options list to percept causing some options
to be disregarded unintentionally. This has now been fixed.
An error in percept_analyzer caused calculation of standard
deviation to be incorrect. This has now been corrected.
OTP-7696 Updated css for percept server for enhanced viewing.
Increased performance of egd render.
Several graph errors could occur when compacting data to
decrease graph rendering time causing incorrect scalability
numbers. These errors have now been fixed.
Increased viewing width for graphs. The viewing width is now
dependent on client screen resolution.
--- pman-2.7 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- public_key-0.2 ------------------------------------------------------------
OTP-7860 X509 certificate handling has been extended and improved as a
result of more extensive testing of both the ssl and
public_key application. Even more extensions of the
certificate handling is yet to be implemented.
--- reltool-0.2 ------------------------------------------------------------
OTP-7805 This is the first release of Reltool. The functionality in
this first release is experimental and rather limited.
Reltool is a release management tool. It analyses a given
Erlang/OTP installation and determines various dependencies
between applications. The graphical frontend depicts the
dependencies and enables interactive customization of a
target system. The backend provides a batch interface for
generation of customized target systems.
--- runtime_tools-1.8 ------------------------------------------------------------
OTP-7519 etop would crash if the emulator's custom allocators had been
turned off (e.g. using the +Meamin option).
OTP-7851 The copyright notices have been updated.
OTP-7867 Now, dbg:p/2 accepts {X,Y,Z} process specification as stated
in the documentation. It also now accepts "" like from
erlang:pid_to_list/1.
There is now a pre-saved match spec in dbg that saves a lot
of typing. Use dbg:ltp/0 to find out more...
--- sasl-2.1.6 ------------------------------------------------------------
OTP-7667 When using the SASL application configuration parameter
masters the error tuple
{error,{no_such_file,{Master,FileName}}} was sometimes
returned even though the file FileName existed.
OTP-7820 Missing preloaded modules added
--- snmp-4.12.1 ------------------------------------------------------------
OTP-7695 Logging of messages with the GetBulk-request PDU incorrectly
produced an erroneous entry in the log: "An error occured".
The reason for this was that the PDU-fields error_status and
error_index is re-used for Non-repeaters and Max-repetitions
for GetBulk-request PDUs, but this was not handled by the
logging code.
OTP-7698 An attempt to set the row status to active for an notReady
table row, could result in an "inconsistentValue" error. The
same problem existed when attempting to set row status to
notInService for a row in notReady.
--- snmp-4.13 ------------------------------------------------------------
OTP-7571 [agent] A proper discover procedure has been implemented.
OTP-7735 Unnecessary use of math:pow/2 could cause problems on systems
without floating point support.
OTP-7836 [manager] A major flaw was discovered with the agent
handling.
First, TargetName was never used as intended, as a unique
identifier for the target (agent in this case).
Second, TargetName had a *default value*, which meant that
several agents could have the same TargetName, causing
unpredictable behaviour in the manager.
Third, EngineID was not a mandatory config option and had
furthermore also a *default value*.
These problems has been solved in the following way: First, a
new set of api functions has been introduced (and
documented): snmpm:register_user/4,
snmpm:register_user_monitor/4, snmpm:register_agent/3,
snmpm:unregister_agent/2, snmpm:agent_info/2,
snmpm:update_agent_info/4, snmpm:sync_get/3,4,5,6,
snmpm:async_get/3,4,5,6, snmpm:sync_get_next/3,4,5,6,
snmpm:async_get_next/3,4,5,6, snmpm:sync_set/3,4,5,6,
snmpm:async_set/3,4,5,6, snmpm:sync_get_bulk/5,6,7,8,
snmpm:async_get_bulk/5,6,7,8 that all use TargetName (and
not, as previously, Addr and Port) to identify the agent
(also snmpm:which_agents/0 has been changed).
Second, for backward compatibility, the old functions still
exist, but are no longer documented and are now wrappers for
the new functions, including erroneous default value for
EngineID and all. The TargetName is however generated from
the Addr, Port and Version provided in the config options.
Third, the behaviour of the SNMP manager user (snmpm_user)
has been changed to reflect this, i.e. handle_pdu/4,
handle_trap/3, handle_inform/3 and handle_report/3. Also the
the return-value of handle_agent/4. The old (non-documented)
callback-functions (using Addr and Port) will still be called
if the agent was registered using the old registration
functions.
--- ssh-1.1 ------------------------------------------------------------
OTP-6400 Public keys protected by a password are currently not handled
by the erlang ssh application.
OTP-7456 Added new API function ssh:connection_info/2.
OTP-7516 Now starts ssh channel processes later avoiding
synchronization problems between processes.
OTP-7645 Ssh now rejects old versions of the ssh protocol for security
reasons. (Even if they where not correctly rejected before
the connection would probably have failed anyway due to other
reasons.)
OTP-7676 A flaw in the implementation of the supervison tree caused
the ssh deamon to close the connections to all currently
logged in users if one user logged out. Another problem
related to the supervison tree caused the closing down of
clients to leak processes e.i. all processes was not shutdown
correctly.
OTP-7683 Tabs could cause ssh_cli to print things in a surprising way.
OTP-7685 [sftp, sftpd] - Added patch to make sftp timestamps more
correct, in the long run it would be nice to have better
support in file to be able to make it always behave correctly
now it will be correct 99 % of time instead of almost never
correct, at least on unix-based platforms.
OTP-7766 [sftpd] - Added patch to further improve handling of symbolic
links in the sftp-server.
OTP-7767 Ssh incorrectly sent the local id instead of the remote id of
a channel to the peer. For simpler cases these ids often
happen to have the same value. One case when they do not is
when the client sends an exec command two times in a raw on
the same ssh connection (different channels of course as the
channel will be closed when the exec command has been
evaluated) .
OTP-7768 Packet data could be lost under high load due to the fact
that buffered data was sometimes wrongly discarded before it
had been sent.
OTP-7769 New API module ssh_channel has been added. This is a
behaviour to facilitate the implementation of ssh clients and
plug in subsystems to the ssh daemon. Note that this slightly
changes the options to the API function ssh:daemon/[1,2,3]
deprecating all no longer documented options. Note that the
new API enforces the "logical way" of using the old API e.i.
making the subsystem process part of the ssh applications
supervisor tree, so missuses of the old API are not
compatible with the new API.
OTP-7770 Improved ipv6-handling as some assumptions about inet
functions where incorrect.
--- ssh-1.1.1 ------------------------------------------------------------
OTP-7795 The erlang ssh server has presented itself incorrectly, using
the special version ssh-1.99, although it never has supported
versions below 2.0. Since ssh-1.1 client versions below 2.0
are correctly rejected instead of letting the server crash
later on. Alas the problem with the presentation string was
not discovered until after ssh.1.1 was released. Now the
server will present itself as ssh-2.0.
OTP-7807 Ssh timeouts will now behave as expected e.i. defaults to
infinity only the user of the ssh application can know of a
reasonable timeout value for their application.
OTP-7808 The implementation of timeouts added as a patch in ssh-1.0.1
was slightly changed and is now documented.
OTP-7809 To honor the multiplexing of channels over one ssh connection
concept ssh_sftp:connect/ [1,2,3] is deprecated and replaced
by ssh_sftp:start_channel/[1,2,3] and ssh_sftp:stop/1 is
deprecated and replaced by ssh_sftp:stop_channel/1 and to
stop the ssh connection ssh:close/ 1 should be called.
OTP-7828 Added the message {ssh_channel_up, ChannelId,
ConnectionManager} that shall be handled by the channel
callback handle_msg/2. This makes the function handle_msg/2 a
mandatory function for ssh channels implementations which it
was not in ssh-1.1.
--- ssl-3.10.1 ------------------------------------------------------------
OTP-7656 The cacertsfile option is now optional for ssl servers.
OTP-7870 For the ssl client the options cacertfile, certfile and
keyfile are now optional as they are not always needed
depending on configuration of the client itself and the
configuration of the server. Also as PEM-files may contain
more than one entry the keyfile option will default to the
same file as given by the certfile option.
OTP-7871 Added new ssl client option verify_fun.
OTP-7878 Fixed bug that caused the ssl handshake finished message to
be calculated wrongly under the circumstances that the server
did not send the trusted cert and that the previous cert did
not have the extension telling us the trusted certs name.
This manifested it self as bad_record_mac alert from the
server.
--- stdlib-1.16 ------------------------------------------------------------
OTP-7230 The functions lists:seq/1,2 return the empty list in a few
cases when they used to generate an exception, for example
lists:seq(1, 0). See lists(3) for details. (Thanks to Richard
O'Keefe.)
OTP-7339 The order of objects visited in select for ordered_set is now
documented.
OTP-7626 It is now possible to debug code in escripts and archives.
OTP-7648 Support for Unicode is implemented as described in EEP10.
Formatting and reading of unicode data both from terminals
and files is supported by the io and io_lib modules. Files
can be opened in modes with automatic translation to and from
different unicode formats. The module 'unicode' contains
functions for conversion between external and internal
unicode formats and the re module has support for unicode
data. There is also language syntax for specifying string and
character data beyond the ISO-latin-1 range.
The interactive shell will support input and output of
unicode characters when the terminal and operating system
supports it.
Please see the EEP and the io/io_lib manual pages as well as
the stdlib users guide for details.
I/O-protocol incompatibilities:
The io_protocol between io_Server and client is updated to
handle protocol data in unicode formats. The updated protocol
is now documented. The specification resides in the stdlib
users manual, which is a new part of the manual.
io module incompatibilities:
The io:put_chars, io:get_chars and io:get_line all handle and
return unicode data. In the case where binaries can be
provided (as to io:put_chars), they shall be encoded in
UTF-8. When binaries are returned (as by
io:get_line/get_chars when the io_server is set in binary
mode) the returned data is also always encoded as UTF-8. The
file module however still returns byte-oriented data, why
file:read can be used instead of io:get_chars to read binary
data in ISO-latin-1.
io_lib module incompatibilities:
io_lib:format can, given new format directives (i.e "~ts" and
"~tc"), return lists containing integers larger than 255.
OTP-7653 The function pool:attach/1 now returns already_attached if
the node is already attached, rather than allready_attached
(sic!). (Thanks to Edwin Fine.)
OTP-7662 Preprocessor directives are now allowed in escripts. This
means that for example macros may be used in escripts.
OTP-7669 Fixed a minor race conditions in gen_server:start*: if one of
these functions returned {error,Reason} or ignore, the name
could still be registered (either locally or in global).
A process started by proc_lib in some cases depended on its
process dictionary not to be erased, and would crash when
terminating abnormally and not generate a proper crash
report. This has been corrected (but the initial call will
not be shown in the error report if the process dictionary
has been erased). NOTE: There is no longer any need to erase
the process dictionary for memory conservation reasons, since
the actual call arguments are no longer saved in the process
dictionary.
OTP-7702 The Erlang preprocessor used wrong line number when
stringifying macro arguments. (Thanks to John Hughes.)
OTP-7740 When a process started with proc_lib, gen_server, or gen_fsm
exits with reason {shutdown,Term}, a crash report will no
longer be generated (to allow a clean shutdown, but still
provide additional information to process that are linked to
the terminating process).
OTP-7752 A new BIF, lists:keyfind/3, has been added. It works like
lists:keysearch/3 except that it does not wrap the returned
tuple in a value tuple in case of success. (Thanks to James
Hague for suggesting this function.)
OTP-7797 lists:suffix(Suffix, List) used to have a a complexity of
length(Suffix)*length(List) (which could become quite slow
for some inputs). It has now been re-implemented so that its
complexity is length(Suffix)+length(List). (Thanks to Richard
O'Keefe for the new implementation.)
OTP-7810 The Erlang scanner has been augmented as to return white
spaces, comments, and exact location of tokens. The functions
string/3, tokens/4, and token_info/1,2 are new. See
erl_scan(3) for details.
tokens/3,4 have been modified as to return a list of tokens
instead of an error when eof is encountered before the dot.
OTP-7819 filelib:fold_files/5 now uses the re module instead of the
regexp module for regular expression matching. In practice,
this change will not be a problem for most regular
expressions used for filelib:fold_files/5. (The major
difference in regular expression is that parenthesis and
curly brackets is treated as literal characters by regexp but
as special characters by re; fortunately, those characters
are rarely used in filenames.)
OTP-7824 digraph:new(Type) will now cause a badarg exception if Type
is not a valid type. Similarly, digraph_utils:subgraph/2,3
will now cause a badarg if the arguments are invalid. (Those
functions used to return error tuples if something was
wrong.)
OTP-7827 The argument passed to random:uniform/1 must now be an
integer (as stated in the documentation). In previous
releases, a floating point number was also allowed.
OTP-7851 The copyright notices have been updated.
OTP-7865 A few missing match spec functions was added to dbg:fun2ms;
exception_trace/0 and trace/2,3.
There is a new function queue:member/2.
A bug in io_lib:fread that made it accidentally concatenate
fields separated by newline has been corrected. Reported and
analyzed by Matthew Palmer to erlang-patches.
--- syntax_tools-1.6 ------------------------------------------------------------
OTP-7877 Miscellaneous updates.
--- test_server-3.2.4.1 ------------------------------------------------------------
OTP-7750 When running a test which includes all suites in a test
directory, if the auto compilation would fail for one suite,
all following suites would be excluded from the test. This
was an unwanted behaviour and has been corrected. Now all
suites will always be compiled and only the failing ones
excluded from the test (and logged as missing).
OTP-7800 The step functionality in Common Test (based on interaction
with Debugger) was broken. This has been fixed, and some new
step features have also been added. Please see the Common
Test User's Guide for details.
OTP-7803 It is now possible for the user to specify include
directories that Common Test will pass along to the compiler
when suite and help modules are being compiled (which Common
Test performs automatically before running tests).
--- test_server-3.3 ------------------------------------------------------------
OTP-7511 The conf case in Test Server has been extended with
properties that make it possible to execute test cases in
parallel, in sequence and in shuffled order. It is now also
possible to repeat test cases according to different
criteria. The properties can be combined, making it possible
to e.g. repeat a conf case a certain number of times and
execute the test cases in different (random) order every
time. The properties are specified in a list in the conf case
definition: {conf, Properties, InitCase, TestCases, EndCase}.
The available properties are: parallel, sequence, shuffle,
repeat, repeat_until_all_ok, repeat_until_any_ok,
repeat_until_any_fail, repeat_until_all_fail.
OTP-7699 The test server starts Cover on nodes of the same version as
the test server itself only.
OTP-7856 The Erlang mode for Emacs has been updated with new and
modified skeletons for Common Test and TS. Syntax for test
case groups in Common Test (and conf cases with properties in
TS) has been added and a new minimal Common Test suite
skeleton has been introduced.
--- toolbar-1.4 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- tools-2.6.3 ------------------------------------------------------------
OTP-7831 xref:start/1 does now allow anonymous XREF processes to be
started
OTP-7851 The copyright notices have been updated.
OTP-7856 The Erlang mode for Emacs has been updated with new and
modified skeletons for Common Test and TS. Syntax for test
case groups in Common Test (and conf cases with properties in
TS) has been added and a new minimal Common Test suite
skeleton has been introduced.
--- tv-2.1.4.3 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- typer-0.1.6 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- webtool-0.8.4 ------------------------------------------------------------
OTP-7851 The copyright notices have been updated.
--- wx-0.98 ------------------------------------------------------------
OTP-7859 A first beta release of wxErlang.
--- xmerl-1.1.12 ------------------------------------------------------------
OTP-7847 Updated copyright notice in source files