From 08a112d189c8f47953eabcf2e05a0245dd6e6087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Fri, 11 Jun 2010 10:20:20 +0000 Subject: Update release notes --- erts/doc/src/notes.xml | 479 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 479 insertions(+) (limited to 'erts/doc') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index a4867adf22..058c1662e8 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -30,6 +30,485 @@

This document describes the changes made to the ERTS application.

+
Erts 5.8 + +
Fixed Bugs and Malfunctions + + +

+ Driver threads, such as async threads, using port data locks + peeked at the port status field without proper locking + when looking up the driver queue.

+

+ Own Id: OTP-8475

+
+ +

+ The use of mmap() was unnecessarily disabled when + cross compiling.

+

+ The configure arguments --with-ssl, and + --with-odbc refused to accept libraries outside of + $erl_xcomp_sysroot when cross compiling for no + good reason.

+

+ The configure argument --with-odbc didn't + handle the value yes correct.

+

+ The configure arguments --with-odbc, and + --without-odbc have also been added to the + configure help.

+

+ (Thanks to Steve Vinoski for reporting these issues)

+

+ Own Id: OTP-8484

+
+ +

+ A call to the BIF unregister(RegName) when a port + had the name RegName registered in the runtime + system without SMP support caused a runtime system crash. + (Thanks to Per Hedeland for the bugfix and test case.)

+

+ Own Id: OTP-8487

+
+ +

+ The runtime system crashed if fewer logical processors + were found than reported by sysconf( + SC_NPROCESSORS_CONF).

+

+ Own Id: OTP-8549

+
+ +

+ Fix memory management bug causing crash of non-SMP + emulator with async threads enabled. The bug did first + appear in R13B03.

+

+ Own Id: OTP-8591 Aux Id: seq11554

+
+ +

+ Port locks could be prematurely destroyed.

+

+ Own Id: OTP-8612

+
+ +

The empd program could loop and consume 100% + CPU time if an unexpected error ocurred in + listen() or accept(). Now epmd will + terminate if a non-recoverable error occurs. (Thanks to + Michael Santos.)

+

+ Own Id: OTP-8618

+
+ +

+ When kernel poll has been enabled, a livelock could in + rare circumstances occur. Problem reported by Chetan + Ahuja, fix by Mikael Pettersson.

+

+ Own Id: OTP-8632

+
+ +

+ Windows: Closing port of program that stalled without + reading all data could deadlock scheduler thread.

+

+ Own Id: OTP-8641

+
+ +

+ On some combination of Montavista Linux on Cavium Octeon + processors, some socket-related system calls returned + other numbers than -1 for errors. This caused a core dump + in inet_drv.c. Now the code works around this problem.

+

+ Own Id: OTP-8654

+
+ +

+ Missing memory barriers in erts_poll() could cause + the runtime system to hang indefinitely.

+

+ Own Id: OTP-8658

+
+ +

+ ethr_rwmutex_tryrlock() acquired and refused to + acquire a lock with inverted logic. The lock was however + never acquired in a thread unsafe manner. (Thanks to JR + Zhang for noting this issue)

+

+ Own Id: OTP-8662

+
+ +

+ Extreme combinations of register/unregister in a highly + parallell SMP application could crash the VM. The error + is corrected.

+

+ Own Id: OTP-8663

+
+ +

+ On Windows, files are now opened with FILE_SHARE_DELETE + to get closer to Unix semantics.

+

+ Own Id: OTP-8667

+
+ +

+ erlang:system_info(multi_scheduling) sometimes + erroneously returned enabled when it should have + returned blocked.

+

+ Own Id: OTP-8675

+
+ +

+ Fix bug causing erlang:decode_packet and + enif_make_string to generate faulty strings with + negative character values for ascii values larger than + 127. (Thanks to Paul Guyot)

+

+ Own Id: OTP-8685

+
+ +

+ open_port/2 with the spawn and + spawn_executable options can include an + {env,Env} option. In some cases unsetting + variables would not work on Unix (typically if more + variables were unset than were actually present in the + environment).

+

+ Own Id: OTP-8701

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

