From 68b804f34d4ec420d86953e3f519179a40fbee8f Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Tue, 29 Jan 2013 11:38:41 +0100 Subject: Prepare release --- erts/doc/src/notes.xml | 519 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 519 insertions(+) (limited to 'erts/doc/src/notes.xml') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index e70e314abe..42298e4824 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -30,6 +30,525 @@

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

+
+ +

+ Fix fd leak when using async thread pool

+

When using the async thread pool, if an erlang + process asks to open a file and it gets shutdown/killed + while the file:open/2 call hasn't returned, it's possible + to leak a file descriptor against the target file. This + has now been fixed. (Thanks to Filipe David Manana)

+

+ Own Id: OTP-10677

+
+ +

+ Use sys/types.h instead of string.h to pull ssize_t + definition to erl_driver.h. This fixes build issue on + NetBSD. (Thanks to Yamamoto Takashi).

+

+ Own Id: OTP-10699

+
+ +

+ Arguments given with the -run or -s flags to erl are now + translated according to the file name encoding mode of + the runtime system.

+

+ Own Id: OTP-10702

+
+ +

+ The octet counters in the gen_tcp/inet interface could + behave in unexpected ways on 64bit platforms. The + behaviour is now as expected.

+

+ Own Id: OTP-10746

+
+ +

+ Certain linux kernels, most notably in redhat and CentOS + distribution, had a bug in writev which generated an + infinite loop in the tcp code of the VM. The bug is now + worked around.

+

+ Own Id: OTP-10747

+
+ +

+ A process that got killed (got an exit signal) while + operating on a compresseed file, could cause a + segmentation fault in the VM. This is now corrected. + Thanks to Filipe David Manana for identifying the problem + and submitting a solution.

+

+ Own Id: OTP-10748

+
+ +

+ Windows previously used three digit exponent in + formatting which caused difference between platforms, as + can be seen by float_to_list/1. This has now been fixed.

+

+ Own Id: OTP-10751

+
+
+
+ + +
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

+
+ +

Process optimizations. The most notable:

+ New internal process table implementation allowing + for both parallel reads as well as writes. Especially + read operations have become really cheap. This reduce + contention in various situations. For example when, + spawning processes, terminating processes, sending + messages, etc. Optimizations of run queue + management reducing contention. + Optimizations of process state changes reducing + contention.

These changes imply changes + of the characteristics the system. Most notable: changed + timing in the system.

+

+ Own Id: OTP-9892 Aux Id: OTP-10167

+
+ +

+ Non-blocking code loading. Earlier when an Erlang module + was loaded, all other execution in the VM were halted + while the load operation was carried out in single + threaded mode. Now modules are loaded without blocking + the VM. Processes may continue executing undisturbed in + parallel during the entire load operation. The load + operation is completed by making the loaded code visible + to all processes in a consistent way with one single + atomic instruction. Non-blocking code loading will + improve realtime characteristics when modules are + 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

+
+ +

Remove VxWorks support

+

+ Own Id: OTP-10146

+
+ +

+ Added a general framework for executing benchmarks of + Erlang/OTP. Benchmarks for the Erlang VM and mnesia have + been incorporated in the framework.

+

+ For details about how to add more benchmarks see + $ERL_TOP/HOWTO/BENCHMARKS.md in the source distribution.

+

+ Own Id: OTP-10156

+
+ +

+ Optimized deletion of ETS-tables which significantly + improves performance when large amounts of temporary + tables are used.

+

+ This change imply changes of the characteristics the + system. Most notable: changed timing in the system.

+

+ Own Id: OTP-10167 Aux Id: OTP-9892

+
+ +

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

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10170

+
+ +

+ New internal header scheme for allocators

+

+ Impact: Reduces size on object allocated in multiblock + carriers by one word

+

+ Own Id: OTP-10273 Aux Id: kunagi-20 [20]

+
+ +

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.This reduce + contention in various situations. For example when, + creating ports, terminating ports, etc. + 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. Improving responsiveness by bumping + reductions for a process calling a driver callback + directly. +

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. Reduction cost of calling driver + callbacks Calling a driver callback is quite + costly. This was previously not reflected in reduction + cost at all. Since the reduction cost now has increased, + a process performing lots of direct driver calls will be + scheduled out more frequently than before. + +

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: OTP-9892

+
+ +

+ The experimental support for packages has been removed.

+

+ Own Id: OTP-10348 Aux Id: kunagi-316 [227]

+
+ +

+ Wrong parameters when setting seq_trace-tokens from + within a trace-pattern could crash the VM. This is now + corrected.

