From 17224a3d31d25ce6daa4de63b52b26bee9564bcd Mon Sep 17 00:00:00 2001
From: Erlang/OTP This document describes the changes made to the ERTS application.
+ 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
+ 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
+ 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:
+ 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
+
+ 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
+ *** POTENTIAL INCOMPATIBILITY ***
++ Own Id: OTP-8831
++ 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
+ 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
+ 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
+ The
+ The changed API of the
+ Note: When building for x86, the
+ 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;
+ 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.
+ Own Id: OTP-8764
+
+ Calling
+ 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
+
+ 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
+
+
+ Own Id: OTP-8775
+
+ The scheduler wakeup threshold is now possible to adjust
+ at system boot. For more information see the
+ 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
+Fix epmd and build environment to build on VxWorks
++ Own Id: OTP-8838
+