+ The grammar for match specifications in ERTS users guide + only described the tracing dialect of match + specifications. An informal grammar for the ETS dialect + is added.

+

+ Own Id: OTP-8086 Aux Id: seq11333

+
+ +

+ The module binary from EEP31 (and EEP9) is implemented.

+

+ Own Id: OTP-8217

+
+ +

+ New NIF API function enif_make_new_binary

+

+ Own Id: OTP-8474

+
+ +

+ The guard BIF is_boolean/1 (introduced in R10B) + has now been included in the lists of BIFs allowed in + guards in the Reference Manual.

+

+ Own Id: OTP-8477

+
+ +

+ Added function zip:foldl/3 to iterate over zip + archives.

+

+ Added functions to create and extract escripts. See + escript:create/2 and escript:extract/2.

+

+ The undocumented function escript:foldl/3 has been + removed. The same functionality can be achieved with the + more flexible functions escript:extract/2 and + zip:foldl/3.

+

+ Record fields has been annotated with type info. Source + files as been adapted to fit within 80 chars and trailing + whitespace has been removed.

+

+ Own Id: OTP-8521

+
+ +

A regular expression with many levels of parenthesis + could cause a buffer overflow. That has been corrected. + (Thanks to Michael Santos.)

+

+ Own Id: OTP-8539

+
+ +

+ erlang:decode_packet(httph_bin,..) could return + corrupt header strings or even crash the VM. This has + been fixed. It only happened on 32-bit VM if the header + name was unknown and between 16 and 20 characters long. + Sockets with simular packet option did not suffer + from this bug.

+

+ Own Id: OTP-8548

+
+ +

New NIF features:

Send messages from + a NIF, or from thread created by NIF, to any local + process (enif_send) Store terms + between NIF calls (enif_alloc_env, + enif_make_copy) Create binary terms + with user defined memory management + (enif_make_resource_binary)

And + some incompatible changes made to the API. For more + information see the warning text in erl_nif(3).

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8555

+
+ +

If the 'fop' program (needed for building PDF + files) cannot not be found, it is now possible to build + the HTML and man pages anyway (there will also be dummy + PDF files with no real content created). (Thanks to + Tuncer Ayaz.)

+

+ Own Id: OTP-8559

+
+ +

When defining macros the closing right parenthesis + before the dot is now mandatory.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8562

+
+ +

Local and imported functions now override the + auto-imported BIFs when the names clash. The pre R14 + behaviour was that auto-imported BIFs would override + local functions. To avoid that old programs change + behaviour, the following will generate an error:

+

Doing a call without explicit module name + to a local function having a name clashing with the name + of an auto-imported BIF that was present (and + auto-imported) before OTP R14A

+

Explicitly importing a function having a name + clashing with the name of an autoimported BIF that was + present (and autoimported) before OTP R14A

+

Using any form of the old compiler directive + nowarn_bif_clash

If the BIF + was added or auto-imported in OTP R14A or later, + overriding it with an import or a local function will + only result in a warning,

To resolve clashes, you + can either use the explicit module name erlang to + call the BIF, or you can remove the auto-import of that + specific BIF by using the new compiler directive + -compile({no_auto_import,[F/A]})., which makes all + calls to the local or imported function without explicit + module name pass without warnings or errors.

The + change makes it possible to add auto-imported BIFs + without breaking or silently changing old code in the + future. However some current code ingeniously utilizing + the old behaviour or the nowarn_bif_clash compiler + directive, might need changing to be accepted by the + compiler.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8579

+
+ +

+ A bug in re that could cause certain regular expression + matches never to terminate is corrected. (Thanks to + Michael Santos and Gordon Guthrie.)

+

+ Own Id: OTP-8589

+
+ +

The erlang:open_port spawn and spawn_executable + directives can include an {env,Env} directive to + set up environment variables for the spawned process. A + bug prevented applications from using {env,Env} to + set an environment variable whose value ended with a + '=' (equal sign) character; the trailing equal + sign was mistaken as an indication that an environment + variable was to be cleared from the environment of the + spawned process. (Thanks to Steve Vinoski.)

+

+ Own Id: OTP-8614

+
+ +

