From 0118046f9bda8dcf3594184fa439b79267db8017 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 25 Mar 2019 18:25:04 +0100 Subject: Prepare release --- erts/doc/src/notes.xml | 380 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 380 insertions(+) (limited to 'erts/doc/src/notes.xml') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 248b871ca0..dbe09dd04b 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -31,6 +31,386 @@

This document describes the changes made to the ERTS application.

+
Erts 10.4 + +
Fixed Bugs and Malfunctions + + +

+ Do not allocate new bitstring/binary when an empty binary + is appended.

+

+ Own Id: OTP-15535 Aux Id: PR-2055

+
+ +

+ Document that process_info(_, current_function) + can return {current_function, undefined} in case + of execution of native code.

+

+ Own Id: OTP-15543 Aux Id: PR-2089

+
+ +

+ Fixed bug in ets:select, ets:match and + friends which could cause the table to remain fixated (as + if ets:safe_fixtable had been called) after the + call returned. This could happen for protected + tables if another concurrent running process transfered + table ownership to the process during its + ets:select/match call. Ownership can be transfered using + either ets:give_away or the heir table + option.

+

+ Own Id: OTP-15672

+
+ +

Fixed a Windows-specific bug in file:list_dir/1 + that caused it to misbehave on network shares.

+

+ Own Id: OTP-15693

+
+ +

+ Fixed bug when calling enif_whereis_* from NIF + resource destructor. Symtoms could be emulator crash or + hanging scheduler threads.

+

+ Own Id: OTP-15694 Aux Id: ERL-863

+
+ +

Fixed a bug in the error case of apply/3, where + the exception would erroneously have an empty argument + list in some cases.

+

+ Own Id: OTP-15698

+
+
+
+ + +
Improvements and New Features + + +

+ Add support for Erlang Distribution protocol to split the + payload of large signals into several fragments. This + allows other processes to communicate uninterrupted + during the transmission of these signals.

+

+ Own Id: OTP-13397

+
+ +

+ A simple socket API is provided through the socket + module. This is a low level API that does *not* replace + gen_[tcp|udp|sctp]. It is intended to *eventually* + replace the inet driver, but not the high level + gen-modules (gen_tcp, gen_udp and gen_sctp). It also + provides a basic API that facilitates the implementation + of other protocols, than TCP, UDP and SCTP.

+

+ Known issues are; No support for the Windows OS + (currently), a small term leakage.

+

+ Own Id: OTP-14831

+
+ +

Added NIF functions enif_set_pid_undefined, + enif_is_pid_undefined + and enif_compare_pids.

+

+ Own Id: OTP-15011 Aux Id: PR-2147

+
+ +

Underutilized memory segments (carriers) can now move + between all allocator instances, rather than just between + instances of the same type, which greatly reduces memory + usage in some scenarios.

+

+ Own Id: OTP-15063

+
+ +

The emulator will now mark free blocks in pooled + carriers with madvise(2) + MADV_FREE (or similar), + letting the OS reclaim the associated physical memory if + necessary.

+

+ Own Id: OTP-15075

+
+ +

+ New ERL_NIF_SELECT_CANCEL feature added to + enif_select in order to cancel (or "deselect") a + read or write event on a previously selected file + descriptor.

+

+ Own Id: OTP-15095

+
+ +

+ ETS option write_concurrency now also affects and + improves the scalability of ordered_set tables. + The implementation is based on a data structure called + contention adapting search tree, where the lock + granularity adapts to the actual amount of concurrency + exploited by the applications in runtime.

+

+ Own Id: OTP-15128

+
+ +

+ Build configuration of the crypto application has + been moved from the erts application into the + crypto application.

+

+ Own Id: OTP-15129

+
+ +

Anonymous functions that don't capture environment are + now created at load-time instead of in run-time.

+

+ Own Id: OTP-15195 Aux Id: PR-1812

+
+ +

+ Optimize updates of maps with identical keys and values. + E.g. in the example below the original Map will be reused + as the return of the update.

+

+ 1> Map = #{ a => b }. #{ a => b } 2> Map#{ a := b }.

+

+ Own Id: OTP-15211 Aux Id: PR-1889

+
+ +

+ Optimize binary:match/2 and + binary:matches/2 to use memchr internally.

+

+ Own Id: OTP-15238 Aux Id: PR-1803

+
+ +

+ The runtime system used to terminate when a message + larger than 2 Gb was passed over the distribution. The + send operation will now instead throw a + system_limit exeption.

+

+ Own Id: OTP-15261

+
+ +

+ Change the first module called by erts to be names + erl_init instead of otp_ring0. systools in sasl have been + updated to reflect this change.

+

+ Own Id: OTP-15336 Aux Id: PR-1825

+
+ +

+ Minor adjustments made to build system for parallel + configure.

+

+ Own Id: OTP-15340 Aux Id: OTP-14625

+
+ +

