From 17224a3d31d25ce6daa4de63b52b26bee9564bcd Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 13 Sep 2010 17:58:05 +0200 Subject: Prepare release --- erts/doc/src/notes.xml | 474 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 474 insertions(+) (limited to 'erts/doc') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 6174917807..efe2dada9c 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -30,6 +30,480 @@

This document describes the changes made to the ERTS application.

+
Erts 5.8.1 + +
Fixed Bugs and Malfunctions + + +

+ Very small floating point numbers generated errors when + converting from list to float in some versions of the VM, + this is now corrected so that i.e. + list_to_float("1.0e-324"). returns 0.0 in all versions of + Erlang.

+

+ Own Id: OTP-7178

+
+ +

+ Windows Vista and Windows 7 file system virtualization, + which makes "old style" windows programs execute in a + file system sandbox, was previously unintentionally + turned on for the Erlang VM. This is now corrected so + that i.e. writes to C:\Program Files\. without + administrator privileges will fail.

+

+ Own Id: OTP-7405

+
+ +

+ Fix faulty 64-bit integer term output from drivers. Large + 64-bits integers did not generate correct bignums and + could even cause emulator crash. Only affects drivers + using ERL_DRV_INT64 or ERL_DRV_UINT64, introduced in + R13B03.

+

+ Own Id: OTP-8716

+
+ +

+ Fixed: inet:setopts(S, [{linger,{true,2}}]) returned + {error,einval} for SCTP sockets. The inet_drv had a bug + when checking the option size.

+

+ Own Id: OTP-8726 Aux Id: seq11617

+
+ +

Fix libm linking with --as-needed flag +

+ When building with "--as-needed" linker flags on Linux + the build will fail. This has now been fixed.

+

+ (Thanks to Christian Faulhammer)

+

+ Own Id: OTP-8728

+
+ +

+ gen_udp:connect/3 was broken for SCTP enabled builds. It + did not detect remote end errors as it should.

+

+ Own Id: OTP-8729

+
+ +

Reduce the risk of integer wrapping in bin vheap size + counting.

The vheap size series will now use the + golden ratio instead of doubling and fibonacci + sequences.

+

+ Own Id: OTP-8730

+
+ +

+ ETS ordered_set containing [] as key could cause + strange thing to happen, like an infinite hanging + ets:select.

+

+ Own Id: OTP-8732

+
+ +

reference() has been substituted for ref() in the + documentation.

+

+ Own Id: OTP-8733

+
+ +

+ When a native compiled module called a not loaded + non-native compiled module that had an on_load function, + the export entries were trashed after code loading so on + the next call from the native compiled module to the + non-native compiled the emulator crashed. This bug has + now been fixed.

+

+ Own Id: OTP-8736

+
+ +

+ HiPE-enabled Erlang VMs running on BSD systems sometimes + generated messages like "Yikes! erts_alloc() returned + misaligned address 0x8016a512c". Fixed. (Thanks to Mikael + Pettersson.)

+

+ Own Id: OTP-8769

+
+ +

+ A race condition in erts_poll() could cause delay + of poll for I/O.

+

+ Own Id: OTP-8773

+
+ +

+ Removed some potential vulnerabilities from the Erlang + Port Mapper Daemon (epmd) and straightened up access + control. Also removed hazardous interfaces allowing + anyone on a machine to forcefully unregister other nodes. + This means that the ei_unregister/erl_unregister + interfaces in erl_interface is rendered not only error + prone and mystifying as before, but totally ineffective. + The old behaviour of unchecked node unregistering can be + restored if needed, see epmd documentation for details.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8780

+
+ +

Building in a source tree without prebuilt platform + independent build results failed on the SSL examples + when:

cross building. This has been + solved by not building the SSL examples during a cross + build. building on Windows. +

+ Own Id: OTP-8791

+
+ +

+ inet:getsockopt for SCTP sctp_default_send_param had a + bug to not initialize required feilds causing random + answers. It is now corrected.

+

+ Own Id: OTP-8795 Aux Id: seq11655

+
+ +

+ The hipe_bifs:get_hrvtime/0 BIF now always returns a real + value even if the "perfctr" Linux kernel extension is not + available. It used to return a dummy value. (Thanks to + Mikael Pettersson.)