receive statements that can only read out a + newly created reference are now specially optimized so + that it will execute in constant time regardless of the + number of messages in the receive queue for the process. + That optimization will benefit calls to + gen_server:call(). (See gen:do_call/4 for + an example of a receive statement that will be + optimized.)

+

+ Own Id: OTP-8623

+
+ +

+ The functions file:advise/4 and file:datasync/1 have been + added. (Thanks to Filipe David Manana.)

+

+ Own Id: OTP-8637

+
+ +

+ New NIF API functions: enif_make_atom_len, + enif_make_existing_atom_len, + enif_make_string_len, enif_get_atom_length, + enif_get_list_length, enif_is_list, + enif_is_tuple (by Tuncer Ayaz)

+

+ Own Id: OTP-8640

+
+ +

+ Support for using gcc's built-in functions for atomic + memory access has been added. This functionallity will be + used if available and no other native atomic + implementation in ERTS is available.

+

+ Own Id: OTP-8659

+
+ +

+ The number of spinlocks used when implementing atomic + fall-backs when no native atomic implementation is + available has been increased from 16 to 1024.

+

+ Own Id: OTP-8660

+
+ +

+ Writer preferred pthread read/write locks has been + enabled on Linux.

+

+ Own Id: OTP-8661

+
+ +

+ The runtime system will by default bind schedulers to + logical processors using the default_bind bind + type if the amount of schedulers are at least equal to + the amount of logical processors configured, binding of + schedulers is supported, and a CPU topology is available + at startup.

+

+ NOTE: If the Erlang runtime system is the only + operating system process that binds threads to logical + processors, this improves the performance of the runtime + system. However, if other operating system processes (as + for example another Erlang runtime system) also bind + threads to logical processors, there might be a + performance penalty instead. If this is the case you, are + are advised to unbind the schedulers using the +sbtu command line argument, + or by invoking erlang:system_flag(scheduler_bind_type, + unbound).

+

+ Own Id: OTP-8666

+
+ +

+ The recently added BIFs erlang:min/2, erlang:max/2 and + erlang:port_command/3 are now auto-imported (as they were + originally intended to be). Due to the recent compiler + change (OTP-8579), the only impact on old code defining + it's own min/2, max/2 or port_command/3 functions will be + a warning, the local functions will still be used. The + warning can be removed by using + -compile({no_auto_import,[min/2,max/2,port_command/3]}). + in the source file.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8669 Aux Id: OTP-8579

+
+ +

+ There is a new option 'exclusive' to file:open/2 that + uses the OS O_EXCL flag where supported to open the file + in exclusive mode.

+

+ Own Id: OTP-8670

+
+ +

+ Now, binary_to_term/2 is auto-imported. This will cause a + compile warning if and only if a module has got a local + function with that name.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8671

+
+ +

+ Alignment of scheduler data and run queues were adjusted.

+

+ Own Id: OTP-8673

+
+ +

Call time breakpoint tracing

Introduce + a call_time option to + erlang:trace_pattern/3.This option enables call + time breakpoint tracing on code that is executed by + processes with call tracing enabled. Call time tracing + stores the number of calls and the time spent of each + function with this trace pattern enabled. The information + can be retrieved with erlang:trace_info/2 + Add a scheduler array for BpData. To solve the + issue of multiple schedulers constantly updating the head + pointer to the bp data wheel, each scheduler now has its + own entrypoint to the wheel. This head pointer can be + updated without a locking being taken. +

Teach call count tracing to use atomics

+ Call count previously used a global lock for + accessing and writing its counter in the breakpoint. This + is now changed to atomics instead. The + change will let call count tracing and cprof to scale + better when increasing the number of + schedulers. +

+ Own Id: OTP-8677

+
+ +

eprof has been reimplemented with support in + the Erlang virtual machine and is now both faster (i.e. + slows down the code being measured less) and scales much + better. In measurements we saw speed-ups compared to the + old eprof ranging from 6 times (for sequential code that + only uses one scheduler/core) up to 84 times (for + parallel code that uses 8 cores).

+

Note: The API for the eprof has been cleaned up + and extended. See the documentation.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8706

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