Major release : otp_src_18
Build date : 2015-06-24
18 is a major new release of Erlang/OTP.
You can download the full source distribution from
http://www.erlang.org/download/otp_src_18.0.tar.gz
http://www.erlang.org/download/otp_src_18.0.readme (this file)
Note: To unpack the TAR archive you need a GNU TAR compatible program.
For installation instructions please read the README that is part of
the distribution.
The Windows binary distribution can be downloaded from
http://www.erlang.org/download/otp_win32_18.0.exe
http://www.erlang.org/download/otp_win64_18.0.exe
On-line documentation can be found at http://www.erlang.org/doc/.
You can also download the complete HTML documentation or the Unix manual files
http://www.erlang.org/download/otp_doc_html_18.0.tar.gz
http://www.erlang.org/download/otp_doc_man_18.0.tar.gz
We also want to thank those that sent us patches, suggestions and bug reports,
The OTP Team
--- HIGHLIGHTS ----------------------------------------------------------
OTP-11997 == erts ==
The time functionality of Erlang has been extended. This both
includes a new API for time, as well as time warp modes which
alters the behavior of the system when system time changes.
You are strongly encouraged to use the new API instead of the
old API based on erlang:now/0. erlang:now/0 has been
deprecated since it is and forever will be a scalability
bottleneck. For more information see the Time and Time
Correction chapter of the ERTS User's Guide.
Besides the API changes and time warp modes a lot of
scalability and performance improvements regarding time
management has been made internally in the runtime system.
Examples of such improvements are scheduler specific timer
wheels, scheduler specific BIF timer management, parallel
retrieval of monotonic time and system time on systems with
primitives that are not buggy.
OTP-12029 == ssh ==
A new option 'preferred_algorithms' is available for
ssh:daemon and ssh:connect.
This option defines the algorithms presented to the peer in
the algorithm negotiation phase of the ssh protocol.
The default list can be obtained from the new function
ssh:default_algorithms/0.
OTP-12218 == compiler debugger stdlib ==
Support variables as Map keys in expressions and patterns
Erlang will accept any expression as keys in Map expressions
and it will accept literals or bound variables as keys in Map
patterns.
OTP-12309 == erts stdlib ==
New function ets:take/2. Works the same as ets:delete/2 but
also returns the deleted object(s).
OTP-12585 == erts ==
Use persistent hashmaps for large Maps
Maps will use a persistent hashmap implementation when the
number of pairs in a Map becomes sufficiently large. The
change will occur when a Map reaches 33 pairs in size but
this limit might change in the future.
The most significant impact for the user by this change is
speed, and to a lesser degree memory consumption and
introspection of Maps. Memory consumption size is probalistic
but lesser than gb_trees or dict for instance. Any other
impacts will be transparent for the user except for the
following changes.
Semantics of Maps have changed in two incompatible ways
compared to the experimental implementation in OTP 17:
-- Hashing of maps is done different by erlang:phash2/1,2,
erlang:phash/1 and erlang:hash/2.
-- Comparing two maps with ==, /=, =<, <, >= and >, is done
different if the keys contain floating point numbers.
OTP-12650 == erts ==
Optimization of timers internally in the VM. This include
process timers (receive ... after), port timers
(driver_set_timer()) as well as BIF timers
(erlang:send_after()/erlang:start_timer()).
Each scheduler thread now has its own lock-free timer service
instead of one locked central service. This dramatically
improves performance of timer management on systems with a
large amount of schedulers and timers.
The timer service internal data structure has also been
optimized to be able to handle more timers than before. That
is, each timer service is by its self able to handle more
timers without dramatic performance loss than the old
centralized timer service.
The API of BIF timers has also been extended. Timeout values
are for example no longer limited to 32-bit integers. For
more information see the documentation of
erlang:start_timer/4, erlang:send_after/4,
erlang:cancel_timer/2, and erlang:read_timer/2.
Characteristics impact: Calls to the synchronous versions of
erlang:cancel_timer(), and erlang:read_timer() may take
substantially longer time to complete than before. This occur
when the timer that is accessed is managed by a remote
scheduler. You typically want to use the new asynchronous
option in order to avoid blocking the calling process.
OTP-12854 == otp ==
Change license text from Erlang Public License to Apache
Public License v2
--- POTENTIAL INCOMPATIBILITIES -----------------------------------------
OTP-11905 == erts ==
Fix issuing with spaces and quoting in the arguments when
using erlang:open_port spawn_executable on windows. The
behavior now mimics how unix works. This change implies a
backwards incompatibility for how spawn_executable works on
windows.
OTP-11940 == erts ==
Add md5 and module entries to ?MODULE:module_info/0/1 and
remove obsolete entry 'import'.
OTP-12099 == erts ==
erlang:function_exported(M, F, A) will now return true if
M:F/A refers to a BIF.
OTP-12100 == compiler ==
The deprecated 'asm' option has been removed.
OTP-12240 == erts kernel ssh ==
The internal group to user_drv protocol has been changed to
be synchronous in order to guarantee that output sent to a
process implementing the user_drv protocol is printed before
replying. This protocol is used by the standard_output device
and the ssh application when acting as a client.
This change changes the previous unlimited buffer when
printing to standard_io and other devices that end up in
user_drv to 1KB.
OTP-12292 == erts ==
The notice that a crashdump has been written has been moved
to be printed before the crashdump is generated instead of
afterwords. The wording of the notice has also been changed.
OTP-12585 == erts ==
Use persistent hashmaps for large Maps
Maps will use a persistent hashmap implementation when the
number of pairs in a Map becomes sufficiently large. The
change will occur when a Map reaches 33 pairs in size but
this limit might change in the future.
The most significant impact for the user by this change is
speed, and to a lesser degree memory consumption and
introspection of Maps. Memory consumption size is probalistic
but lesser than gb_trees or dict for instance. Any other
impacts will be transparent for the user except for the
following changes.
Semantics of Maps have changed in two incompatible ways
compared to the experimental implementation in OTP 17:
-- Hashing of maps is done different by erlang:phash2/1,2,
erlang:phash/1 and erlang:hash/2.
-- Comparing two maps with ==, /=, =<, <, >= and >, is done
different if the keys contain floating point numbers.
OTP-12610 == erts ==
Scalability improvement for erlang:make_ref/0, and other
functionality that create references. Each scheduler now
manage its own set of references. By this no communication at
all is needed when creating references.
Previous implementation generated a strictly monotonically
increasing sequence of references corresponding to creation
time on the runtime system instance. This is not the case
with current implementation. You can only expect reference to
be unique. The Erlang/OTP documentation has never mentioned
anything else but the uniqueness property, so this change is
fully compatible. The only reason we've marked this as a
potential incompatibility is since an early draft for an
Erlang specification mentions strict monotonicity as a
property.
If you need to create data with a strict monotonicity
property use erlang:unique_integer([monotonic]). Do not use
the deprecated erlang:now().
--- otp -----------------------------------------------------------------
OTP-11306 The type identifier() is documented in the reference manual,
in section Types and Function Specifications.
OTP-12854 Change license text from Erlang Public License to Apache
Public License v2
--- asn1-4.0 ------------------------------------------------------------
OTP-12395 Many bugs have been eliminated in the the ASN.1 compiler so
that it can now successfully compile many more ASN.1
specifications. Error messages have also been improved.
OTP-12765 The documentation for asn1ct:test/1,2,3 and asn1ct:value/2
has been updated with information about the limitations of
the functions.
--- common_test-1.11 ----------------------------------------------------
OTP-10446 Earlier there was no way to add optional parameters like
default-operation to an edit-config request sent with
ct_netconfc:edit_config/3,4, you had to use
ct_netconfc:send_rpc/2,3. For simplicity and completion, a
new optional argument, OptParams, is now added to the
edit_config function.
OTP-10816 The status of an aborted test due to test suite compilation
error has changed from 'auto_skipped' to 'failed'. This
affects both the textual log file, event handling and CT hook
callbacks. The logging of compilation failures has also been
improved, especially in the case of multiple test suites
failing compilation.
OTP-11962 When running OTP tests using the ts interface, it is now
possible to specify so called test categories per OTP
application. A test category is represented by a CT test
specification and defines an arbitrary subset of existing
test suites, groups and cases. Examples of test categories
are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call
ts:help() for more info). Also, functions for reading terms
from the current test specification during test,
ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have
been implemented.
OTP-12421 Obsolete scripts and make file operations have been removed
and the installation chapter in the Common Test User's Guide
has been updated.
OTP-12678 The 'keep_alive' interval has been reduced to 8 seconds,
which is two seconds shorter than the default 'idle_timeout'
value for ct_telnet:expect/3. This way, the telnet server
receives a NOP message (which might trigger an action) before
the operation times out. Also the TCP option 'nodelay' has
been enabled per default for all telnet connections, in order
to reduce the risk for communication timeouts.
OTP-12684 When the ct_run program is executed without any flags, "-dir
." is now used as default start flag. Similarly, the option
{dir,"."} is used by ct:run_test/1 if called with an empty
list. Also, the help text (ct_run -help) has been updated, as
well as the Running Tests chapter in the Common Test User's
Guide.
OTP-12740 The Test Server source code parser (erl2html2) failed to
handle the macro tuple in the syntax tree returned by
epp_dodger. This error has been corrected.
OTP-12809 New options to make it possible to specify ssh_port in a
.spec file: [{node_start, [{ssh_port, 9999}]}].
And also to specify additional ssh options like paths to
public-key files: [{node_start, [{ssh_opts, [{user_dir,
"/home/shrek/e2/"}]}]}].
--- compiler-6.0 --------------------------------------------------------
OTP-11978 The cerl and cerl_trees modules in the compiler application
are now documented.
OTP-12100 The deprecated 'asm' option has been removed.
OTP-12218 Support variables as Map keys in expressions and patterns
Erlang will accept any expression as keys in Map expressions
and it will accept literals or bound variables as keys in Map
patterns.
OTP-12253 Infer Map type information in beam_type compiler optimization
pass.
OTP-12393 Compiler optimizations have been improved.
OTP-12453 The compiler optimizes away building of terms that are never
actually used. As a result, the compiler in OTP 18 may
produce more warnings for terms that are built but not used
than the compiler in OTP 17.
OTP-12497 Five undocumented functions in the module core_lib have been
deprecated and will be removed in the next major release. The
functions are: get_anno/{1,2}, is_literal/1,
is_literal_list/1, and literal_value. Use the appropriate
functions in the cerl module instead.
OTP-12515 Using a map could incorrectly suppress warnings for unused
variables.
OTP-12723 The compiler now properly reports unknown parse transforms.
That is, undef exceptions coming from the parse transform
itself is reported differently from the absence of the parse
transform.
OTP-12758 Allow for 'creation of sub binary delayed' optimization if
maps instructions are in a clause.
OTP-12774 Change some internal data structures to Maps in order to
speed up compilation time. Measured speed up is around
10%-15%.
OTP-12844 Fix beam_bool pass for Maps instruction get_map_elements
Before beam_split the get_map_elements instruction is still
in blocks and the helper function in beam_jump did not
reflect this.
--- cosEvent-2.2 --------------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosEventDomain-1.2 --------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosFileTransfer-1.2 -------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosNotification-1.2 -------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosProperty-1.2 -----------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosTime-1.2 ---------------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- cosTransactions-1.3 -------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- crypto-3.6 ----------------------------------------------------------
OTP-12380 Use the EVP API for AES-CBC crypto to enables the use of
hardware acceleration for AES-CBC crypto on newer Intel CPUs
(AES-NI), among other platforms.
OTP-12394 Enhance crypto:generate_key to calculate ECC public keys from
private key.
OTP-12403 Add AES ECB block encryption.
OTP-12733 Fix bug in crypto:generate_key for ecdh that could cause VM
crash for faulty input.
--- debugger-4.1 --------------------------------------------------------
OTP-12218 Support variables as Map keys in expressions and patterns
Erlang will accept any expression as keys in Map expressions
and it will accept literals or bound variables as keys in Map
patterns.
--- dialyzer-2.8 --------------------------------------------------------
OTP-10280 The -dialyzer() attribute can be used for suppressing
warnings in a module by specifying functions or warning
options. It can also be used for requesting warnings in a
module.
OTP-11445 The pre-defined types array(), dict(), digraph(), gb_set(),
gb_tree(), queue(), set(), and tid() have been removed.
OTP-11851 A few type names that have been used for representing certain
predefined types can now be used for user-defined types. This
affects the types product/_, union/_, and range/2 as well as
tuple/N (N > 0), map/N (N > 0), atom/1, integer/1, binary/2,
record/_, and 'fun'/_. A consequence is that, for example, it
is no longer possible to refer to a record type with
record(r); instead the usual record notation, #r{}, is to be
used.
OTP-11861 When implementing user-defined behaviours it is now possible
to specify optional callback functions. See OTP Design
Principles User's Guide, Sys and Proc_Lib, User-Defined
Behaviours, for details.
OTP-12350 The translation of Erlang forms to the type representation
used by Dialyzer has been improved in several ways. The most
important change is that deeply nested records can be
handled.
OTP-12493 Fix a bug that could cause bogus warnings for opaque types.
In Erlang/OTP 18 two parameterized types declared in the same
module always result in a contradiction (none()) when
combined outside of the module where they are declared,
unless they have the same number of parameters.
The behaviour is different from Erlang/OTP 17 where, for
instance, dict:dict() and dict:dict(_, _), which are both
opaque, can be combined outside of the dict module.
In Erlang/OTP 18, dict:dict() and dict:dict(_, _) can still
be combined outside of the dict module. That has been made
possible by not declaring dict:dict() as opaque.
OTP-12637 Update the PLT properly when a module is changed. (Thanks to
James Fish for the bug report, and to Stavros Aronis for
fixing the bug.)
OTP-12682 Add two options to the Dialyzer: no_missing_calls suppresses
warnings about calls to missing or unexported functions;
unknown lets warnings about unknown functions or types affect
the exit status. See also dialyzer(3).
OTP-12725 An argument of '*'/2 is not constraind if the other operand
can be zero.
OTP-12750 Mention the option check_plt among the dialyzer:gui()
options. (Thanks to James Fish.)
OTP-12779 By default, dialyzer will now cache native versions of
dialyzer modules to avoid having to re-compile them each time
dialyzer is started. Caching can be disabled using the option
--no_native_cache.
OTP-12826 Fix a bug which could cause an infinite loop in Dialyzer.
--- diameter-1.10 -------------------------------------------------------
OTP-12721 Fix decode of Grouped AVPs containing errors.
RFC 6733 says this of Failed-AVP in 7.5:
--
In the case where the offending AVP is embedded within a
Grouped AVP, the Failed-AVP MAY contain the grouped AVP,
which in turn contains the single offending AVP. The same
method MAY be employed if the grouped AVP itself is embedded
in yet another grouped AVP and so on. In this case, the
Failed-AVP MAY contain the grouped AVP hierarchy up to the
single offending AVP. This enables the recipient to detect
the location of the offending AVP when embedded in a group.
It says this of DIAMETER_INVALID_AVP_LENGTH in 7.1.5:
--
The request contained an AVP with an invalid length. A
Diameter message indicating this error MUST include the
offending AVPs within a Failed-AVP AVP. In cases where the
erroneous AVP length value exceeds the message length or is
less than the minimum AVP header length, it is sufficient to
include the offending AVP header and a zero filled payload of
the minimum required length for the payloads data type. If
the AVP is a Grouped AVP, the Grouped AVP header with an
empty payload would be sufficient to indicate the offending
AVP. In the case where the offending AVP header cannot be
fully decoded when the AVP length is less than the minimum
AVP header length, it is sufficient to include an offending
AVP header that is formulated by padding the incomplete AVP
header with zero up to the minimum AVP header length.
The AVPs placed in the errors field of a diameter_packet
record are intended to be appropriate for inclusion in a
Failed-AVP, but neither of the above paragraphs has been
followed in the Grouped case: the entire faulty AVP
(non-faulty components and all) has been included. This made
it difficult to identify the actual faulty AVP in all but
simple cases.
The decode is now adapted to the RFC, and implements the
suggested single faulty AVP, nested in as many Grouped
containers as required.
OTP-12768 Fix SCTP problems on Solaris.
The allocation of association ids in Solaris was in conflict
with an assumption made in diameter_sctp, resulting in
failures when accepting multiple peer connections.
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
OTP-12851 Fix start order of alternate transports.
A transport configured with diameter:add_transport/2 can be
passed multiple transport_module/transport_config tuples in
order to specify alternate configuration, modules being
attempted in order until one succeeds. This is primarily for
the connecting case; for example, to allow a transport to be
configured to first attempt connection over SCTP, and then
TCP in case SCTP fails. Multiple module tuples can be paired
with a single config tuple, but in this case the start order
was reversed relative to the order in which the modules were
specifed.
--- edoc-0.7.17 ---------------------------------------------------------
OTP-12431 Remove functionality related to packages
--- eldap-1.2 -----------------------------------------------------------
OTP-12282 Support added for LDAP Password Modify Extended Operation
(RFC 3062). Thanks to danielwhite.
--- erl_docgen-0.4 ------------------------------------------------------
OTP-12722 Add possibility to add extra information on documentation
front pages.
--- erl_interface-3.8 ---------------------------------------------------
OTP-12801 Do not accept Nan and Infinity values
Erlang does not accept these values, so we return an error in
the C interface rather than letting them through to the
Erlang VM, which rejects the message with a somewhat cryptic
"bad external term".
--- erts-7.0 ------------------------------------------------------------
OTP-11905 Fix issuing with spaces and quoting in the arguments when
using erlang:open_port spawn_executable on windows. The
behavior now mimics how unix works. This change implies a
backwards incompatibility for how spawn_executable works on
windows.
OTP-11939 Fix global call trace when hipe compiled code call beam
compiled functions. Tracing of beam functions should now
alway work regardless who the caller is.
OTP-11940 Add md5 and module entries to ?MODULE:module_info/0/1 and
remove obsolete entry 'import'.
OTP-11941 Debug function erlang:display/1 shows content of binaries and
bitstrings, not only the length.
OTP-11974 Correct cache alignment for ETS write_concurrency locks to
improve performance by reduced false sharing. May increase
memory footprint for tables with write_concurrency.
OTP-11997 The time functionality of Erlang has been extended. This both
includes a new API for time, as well as time warp modes which
alters the behavior of the system when system time changes.
You are strongly encouraged to use the new API instead of the
old API based on erlang:now/0. erlang:now/0 has been
deprecated since it is and forever will be a scalability
bottleneck. For more information see the Time and Time
Correction chapter of the ERTS User's Guide.
Besides the API changes and time warp modes a lot of
scalability and performance improvements regarding time
management has been made internally in the runtime system.
Examples of such improvements are scheduler specific timer
wheels, scheduler specific BIF timer management, parallel
retrieval of monotonic time and system time on systems with
primitives that are not buggy.
OTP-12099 erlang:function_exported(M, F, A) will now return true if
M:F/A refers to a BIF.
OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with
the process dictionary. Note: erlang:get_keys/0 is
auto-imported.
OTP-12232 Make distributed send of large messages yield to improve
real-time characteristics.
OTP-12236 Use high accuracy poll timeouts
Where available, use poll/select API's that can handle time
resolutions less than 1ms. In the cases where such API's are
not available the timeout is rounded up to the nearest ms.
OTP-12239 All possibly blocking operations in the fd/spawn and terminal
driver have been converted to non-blocking operations. Before
this fix it was possible for the VM to be blocked for a long
time if the entity consuming stdout/stderr did not consume it
fast enough.
OTP-12240 The internal group to user_drv protocol has been changed to
be synchronous in order to guarantee that output sent to a
process implementing the user_drv protocol is printed before
replying. This protocol is used by the standard_output device
and the ssh application when acting as a client.
This change changes the previous unlimited buffer when
printing to standard_io and other devices that end up in
user_drv to 1KB.
OTP-12254 The previously introduced "eager check I/O" feature is now
enabled by default.
Eager check I/O can be disabled using the erl command line
argument: +secio false
Characteristics impact compared to previous default:
-- Lower latency and smoother management of externally
triggered I/O operations.
-- A slightly reduced priority of externally triggered I/O
operations.
OTP-12270 Properly support maps in match_specs
OTP-12292 The notice that a crashdump has been written has been moved
to be printed before the crashdump is generated instead of
afterwords. The wording of the notice has also been changed.
OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but
also returns the deleted object(s).
OTP-12366 Tracing with cpu_timestamp option has been enabled on Linux.
OTP-12376 ets:info/1,2 now contains information about whether
write_concurrency or read_concurrency is enabled.
OTP-12377 Crashdumps have been expanded to include:
-- Stack trace of currently running process (including
processes that are being garbage collected)
-- Data about the state of the erts schedulers
-- Extended statistics about ets tables of the types; set,
bag or dublicate_bag.
-- All configurable options for ets tables
For more detailed information see How to interpret the Erlang
crash dumps in the ERTS User's Guide.
OTP-12383 Improved usage of gcc's builtins for atomic memory access.
These are used when no other implementation of atomic memory
operations is available. For example, when compiling for ARM
when libatomic_ops is not available.
The largest improvement will be seen when compiling with a
gcc with support for the __atomic_* builtins (using a gcc of
at least version 4.7), but also when only the legacy __sync_*
builtins are available (using a gcc of at least version 4.1)
an improvement can be seen.
For more information see the "Atomic Memory Operations and
the VM" section of $ERL_TOP/HOWTO/INSTALL.md.
OTP-12411 Introduce math:log2/1 function to math module.
OTP-12492 The documentation of the Abstract Format (in the ERTS User's
Guide) has been updated with types and specification. (Thanks
to Anthony Ramine.)
The explicit representation of parentheses used in types of
the abstract format has been removed. Instead the new
functions erl_parse:type_inop_prec() and
erl_parse:type_preop_prec() can be used for inserting
parentheses where needed.
OTP-12508 Remove perfctr support
Development of perfctr in the linux kernel ceased in 2010.
The perfctr support code in the Erlang VM is thus effectively
dead code and therefor removed.
OTP-12548 zlib:inflateChunk/2 has been added. It works like
zlib:inflate/2, but decompresses no more data than will fit
in the buffer configured by zlib:setBufSize/2.
OTP-12554 Add missing overhead for offheap binaries created from
external format. This fix can improve the garbage collection
of large binaries originating from binary_to_term or messages
from remote nodes.
OTP-12555 Use linear search for small select_val arrays
OTP-12563 New BIF ets:update_counter/4 with a default object as
argument, which will be inserted in the table if the key was
not found.
OTP-12584 Export missing types from zlib module
OTP-12585 Use persistent hashmaps for large Maps
Maps will use a persistent hashmap implementation when the
number of pairs in a Map becomes sufficiently large. The
change will occur when a Map reaches 33 pairs in size but
this limit might change in the future.
The most significant impact for the user by this change is
speed, and to a lesser degree memory consumption and
introspection of Maps. Memory consumption size is probalistic
but lesser than gb_trees or dict for instance. Any other
impacts will be transparent for the user except for the
following changes.
Semantics of Maps have changed in two incompatible ways
compared to the experimental implementation in OTP 17:
-- Hashing of maps is done different by erlang:phash2/1,2,
erlang:phash/1 and erlang:hash/2.
-- Comparing two maps with ==, /=, =<, <, >= and >, is done
different if the keys contain floating point numbers.
OTP-12610 Scalability improvement for erlang:make_ref/0, and other
functionality that create references. Each scheduler now
manage its own set of references. By this no communication at
all is needed when creating references.
Previous implementation generated a strictly monotonically
increasing sequence of references corresponding to creation
time on the runtime system instance. This is not the case
with current implementation. You can only expect reference to
be unique. The Erlang/OTP documentation has never mentioned
anything else but the uniqueness property, so this change is
fully compatible. The only reason we've marked this as a
potential incompatibility is since an early draft for an
Erlang specification mentions strict monotonicity as a
property.
If you need to create data with a strict monotonicity
property use erlang:unique_integer([monotonic]). Do not use
the deprecated erlang:now().
OTP-12613 Enable different abort signal from heart
By using environment variable HEART_KILL_SIGNAL, heart can
now use a different signal to kill the old running Erlang.
By default the signal is SIGKILL but SIGABRT may also be used
by setting environment variable: HEART_KILL_SIGNAL=SIGABRT
OTP-12641 Ensure hashing of zero is consistent
Erlang treats positive and negative zero as equal:
true = 0.0 =:= 0.0/-1
However, Erlangs hash functions: hash, phash and phash2 did
not reflect this behaviour. The hash values produced by the
different hash functions would not be identical for positive
and negative zero.
This change ensures that hash value of positive zero is
always produced regardless of the signedness of the zero
float, i.e.,
true = erlang:phash2(0.0) =:= erlang:phash2(0.0/-1)
OTP-12646 Update autconf to latest version 2015-03-04
OTP-12650 Optimization of timers internally in the VM. This include
process timers (receive ... after), port timers
(driver_set_timer()) as well as BIF timers
(erlang:send_after()/erlang:start_timer()).
Each scheduler thread now has its own lock-free timer service
instead of one locked central service. This dramatically
improves performance of timer management on systems with a
large amount of schedulers and timers.
The timer service internal data structure has also been
optimized to be able to handle more timers than before. That
is, each timer service is by its self able to handle more
timers without dramatic performance loss than the old
centralized timer service.
The API of BIF timers has also been extended. Timeout values
are for example no longer limited to 32-bit integers. For
more information see the documentation of
erlang:start_timer/4, erlang:send_after/4,
erlang:cancel_timer/2, and erlang:read_timer/2.
Characteristics impact: Calls to the synchronous versions of
erlang:cancel_timer(), and erlang:read_timer() may take
substantially longer time to complete than before. This occur
when the timer that is accessed is managed by a remote
scheduler. You typically want to use the new asynchronous
option in order to avoid blocking the calling process.
OTP-12655 Ensure NIF term creation disallows illegal floating point
values and too long atoms. Such values will cause a NIF to
throw badarg exception when it returns.
OTP-12656 Fixed building of Map results from match_specs
A faulty "box-value" entered into the heap which could cause
a segmentation fault in the garbage collector if it was
written on a heap fragment.
OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has
been seen to sometimes cause a failed binary matching of a
correct utf8 character, but other symptoms are also possible.
OTP-12685 Keep dirty schedulers from waking other schedulers.
OTP-12690 Specialize instructions from common assembler patterns
Specialize common instructions of rem, band, minus and plus
in the beam loader. This will reduce the number of fetches
and thus lessen the instruction dispatch pressure during
runtime and speed up those operations in some common cases.
Specialize move patterns from x-registers to the stack with a
new move_window instruction. This change will reduce
instruction dispatch pressure.
OTP-12693 Fix cross compilation for Android.
OTP-12706 Fix incorrect use of autoconf macro AC_EGREP_CPP, which could
cause faulty configuration if run from a path containing the
string 'yes'.
OTP-12715 Minimal Java version is now 1.6
OTP-12717 Disable floating point exceptions if the VM is compiled by
clang/llvm. This is a known long-standing problem in
clang/llvm.
OTP-12720 Fix bug in file:sendfile for FreeBSD causing not the entire
file to be sent.
OTP-12735 Send format and args on process exit to error_logger
Previously, the emulator would generate a whole string with
values and call the error_logger passing "~s~n". This changes
it to a format string containing ~p with the respective
values as arguments.
OTP-12751 Fix the broken Android support in erl_child_setup.c
OTP-12755 Map error logger warnings to warning messages by default.
OTP-12761 Configure architecture ppc64le architecture as a ppc64
OTP-12766 Faulty statistics reported by the fix_alloc allocator.
OTP-12770 Add function enif_raise_exception to allow a NIF to raise an
error exception with any type of reason.
OTP-12771 Fix two erts_snprintf() calls to correct sizes.
- run_erl.c (ose): Use the size of the signal type, not its
pointer. - erl_node_tables.c: Use the size of the _BUFFER in
erts_snprintf() to make sure we can use the full space.
OTP-12777 Optimized node table statistics retrieval.
OTP-12781 Map beam error logger warnings to warning messages by
default. Previously these messages were mapped to the error
channel by default.
OTP-12797 gen_tcp:shutdown/2 is now asynchronous
This solves the following problems with the old
implementation:
It doesn't block when the TCP peer is idle or slow. This is
the expected behaviour when shutdown() is called: the caller
needs to be able to continue reading from the socket, not be
prevented from doing so.
It doesn't truncate the output. The current version of
gen_tcp:shutdown/2 will truncate any outbound data in the
driver queue after about 10 seconds if the TCP peer is idle
of slow. Worse yet, it doesn't even inform anyone that the
data has been truncated: 'ok' is returned to the caller; and
a FIN rather than an RST is sent to the TCP peer.
OTP-12802 Introduced delayed node table GC. This in order to avoid
oscillation of entries in and out of the tables. The
oscillation caused unnecessary lock contention on the table
locks. The delay length can be set by passing the +zdntgc
command line argument.
Characteristics impact: The tables can grow to very large
sizes with unused entries if the node is get huge amounts of
short lived connections from other nodes. This problem can be
alleviated by shortening the length of the delay using the
+zdntgc command line argument.
OTP-12812 Delayed memory allocations could be delayed an unnecessarily
long time.
OTP-12817 Make sure that timeouts on a pool of acceptors are released
in the correct order.
OTP-12820 Fix segmentation fault in module_info for deleted modules
OTP-12821 Fix garbage collection of literals in code purge
During code purging and check_process_code, the checking of
the binary reference embedded in the match binary state was
omitted for the tracing tests. This would cause the binary
match state to reference deallocated memory.
OTP-12840 A bug has been corrected for gen_tcp:close so when
{linger,{true,0}} is in effect it does not wait for data in
the driver queue to transfer out before closing the port. Bug
fix by Rory Byrne.
OTP-12842 Improved implementation of erlang:statistics(io) in order to
reduce contention between schedulers.
Characteristics impact: The actual call to
erlang:statistics(io) takes longer time to complete, but the
overall impact on the system is improved.
OTP-12843 There are many cases where user code needs to be able to
distinguish between a socket that was closed normally and one
that was aborted. Setting the option {show_econnreset, true}
enables the user to receive ECONNRESET errors on both active
and passive sockets.
OTP-12849 Do not preallocate too large event pool
A default pool size of 4000 is too excessive for the common
case. This corresponds directly to the number of threads in
the system. Change ERTS_TS_EV_ALLOC_DEFAULT_POOL_SIZE to
2048. Change ERTS_TS_EV_ALLOC_POOL_SIZE to 32.
OTP-12855 The documentation of the driver callback start() erroneously
stated that a return value of ERL_DRV_ERROR_ERRNO caused the
error value to be passed via erl_errno when it should have
been errno.
--- et-1.5.1 ------------------------------------------------------------
OTP-12780 The et application must continue to use erlang:now/0 in order
to obtain timestamps that are consistent with timestamps
obtained from tracing. The application has been updated to
suppress the warning for erlang:now/0.
--- eunit-2.2.10 --------------------------------------------------------
OTP-11660 The eunit application is now unicode safe.
--- gs-1.6 --------------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- hipe-3.12 -----------------------------------------------------------
OTP-12666 Fix a minor bug in the handling of opaque types.
OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has
been seen to sometimes cause a failed binary matching of a
correct utf8 character, but other symptoms are also possible.
OTP-12794 Allow use of complete interface of cerl_pmatch module
OTP-12816 Optimizations and code cleanup in hipe code loader.
--- ic-4.4 --------------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- inets-6.0 -----------------------------------------------------------
OTP-11845 Fix race condition in httpc. If the socket is closed by the
peer do not try to close it again.
OTP-12156 Remove Server Side Include support from inets, as this is an
old technic that has security issues and was not well tested.
OTP-12362 Avoid process leak by gracefully terminating httpc request
handler process when send operation fails.
OTP-12674 To enable the HTTP server to run in a virtualized
environment, where there can be more that one server that has
the same ip-address and port, we add a new option profile.
OTP-12798 Let gen_tcp:controlling_process/2 and inet_sctp:connect/[45]
propagate prim_inet:setopt/3 errors instead of having them
generate badmatch exceptions.
OTP-12803 httpc: Fix implementation of gracefull shudown to work as
intended for keep alive connections not using pipelining.
OTP-12822 Correct handling of proxy options when using persistent
connections.
--- jinterface-1.6 ------------------------------------------------------
OTP-12333 Reformat the sources for JInterface uniformly and according
to the standard Java style guidelines. Provide description of
the rules applied in Eclipse format (for other editors one
can check the settings against these).
In short, the formatting style is: * indentation uses only
spaces; each level is 4 positions * no trailing whitespace *
mostly default Java style formatting (any difference is
minor) * always use {} blocks * use 'final' as much as
possible
OTP-12686 Add basic transport factory implementation. This makes
possible creating connections between nodes using ssh
channels for example.
OTP-12691 Add Jinterface generic match and bind methods to provide low
level interface base methods sufficient for variety of higher
level pattern matching/variable binding implementations.
OTP-12715 Minimal Java version is now 1.6
OTP-12746 Remove extra @param in javadoc as this gives an error when
building the docs in java 1.8
--- kernel-4.0 ----------------------------------------------------------
OTP-12144 Fix error handling in file:read_line/1 for Unicode contents.
OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with
the process dictionary. Note: erlang:get_keys/0 is
auto-imported.
OTP-12240 The internal group to user_drv protocol has been changed to
be synchronous in order to guarantee that output sent to a
process implementing the user_drv protocol is printed before
replying. This protocol is used by the standard_output device
and the ssh application when acting as a client.
This change changes the previous unlimited buffer when
printing to standard_io and other devices that end up in
user_drv to 1KB.
OTP-12342 Introduce os:getenv/2 which is similar to os:getenv/1 but
returns the passed default value if the required environment
variable is undefined.
OTP-12564 The inflateInit/2 and deflateInit/6 functions now accepts a
WindowBits argument equal to 8 and -8.
OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y)
that has been copied in the previous shell session. Also a
bug that caused the JCL mode to crash when pasting text has
been fixed.
OTP-12755 Map error logger warnings to warning messages by default.
OTP-12773 Ensure that each segment of an IPv6 address when parsed from
a string has a maximum of 4 hex digits
OTP-12781 Map beam error logger warnings to warning messages by
default. Previously these messages were mapped to the error
channel by default.
OTP-12797 gen_tcp:shutdown/2 is now asynchronous
This solves the following problems with the old
implementation:
It doesn't block when the TCP peer is idle or slow. This is
the expected behaviour when shutdown() is called: the caller
needs to be able to continue reading from the socket, not be
prevented from doing so.
It doesn't truncate the output. The current version of
gen_tcp:shutdown/2 will truncate any outbound data in the
driver queue after about 10 seconds if the TCP peer is idle
of slow. Worse yet, it doesn't even inform anyone that the
data has been truncated: 'ok' is returned to the caller; and
a FIN rather than an RST is sent to the TCP peer.
OTP-12843 There are many cases where user code needs to be able to
distinguish between a socket that was closed normally and one
that was aborted. Setting the option {show_econnreset, true}
enables the user to receive ECONNRESET errors on both active
and passive sockets.
--- megaco-3.18 ---------------------------------------------------------
OTP-12762 The runtime dependencies in the application resource file
have been updated.
--- mnesia-4.13 ---------------------------------------------------------
OTP-12481 Make Mnesia DCD dump behavior at start up optional, when
turned off mnesia loads large disc_copies tables faster.
OTP-12714 Mnesia's dirty functions did not always exit with {aborted,
Reason} as documented when an error occurred.
OTP-12807 Consider file descriptors limits (emfile) as a fatal error
and do not delete log files. Previously the error was seen as
a corrupted disk and the log files deleted which caused data
loss.
--- observer-2.1 --------------------------------------------------------
OTP-12363 Added display of new crashdump information available in
crashdumps from Erlang/OTP 18.
OTP-12401 Show run queue status in crashdump viewer.
OTP-12504 Added the possibility to view sasl log entries for processes.
OTP-12631 Add memory allocator usage and utilization graphs.
OTP-12819 Don't refresh observer table view if there was no change
--- odbc-2.11 -----------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- orber-3.8 -----------------------------------------------------------
OTP-12687 Remove the usage of erlang:now() from all Corba applications
and use the new rand module instead of random.
--- os_mon-2.4 ----------------------------------------------------------
OTP-12730 cpu_sup should use native sysctl/libkvm calls on BSD
This avoids forking off with os:cmd every time we just want
to collect the load averages. riak does this every second,
which results in a lot of unnecessary load.
OTP-12796 Implement native cpu_sup:util/0,1 for FreeBSD
--- ose-1.1 -------------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- otp_mibs-1.1 --------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- parsetools-2.1 ------------------------------------------------------
OTP-12271 The new -dialyzer() attribute is used for suppressing
Dialyzer warnings in generated code.
--- percept-0.8.11 ------------------------------------------------------
OTP-12662 Fix http server configuration
--- public_key-1.0 ------------------------------------------------------
OTP-12110 public_key: Remove legacy switch compact_bit_string
E.i bitstrings will not be decode as {Unused, Binary}, they
are now Erlang bitstrings.
Also the compact_bit_string implies the legacy_erlang_types
switch So removing the switch will also make OCTET STRING
values be represented as binaries.
Undecoded open type will now be wrapped in a asn1_OPENTYPE
tuple.
This will change some values in records returned by the
public_key API making this change a potentiall
incompatibility.
--- reltool-0.7 ---------------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- runtime_tools-1.9 ---------------------------------------------------
OTP-12845 Change license text from Erlang Public License to Apache
Public License v2
--- sasl-2.5 ------------------------------------------------------------
OTP-11540 The undocumented upgrade instruction
<code>{remove_module,PrePurge,PostPurge,DepMods}</code> is
removed. This instruction was added for symmetry reasons in
OTP R7B, but was never documented or tested.
The existing instruction
<code>{add_module,Mod,DepMods}</code> is now documented, and
the complementing instruction
<code>{delete_module,Mod,DepMods}</code> is added.
OTP-12778 The sasl_error_logger configuration parameter now supports
the value {file,FileName,Modes} which allows the log file to
be opened in other mode than write (for example, append
mode).
--- snmp-5.2 ------------------------------------------------------------
OTP-12762 The runtime dependencies in the application resource file
have been updated.
--- ssh-4.0 -------------------------------------------------------------
OTP-11697 Better usage of binary matching in ssh_auth.erl and
ssh_message.erl
OTP-12029 A new option 'preferred_algorithms' is available for
ssh:daemon and ssh:connect.
This option defines the algorithms presented to the peer in
the algorithm negotiation phase of the ssh protocol.
The default list can be obtained from the new function
ssh:default_algorithms/0.
OTP-12240 The internal group to user_drv protocol has been changed to
be synchronous in order to guarantee that output sent to a
process implementing the user_drv protocol is printed before
replying. This protocol is used by the standard_output device
and the ssh application when acting as a client.
This change changes the previous unlimited buffer when
printing to standard_io and other devices that end up in
user_drv to 1KB.
OTP-12648 If ssh_connection:subsystem/4 fails we terminates gracefully.
OTP-12649 Included test of the 'e' and 'f' parameters in diffie-hellman
key exchange as specified in rfc 4253 section 8.
OTP-12675 To enable the ssh daemon to run in a virtualized environment,
where there can be more that one server that has the same
ip-address and port, we add a new option profile.
OTP-12676 Upgrade test suite added.
OTP-12692 Fixes the bug that once the rekey_limit bytes (by default,
1GB) had been transmitted the connection was rekeyed every
minute, not after the next transferred 'rekey_limit' chunk.
Thanks to Simon Cornish for the report and the fix!
OTP-12708 Fixes a bug that causes an SFTP connection to always fail
when {timeout, Timeout} option is used with
ssh_sftp:start_channel.
Thanks to Simon Cornish
OTP-12760 Fix various ssh key exchange problems.
Thanks to Simon Cornish
OTP-12786 Testcase improvements and corrections:
* Add testcases for the disconnectfun option on both server
and client sides
* Timeout testcases adjusted for slow machines where they
sometimes failed
OTP-12788 The options system_dir and user_dir assumes that the value is
a path to a directory which is readable. This is now checked
early, so ssh:daemon and ssh:connect will fail with an error
message immediately.
OTP-12789 The option disconnectfun can now be used both on the client
and server side.
OTP-12790 A daemon now checks that a client doesn't try to authorize
with methods not in the option auth_methods.
OTP-12811 Disconnectfun now triggers on all disconnects.
OTP-12813 A new option unknown_msgfun/2 for ssh:connect and ssh:daemon
for handling unknown messages. With the option it is possible
to intercept before an INFO log message is generated.
One usage is to filter out messages that are not wanted in
the error logger as info reports. An example of such a
message is the 'etimedout' tcp error message that will be
received if a connection has keep_alive and the peer is
restarted.
--- ssl-7.0 -------------------------------------------------------------
OTP-10362 Add new API functions to handle CRL-verification
OTP-12390 Remove default support for SSL-3.0, due to Poodle vunrability
in protocol specification.
Add padding check for TLS-1.0 to remove Poodle vunrability
from TLS 1.0, also add the option padding_check. This option
only affects TLS-1.0 connections and if set to false it
disables the block cipher padding check to be able to
interoperate with legacy software.
Remove default support for RC4 cipher suites, as they are
consider too weak.
OTP-12580 Add support for TLS ALPN (Application-Layer Protocol
Negotiation) extension.
OTP-12670 Ignore signature_algorithm (TLS 1.2 extension) sent to TLS
1.0 or TLS 1.1 server
OTP-12736 Add SNI (Server Name Indication) support for the server side.
OTP-12799 Improve error handling in TLS distribution module to avoid
lingering sockets.
OTP-12815 Add option {client_renegotiation, boolean()} option to the
server-side of the SSL application.
OTP-12829 Gracefully ignore proprietary hash_sign algorithms
--- stdlib-2.5 ----------------------------------------------------------
OTP-11043 Allow maps for supervisor flags and child specs
Earlier, supervisor flags and child specs were given as
tuples. While this is kept for backwards compatibility, it is
now also allowed to give these parameters as maps, see
sup_flags and child_spec.
OTP-11173 A new system message, terminate, is added. This can be sent
with sys:terminate/2,3. If the receiving process handles
system messages properly it will terminate shortly after
receiving this message.
The new function proc_lib:stop/1,3 utilizes this new system
message and monitors the receiving process in order to
facilitate a synchronous stop mechanism for 'special
processes'.
proc_lib:stop/1,3 is used by the following functions:
-- gen_server:stop/1,3 (new)
-- gen_fsm:stop/1,3 (new)
-- gen_event:stop/1,3 (modified to be synchronous)
-- wx_object:stop/1,3 (new)
OTP-11907 Remove the pg module, which has been deprecated through
OTP-17, is now removed from the STDLIB application. This
module has been marked experimental for more than 15 years,
and has largely been superseded by the pg2 module from the
Kernel application.
OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with
the process dictionary. Note: erlang:get_keys/0 is
auto-imported.
OTP-12158 Fix handling of single dot in filename:join/2
The reference manual says that filename:join(A,B) is
equivalent to filename:join([A,B]). In some rare cases this
turns out not to be true. For example:
filename:join("/a/.","b") -> "/a/./b" vs
filename:join(["/a/.","b"]) -> "/a/b".
This has been corrected. A single dot is now only kept if it
occurs at the very beginning or the very end of the resulting
path.
OTP-12167 Add three new functions to io_lib-- scan_format/2,
unscan_format/1, and build_text/1-- which expose the parsed
form of the format control sequences to make it possible to
easily modify or filter the input to io_lib:format/2. This
can e.g. be used in order to replace unbounded-size control
sequences like ~w or ~p with corresponding depth-limited ~W
and ~P before doing the actual formatting.
OTP-12183 The undocumented option generic_debug for gen_server has been
removed.
OTP-12186 erl_lint:icrt_export/4 has been rewritten to make the code
really follow the scoping rules of Erlang, and not just in
most situations by accident.
OTP-12195 Introduce the erl_anno module, an abstraction of the second
element of tokens and tuples in the abstract format.
OTP-12218 Support variables as Map keys in expressions and patterns
Erlang will accept any expression as keys in Map expressions
and it will accept literals or bound variables as keys in Map
patterns.
OTP-12257 The last traces of Mnemosyne Rules have been removed.
OTP-12270 Properly support maps in match_specs
OTP-12301 Add 'trim_all' option to binary:split/3
This option can be set to remove _ALL_ empty parts of the
result of a call to binary:split/3.
OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but
also returns the deleted object(s).
OTP-12376 ets:info/1,2 now contains information about whether
write_concurrency or read_concurrency is enabled.
OTP-12422 string:tokens/2 is somewhat faster, especially if the list of
separators only contains one separator character.
OTP-12492 The documentation of the Abstract Format (in the ERTS User's
Guide) has been updated with types and specification. (Thanks
to Anthony Ramine.)
The explicit representation of parentheses used in types of
the abstract format has been removed. Instead the new
functions erl_parse:type_inop_prec() and
erl_parse:type_preop_prec() can be used for inserting
parentheses where needed.
OTP-12566 Prevent zip:zip_open/[12] from leaking file descriptors if
parent process dies.
OTP-12586 Add a new random number generator, see rand module. It have
better characteristics and an improved interface.
OTP-12651 Correct orddict(3) regarding evaluation order of fold() and
map().
OTP-12657 Correct maps module error exceptions
Bad input to maps module function will now yield the
following exceptions:
-- {badmap,NotMap} or,
-- badarg
OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y)
that has been copied in the previous shell session. Also a
bug that caused the JCL mode to crash when pasting text has
been fixed.
OTP-12716 filename:split/1 when given an empty binary will now return
an empty list, to make it consistent with return value when
given an empty list.
OTP-12737 Add sync option to ets:tab2file/3.
OTP-12742 Add functions gb_sets:iterator_from() and
gb_trees:iterator_from(). (Thanks to Kirill Kinduk.)
OTP-12745 Add maps:filter/2 to maps module.
OTP-12752 Add uptime() shell command.
OTP-12754 Cache nowarn_bif_clash functions in erl_lint.
This patch stores nowarn_bif_clash in the lint record. By
using erlc +'{eprof,lint_module}' when compiling the erlang
parser, we noticed the time spent on nowarn_function/2
reduced from 30% to 0.01%.
OTP-12772 Optimize the Erlang Code Linter by using the cached filename
information.
OTP-12774 Change some internal data structures to Maps in order to
speed up compilation time. Measured speed up is around
10%-15%.
OTP-12785 Update orddict to use parameterized types and specs. (Thanks
to UENISHI Kota.)
OTP-12793 If a child of a simple_one_for_one returns ignore from its
start function no longer store the child for any restart
type. It is not possible to restart or delete the child
because the supervisor is a simple_one_for_one.
OTP-12808 The assert macros in eunit has been moved out to
stdlib/include/assert.hrl. This files get included by
eunit.hrl. Thus, nothing changes for eunit users, but the
asserts can now also be included separately.
OTP-12814 Make ets:file2tab preserve enabled read_concurrency and
write_concurrency options for tables.
OTP-12841 There are many cases where user code needs to be able to
distinguish between a socket that was closed normally and one
that was aborted. Setting the option {show_econnreset, true}
enables the user to receive ECONNRESET errors on both active
and passive sockets.
--- syntax_tools-1.7 ----------------------------------------------------
OTP-12732 Use the new erl_anno module.
OTP-12769 The merl module has been added to the syntax_tools
application. The Merl library is a simpler way to work with
erl_syntax parse trees.
--- test_server-3.9 -----------------------------------------------------
OTP-10816 The status of an aborted test due to test suite compilation
error has changed from 'auto_skipped' to 'failed'. This
affects both the textual log file, event handling and CT hook
callbacks. The logging of compilation failures has also been
improved, especially in the case of multiple test suites
failing compilation.
OTP-10923 The Test Server application has been marked as obsolete and
will be removed from OTP in the next major release (OTP
19.0).
OTP-11962 When running OTP tests using the ts interface, it is now
possible to specify so called test categories per OTP
application. A test category is represented by a CT test
specification and defines an arbitrary subset of existing
test suites, groups and cases. Examples of test categories
are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call
ts:help() for more info). Also, functions for reading terms
from the current test specification during test,
ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have
been implemented.
OTP-12740 The Test Server source code parser (erl2html2) failed to
handle the macro tuple in the syntax tree returned by
epp_dodger. This error has been corrected.
--- tools-2.8 -----------------------------------------------------------
OTP-11043 Allow maps for supervisor flags and child specs
Earlier, supervisor flags and child specs were given as
tuples. While this is kept for backwards compatibility, it is
now also allowed to give these parameters as maps, see
sup_flags and child_spec.
OTP-12330 In order to improve performance of the cover tool, new
functions are added for cover compilation and analysis on
multiple files. This allows for more parallelisation.
Some improvements of the data base access is also done in
order to improve the performance when analysing and resetting
cover data.
Minor incompatibility: An error reason from analyse_to_file
is changed from no_source_code_found to
{no_source_code_found,Module}.
OTP-12511 Remove Mnemosyne rules support.
OTP-12681 Add printout of total number of calls and time in eprof
OTP-12806 Attempting to do a cover analysis when neither source code
nor beam file could be found would hang the cover server.
Corrected to return a proper error.
--- typer-0.9.9 ---------------------------------------------------------
OTP-12727 Properly extract annotations from core code.
--- webtool-0.9 ---------------------------------------------------------
OTP-10922 The Webtool application has been marked as obsolete and will
be removed from OTP in the next major release (OTP 19.0).
--- wx-1.4 --------------------------------------------------------------
OTP-12183 The undocumented option generic_debug for gen_server has been
removed.
OTP-12632 Use wxWidgets-3.0, if found, as default backend on windows.
OTP-12660 Add missing fields in some events records. May require a
recompilation of user applications.
OTP-12734 Remove raise condition where wx could crash during emulator
stoppage.
--- xmerl-1.3.8 ---------------------------------------------------------
OTP-12689 Remove compiler warnings in xmerl.
--- Open Source Contributors --------------------------------------------
Alex Wilson, Andras Horvath, Andreas Amsenius, Andreas Schultz,
András Veres-Szentkirályi, Anthony Ramine, Breno Leitao, Chris Dituri,
Christopher Faulet, Daniel White, David Kubecka, David N. Welton,
Derek Brown, Dmitriy Kargapolov, Dmitry Ivanov, Fred Hebert,
Holger Weiß, James Fish, Jesper Louis Andersen, Johan Oudinet,
Jonas Falkevik, José Valim, Jérôme de Bretagne, Kenji Rikitake,
Kirill Zaborsky, Kirilll Zaborsky, Kostis Sagonas, Larry, Leo Liu,
Loïc Hoguin, Magnus Henoch, Magnus Ottenklinger, Marc Sugiyama,
Martin Hässler, Martin Schürrer, Maxim Mai, Michael Klishin,
Mikael Pettersson, Nate Bartley, Nick Mills, Olivier Girondel,
Peter Lemenkov, Péter Gömöri, Qijiang Fan, Richard Carlsson,
Rory Byrne, Serge Aleynikov, Simon Cornish, Stavros Aronis,
Stefan Grundmann, Steve Vinoski, Tom Briden, Tomas Abrahamsson,
Tuncer Ayaz, UENISHI Kota, Ulf Wiger, Vlad Dumitrescu, Wasif Malik,
Wasif Malik and Johannes Huning, Yoshihiro Tanaka, Yuki Ito, andreaP,
beaver, crownedgrouse, jeffweiss, larry, tmanevik, xsipewe,
Сергей Прохоров
Erlang/OTP 18.0
This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).
docker run -it erlang:18.0