From a0e362765d9d4afb0211f49eb787d2139b3eb7be Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 7 Jan 2013 12:00:39 +0100 Subject: Prepare release --- erts/doc/src/notes.xml | 207 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) (limited to 'erts/doc/src/notes.xml') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index e996d3e8e3..de6696671b 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -30,6 +30,213 @@

This document describes the changes made to the ERTS application.

+
Erts 5.10 + +
Fixed Bugs and Malfunctions + + +

+ Set new peeled off SCTP socket to nonblocking socket + (Thanks to Jonas Falkevik)

+

+ Own Id: OTP-10491

+
+ +

+ Fix various typos (thanks to Tuncer Ayaz)

+

+ Own Id: OTP-10611

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

+ A boolean socket option 'ipv6_v6only' for IPv6 sockets + has been added. The default value of the option is OS + dependent, so applications aiming to be portable should + consider using {ipv6_v6only,true} when creating an + inet6 listening/destination socket, and if + neccesary also create an inet socket on the same + port for IPv4 traffic. See the documentation.

+

+ Own Id: OTP-8928 Aux Id: kunagi-193 [104]

+
+ +

It is now allowed to define stubs for BIFs, to allow + type specs to be written for BIFs. For example, if there + is BIF called lists:member/2, a dummy definition + of lists:member/2 is now allowed.

+

+ Own Id: OTP-9861

+
+ +

+ Code loading and upgrade are now done without blocking + the emulator in single threaded mode. This will improve + realtime characteristics when code is loaded/upgraded on + a running SMP system.

+

+ Own Id: OTP-9974

+
+ +

In the SMP emulator, turning on and off tracing will + no longer take down the system to single-scheduling.

+

+ Own Id: OTP-10122

+
+ +

+ Tuple funs (deprecated in R15B) are no longer supported.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10170

+
+ +

Major port improvements. The most notable:

+ New internal port table implementation allowing for + both parallel reads as well as writes. Especially read + operations have become really cheap. Dynamic + allocation of port structures. This allow for a much + larger maximum amount of ports allowed as a default. The + previous default of 1024 has been raised to 65536. + Maximum amount of ports can be set using the +Q command line flag of + erl(1). The + previously used environment variable ERL_MAX_PORTS + has been deprecated and scheduled for removal in + OTP-R17. Major rewrite of scheduling of port + tasks. Major benefits of the rewrite are reduced + contention on run queue locks, and reduced amount of + memory allocation operations needed. The rewrite was also + necessary in order to make it possible to schedule + signals from processes to ports. Improved + internal thread progress functionality for easy + management of unmanaged threads. This improvement was + necessary for the rewrite of the port task + scheduling. Rewrite of all process to port + signal implementations in order to make it possible to + schedule those operations. All port operations can now be + scheduled which allows for reduced lock contention on the + port lock as well as truly asynchronous communication + with ports. Optimized lookup of port handles + from drivers. Optimized driver lookup when + creating ports. Preemptable erlang:ports/0 + BIF. +

These changes imply changes of the characteristics of + the system. The most notable:

Order of + signal delivery. The previous implementation + of the VM has delivered signals from processes to ports + in a synchronous stricter fashion than required by the + language. As of ERTS version 5.10, signals are truly + asynchronously delivered. The order of signal delivery + still adheres to the requirements of the language, but + only to the requirements. That is, some signal sequences + that previously always were delivered in one specific + order may now from time to time be delivered in different + orders. This may cause Erlang programs that have made + false assumptions about signal delivery order to + fail even though they previously succeeded. For more + information about signal ordering guarantees, see the + chapter on communication in + the ERTS user's guide. The +n command line flag of + erl(1) can be + helpful when trying to find signaling order bugs in + Erlang code that have been exposed by these + changes. Latency of signals sent from + processes to ports. Signals from processes to + ports where previously always delivered immediately. This + kept latency for such communication to a minimum, but it + could cause lock contention which was very expensive for + the system as a whole. In order to keep this latency low + also in the future, most signals from processes to ports + are by default still delivered immediately as long as no + conflicts occur. Such conflicts include not being able to + acquire the port lock, but also include other conflicts. + When a conflict occur, the signal will be scheduled for + delivery at a later time. A scheduled signal delivery may + cause a higher latency for this specific communication, + but improves the overall performance of the system since + it reduce lock contention between schedulers. The default + behavior of only scheduling delivery of these signals on + conflict can be changed by passing the +spp command line flag + to erl(1). The + behavior can also be changed on port basis using the + parallelism + option of the open_port/2 + BIF. Execution time of the + erlang:ports/0 BIF. Since erlang:ports/0 now + can be preempted, the responsiveness of the system as a + whole has been improved. A call to erlang:ports/0 + may, however, take a much longer time to complete than + before. How much longer time heavily depends on the + system load. +

Potential incompatibilities:

+ driver_send_term() has been deprecated and + has been scheduled for removal in OTP-R17. Replace usage + of driver_send_term() with usage of erl_drv_send_term(). + driver_output_term() has been deprecated and + has been scheduled for removal in OTP-R17. Replace usage + of driver_output_term() with usage of erl_drv_output_term(). + The new function erl_drv_busy_msgq_limits() + has been added in order to able to control management of + port queues. +

The driver API + version has been bumped to 2.1 from 2.0 due to + the above changes in the driver API.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10336 Aux Id: kunagi-138 + [b5b97f67-fe34-46dc-93e6-a2931576db12]

+
+ +

+ Erlang specification 4.7.3 defines max tuple size to + 65535 elements It is now enforced to no more than + 16777215 elements (arity 24 bits)

+

+ Previous edge cases (28 bits) were not validated and + could cause undefined behaviour.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10633

+
+ +

+ The previous default of a maximum of 32768 simultaneous + processes has been raised to 262144. This value can be + changed using the the +P command line flag of + erl(1). Note that the + value passed now is considered as a hint, and that actual + value chosen in most cases will be a power of two.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10647 Aux Id: OTP-10336

+
+
+
+ +
+
Erts 5.9.3.1
Known Bugs and Problems -- cgit v1.2.3