+ Two new NIF interface functions enif_select_read + and enif_select_write. They are similar to + existing enif_select but allow a custom event + message as argument.

+

+ Own Id: OTP-15349 Aux Id: PR-2084

+
+ +

The embedded copy of zlib has been updated from + 1.2.8 to 1.2.11.

+

Note that this copy is only used as a fallback when + the target platform doesn't provide any zlib + development libraries. If your system provides + zlib then it will be used even if it is older than + 1.2.11.

+

+ Own Id: OTP-15351 Aux Id: ERL-749

+
+ +

+ New NIF function enif_make_monitor_term.

+

+ Own Id: OTP-15362 Aux Id: PR-2127

+
+ +

Appending lists (The ++ operator) will now yield + properly on large inputs.

+

+ Own Id: OTP-15427

+
+ +

The length/1 BIF used to calculate the length + of the list in one go without yielding, even if the list + was very long. In OTP 22, length/1 will yield when + called with a long lists.

+

+ Own Id: OTP-15439

+
+ +

+ Processes sending messages are now punished with a + reduction cost based on message size. That is, a process + sending a large message will yield earlier than before.

+

+ Own Id: OTP-15513 Aux Id: ERL-773

+
+ +

The transitory emulator option +ztma true + (introduced in OTP 21.3) has been removed.

+

+ Own Id: OTP-15581 Aux Id: OTP-15580

+
+ +

In OTP 22, HiPE (the native code compiler) is not + fully functional. The reasons for this are:

+

There are new BEAM instructions for binary matching + that the HiPE native code compiler does not support.

+

The new optimizations in the Erlang compiler create + new combination of instructions that HiPE currently does + not handle correctly.

+

If erlc is invoked with the +native option, and + if any of the new binary matching instructions are used, + the compiler will issue a warning and produce a BEAM file + without native code.

+

+ Own Id: OTP-15596

+
+ +

+ Increased the 'creation' value from 2 to 32 bits. The + 'creation' value determines how many times a distributed + node can restart until pids, ports and references may + conflict with such identifiers from an earlier node + incarnation with the same name.

+

+ Own Id: OTP-15603

+
+ +

+ The termination behaviour of processes has changed to + allow processes to yield while sending link exit/monitor + down signals.

+

+ The erl crash dump as been expanded to now also include + processes that are termenating but have not yet + terminated.

+

+ Own Id: OTP-15610

+
+ +

+ The dist messages EXIT, EXIT2 and MONITOR_DOWN have been + updated with new versions that send the reason term as + part of the payload of the message instead of as part of + the control message.

+

+ The old versions are still present and can be used when + communicating with nodes that don't support the new + versions.

+

+ Own Id: OTP-15611

+
+ +

+ When sending messages, exit, exit2 and monitor down + distributed signals, the process sending will now yield + appropriately.

+

+ This means that a terminating process will yield and + possibly be suspended on busy distribution entries while + they are terminating. This means that any memory held by + such processes will not be released until after all + exit/monitor down signals have been sent.

+

+ Own Id: OTP-15612

+
+ +

+ All external pids/ports/refs created by + erlang:list_to_pid/port/ref debug functions now compare + equal to any other pid/port/ref with the same number from + that node.

+

+ Before this change they compared differently because the + node creation of the pid/port/ref did not compare equal + to any real pid/port/ref creation.

+

+ This will mostly effect pids/ports/refs typed in the + shell.

+

+ Own Id: OTP-15613

+
+ +

+ A new erlang:dist_ctrl_set_opt(DHandle, + get_size, Value) option has been added. + This option makes it possible to configure the + distribution channel identified by DHandle so that + erlang:dist_ctrl_get_data(DHandle) + also returns the size of the data to pass over the + channel.

+

+ Own Id: OTP-15617

+
+ +

The iolist_size/1 function is now yielding + which means that an Erlang/OTP system will be responsive + even if the applications running on the system frequently + call iolist_size/1 with large iolists.

+

+ Own Id: OTP-15631

+
+ +

+ A simple test suite for the net module has been added.

+

+ Own Id: OTP-15635

+
+ +

Added the NIF function enif_term_type, which + helps avoid long sequences of enif_is_xyz by + returning the type of the given term. This is especially + helpful for NIFs that serialize terms, such as JSON + encoders, where it can improve both performance and + readability.

+

+ Own Id: OTP-15640

+
+ +

The last call optimization is now applied to BIFs. + When calling a BIF in the tail position of a function, + the return address and stack frame will now be discarded + before calling the BIF. As consequence of this change, + the immediate caller of a tail-called BIF will no longer + be available in stack backtraces.

+

+ Own Id: OTP-15674 Aux Id: PR-2177

+
+ +

+ Fix GC bug where distributed messages in a processes + mailbox would cause extra GCs. This can be very expensive + if there many messages in the mailbox.

+

+ Own Id: OTP-15703

+
+
+
+ +
+
Erts 10.3.1
Fixed Bugs and Malfunctions -- cgit v1.2.3