+

+ Own Id: OTP-8798

+
+ +

+ Calling a native-code compiled module with an + on_load function could cause a crash. (Thanks to + Mikael Pettersson.)

+

+ Own Id: OTP-8799

+
+ +

The emulator could crash while writing a crash dump if + native-compiled modules had been loaded. (Thanks to Paul + Guyot.)

+

+ Own Id: OTP-8801

+
+ +

+ The garbage collector could crash if invoked from + native-compiled code after a call to a BIF. (Thanks to + Paul Guyot.)

+

+ Own Id: OTP-8821

+
+ +

+ A rare memory leak in binary:matches is removed

+

+ Own Id: OTP-8823

+
+ +

For a socket in the HTTP packet mode, the return value + from gen_tcp:recv/2,3 if there is an error in the + header will be {ok,{http_error,String}} instead of + {error,{http_error,String}} to be consistent with + ssl:recv/2,3.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8831

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

+ ets:select_reverse/{1,2,3} are now documented.

+

+ Own Id: OTP-7863

+
+ +

+ External format of integers changed to make full use of + all 32 bits of INTEGER_EXT. This is a compatible change + as old code can read full 32-bit integers but only + produce 28-bit integers as INTEGER_EXT.

+

+ Own Id: OTP-8540 Aux Id: seq11534

+
+ +

+ Large parts of the ethread library have been + rewritten. The ethread library is an Erlang + runtime system internal, portable thread library used by + the runtime system itself.

+

+ Most notable improvement is a reader optimized rwlock + implementation which dramatically improve the performance + of read-lock/read-unlock operations on multi processor + systems by avoiding ping-ponging of the rwlock cache + lines. The reader optimized rwlock implementation is used + by miscellaneous rwlocks in the runtime system that are + known to be read-locked frequently, and can be enabled on + ETS tables by passing the {read_concurrency, + true} option upon table creation. See the + documentation of ets:new/2 for more + information. The reader optimized rwlock implementation + can be fine tuned when starting the runtime system. For + more information, see the documentation of the +rg command line argument + of erl.

+

+ There is also a new implementation of rwlocks that is not + optimized for readers. Both implementations interleaves + readers and writers during contention as opposed to, + e.g., the NPTL (Linux) pthread rwlock implementation + which use either a reader or writer preferred strategy. + The reader/writer preferred strategy is problematic since + it starves threads doing the non-preferred operation.

+

+ The new rwlock implementations in general performs better + in ERTS than common pthread implementations. However, in + some extremely heavily contended cases this is not the + case. Such heavy contention can more or less only appear + on ETS tables. This when multiple processes do very large + amounts of write locked operations simultaneously on the + same table. Such use of ETS is bad regardless of rwlock + implementation, will never scale, and is something we + strongly advise against.

+

+ The new rwlock implementations depend on atomic + operations. If no native atomic implementation is found, + a fallback solution will be used. Using the fallback + implies a performance degradation. That is, it is more + important now than before to build OTP with a native + atomic implementation.

+

+ The ethread library contains native atomic + implementations for, x86 (32 and 64 bit), powerpc (32 + bit), sparc V9 (32 and 64 bit), and tilera (32 bit). On + other hardware gcc's builtin support for atomic memory + access will be used if such exists. If no such support is + found, configure will warn about no atomic + implementation available.

+

+ The ethread library can now also use the + libatomic_ops library for atomic memory accesses. + This makes it possible for the Erlang runtime system to + utilize optimized native atomic operations on more + platforms than before. If configure warns about no + atomic implementation available, try using the + libatomic_ops library. Use the --with-libatomic_ops=PATH + configure command line argument when specifying + where the libatomic_ops installation is located. + The libatomic_ops library can be downloaded from: + http://www.hpl.hp.com/research/linux/atomic_ops/

+

+ The changed API of the ethread library has also + caused modifications in the Erlang runtime system. + Preparations for the to come "delayed deallocation" + feature has also been done since it depends on the + ethread library.

+

+ Note: When building for x86, the ethread + library will now use instructions that first appeared on + the pentium 4 processor. If you want the runtime system + to be compatible with older processors (back to 486) you + need to pass the --enable-ethread-pre-pentium4-compatibility + configure command line argument when configuring + the system.

