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