+

+ Own Id: OTP-10522

+
+ +

+ 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

+
+ +

+ Add insert_element/3 and delete_element/2

+

+ Own Id: OTP-10643

+
+ +

+ 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-9892, OTP-10336

+
+ +

+ The previously (in R15) proposed scheduler wakeup + strategy is now used by default. This strategy is not as + quick to forget about previous overload as the previous + strategy.

+

+ This change imply changes of the characteristics the + system. Most notable: When a small overload comes and + then disappears repeatedly, the system will for a bit + longer time be willing to wake up schedulers than before. + Timing in the system will due to this also change.

+

+ The previous strategy can still be enabled by passing the + +sws legacy command + line flag to erl.

+

+ Own Id: OTP-10661 Aux Id: OTP-10033

+
+ +

+ The +stbt command line + argument of erl was added. This argument can be + used for trying to set scheduler bind type. Upon failure + unbound schedulers will be used.

+

+ Own Id: OTP-10668

+
+ +

+ Support ANSI in console

+

+ Unix platforms will no longer filter control sequences to + the ttsl driver thus enabling ANSI and colors in console. + (Thanks to Pedram Nimreezi)

+

+ Own Id: OTP-10678

+
+ +

Add file:allocate/3 operation

+

This operation allows pre-allocation of space for + files. It succeeds only on systems that support such + operation. (Thanks to Filipe David Manana)

+

+ Own Id: OTP-10680

+
+ +

Treat -Wreturn-type warnings as error when + using GCC (Thanks to Tuncer Ayaz)

+

+ Own Id: OTP-10683

+
+ +

+ Implement ./otp_build configure --enable-silent-rules

+

+ With silent rules, the output of make is less verbose and + compilation warnings are easier to spot. Silent rules are + disabled by default and can be disabled or enabled at + will by make V=0 and make V=1. (Thanks to Anthony Ramine)

+

+ Own Id: OTP-10726

+
+ +

+ Use share flags for all file operations on Windows. + Thanks to Filipe David Borba Manana.

+

+ Own Id: OTP-10727

+
+ +

+ Make/fakefop adjustments. Thanks to Tuncer Ayaz and + Sebastian Rasmussen.

+

+ Own Id: OTP-10733

+
+ +

+ The runtime system will now by default use 10 async + threads if thread support has been enabled when building + the runtime system.

+

+ This will prevent long blocking file-operations from + blocking scheduler threads for long periods of time, + which can be harmful. Apart from file-operations, it also + effects other operations scheduled on the async thread + pool by user implemented drivers.

+

+ The amount of async threads can be controlled by using + the +A + command line argument of erl(1). When running some + offline tools you might want to disable async + threads, but you are advised not to in the + general case. Instead, you might want to increase the + amount of async threads used.

+

+ This change imply changes of the characteristics the + system compared to the previous default. The + responsiveness of the system as a whole will be improved. + Operations scheduled on the async thread pool will get an + increased latency. The throughput of these operations may + increase, or decrease depending on the type of the + operations and how they get scheduled. In the case of + file operations, the throughput very much depends on how + the Erlang application access files. Multiple concurrent + accesses to different files have the potential of an + increased throughput.

+

+ Own Id: OTP-10736

+
+ +

+ The default reader group limit has been increased to 64 + from 8. This limit can be set using the +rg + command line argument of erl(1).

+

+ This change of default value will reduce lock contention + on ETS tables using the read_concurrency option at + the expense of memory consumption when the amount of + schedulers and logical processors are beween 8 and 64. + For more information, see documentation of the +rg + command line argument of erl(1).

+

+ Own Id: OTP-10737

+
+ +

+ New BIF float_to_list/2 which solves a problem of + float_to_list/1 that doesn't allow specifying the number + of digits after the decimal point when formatting floats + (Thanks to Serge Aleynikov).

+

+ Own Id: OTP-10752

+
+ +

+ Limited support for unicode atoms in the external format + and in the internal representation of the vm. This is a + preparative feature in order to support communication + with future releases of Erlang/OTP that may create + unicode atoms.

+

+ Own Id: OTP-10753

+
+ +

+ Increased potential concurrency in ETS for + write_concurrency option. The number of internal + table locks has increased from 16 to 64. This makes it + four times less likely that two concurrent processes + writing to the same table would collide and thereby + serialized. The cost is an increased constant memory + footprint for tables using write_concurrency. The memory + consumption per inserted record is not affected. The + increased footprint can be particularly large if + write_concurrency is combined with + read_concurrency.

+

+ Own Id: OTP-10787

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