+

+ Own Id: OTP-8544

+
+ +

+ erlang:localtime_to_universaltime({{2008, 8, 1}, {0, 0, + 0}},true) when TZ=UTC now behaves consistently on all + Unix platforms.

+

+ The problem fixed was originally reported by Paul Guyot + on erlang-bugs mailing list:

+

+ http://www.erlang.org/pipermail/erlang-bugs/2008-November/001077.html

+

+ Own Id: OTP-8580

+
+ +

+ Optimization reducing memory consumption by two words per + ETS object.

+

+ Own Id: OTP-8737

+
+ +

+ Fixes for unsupported halfword-emulator

+

+ Own Id: OTP-8745

+
+ +

+ NIF 64-bit integer support; enif_get_int64, + enif_get_uint64, enif_make_int64, + enif_make_uint64.

+

+ Own Id: OTP-8746

+
+ +

+ Alignment of trailing data in messages has been adjusted. + This in order to be able to pass data of any type as + trailing data in the future.

+

+ Own Id: OTP-8754

+
+ +

+ The obsolete/driver.h header file has been removed. It + has been obsolete and deprecated since R8B. Drivers that + still include obsolete/driver.h must be updated to + include erl_driver.h.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-8758

+
+ +

+ Added erlang:system_info(build_type) which makes it + easier to chose drivers, NIF libraries, etc based on + build type of the runtime system.

+

+ The NIF library for crypto can now be built for valgrind + and/or debug as separate NIF libraries that will be + automatically loaded if the runtime system has been built + with a matching build type.

+

+ Own Id: OTP-8760

+
+ +

+ Further lessened the memory requirements of ETS objects.

+

+ Own Id: OTP-8762

+
+ +

The broken elib_malloc alternate memory allocator has + been removed. erlang:system_info(elib_malloc) will + always return false, and in R15, + erlang:system_info(elib_malloc) will fail with a + badarg exception.

+

+ Own Id: OTP-8764

+
+ +

+ Calling erlang:system_info/1 with the new argument + update_cpu_info will make the runtime system + reread and update the internally stored CPU information. + For more information see the documentation of erlang:system_info(update_cpu_info).

+

+ The CPU topology is now automatically detected on Windows + systems with less than 33 logical processors. The runtime + system will now, also on Windows, by default bind + schedulers to logical processors using the + default_bind bind type if the amount of schedulers + is at least equal to the amount of logical processors + configured, binding of schedulers is supported, and a CPU + topology is available at startup.

+

+ Own Id: OTP-8765

+
+ +

+ The SMP ERTS internal child waiter thread used on Linux + system with NPTL was unintentionally disabled during + cross compilation rewrites (OTP-8323 in R13B03). It has + now been re-enabled. Enabling it again gives a slight + performance improvement.

+

+ Own Id: OTP-8774

+
+ +

+ epmd used to generate a message to the syslog when + it started up, which could be annoying. This has been + changed to only generate the message if the debug swith + is given. (Thanks to Michael Santos.)

+

+ Own Id: OTP-8775

+
+ +

+ The scheduler wakeup threshold is now possible to adjust + at system boot. For more information see the +swt command line argument of + erl.

+

+ Own Id: OTP-8811

+
+ +

+ The undocumented function inet:ifget/2 has been improved + to return interface hardware address (MAC) on platforms + supporting getaddrinfo() (such as BSD unixes). Note it + still does not work on all platforms for example not + Windows nor Solaris, so the function is still + undocumented.

+

+ Buffer overflow and field init bugs for inet:ifget/2 and + inet:getservbyname/2 has also been fixed.

+

+ Thanks to Michael Santos.

+

+ Own Id: OTP-8816

+
+ +

+ Optimizations for MIPS when using gcc atomics. (Thanks to + Steve Vinoski)

+

+ Own Id: OTP-8834

+
+ +

+ Lock optimization in timer functionality.

+

+ Own Id: OTP-8835

+
+
+
+ + +
Known Bugs and Problems + + +

Fix epmd and build environment to build on VxWorks

+

+ Own Id: OTP-8838

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