From 4f4b441446afeadd251025d636902fa2cfa86542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 26 Jun 2018 14:30:24 +0200 Subject: Add release notes for OTP-18.0+ The version 18.3.4.3 is missing and seems to have had no announcement or README, I do not know why. --- release-notes/OTP-19.0.README.txt | 3134 +++++++++++++++++++++++++++++++++++++ 1 file changed, 3134 insertions(+) create mode 100644 release-notes/OTP-19.0.README.txt (limited to 'release-notes/OTP-19.0.README.txt') diff --git a/release-notes/OTP-19.0.README.txt b/release-notes/OTP-19.0.README.txt new file mode 100644 index 0000000..5053de1 --- /dev/null +++ b/release-notes/OTP-19.0.README.txt @@ -0,0 +1,3134 @@ +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 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + -- cgit v1.2.3