Patch Package: OTP 19.0
Git Tag: OTP-19.0
Date: 2016-06-21
Trouble Report Id: OTP-10267, OTP-10282, OTP-10292, OTP-10349,
OTP-11384, OTP-11879, OTP-12217, OTP-12345,
OTP-12441, OTP-12502, OTP-12573, OTP-12590,
OTP-12593, OTP-12719, OTP-12837, OTP-12860,
OTP-12861, OTP-12863, OTP-12883, OTP-12908,
OTP-12951, OTP-12979, OTP-13033, OTP-13034,
OTP-13047, OTP-13058, OTP-13059, OTP-13065,
OTP-13082, OTP-13086, OTP-13087, OTP-13088,
OTP-13089, OTP-13096, OTP-13097, OTP-13111,
OTP-13112, OTP-13122, OTP-13123, OTP-13131,
OTP-13148, OTP-13152, OTP-13153, OTP-13167,
OTP-13174, OTP-13175, OTP-13184, OTP-13191,
OTP-13195, OTP-13206, OTP-13207, OTP-13214,
OTP-13227, OTP-13229, OTP-13244, OTP-13255,
OTP-13256, OTP-13260, OTP-13265, OTP-13267,
OTP-13280, OTP-13288, OTP-13289, OTP-13293,
OTP-13294, OTP-13325, OTP-13341, OTP-13347,
OTP-13359, OTP-13366, OTP-13374, OTP-13375,
OTP-13383, OTP-13392, OTP-13401, OTP-13407,
OTP-13408, OTP-13409, OTP-13410, OTP-13411,
OTP-13415, OTP-13419, OTP-13422, OTP-13425,
OTP-13429, OTP-13430, OTP-13431, OTP-13440,
OTP-13442, OTP-13444, OTP-13445, OTP-13449,
OTP-13452, OTP-13458, OTP-13459, OTP-13461,
OTP-13463, OTP-13464, OTP-13465, OTP-13470,
OTP-13474, OTP-13475, OTP-13476, OTP-13479,
OTP-13481, OTP-13482, OTP-13483, OTP-13485,
OTP-13487, OTP-13488, OTP-13489, OTP-13491,
OTP-13493, OTP-13494, OTP-13495, OTP-13496,
OTP-13497, OTP-13499, OTP-13500, OTP-13501,
OTP-13502, OTP-13503, OTP-13504, OTP-13507,
OTP-13508, OTP-13512, OTP-13516, OTP-13517,
OTP-13520, OTP-13522, OTP-13523, OTP-13524,
OTP-13526, OTP-13527, OTP-13530, OTP-13531,
OTP-13532, OTP-13534, OTP-13540, OTP-13541,
OTP-13542, OTP-13544, OTP-13545, OTP-13547,
OTP-13548, OTP-13551, OTP-13552, OTP-13553,
OTP-13554, OTP-13555, OTP-13556, OTP-13558,
OTP-13559, OTP-13560, OTP-13561, OTP-13562,
OTP-13566, OTP-13572, OTP-13576, OTP-13580,
OTP-13590, OTP-13593, OTP-13597, OTP-13598,
OTP-13599, OTP-13600, OTP-13601, OTP-13602,
OTP-13606, OTP-13610, OTP-13611, OTP-13612,
OTP-13615, OTP-13618, OTP-13619, OTP-13622,
OTP-13623, OTP-13625, OTP-13626, OTP-13627,
OTP-13628, OTP-13629, OTP-13630, OTP-13631,
OTP-13632, OTP-13634, OTP-13636, OTP-13638,
OTP-13639, OTP-13644, OTP-13647, OTP-13650,
OTP-13651, OTP-13653, OTP-13654, OTP-13655,
OTP-13656, OTP-13657, OTP-13658, OTP-13662,
OTP-13666, OTP-13668, OTP-13673, OTP-13678
Seq num: seq13002, seq13124, seq13136
System: OTP
Release: 19
Application: asn1-4.0.3, common_test-1.12.2, compiler-7.0,
cosEvent-2.2.1, cosEventDomain-1.2.1,
cosFileTransfer-1.2.1, cosNotification-1.2.2,
cosProperty-1.2.1, cosTime-1.2.2,
cosTransactions-1.3.2, crypto-3.7,
debugger-4.2, dialyzer-3.0, diameter-1.12,
edoc-0.7.19, eldap-1.2.2, erl_docgen-0.5,
erl_interface-3.9, erts-8.0, et-1.6,
eunit-2.3, gs-1.6.1, hipe-3.15.1, ic-4.4.1,
inets-6.3, jinterface-1.7, kernel-5.0,
megaco-3.18.1, mnesia-4.14, observer-2.2,
odbc-2.11.2, orber-3.8.2, os_mon-2.4.1,
otp_mibs-1.1.1, parsetools-2.1.2,
percept-0.9, public_key-1.2, reltool-0.7.1,
runtime_tools-1.10, sasl-3.0, snmp-5.2.3,
ssh-4.3, ssl-8.0, stdlib-3.0,
syntax_tools-2.0, tools-2.8.4, typer-0.9.11,
wx-1.7, xmerl-1.3.11
Predecessor: OTP
Check out the git tag OTP-19.0, and build a full OTP system including
documentation. Apply one or more applications from this build as
patches to your installation using the 'otp_patch_apply' tool. For
information on install requirements, see descriptions for each
application version below.
---------------------------------------------------------------------
--- HIGHLIGHTS ------------------------------------------------------
---------------------------------------------------------------------
OTP-10267 Application(s): erts
*** POTENTIAL INCOMPATIBILITY ***
The tracing support has been extended to allow a tracer
module to be the trace event handler instead of a
process or port. The tracer module makes it possible
for trace tools to filter or manipulate trace event
data without the trace event first having to be copied
from the traced process or port.
With the introduction of this feature,
erlang:trace(all|existing, _, _) now also returns the
tracer process as part of the number of processes on
which tracing is enabled. The is incompatible with the
previous releases.
OTP-12345 Application(s): erts, runtime_tools
Add microstate accounting
Microstate accounting is a way to track which state the
different threads within ERTS are in. The main usage
area is to pin point performance bottlenecks by
checking which states the threads are in and then from
there figuring out why and where to optimize.
Since checking whether microstate accounting is on or
off is relatively expensive only a few of the states
are enabled by default and more states can be enabled
through configure.
There is a convenience module called msacc that has
been added to runtime_tools that can assist in
gathering and interpreting the data from Microstate
accounting.
For more information see
erlang:statistics(microstate_accounting, _) and the
msacc module in runtime_tools.
OTP-12590 Application(s): erts
Related Id(s): OTP-10251
Sharing preserved copy for messages and exit signals
Enable sharing preserved copy with configure option
--enable-sharing-preserving. This will preserve
sharing, within the process, when communication with
other processes in the Erlang node. There is a
trade-off, the copy is more costly but this cost can be
reclaimed if there is a lot of sharing in the message.
In addition literals will not be copied in a send
except during a purge phase of the module where the
literals are located. This feature is considered
experimental in 19.0.
OTP-13058 Application(s): mnesia
Added experimental external backend plugin api. This
adds the possibility for the user to write other
storage backends for data, for example by using shared
memory or ram-cached disk storage.
The plugin api may change in future versions after
being battle tested.
OTP-13059 Application(s): compiler, stdlib
The pre-processor can now expand the ?FUNCTION_NAME and
?FUNCTION_ARITY macros.
OTP-13065 Application(s): stdlib
Related Id(s): PR-960
A new behaviour gen_statem has been implemented. It has
been thoroughly reviewed, is stable enough to be used
by at least two heavy OTP applications, and is here to
stay. But depending on user feedback, we do not expect
but might find it necessary to make minor not backwards
compatible changes into OTP-20.0, so its state can be
designated as "not quite experimental"...
The gen_statem behaviour is intended to replace gen_fsm
for new code. It has the same features and add some
really useful:
-- State code is gathered
-- The state can be any term
-- Events can be postponed
-- Events can be self generated
-- A reply can be sent from a later state
-- There can be multiple sys traceable replies
The callback model(s) for gen_statem differs from the
one for gen_fsm, but it is still fairly easy to rewrite
from gen_fsm to gen_statem.
OTP-13255 Application(s): ssl
Better error handling of user error during TLS upgrade.
ERL-69 is solved by gen_statem rewrite of ssl
application.
OTP-13366 Application(s): erts
Related Id(s): OTP-13047
Introduction of configurable management of data
referred to by the message queue of a process. Each
process can be configured individually.
It is now possible to configure the message queue of a
process, so that all data referred by it will be kept
outside of the heap, and by this prevent this data from
being part of garbage collections.
For more information see the documentation of
process_flag(message_queue_data, MQD).
OTP-13408 Application(s): public_key
Handle PEM encoded EC public keys
OTP-13496 Application(s): erts
*** POTENTIAL INCOMPATIBILITY ***
The tracing support has been extended to allow tracing
on ports. Ports can be traced on using the 'ports',
'send' and 'receive' trace flags.
The first argument of erlang:trace/3 has been extended
so that 'all', 'existing' and 'new' now include both
processes and ports. New Tracee variants,
'all_processes', 'all_ports', 'existing_processes' etc
have been added to specify only processes or ports.
OTP-13503 Application(s): erts
The erts internal tracing support has been changed to
have much less overhead and be more scalable.
This rewrite does not break any backwards
incompatibilities, but it does change the ordering of
some trace messages when compared to previous releases.
It should be noted that this only applies to trace
messages sent to processes or ports, it does not apply
to the new tracer module. However in future releases
they may also be effected by this.
Trace messages are only guaranteed to be ordered from
one traced process or port. In previous releases this
was not visible as a 'send' trace message would always
arrive before the corresponding 'receive' trace message
that is no longer always the case. This also means that
timestamped trace messages may seem to arrive out of
order as the timestamp is taken when the event is
triggered and not when it is put in the queue of the
tracer.
OTP-13572 Application(s): erts, kernel
Related Id(s): PR-612
Experimental support for Unix Domain Sockets has been
implemented. Read the sources if you want to try it
out. Example: gen_udp:open(0,
[{ifaddr,{local,"/tmp/socket"}}]). Documentation will
be written after user feedback on the experimental API.
OTP-13632 Application(s): ssl
Enhance error log messages to facilitate for users to
understand the error
---------------------------------------------------------------------
--- POTENTIAL INCOMPATIBILITIES -------------------------------------
---------------------------------------------------------------------
OTP-10267 Application(s): erts
*** HIGHLIGHT ***
The tracing support has been extended to allow a tracer
module to be the trace event handler instead of a
process or port. The tracer module makes it possible
for trace tools to filter or manipulate trace event
data without the trace event first having to be copied
from the traced process or port.
With the introduction of this feature,
erlang:trace(all|existing, _, _) now also returns the
tracer process as part of the number of processes on
which tracing is enabled. The is incompatible with the
previous releases.
OTP-11879 Application(s): stdlib
Undocumented syntax for function specifications, -spec
F/A :: Domain -> Range, has been removed (without
deprecation).
Using the is_subtype(V, T) syntax for constraints (in
function specifications) is no longer documented, and
the newer syntax V :: T should be used instead. The
Erlang Parser still recognizes the is_subtype syntax,
and will continue to do so for some time.
OTP-12719 Application(s): stdlib
Background: In record fields with a type declaration
but without an initializer, the Erlang parser inserted
automatically the singleton type 'undefined' to the
list of declared types, if that value was not present
there. That is, the record declaration:
-record(rec, {f1 :: float(), f2 = 42 :: integer(), f3
:: some_mod:some_typ()}).
was translated by the parser to:
-record(rec, {f1 :: float() | 'undefined', f2 = 42 ::
integer(), f3 :: some_mod:some_typ() | 'undefined'}).
The rationale for this was that creation of a "dummy"
#rec{} record should not result in a warning from
dialyzer that, for example, the implicit initialization
of the #rec.f1 field violates its type declaration.
Problems: This seemingly innocent action has some
unforeseen consequences.
For starters, there is no way for programmers to
declare that e.g. only floats make sense for the f1
field of #rec{} records when there is no "obvious"
default initializer for this field. (This also affects
tools like PropEr that use these declarations produced
by the Erlang parser to generate random instances of
records for testing purposes.)
It also means that dialyzer does not warn if e.g. an
is_atom/1 test or something more exotic like an
atom_to_list/1 call is performed on the value of the f1
field.
Similarly, there is no way to extend dialyzer to warn
if it finds record constructions where f1 is not
initialized to some float.
Last but not least, it is semantically problematic when
the type of the field is an opaque type: creating a
union of an opaque and a structured type is very
problematic for analysis because it fundamentally
breaks the opacity of the term at that point.
Change: To solve these problems the parser will not
automatically insert the 'undefined' value anymore;
instead the user has the option to choose the places
where this value makes sense (for the field) and where
it does not and insert the | 'undefined' there
manually.
Consequences of this change: This change means that
dialyzer will issue a warning for all places where
records with uninitialized fields are created and those
fields have a declared type that is incompatible with
'undefined' (e.g. float()). This warning can be
suppressed easily by adding | 'undefined' to the type
of this field. This also adds documentation that the
user really intends to create records where this field
is uninitialized.
OTP-12863 Application(s): syntax_tools
The abstract data type in erl_syntax is augmented with
types and function specifications.
The module erl_prettypr pretty prints types and
function specification, and the output can be parsed.
The types of record fields are no longer ignored. As a
consequence erl_syntax_lib:analyze_record_field/1
returns {Default, Type} instead of Default. The
functions analyze_record_attribute, analyze_attribute,
analyze_form, and analyze_forms in the erl_syntax_lib
module are also affected by this incompatible change.
OTP-13088 Application(s): erts
The functionality behind erlang:open_port/2 when called
with spawn or spawn_executable has been redone so that
the forking of the new program is done in a separate
process called erl_child_setup. This allows for a much
more robust implementation that uses less memory and
does not block the entire emulator if the program to be
started is on an un-accessible NFS. Benchmarks have
shown this approach to be about 3-5 times as fast as
the old approach where the fork/vfork was done by erts.
This is a pure stability and performance fix, however
some error messages may have changed, which is why it
is marked as a backwards incompatible change.
OTP-13148 Application(s): stdlib
Background: The types of record fields have since R12B
been put in a separate form by epp:parse_file(),
leaving the record declaration form untyped. The
separate form, however, does not follow the syntax of
type declarations, and parse transforms inspecting
-type() attributes need to know about the special
syntax. Since the compiler stores the return value of
epp:parse_file() as debug information in the abstract
code chunk ("Abst" or abstract_code), tools too need to
know about the special syntax, if they inspect -type()
attributes in abstract code.
Change: No separate type form is created by
epp:parse_file(), but the type information is kept in
the record fields. This means that all parse transforms
and all tools inspecting -record() declarations need to
recognize {typed_record_field, Field, Type}.
OTP-13184 Application(s): sasl
The module 'overload' is removed.
OTP-13195 Application(s): ssl
Remove default support for DES cipher suites
OTP-13449 Application(s): kernel
The functions rpc:safe_multi_server_call/2,3 that were
deprecated in R12B have been removed.
OTP-13465 Application(s): ssl
Phase out interoperability with clients that offer
SSLv2. By default they are no longer supported, but an
option to provide interoperability is offered.
OTP-13496 Application(s): erts
*** HIGHLIGHT ***
The tracing support has been extended to allow tracing
on ports. Ports can be traced on using the 'ports',
'send' and 'receive' trace flags.
The first argument of erlang:trace/3 has been extended
so that 'all', 'existing' and 'new' now include both
processes and ports. New Tracee variants,
'all_processes', 'all_ports', 'existing_processes' etc
have been added to specify only processes or ports.
OTP-13497 Application(s): erts
When the 'procs' trace flag is enabled, a 'spawned'
trace event is now also generated by a newly created
process. The previous event 'spawn' remains, but as it
is generated by the process that did the spawn, it is
not guaranteed that it is ordered with other trace
events from the newly spawned process. So when tracking
the lifetime of a process this new event should be used
as the creation event.
This new trace event is marked as an incompatibility
because tools that expect certain trace events when
enabling 'procs' will have to updated.
OTP-13504 Application(s): compiler
The compiler will no longer put the compilation date
and time into BEAM files. That means that two BEAM
files compiled on the same computer from the same
source code and compilation options will be identical.
Note: If you want to find out whether a BEAM file on
disk is different from the loaded code, compared the
MD5 value obtained from Mod:module_info(md5) with the
MD5 value obtained from beam_lib:md5(BeamFileForMod)
.
OTP-13532 Application(s): erts, runtime_tools
Introduce LTTng tracing via Erlang tracing.
For LTTng to be enabled OTP needs to be built with
configure option --with-dynamic-trace=lttng.
The dynamic trace module dyntrace is now capable to be
used as a LTTng sink for Erlang tracing. For a list of
all tracepoints, see Runtime Tools User's Guide .
This feature also introduces an incompatible change in
trace tags. The trace tags gc_start and gc_end has been
split into gc_minor_start, gc_minor_end and
gc_major_start, gc_major_end.
OTP-13542 Application(s): dialyzer
Related Id(s): PR-1014
The type specification syntax for Maps is improved:
--
The association type KeyType := ValueType denotes an
association that must be present.
--
The shorthand ... stands for the association type any()
=> any().
An incompatible change is that #{} stands for the empty
map. The type map() (a map of any size) can be written
as #{...}.
OTP-13553 Application(s): wx
Changed atom 'boolean' fields in #wxMouseState{} to
'boolean()'.
Moved out arguments in wxListCtrl:hitTest to result.
Removed no-op functions in wxGauge that have been
removed from wxWidgets-3.1.
OTP-13561 Application(s): inets
Remove module inets_regexp. Module re should be used
instead.
OTP-13619 Application(s): stdlib
Related Id(s): PR-1000
Supervisors now explicitly add their callback module in
the return from sys:get_status/1,2. This is to simplify
custom supervisor implementations. The Misc part of the
return value from sys:get_status/1,2 for a supervisor
is now:
[{data, [{"State",
State}]},{supervisor,[{"Callback",Module}]}]
OTP-13622 Application(s): kernel
Related Id(s): PR-1065
The function inet:gethostbyname/1 now honors the
resolver option inet6 instead of always looking up IPv4
addresses.
---------------------------------------------------------------------
--- asn1-4.0.3 ------------------------------------------------------
---------------------------------------------------------------------
The asn1-4.0.3 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13551 Application(s): asn1, cosEvent, cosEventDomain,
cosFileTransfer, cosNotification, cosProperty, cosTime,
cosTransactions, gs, ic, megaco, orber, otp_mibs,
parsetools, snmp, typer, xmerl
Internal changes
Full runtime dependencies of asn1-4.0.3: erts-7.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- common_test-1.12.2 ----------------------------------------------
---------------------------------------------------------------------
The common_test-1.12.2 application can be applied independently of
other applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13475 Application(s): common_test
The following modules were missing in
common_test.app.src: ct_groups, ct_property_test,
ct_release_test, ct_webtool, ct_webtool_sup,
test_server_gl. They have now been added.
OTP-13615 Application(s): common_test
Related Id(s): seq13124
Common Test printed incorrect timestamps for received
error reports.
Full runtime dependencies of common_test-1.12.2: compiler-6.0,
crypto-3.6, debugger-4.1, erts-7.0, inets-6.0, kernel-4.0,
observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0,
stdlib-2.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8
---------------------------------------------------------------------
--- compiler-7.0 ----------------------------------------------------
---------------------------------------------------------------------
The compiler-7.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13430 Application(s): compiler
Related Id(s): ERL-113
compile:forms/1,2 would crash when used in a working
directory that had been deleted by another process.
OTP-13552 Application(s): compiler, dialyzer
Related Id(s): ERL-138
Dialyzer no longer crashes when there is an invalid
function call such as 42(7) in a module being analyzed.
The compiler will now warn for invalid function calls
such as X = 42, x(7).
--- Improvements and New Features ---
OTP-12951 Application(s): compiler
Optimization of tuple matching has been slightly
improved.
OTP-12979 Application(s): compiler
Five deprecated and undocumented functions in the
module core_lib have been removed. 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-13059 Application(s): compiler, stdlib
*** HIGHLIGHT ***
The pre-processor can now expand the ?FUNCTION_NAME and
?FUNCTION_ARITY macros.
OTP-13280 Application(s): compiler
The function mapfold/4 has been added to the cerl_trees
module.
OTP-13289 Application(s): compiler
Bitstring comprehensions have been generalized to allow
arbitrary expressions in the construction part.
OTP-13374 Application(s): compiler
Related Id(s): ERL-44
The compiler will now produce warnings for binary
patterns that will never match (example: > = Bin).
OTP-13504 Application(s): compiler
*** POTENTIAL INCOMPATIBILITY ***
The compiler will no longer put the compilation date
and time into BEAM files. That means that two BEAM
files compiled on the same computer from the same
source code and compilation options will be identical.
Note: If you want to find out whether a BEAM file on
disk is different from the loaded code, compared the
MD5 value obtained from Mod:module_info(md5) with the
MD5 value obtained from beam_lib:md5(BeamFileForMod)
.
OTP-13654 Application(s): compiler
The function compile:env_compiler_options/0 has been
added to allow tools to pick up the same default
compiler options as the compiler itself.
Full runtime dependencies of compiler-7.0: crypto-3.6, erts-7.0,
hipe-3.12, kernel-4.0, stdlib-2.5
---------------------------------------------------------------------
--- crypto-3.7 ------------------------------------------------------
---------------------------------------------------------------------
The crypto-3.7 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-12217 Application(s): crypto
Refactor crypto to use the EVP interface of OpenSSL,
which is the recommended interface that also enables
access to hardware acceleration for some operations.
OTP-13206 Application(s): crypto
Related Id(s): PR-832
Add support for 192-bit keys for the aes_cbc cipher.
OTP-13207 Application(s): crypto
Related Id(s): PR-829
Add support for 192-bit keys for aes_ecb.
OTP-13214 Application(s): crypto, ssl
Deprecate the function crypto:rand_bytes and make sure
that crypto:strong_rand_bytes is used in all places
that are cryptographically significant.
OTP-13483 Application(s): crypto
Related Id(s): PR-998
Enable AES-GCM encryption/decryption to change the tag
length between 1 to 16 bytes.
Full runtime dependencies of crypto-3.7: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- debugger-4.2 ----------------------------------------------------
---------------------------------------------------------------------
The debugger-4.2 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13375 Application(s): debugger
When the debugger searches for source files, it will
also use the location of the source in the compilation
information part of the BEAM file.
Full runtime dependencies of debugger-4.2: compiler-5.0, erts-6.0,
kernel-3.0, stdlib-2.5, wx-1.2
---------------------------------------------------------------------
--- dialyzer-3.0 ----------------------------------------------------
---------------------------------------------------------------------
The dialyzer-3.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13520 Application(s): dialyzer
Fix a bug in the translation of forms to types.
OTP-13544 Application(s): dialyzer
Related Id(s): PR-1007
Correct misspelling in Dialyzer's acronym definition.
OTP-13552 Application(s): compiler, dialyzer
Related Id(s): ERL-138
Dialyzer no longer crashes when there is an invalid
function call such as 42(7) in a module being analyzed.
The compiler will now warn for invalid function calls
such as X = 42, x(7).
OTP-13653 Application(s): dialyzer
Related Id(s): ERL-157
Fix a bug that caused Dialyzer to go into an infinite
loop.
OTP-13655 Application(s): dialyzer
Related Id(s): PR-1092
Fix a bug in Dialyzer related to call-site analysis.
--- Improvements and New Features ---
OTP-10349 Application(s): dialyzer
The evaluation of SCCs in dialyzer_typesig is
optimized.
Maps are used instead of Dicts to further optimize the
evaluation.
OTP-13244 Application(s): dialyzer
Since Erlang/OTP R14A, when support for parameterized
modules was added, module() has included tuple(), but
that part is removed; the type module() is now the same
as atom(), as documented in the Reference Manual.
OTP-13542 Application(s): dialyzer
Related Id(s): PR-1014
*** POTENTIAL INCOMPATIBILITY ***
The type specification syntax for Maps is improved:
--
The association type KeyType := ValueType denotes an
association that must be present.
--
The shorthand ... stands for the association type any()
=> any().
An incompatible change is that #{} stands for the empty
map. The type map() (a map of any size) can be written
as #{...}.
OTP-13547 Application(s): dialyzer
The translation of forms to types is improved.
Full runtime dependencies of dialyzer-3.0: compiler-7.0, erts-8.0,
hipe-3.15.1, kernel-5.0, stdlib-3.0, syntax_tools-2.0, wx-1.2
---------------------------------------------------------------------
--- diameter-1.12 ---------------------------------------------------
---------------------------------------------------------------------
The diameter-1.12 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13611 Application(s): diameter
Ensure listening socket is closed at transport removal.
Transport removal did not immediately close a
diameter_tcp/sctp listening socket, and a subsequent
peer connection caused it to remain open.
--- Improvements and New Features ---
OTP-13508 Application(s): diameter
Add diameter:peer_info/1.
That retrieves information in the style of
diameter:service_info/2, but for a single peer
connection.
Full runtime dependencies of diameter-1.12: erts-6.0, kernel-3.0,
ssl-5.3.4, stdlib-2.0
---------------------------------------------------------------------
--- edoc-0.7.19 -----------------------------------------------------
---------------------------------------------------------------------
The edoc-0.7.19 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13558 Application(s): edoc
Handle typed record fields.
Full runtime dependencies of edoc-0.7.19: erts-6.0, inets-5.10,
kernel-3.0, stdlib-2.5, syntax_tools-1.6.14, xmerl-1.3.7
---------------------------------------------------------------------
--- eldap-1.2.2 -----------------------------------------------------
---------------------------------------------------------------------
The eldap-1.2.2 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13590 Application(s): eldap
Related Id(s): PR-1048
If the underlying tcp connection is closed and an LDAP
operation returned tcp_error, the client applications
tend to close the ldap handle with eldap:close. This
will cause a {nocatch, {gen_tcp_error, ...}} exception.
Such errors are now ignored during close, because the
socket will be closed anyway.
--- Improvements and New Features ---
OTP-13566 Application(s): eldap
Modernize test suites
Full runtime dependencies of eldap-1.2.2: asn1-3.0, erts-6.0,
kernel-3.0, ssl-5.3.4, stdlib-2.0
---------------------------------------------------------------------
--- erl_docgen-0.5 --------------------------------------------------
---------------------------------------------------------------------
The erl_docgen-0.5 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13600 Application(s): erl_docgen
Related Id(s): ERL-141, Jira:
Generate HTML anchors for data types without name
attribute.
OTP-13638 Application(s): erl_docgen, otp
Updated make rules so it's possible to use the xmllint
target for checking the system documentation.
Removed usage of non defined DTD tag (output) from the
system documentation and corrected a number of xml
faults.
Added support for quote tag and a new level of header
formatting in erl_docgen.
A fault when generating html for manual set markers for
section headings is corrected so now is the title
visible after hyperlink jump.
OTP-13639 Application(s): erl_docgen
Corrected the space handling for the seealso tag.
--- Improvements and New Features ---
OTP-13668 Application(s): erl_docgen
Related Id(s): PR-543
Sort the modules function index alphabetically.
Full runtime dependencies of erl_docgen-0.5: edoc-0.7.13, erts-6.0,
stdlib-2.5, xmerl-1.3.7
---------------------------------------------------------------------
--- erl_interface-3.9 -----------------------------------------------
---------------------------------------------------------------------
The erl_interface-3.9 application can be applied independently of
other applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13666 Application(s): erl_interface
Related Id(s): ERL-158
Fix decoding of LLONG_MIN in erl_decode
OTP-13673 Application(s): erl_interface
On windows ei_decode_ulong and ei_decode_long now
correctly returns an error when trying to decode a
number that does not fit in a long. Fixed a bug on
windows where enabling ei tracing would cause a
segmentation fault.
--- Improvements and New Features ---
OTP-13488 Application(s): erl_interface, erts, jinterface
Handle terms (pids,ports and refs) from nodes with a
'creation' value larger than 3. This is a preparation
of the distribution protocol to allow OTP 19 nodes to
correctly communicate with future nodes (20 or higher).
The 'creation' value differentiates different
incarnations of the same node (name).
---------------------------------------------------------------------
--- erts-8.0 --------------------------------------------------------
---------------------------------------------------------------------
The erts-8.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-12593 Application(s): erts, kernel
The handling of on_load functions has been improved.
The major improvement is that if a code upgrade fails
because the on_load function fails, the previous
version of the module will now be retained.
OTP-13034 Application(s): erts
is_builtin(erlang, apply, 3) will now return true.
OTP-13288 Application(s): erts
Related Id(s): PR913
Fix enif_get_list_length to return false if list is
improper or have length larger than UINT_MAX (did
return true and an incorrect length value).
OTP-13341 Application(s): erts
Related Id(s): PR951
Cleanup hipe signal handling code for x86 and make it
more portable.
OTP-13411 Application(s): erts, kernel
Make file:datasync use fsync instead of fdatasync on
Mac OSX.
OTP-13419 Application(s): erts
Make sure to create a crash dump when running out of
memory. This was accidentally removed in the erts-7.3
release.
OTP-13425 Application(s): erts
A bug has been fixed where if erlang was started +B on
a unix platform it would be killed by a SIGUSR2 signal
when creating a crash dump.
OTP-13452 Application(s): erts
Fix race between process_flag(trap_exit,true) and a
received exit signal.
A process could terminate due to exit signal even
though process_flag(trap_exit,true) had returned. A
very specific timing between call to process_flag/2 and
exit signal from another scheduler was required for
this to happen.
OTP-13459 Application(s): erts, stdlib
Don't search for non-existing Map keys twice
For maps:get/2,3 and maps:find/2, searching for an
immediate key, e.g. an atom, in a small map, the search
was performed twice if the key did not exist.
OTP-13474 Application(s): erts
When an abnormally large distribution message is about
to be sent, the VM has been changed to create a crash
dump instead of a core dump.
OTP-13485 Application(s): erts
Related Id(s): ERL-123
Fix erlang:process_info/2 type specification
OTP-13489 Application(s): erts
Related Id(s): ERL-127
Fix bug in open_port/2 with option {args, List}. A vm
crash could be caused by an improper List.
OTP-13494 Application(s): erts
Related Id(s): ERL-126
Fixed a race-condition bug where the emulator could
crash when erlang:system_profile/1,2 was enabled and a
process had to be re-scheduled during termination.
OTP-13512 Application(s): erts
Fixed bugs where the reduction counter was not handled
correct.
OTP-13517 Application(s): erts
Fixed typo in description of the EPMD_DUMP_REQ
response.
OTP-13540 Application(s): erts
Fixed a bug where a process flagged as sensitive would
sometimes record its save_calls when it shouldn't.
OTP-13562 Application(s): erts
Update configure scripts to not use hard-coded path for
/bin/pwd and /bin/rm.
OTP-13628 Application(s): erts
When passing a larger binary than the outputv callback
of a linked-in driver can handle in one io vector slot,
the binary is now split into multiple slots in the io
vector. This change only effects system where the max
size of an io vector slot is smaller then the word size
of the system (e.g. Windows).
This change means that it is now possible on Windows to
send binaries that are larger than 4GB to port_command,
which is what is used for file:write, gen_tcp:send etc.
OTP-13657 Application(s): erts
Workaround of Maps output in crashdumps. Currently the
atom 'undefined' is generated instead of Map data if a
Map type is encountered during crash.
--- Improvements and New Features ---
OTP-10267 Application(s): erts
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
The tracing support has been extended to allow a tracer
module to be the trace event handler instead of a
process or port. The tracer module makes it possible
for trace tools to filter or manipulate trace event
data without the trace event first having to be copied
from the traced process or port.
With the introduction of this feature,
erlang:trace(all|existing, _, _) now also returns the
tracer process as part of the number of processes on
which tracing is enabled. The is incompatible with the
previous releases.
OTP-10282 Application(s): erts
Introduce LTTng tracing of Erlang Runtime System
For LTTng to be enabled OTP needs to be built with
configure option --with-dynamic-trace=lttng.
This feature introduces tracepoints for schedulers,
drivers, memory carriers, memory and async thread pool.
For a list of all tracepoints, see Runtime Tools User's
Guide .
OTP-11384 Application(s): erts
Make it possible to monitor/demonitor ports using the
erlang:monitor/2 API. The process and port information
functions have also been updated to include information
about monitors from processes to ports.
OTP-12345 Application(s): erts, runtime_tools
*** HIGHLIGHT ***
Add microstate accounting
Microstate accounting is a way to track which state the
different threads within ERTS are in. The main usage
area is to pin point performance bottlenecks by
checking which states the threads are in and then from
there figuring out why and where to optimize.
Since checking whether microstate accounting is on or
off is relatively expensive only a few of the states
are enabled by default and more states can be enabled
through configure.
There is a convenience module called msacc that has
been added to runtime_tools that can assist in
gathering and interpreting the data from Microstate
accounting.
For more information see
erlang:statistics(microstate_accounting, _) and the
msacc module in runtime_tools.
OTP-12573 Application(s): erts
The port of Erlang/OTP to the real-time operating
system OSE has been removed.
OTP-12590 Application(s): erts
Related Id(s): OTP-10251
*** HIGHLIGHT ***
Sharing preserved copy for messages and exit signals
Enable sharing preserved copy with configure option
--enable-sharing-preserving. This will preserve
sharing, within the process, when communication with
other processes in the Erlang node. There is a
trade-off, the copy is more costly but this cost can be
reclaimed if there is a lot of sharing in the message.
In addition literals will not be copied in a send
except during a purge phase of the module where the
literals are located. This feature is considered
experimental in 19.0.
OTP-12883 Application(s): erts
Halfword BEAM has been removed.
OTP-12908 Application(s): erts, kernel
Added os:perf_counter/1.
The perf_counter is a very very cheap and high
resolution timer that can be used to timestamp system
events. It does not have monoticity guarantees, but
should on most OS's expose a monotonous time.
OTP-13047 Application(s): erts
Support for a fragmented young heap generation. That
is, the young heap generation can consist of multiple
non continuous memory areas. The main reason for this
change is to avoid extra copying of messages that could
not be allocated directly on the receivers heap.
OTP-13086 Application(s): erts
Erlang linked-in driver can now force the call to
open_port to block until a call to erl_drv_init_ack is
made inside the driver. This is useful when you want to
do some asynchronous initialization, for example
getting configuration from a pipe, and you want the
initial open_port call to fail if the configuration is
incomplete or wrong. See the erl_driver documentation
for more details on the API.
OTP-13087 Application(s): erts
Erlang linked-in drivers can now set their own pids as
seen in erlang:port_info/1 by using the erl_drv_set_pid
function. For more details see the erl_driver
documentation.
OTP-13088 Application(s): erts
*** POTENTIAL INCOMPATIBILITY ***
The functionality behind erlang:open_port/2 when called
with spawn or spawn_executable has been redone so that
the forking of the new program is done in a separate
process called erl_child_setup. This allows for a much
more robust implementation that uses less memory and
does not block the entire emulator if the program to be
started is on an un-accessible NFS. Benchmarks have
shown this approach to be about 3-5 times as fast as
the old approach where the fork/vfork was done by erts.
This is a pure stability and performance fix, however
some error messages may have changed, which is why it
is marked as a backwards incompatible change.
OTP-13096 Application(s): erts
Improved yielding strategy in the implementation of the
following native functions:
-- erlang:binary_to_list/1
-- erlang:binary_to_list/3
-- erlang:bitstring_to_list/1
-- erlang:list_to_binary/1
-- erlang:iolist_to_binary/1
-- erlang:list_to_bitstring/1
-- binary:list_to_bin/1
This in order to improve performance of these
functions.
OTP-13097 Application(s): erts
All garbage collections of processes now bump
reductions. Also the amount of reductions bumped when
garbage collecting has been adjusted. It now better
corresponds to the amount of work performed. This in
order to improve the real time characteristics of the
system.
OTP-13111 Application(s): erts, kernel
New functions that can load multiple modules at once
have been added to the 'code' module. The functions are
code:atomic_load/1, code:prepare_loading/1,
code:finish_loading/1, and
code:ensure_modules_loaded/1.
OTP-13112 Application(s): erts
The -boot_var option for erl now only supports a single
key and single value (as documented). The option used
to allow multiple key/value pairs, but that behavior
was undocumented.
The function erl_prim_loader:start/3 has been removed.
Its documentation has also been removed.
The undocumented and unsupported function
erl_prim_loader:get_files/2 has been removed.
OTP-13122 Application(s): erts
Low level BIF erlang:purge_module/1 is made more robust
against incorrect use. Lingering processes that still
refer the old code are now killed before the module is
purged to prevent fatal VM behavior.
OTP-13123 Application(s): erts
Improved dirty scheduler implementation. For more
information see the NIF documentation.
-- The dirty scheduler support is still *experimental*.
-- The support for determining whether dirty NIF
support exist or not at compile time using the C
preprocessor macro ERL_NIF_DIRTY_SCHEDULER_SUPPORT has
been removed.
-- The enif_is_on_dirty_scheduler() function has been
removed. Use enif_thread_type() instead.
OTP-13167 Application(s): erts
Various optimizations done to process dictionary
access.
OTP-13174 Application(s): erts
Added max_heap_size process flag. max_heap_size allows
the user to limit the maximum heap used by a process.
See erlang:process_flag for more details.
OTP-13227 Application(s): erts
Allow dynamic drivers and NIF libraries to be built
with gcc option -fvisibility=hidden for faster loading
and more optimized code.
OTP-13265 Application(s): erts
Add erlang:process_info(Pid, garbage_collection_info)
which returns extended garbage_collection information.
For more details see the documentation.
OTP-13293 Application(s): erts
The functions erlang:list_to_integer/1 and
string:to_integer/1 have been optimized for large
inputs.
OTP-13359 Application(s): erts
Improved memory allocation strategy for hipe native
code on x86_64 (amd64) architectures by reserving
enough low virtual address space needed for the
HiPE/AMD64 small code model. The default virtual
address area for hipe code is set to 512Mb, but can be
changed with emulator flag +MXscs.
OTP-13366 Application(s): erts
Related Id(s): OTP-13047
*** HIGHLIGHT ***
Introduction of configurable management of data
referred to by the message queue of a process. Each
process can be configured individually.
It is now possible to configure the message queue of a
process, so that all data referred by it will be kept
outside of the heap, and by this prevent this data from
being part of garbage collections.
For more information see the documentation of
process_flag(message_queue_data, MQD).
OTP-13401 Application(s): erts
Processes now yield when scanning large message queues
and not finding a matching message. This in order to
improve real time characteristics.
OTP-13440 Application(s): erts
Optimized an erts internal function that is used to
traverse erlang terms. The internal function was mainly
used by term_to_binary and comparison of terms.
Benchmarks have shown up to a 10% performance increase
in those functions after the optimization.
OTP-13442 Application(s): erts
Add the following NIF API functions:
-- enif_cpu_time
-- enif_now_time
-- enif_make_unique_integer
-- enif_is_process_alive
-- enif_is_port_alive
-- enif_term_to_binary
-- enif_binary_to_term
-- enif_port_command
for details of what each function does, see the erl_nif
documentation.
OTP-13487 Application(s): erts, stdlib
Optimize '++' operator and lists:append/2 by using a
single pass to build a new list while checking for
properness.
OTP-13488 Application(s): erl_interface, erts, jinterface
Handle terms (pids,ports and refs) from nodes with a
'creation' value larger than 3. This is a preparation
of the distribution protocol to allow OTP 19 nodes to
correctly communicate with future nodes (20 or higher).
The 'creation' value differentiates different
incarnations of the same node (name).
OTP-13493 Application(s): erts
Related Id(s): PR-999
Don't send unasked for systemd notifications in epmd
OTP-13495 Application(s): erts
The enif_send API has been extended to allow NULL to be
used as the message environment. When used this way, a
message environment is implicitly created and the given
term is copied into that environment before sending.
This can be an optimization if many small messages are
being sent by the nif.
OTP-13496 Application(s): erts
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
The tracing support has been extended to allow tracing
on ports. Ports can be traced on using the 'ports',
'send' and 'receive' trace flags.
The first argument of erlang:trace/3 has been extended
so that 'all', 'existing' and 'new' now include both
processes and ports. New Tracee variants,
'all_processes', 'all_ports', 'existing_processes' etc
have been added to specify only processes or ports.
OTP-13497 Application(s): erts
*** POTENTIAL INCOMPATIBILITY ***
When the 'procs' trace flag is enabled, a 'spawned'
trace event is now also generated by a newly created
process. The previous event 'spawn' remains, but as it
is generated by the process that did the spawn, it is
not guaranteed that it is ordered with other trace
events from the newly spawned process. So when tracking
the lifetime of a process this new event should be used
as the creation event.
This new trace event is marked as an incompatibility
because tools that expect certain trace events when
enabling 'procs' will have to updated.
OTP-13501 Application(s): erts
Add the erlang:match_spec_test/3 function. The
functions allows the testing of match specifications
for both tracing and ets tables. It can be used to test
that a match specification does the expected filtering
on specific data. It also returns more verbose error
reasons for incorrectly constructed match
specifications.
OTP-13503 Application(s): erts
*** HIGHLIGHT ***
The erts internal tracing support has been changed to
have much less overhead and be more scalable.
This rewrite does not break any backwards
incompatibilities, but it does change the ordering of
some trace messages when compared to previous releases.
It should be noted that this only applies to trace
messages sent to processes or ports, it does not apply
to the new tracer module. However in future releases
they may also be effected by this.
Trace messages are only guaranteed to be ordered from
one traced process or port. In previous releases this
was not visible as a 'send' trace message would always
arrive before the corresponding 'receive' trace message
that is no longer always the case. This also means that
timestamped trace messages may seem to arrive out of
order as the timestamp is taken when the event is
triggered and not when it is put in the queue of the
tracer.
OTP-13507 Application(s): erts
Add possibility to filter send and receive trace with
match specifications.
OTP-13522 Application(s): erts, stdlib
Related Id(s): PR-1025
Add maps:update_with/3,4 and maps:take/2
OTP-13532 Application(s): erts, runtime_tools
*** POTENTIAL INCOMPATIBILITY ***
Introduce LTTng tracing via Erlang tracing.
For LTTng to be enabled OTP needs to be built with
configure option --with-dynamic-trace=lttng.
The dynamic trace module dyntrace is now capable to be
used as a LTTng sink for Erlang tracing. For a list of
all tracepoints, see Runtime Tools User's Guide .
This feature also introduces an incompatible change in
trace tags. The trace tags gc_start and gc_end has been
split into gc_minor_start, gc_minor_end and
gc_major_start, gc_major_end.
OTP-13541 Application(s): erts
Related Id(s): PR-1026
Print heap pointers for garbing processes during
crashdump
OTP-13560 Application(s): erts
Changed and improved low level memory statistics
returned by erlang:system_info/1. The info for
erts_mmap has been moved from mseg_alloc to its own
section returned by {allocator, erts_mmap}.
OTP-13580 Application(s): erts
Add enif_snprintf to the NIF API
The function enif_snprintf is similar to snprintf call
but can handle formatting of Erlang terms via %T format
specifier.
OTP-13599 Application(s): erts
The warning in the documentation for erlang:raise/3 has
been removed. It is now officially perfectly fine to
use raise/3 in production code.
OTP-13606 Application(s): erts
Fix bugs caused by the VM sometimes truncating object
sizes or offsets to 32 bits on 64-bit hosts. These bugs
were mainly found when working with large unicode
strings and nifs environments.
OTP-13627 Application(s): erts
Add -start_epmd command line option, this lets you
disable automatic starting of epmd when starting a
distributed node.
Add -epmd_module command line option, this lets you
specify a module to register and look-up node names in.
The default module is erl_epmd.
OTP-13630 Application(s): erts
erlang:halt now truncates strings longer than 200
characters instead of failing with badarg.
OTP-13634 Application(s): erts
Fix possible race in poller wake up on windows
Full runtime dependencies of erts-8.0: kernel-5.0, sasl-3.0,
stdlib-3.0
---------------------------------------------------------------------
--- et-1.6 ----------------------------------------------------------
---------------------------------------------------------------------
The et-1.6 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13545 Application(s): et
Update selector to utilize new garbage collection trace
tags.
Full runtime dependencies of et-1.6: erts-8.0, kernel-3.0,
runtime_tools-1.10, stdlib-2.0, wx-1.2
---------------------------------------------------------------------
--- eunit-2.3 -------------------------------------------------------
---------------------------------------------------------------------
The eunit-2.3 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13612 Application(s): eunit
There is a new debugVal/2 that gives control over the
truncation depth.
Full runtime dependencies of eunit-2.3: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
--- hipe-3.15.1 -----------------------------------------------------
---------------------------------------------------------------------
The hipe-3.15.1 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13407 Application(s): hipe
Related Id(s): PR-984
HiPE compiler crashed, during compilation, in some
cases that involved inlining of float operations on
complicated control flow graphs.
OTP-13626 Application(s): hipe
Various fixes and improvements to the HiPE LLVM
backend.
-- Add support for LLVM 3.7 and 3.8 in the HiPE/LLVM
x86_64 backend
-- Reinstate support for the LLVM backend on x86 (works
OK for LLVM 3.5 to 3.7 -- LLVM 3.8 has a bug that
prevents it from generating correct native code on x86)
--- Improvements and New Features ---
OTP-13625 Application(s): hipe
Related Id(s): PR-1069
Elimination of maps:is_key/2 calls to HiPE
Full runtime dependencies of hipe-3.15.1: compiler-5.0, erts-7.1,
kernel-3.0, stdlib-2.5, syntax_tools-1.6.14
---------------------------------------------------------------------
--- inets-6.3 -------------------------------------------------------
---------------------------------------------------------------------
The inets-6.3 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13644 Application(s): inets
Ftp client fixes: 1) Corrected a bug that the ftp
client gen_server crashed if the listening data socket
was closed.
2) Corrections of ftp client error codes so they are as
defined in the reference manual
--- Improvements and New Features ---
OTP-12441 Application(s): inets
Remove usage of erlang:now().
OTP-13383 Application(s): inets
Related Id(s): PR-972
Add handling of DELETE Body to http client.
OTP-13445 Application(s): inets
Related Id(s): PR-988
Removed references to mod_include and webtool from
examples and tests.
OTP-13561 Application(s): inets
*** POTENTIAL INCOMPATIBILITY ***
Remove module inets_regexp. Module re should be used
instead.
Full runtime dependencies of inets-6.3: erts-6.0, kernel-3.0,
mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-2.0
---------------------------------------------------------------------
--- jinterface-1.7 --------------------------------------------------
---------------------------------------------------------------------
The jinterface-1.7 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13482 Application(s): jinterface
Fix Jinterface build on Maven
--- Improvements and New Features ---
OTP-13488 Application(s): erl_interface, erts, jinterface
Handle terms (pids,ports and refs) from nodes with a
'creation' value larger than 3. This is a preparation
of the distribution protocol to allow OTP 19 nodes to
correctly communicate with future nodes (20 or higher).
The 'creation' value differentiates different
incarnations of the same node (name).
---------------------------------------------------------------------
--- kernel-5.0 ------------------------------------------------------
---------------------------------------------------------------------
The kernel-5.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-12593 Application(s): erts, kernel
The handling of on_load functions has been improved.
The major improvement is that if a code upgrade fails
because the on_load function fails, the previous
version of the module will now be retained.
OTP-13409 Application(s): kernel
rpc:call() and rpc:block_call() would sometimes cause
an exception (which was not mentioned in the
documentation). This has been corrected so that
{badrpc,Reason} will be returned instead.
OTP-13410 Application(s): kernel
On Windows, for modules that were loaded early (such as
the lists module), code:which/1 would return the path
with mixed slashes and backslashes, for example:
"C:\\Program
Files\\erl8.0/lib/stdlib-2.7/ebin/lists.beam". This has
been corrected.
OTP-13411 Application(s): erts, kernel
Make file:datasync use fsync instead of fdatasync on
Mac OSX.
OTP-13444 Application(s): kernel
The default chunk size for the fallback sendfile
implementation, used on platforms that do not have a
native sendfile, has been decreased in order to reduce
connectivity issues.
OTP-13461 Application(s): kernel
Large file writes (2Gb or more) could fail on some Unix
platforms (for example, OS X and FreeBSD).
OTP-13470 Application(s): kernel
Related Id(s): #969, Pull
A bug has been fixed where the DNS resolver inet_res
did not refresh its view of the contents of for example
resolv.conf immediately after start and hence then
failed name resolution. Reported and fix suggested by
Michal Ptaszek in GitHUB pull req #949.
OTP-13516 Application(s): kernel
Related Id(s): PR-1008
Fix process leak from global_group.
OTP-13622 Application(s): kernel
Related Id(s): PR-1065
*** POTENTIAL INCOMPATIBILITY ***
The function inet:gethostbyname/1 now honors the
resolver option inet6 instead of always looking up IPv4
addresses.
OTP-13631 Application(s): kernel
Related Id(s): PR-911
The Status argument to init:stop/1 is now sanity
checked to make sure erlang:halt does not fail.
--- Improvements and New Features ---
OTP-12837 Application(s): kernel
Add {line_delim, byte()} option to inet:setopts/2 and
decode_packet/3
OTP-12908 Application(s): erts, kernel
Added os:perf_counter/1.
The perf_counter is a very very cheap and high
resolution timer that can be used to timestamp system
events. It does not have monoticity guarantees, but
should on most OS's expose a monotonous time.
OTP-13089 Application(s): kernel
The os:cmd call has been optimized on unix platforms to
be scale better with the number of schedulers.
OTP-13111 Application(s): erts, kernel
New functions that can load multiple modules at once
have been added to the 'code' module. The functions are
code:atomic_load/1, code:prepare_loading/1,
code:finish_loading/1, and
code:ensure_modules_loaded/1.
OTP-13191 Application(s): kernel
The code path cache feature turned out not to be very
useful in practice and has been removed. If an attempt
is made to enable the code path cache, there will be a
warning report informing the user that the feature has
been removed.
OTP-13294 Application(s): kernel
When an attempt is made to start a distributed Erlang
node with the same name as an existing node, the error
message will be much shorter and easier to read than
before. Example:
Protocol 'inet_tcp': the name somename@somehost seems
to be in use by another Erlang node
OTP-13325 Application(s): kernel
The output of the default error logger is somewhat
prettier and easier to read. The default error logger
is used during start-up of the OTP system. If the
start-up fails, the output will be easier to read.
OTP-13449 Application(s): kernel
*** POTENTIAL INCOMPATIBILITY ***
The functions rpc:safe_multi_server_call/2,3 that were
deprecated in R12B have been removed.
OTP-13458 Application(s): kernel
Update the error reasons in dist_util, and show them in
the logs if net_kernel:verbose(1) has been called.
OTP-13572 Application(s): erts, kernel
Related Id(s): PR-612
*** HIGHLIGHT ***
Experimental support for Unix Domain Sockets has been
implemented. Read the sources if you want to try it
out. Example: gen_udp:open(0,
[{ifaddr,{local,"/tmp/socket"}}]). Documentation will
be written after user feedback on the experimental API.
OTP-13650 Application(s): kernel
Allow heart to be configured to not kill the previous
emulator before calling the HEART_COMMAND. This is done
by setting the environment variable HEART_NO_KILL to
TRUE.
Full runtime dependencies of kernel-5.0: erts-8.0, sasl-3.0,
stdlib-3.0
---------------------------------------------------------------------
--- mnesia-4.14 -----------------------------------------------------
---------------------------------------------------------------------
The mnesia-4.14 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13058 Application(s): mnesia
*** HIGHLIGHT ***
Added experimental external backend plugin api. This
adds the possibility for the user to write other
storage backends for data, for example by using shared
memory or ram-cached disk storage.
The plugin api may change in future versions after
being battle tested.
Full runtime dependencies of mnesia-4.14: erts-7.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- observer-2.2 ----------------------------------------------------
---------------------------------------------------------------------
The observer-2.2 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13481 Application(s): observer, runtime_tools
Update observer GUI to support tracing on ports, and to
set matchspecs for send/receive. This required some
minor bugfixes in runtime_tools/dbg.
OTP-13500 Application(s): observer, runtime_tools
Update dbg and ttb to work with a tracer module as
tracer and tracing on ports.
OTP-13555 Application(s): observer
Added possibility to change update frequency and length
of the graph windows.
OTP-13556 Application(s): observer
Improved background coloring to work with dark themes
and other visual improvements.
OTP-13647 Application(s): observer
Crashdump viewer now allows port info "Port controls
forker process..."
Full runtime dependencies of observer-2.2: erts-7.0, et-1.5,
inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.0, wx-1.2
---------------------------------------------------------------------
--- odbc-2.11.2 -----------------------------------------------------
---------------------------------------------------------------------
The odbc-2.11.2 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13559 Application(s): odbc
Configure enhancement for better handling program paths
used in the build process
Full runtime dependencies of odbc-2.11.2: erts-6.0, kernel-3.0,
stdlib-2.0
---------------------------------------------------------------------
--- os_mon-2.4.1 ----------------------------------------------------
---------------------------------------------------------------------
The os_mon-2.4.1 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13526 Application(s): os_mon
Related Id(s): PR-1029
Fix type specification for cpu_sup:util/1
OTP-13548 Application(s): os_mon
Related Id(s): PR-1046
Fix strict compilation on SUN/SPARC
OTP-13597 Application(s): os_mon
Related Id(s): PR-1049
Implement cpu_sup:util/0,1 on Mac OSX
OTP-13601 Application(s): os_mon
Related Id(s): PR-1039
Fix memsup:get_os_wordsize() on 64-bit FreeBSD and
64-bit Linux PPC
Full runtime dependencies of os_mon-2.4.1: erts-6.0, kernel-3.0,
mnesia-4.12, otp_mibs-1.0.9, sasl-2.4, snmp-4.25.1, stdlib-2.0
---------------------------------------------------------------------
--- parsetools-2.1.2 ------------------------------------------------
---------------------------------------------------------------------
The parsetools-2.1.2 application can be applied independently of
other applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13551 Application(s): asn1, cosEvent, cosEventDomain,
cosFileTransfer, cosNotification, cosProperty, cosTime,
cosTransactions, gs, ic, megaco, orber, otp_mibs,
parsetools, snmp, typer, xmerl
Internal changes
Full runtime dependencies of parsetools-2.1.2: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
--- percept-0.9 -----------------------------------------------------
---------------------------------------------------------------------
The percept-0.9 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13422 Application(s): percept
Remove deprecated erlang:now/0 calls
--- Improvements and New Features ---
OTP-13598 Application(s): percept
Improve line implementation
Add capabilities for line thickness and anti-aliasing.
Full runtime dependencies of percept-0.9: erts-6.0, inets-5.10,
kernel-3.0, runtime_tools-1.8.14, stdlib-2.0
---------------------------------------------------------------------
--- public_key-1.2 --------------------------------------------------
---------------------------------------------------------------------
The public_key-1.2 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13554 Application(s): public_key
The ASN-1 type GeneralName can have more values, then
the most common directory name, the code now handles
this.
--- Improvements and New Features ---
OTP-13408 Application(s): public_key
*** HIGHLIGHT ***
Handle PEM encoded EC public keys
Full runtime dependencies of public_key-1.2: asn1-3.0, crypto-3.3,
erts-6.0, kernel-3.0, stdlib-2.0
---------------------------------------------------------------------
--- reltool-0.7.1 ---------------------------------------------------
---------------------------------------------------------------------
The reltool-0.7.1 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13033 Application(s): reltool
Related Id(s): OTP-12719
Modify the code as motivated by a change of the Erlang
Parser (undefined is no longer automatically inserted
to the type of record fields without an initializer).
Full runtime dependencies of reltool-0.7.1: erts-7.0, kernel-3.0,
sasl-2.4, stdlib-2.0, tools-2.6.14, wx-1.2
---------------------------------------------------------------------
--- runtime_tools-1.10 ----------------------------------------------
---------------------------------------------------------------------
The runtime_tools-1.10 application can be applied independently of
other applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13576 Application(s): runtime_tools
Related Id(s): ERL-119
Fix bug in dbg:trace_port/2 that could cause the trace
ip driver to produce faulty error reports
"...(re)selected before stop_select was called for
driver trace_ip_drv".
--- Improvements and New Features ---
OTP-12345 Application(s): erts, runtime_tools
*** HIGHLIGHT ***
Add microstate accounting
Microstate accounting is a way to track which state the
different threads within ERTS are in. The main usage
area is to pin point performance bottlenecks by
checking which states the threads are in and then from
there figuring out why and where to optimize.
Since checking whether microstate accounting is on or
off is relatively expensive only a few of the states
are enabled by default and more states can be enabled
through configure.
There is a convenience module called msacc that has
been added to runtime_tools that can assist in
gathering and interpreting the data from Microstate
accounting.
For more information see
erlang:statistics(microstate_accounting, _) and the
msacc module in runtime_tools.
OTP-13481 Application(s): observer, runtime_tools
Update observer GUI to support tracing on ports, and to
set matchspecs for send/receive. This required some
minor bugfixes in runtime_tools/dbg.
OTP-13500 Application(s): observer, runtime_tools
Update dbg and ttb to work with a tracer module as
tracer and tracing on ports.
OTP-13502 Application(s): runtime_tools
Updated dbg to accept the new trace options
monotonic_timestamp and strict_monotonic_timestamp.
OTP-13532 Application(s): erts, runtime_tools
*** POTENTIAL INCOMPATIBILITY ***
Introduce LTTng tracing via Erlang tracing.
For LTTng to be enabled OTP needs to be built with
configure option --with-dynamic-trace=lttng.
The dynamic trace module dyntrace is now capable to be
used as a LTTng sink for Erlang tracing. For a list of
all tracepoints, see Runtime Tools User's Guide .
This feature also introduces an incompatible change in
trace tags. The trace tags gc_start and gc_end has been
split into gc_minor_start, gc_minor_end and
gc_major_start, gc_major_end.
Full runtime dependencies of runtime_tools-1.10: erts-8.0,
kernel-5.0, mnesia-4.12, stdlib-3.0
---------------------------------------------------------------------
--- sasl-3.0 --------------------------------------------------------
---------------------------------------------------------------------
The sasl-3.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13184 Application(s): sasl
*** POTENTIAL INCOMPATIBILITY ***
The module 'overload' is removed.
Full runtime dependencies of sasl-3.0: erts-8.0, kernel-5.0,
stdlib-3.0, tools-2.6.14
---------------------------------------------------------------------
--- ssh-4.3 ---------------------------------------------------------
---------------------------------------------------------------------
The ssh-4.3 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-12860 Application(s): ssh
A socket created and connected by gen_tcp could now be
used as input to ssh:connect, ssh:shell,
ssh_sftp:start_channel and ssh:daemon.
OTP-13131 Application(s): ssh
Some time optimization mainly in message encoding.
OTP-13175 Application(s): ssh
Optimized the sftp client time by setting new packet
and window sizes.
OTP-13267 Application(s): ssh
The ssh_connection_handler module in SSH is changed and
now uses the new behaviour gen_statem.
The module can be used as an example of a gen_statem
callback module but with a warning: This commit of ssh
is just a straightforward port from gen_fsm to
gen_statem with some code cleaning. Since the state
machine and the state callbacks are almost unchanged
the ssh module does not demonstrate the full potential
of the new behaviour.
The "new" state machine uses compound states. The ssh
server and client state machines are quite similar but
differences exist. With gen_fsm there were flags in the
user data which in fact implemented "substates". Now
with gen_statem those are made explicit in the state
names, eg. the state userauth and the binary role-flag
becomes the two state names {userauth, server} and
{userauth, client}.
OTP-13347 Application(s): ssh
Related Id(s): ERL-86
The {error, Reason} tuples returned from ssh_sftp api
functions are described.
OTP-13479 Application(s): ssh
Added -spec in ssh
OTP-13527 Application(s): ssh
It is now possible to call ssh:daemon/{1,2,3} with
Port=0. This makes the daemon select a free listening
tcp port before opening it. To find this port number
after the call, use the new function ssh:daemon_info/1.
See the reference manual for details.
Full runtime dependencies of ssh-4.3: crypto-3.3, erts-6.0,
kernel-3.0, public_key-1.1, stdlib-3.0
---------------------------------------------------------------------
--- ssl-8.0 ---------------------------------------------------------
---------------------------------------------------------------------
The ssl-8.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13651 Application(s): ssl
Server now rejects, a not requested client cert, as an
incorrect handshake message and ends the connection.
--- Improvements and New Features ---
OTP-13195 Application(s): ssl
*** POTENTIAL INCOMPATIBILITY ***
Remove default support for DES cipher suites
OTP-13214 Application(s): crypto, ssl
Deprecate the function crypto:rand_bytes and make sure
that crypto:strong_rand_bytes is used in all places
that are cryptographically significant.
OTP-13255 Application(s): ssl
*** HIGHLIGHT ***
Better error handling of user error during TLS upgrade.
ERL-69 is solved by gen_statem rewrite of ssl
application.
OTP-13256 Application(s): ssl
Provide user friendly error message when crypto rejects
a key
OTP-13415 Application(s): ssl
Add ssl:getstat/1 and ssl:getstat/2
OTP-13429 Application(s): ssl
Related Id(s): Pull#956
TLS distribution connections now allow specifying the
options verify_fun, crl_check and crl_cache. See the
documentation. GitHub pull req #956 contributed by
Magnus Henoch.
OTP-13431 Application(s): ssl
Remove confusing error message when closing a
distributed erlang node running over TLS
OTP-13463 Application(s): ssl
Remove default support for use of md5 in TLS 1.2
signature algorithms
OTP-13464 Application(s): ssl
ssl now uses gen_statem instead of gen_fsm to implement
the ssl connection process, this solves some timing
issues in addition to making the code more intuitive as
the behaviour can be used cleanly instead of having a
lot of workaround for shortcomings of the behaviour.
OTP-13465 Application(s): ssl
*** POTENTIAL INCOMPATIBILITY ***
Phase out interoperability with clients that offer
SSLv2. By default they are no longer supported, but an
option to provide interoperability is offered.
OTP-13530 Application(s): ssl
OpenSSL has functions to generate short (eight hex
digits) hashes of issuers of certificates and CRLs.
These hashes are used by the "c_rehash" script to
populate directories of CA certificates and CRLs, e.g.
in the Apache web server. Add functionality to let an
Erlang program find the right CRL for a given
certificate in such a directory.
OTP-13629 Application(s): ssl
Some legacy TLS 1.0 software does not tolerate the
1/n-1 content split BEAST mitigation technique. Add a
beast_mitigation SSL option (defaulting to
one_n_minus_one) to select or disable the BEAST
mitigation technique.
OTP-13632 Application(s): ssl
*** HIGHLIGHT ***
Enhance error log messages to facilitate for users to
understand the error
OTP-13636 Application(s): ssl
Increased default DH params to 2048-bit
OTP-13656 Application(s): ssl
Propagate CRL unknown CA error so that public_key
validation process continues correctly and determines
what should happen.
OTP-13678 Application(s): ssl
Introduce a flight concept for handshake packages. This
is a preparation for enabling DTLS, however it can also
have a positive effects for TLS on slow and unreliable
networks.
Full runtime dependencies of ssl-8.0: crypto-3.3, erts-7.0,
inets-5.10.7, kernel-3.0, public_key-1.2, stdlib-3.0
---------------------------------------------------------------------
--- stdlib-3.0 ------------------------------------------------------
---------------------------------------------------------------------
The stdlib-3.0 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13260 Application(s): stdlib
Related Id(s): seq13002
Fix a race bug affecting dets:open_file/2.
OTP-13459 Application(s): erts, stdlib
Don't search for non-existing Map keys twice
For maps:get/2,3 and maps:find/2, searching for an
immediate key, e.g. an atom, in a small map, the search
was performed twice if the key did not exist.
OTP-13531 Application(s): stdlib
Avoid stray corner-case math errors on Solaris, e.g. an
error is thrown on underflows in exp() and pow() when
it shouldn't be.
OTP-13534 Application(s): stdlib
Related Id(s): ERL-135
Fix linting of map key variables
Map keys cannot be unbound and then used in parallel
matching.
Example: #{ K := V } = #{ k := K } = M. This is illegal
if 'K' is not bound.
OTP-13602 Application(s): stdlib
Fixed a bug in re on openbsd where sometimes re:run
would return an incorrect result.
OTP-13618 Application(s): stdlib
Related Id(s): PR-1001
To avoid potential timer bottleneck on supervisor
restart, timer server is no longer used when the
supervisor is unable to restart a child.
OTP-13662 Application(s): stdlib
Related Id(s): seq13136
The Erlang code preprocessor (epp) can handle file
names spanning over many tokens. Example: -include("a"
"file" "name")..
--- Improvements and New Features ---
OTP-10292 Application(s): stdlib
The types of The Abstract Format in the erl_parse
module have been refined.
OTP-11879 Application(s): stdlib
*** POTENTIAL INCOMPATIBILITY ***
Undocumented syntax for function specifications, -spec
F/A :: Domain -> Range, has been removed (without
deprecation).
Using the is_subtype(V, T) syntax for constraints (in
function specifications) is no longer documented, and
the newer syntax V :: T should be used instead. The
Erlang Parser still recognizes the is_subtype syntax,
and will continue to do so for some time.
OTP-12502 Application(s): stdlib
Related Id(s): OTP-12501
The 'random' module has been deprecated. Use the 'rand'
module instead.
OTP-12719 Application(s): stdlib
*** POTENTIAL INCOMPATIBILITY ***
Background: In record fields with a type declaration
but without an initializer, the Erlang parser inserted
automatically the singleton type 'undefined' to the
list of declared types, if that value was not present
there. That is, the record declaration:
-record(rec, {f1 :: float(), f2 = 42 :: integer(), f3
:: some_mod:some_typ()}).
was translated by the parser to:
-record(rec, {f1 :: float() | 'undefined', f2 = 42 ::
integer(), f3 :: some_mod:some_typ() | 'undefined'}).
The rationale for this was that creation of a "dummy"
#rec{} record should not result in a warning from
dialyzer that, for example, the implicit initialization
of the #rec.f1 field violates its type declaration.
Problems: This seemingly innocent action has some
unforeseen consequences.
For starters, there is no way for programmers to
declare that e.g. only floats make sense for the f1
field of #rec{} records when there is no "obvious"
default initializer for this field. (This also affects
tools like PropEr that use these declarations produced
by the Erlang parser to generate random instances of
records for testing purposes.)
It also means that dialyzer does not warn if e.g. an
is_atom/1 test or something more exotic like an
atom_to_list/1 call is performed on the value of the f1
field.
Similarly, there is no way to extend dialyzer to warn
if it finds record constructions where f1 is not
initialized to some float.
Last but not least, it is semantically problematic when
the type of the field is an opaque type: creating a
union of an opaque and a structured type is very
problematic for analysis because it fundamentally
breaks the opacity of the term at that point.
Change: To solve these problems the parser will not
automatically insert the 'undefined' value anymore;
instead the user has the option to choose the places
where this value makes sense (for the field) and where
it does not and insert the | 'undefined' there
manually.
Consequences of this change: This change means that
dialyzer will issue a warning for all places where
records with uninitialized fields are created and those
fields have a declared type that is incompatible with
'undefined' (e.g. float()). This warning can be
suppressed easily by adding | 'undefined' to the type
of this field. This also adds documentation that the
user really intends to create records where this field
is uninitialized.
OTP-12861 Application(s): stdlib
Remove deprecated functions in the modules erl_scan and
erl_parse.
OTP-13059 Application(s): compiler, stdlib
*** HIGHLIGHT ***
The pre-processor can now expand the ?FUNCTION_NAME and
?FUNCTION_ARITY macros.
OTP-13065 Application(s): stdlib
Related Id(s): PR-960
*** HIGHLIGHT ***
A new behaviour gen_statem has been implemented. It has
been thoroughly reviewed, is stable enough to be used
by at least two heavy OTP applications, and is here to
stay. But depending on user feedback, we do not expect
but might find it necessary to make minor not backwards
compatible changes into OTP-20.0, so its state can be
designated as "not quite experimental"...
The gen_statem behaviour is intended to replace gen_fsm
for new code. It has the same features and add some
really useful:
-- State code is gathered
-- The state can be any term
-- Events can be postponed
-- Events can be self generated
-- A reply can be sent from a later state
-- There can be multiple sys traceable replies
The callback model(s) for gen_statem differs from the
one for gen_fsm, but it is still fairly easy to rewrite
from gen_fsm to gen_statem.
OTP-13082 Application(s): stdlib
Optimize binary:split/2 and binary:split/3 with native
BIF implementation.
OTP-13148 Application(s): stdlib
*** POTENTIAL INCOMPATIBILITY ***
Background: The types of record fields have since R12B
been put in a separate form by epp:parse_file(),
leaving the record declaration form untyped. The
separate form, however, does not follow the syntax of
type declarations, and parse transforms inspecting
-type() attributes need to know about the special
syntax. Since the compiler stores the return value of
epp:parse_file() as debug information in the abstract
code chunk ("Abst" or abstract_code), tools too need to
know about the special syntax, if they inspect -type()
attributes in abstract code.
Change: No separate type form is created by
epp:parse_file(), but the type information is kept in
the record fields. This means that all parse transforms
and all tools inspecting -record() declarations need to
recognize {typed_record_field, Field, Type}.
OTP-13152 Application(s): stdlib
Unsized fields of the type bytes in binary generators
are now forbidden. (The other ways of writing unsized
fields, such as binary, are already forbidden.)
OTP-13153 Application(s): stdlib
The type map() is built-in, and cannot be redefined.
OTP-13229 Application(s): stdlib
Related Id(s): ERL-55
Let dets:open_file() exit with a badarg message if
given a raw file name (a binary).
OTP-13392 Application(s): stdlib
Add filename:basedir/2,3
basedir returns suitable path(s) for 'user_cache',
'user_config', 'user_data', 'user_log', 'site_config'
and 'site_data'. On linux and linux like systems the
paths will respect the XDG environment variables.
OTP-13476 Application(s): stdlib
There are new preprocessor directives -error(Term) and
-warning(Term) to cause a compilation error or a
compilation warning, respectively.
OTP-13487 Application(s): erts, stdlib
Optimize '++' operator and lists:append/2 by using a
single pass to build a new list while checking for
properness.
OTP-13522 Application(s): erts, stdlib
Related Id(s): PR-1025
Add maps:update_with/3,4 and maps:take/2
OTP-13523 Application(s): stdlib
lists:join/2 has been added. Similar to string:join/2
but works with arbitrary lists.
OTP-13524 Application(s): stdlib
Related Id(s): PR-1002
Obfuscate asserts to make Dialyzer shut up.
OTP-13619 Application(s): stdlib
Related Id(s): PR-1000
*** POTENTIAL INCOMPATIBILITY ***
Supervisors now explicitly add their callback module in
the return from sys:get_status/1,2. This is to simplify
custom supervisor implementations. The Misc part of the
return value from sys:get_status/1,2 for a supervisor
is now:
[{data, [{"State",
State}]},{supervisor,[{"Callback",Module}]}]
OTP-13623 Application(s): stdlib
Relax translation of initial calls in proc_lib, i.e.
remove the restriction to only do the translation for
gen_server and gen_fsm. This enables user defined gen
based generic callback modules to be displayed nicely
in c:i() and observer.
OTP-13658 Application(s): stdlib
The function queue:lait/1 (misspelling of liat/1) is
now deprecated.
Full runtime dependencies of stdlib-3.0: compiler-5.0, crypto-3.3,
erts-8.0, kernel-5.0, sasl-3.0
---------------------------------------------------------------------
--- syntax_tools-2.0 ------------------------------------------------
---------------------------------------------------------------------
The syntax_tools-2.0 application can be applied independently of
other applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-12863 Application(s): syntax_tools
*** POTENTIAL INCOMPATIBILITY ***
The abstract data type in erl_syntax is augmented with
types and function specifications.
The module erl_prettypr pretty prints types and
function specification, and the output can be parsed.
The types of record fields are no longer ignored. As a
consequence erl_syntax_lib:analyze_record_field/1
returns {Default, Type} instead of Default. The
functions analyze_record_attribute, analyze_attribute,
analyze_form, and analyze_forms in the erl_syntax_lib
module are also affected by this incompatible change.
Full runtime dependencies of syntax_tools-2.0: compiler-7.0,
erts-8.0, kernel-5.0, stdlib-3.0
---------------------------------------------------------------------
--- tools-2.8.4 -----------------------------------------------------
---------------------------------------------------------------------
The tools-2.8.4 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13499 Application(s): tools
Update fprof to use the new 'spawned' trace event to
determine when a process has been created.
--- Improvements and New Features ---
OTP-13593 Application(s): tools
Optimize adding multiple modules to an Xref server.
OTP-13610 Application(s): tools
Various emacs mode improvements, such as better tags
support.
Full runtime dependencies of tools-2.8.4: compiler-5.0, erts-7.0,
inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5
---------------------------------------------------------------------
--- typer-0.9.11 ----------------------------------------------------
---------------------------------------------------------------------
The typer-0.9.11 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13551 Application(s): asn1, cosEvent, cosEventDomain,
cosFileTransfer, cosNotification, cosProperty, cosTime,
cosTransactions, gs, ic, megaco, orber, otp_mibs,
parsetools, snmp, typer, xmerl
Internal changes
Full runtime dependencies of typer-0.9.11: compiler-5.0,
dialyzer-2.7, erts-6.0, hipe-3.10.3, kernel-3.0, stdlib-2.0
---------------------------------------------------------------------
--- wx-1.7 ----------------------------------------------------------
---------------------------------------------------------------------
The wx-1.7 application can be applied independently of other
applications on a full OTP 19 installation.
--- Fixed Bugs and Malfunctions ---
OTP-13491 Application(s): wx
Fixed bugs which could cause called functions to be
invoked twice or not at all when callbacks where
invoked at the same time.
--- Improvements and New Features ---
OTP-13553 Application(s): wx
*** POTENTIAL INCOMPATIBILITY ***
Changed atom 'boolean' fields in #wxMouseState{} to
'boolean()'.
Moved out arguments in wxListCtrl:hitTest to result.
Removed no-op functions in wxGauge that have been
removed from wxWidgets-3.1.
Full runtime dependencies of wx-1.7: erts-6.0, kernel-3.0, stdlib-2.0
---------------------------------------------------------------------
--- xmerl-1.3.11 ----------------------------------------------------
---------------------------------------------------------------------
The xmerl-1.3.11 application can be applied independently of other
applications on a full OTP 19 installation.
--- Improvements and New Features ---
OTP-13551 Application(s): asn1, cosEvent, cosEventDomain,
cosFileTransfer, cosNotification, cosProperty, cosTime,
cosTransactions, gs, ic, megaco, orber, otp_mibs,
parsetools, snmp, typer, xmerl
Internal changes
Full runtime dependencies of xmerl-1.3.11: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
--- Thanks to -------------------------------------------------------
---------------------------------------------------------------------
Aleksei Magusev, Alexey Lebedeff, Andreas Schultz, Andrew Bennett,
Byaruhanga Franklin, Constantin Rack, Daniel Sommermann, Daniil
Fedotov, Derek Brown, Diana Corbacho, Dmytro Lytovchenko, Dániel
Szoboszlay, Erik Norgren, FabioBatSilva, Jesper Louis Andersen, Joe
DeVivo, Johan Claesson, John, John Eckersberg, José Valim, Kenji
Rikitake, Kenneth Lakin, Kostis Sagonas, Loïc Hoguin, Luca Favatella,
Lukas Larsson, Magnus Henoch, Magnus Lång, Michael Klishin, Michael
Santos, Michal Ptaszek, Mikael Pettersson, Milton Inostroza,
Nathaniel Waisbrot, Nikolaos S. Papaspyrou, Péter Gömöri, Richard
Carlsson, Rico Antonio Felix, Sasan Hezarkhani, Sean Charles, Serge
Aleynikov, Simon Cornish, Stavros Aronis, Stefan Strigler, Steve
Vinoski, Stuart Thackray, Ulf Wiger, Vlad Dumitrescu, Yiannis
Tsiouris, Yuki Ito, alisdair sullivan, def_null, eksperimental,
jrobhoward, xsipewe, xuming
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------