Bug fix release : otp_src_R9C-1
Build from snapshot : 2004-05-26
This is a bug fix release 1 for the R9C release.
You can download the full source distribution from
http://www.erlang.org/download/otp_src_R9C-1.tar.gz
http://www.erlang.org/download/otp_src_R9C-1.readme (this file)
Note: To unpack the TAR archive you need a GNU TAR compatible
program. For instance, on MacOS X you need to use the 'gnutar' command;
you can't use the 'tar' command or StuffIt to unpack the sources.
For installation instructions please read the README that is part of
the distribution.
The Windows binary distribution can be downloaded from
http://www.erlang.org/download/otp_win32_R9C-1.exe
The documentation at http://www.erlang.org will be updated. You can
also download the complete HTML documentation or the Unix manual files
http://www.erlang.org/download/otp_html_R9C-1.tar.gz
http://www.erlang.org/download/otp_man_R9C-1.tar.gz
For some OTP applications there are more detailed release notes in the
HTML documentation.
We also want to thank those that sent us patches, suggestions and bug
reports,
The OTP Team
--- asn1 ------------------------------------------------------------
Fixed errors and malfunctions:
OTP-4832 Functionality to handle parameterized object sets have
been added.
OTP-4833 Bug causing duplicated fuction definitions using exclusive
decode is removed.
OTP-4835 The race condition when loading asn1 driver is solved.
OTP-4773 ObjectDescriptor does now work as part of a sequence, set
or choice.
OTP-4791 When a SEQUENCE that have extension mark was decoded inside
a SEQUENCE OF it could cause decode error due to a failure
in restbytes2. It is now corrected.
OTP-4792 Now the bug is fixed that caused the compiler crash on an
untaged optional open type.
OTP-4797 The earlier exit caused by bad indata is now fixed so it
will return an {error,Reason} tuple.
OTP-4798 Open type encoded with indefinite length is now correct
decoded.
OTP-4799 Now is absent optional open types handled correctly.
OTP-4809 Now is the necessary functions available for sorting in
run-time of SET and SET OF components.
Improvements and new features:
OTP-4856 A specialized decode, selective decode is now available.
It decodes a chosen internal sub-type of a constructed type.
OTP-4866 The {internal_error,...,{ unrecognized_type,...}} error
occuring for a SET type when compiling with options
[ber_bin,optimize,der] is now corrected.
OTP-4869 False encode of BIT STRING in PER (per_bin,optimize) is
fixed. The error occured when there was a type like
BIT STRING (SIZE(C)) and C > 16.
Fixed errors and malfunctions:
OTP-4893 Functionality for parameterized class is added. Parsing
failures on WithSyntax spec is corrected.
OTP-4894 The failure due to Parameterized Type when parameter is an
object set is corrected.
OTP-4895 Object Identifier values with two components and teh first
was a value reference failed due to parsing conflicts.
Now it is corrected.
OTP-4944 The errorounus comparison of file name and asn1 module name
could cause compilation failure. It is now fixed.
OTP-4953 Selective decode was ignored when exclusive decode spec in
asn1 configfile was missing. Selective decode failed when
the selected type was the top type.
These bugs are now removed.
OTP-4955 The test interface asn1ct:test/1,2,3 and asn1ct:value/2
failed for open type and EXTERNAL. The bug is now removed.
OTP-4957 Two equal functions were generated for two components
referencing the same type when they were picked by the
action "parts". The bug is now fixed.
Improvements and new features:
OTP-4917 INTEGER with named number list and ENUMERATED can now be sub
constrained with names from the names list.
OTP-4918 Now there is support for SelectionType (X 680 section 29)
OTP-4919 The compiler now resolves circular dependencies. When asn1
specs IMPORTS from each other so that there are circular
dependencies.
OTP-4965 Now is the asn1 type UTF8String supported. For user
instructions see documentation.
OTP-5022 An error due to unchecked referenced imported
type resulted in missing tag in some table
constraint cases. This error is now corrected.
Error occured during decode in ber_bin optimized version.
--- compiler ------------------------------------------------------------
OTP-4790 In rare circumstances, the compiler could optimize away a test
that would verify that a tuple or record argument indeed was
of the correct type (resulting in an emulator crash if the
argument was not of the correct type/size). Wrong code could
also be generated for floating point expressions.
OTP-4960 Compilation of modules with long strings could be extremely
slow.
OTP-4961 In bit syntax matching with clauses having guards, sometimes
the subsequent clauses would never match if a guard was
evaluated (and failed).
OTP-4962 In (Expr)#rec{a=A,b=B}, Expr would be evaluated more than
once.
OTP-5050 The compiler could generate incorrect code for
receive clauses did not use the message in any
way, for instance if a guard would ignore message
depending on some condition not based on the
contents of the message (e.g. a state variable
in the "loop data").
--- cosNotification ------------------------------------------------------------
OTP-4976 The app-files contained duplicated modules.
--- cosProperty ------------------------------------------------------------
OTP-4976 The app-files contained duplicated modules.
--- debugger ------------------------------------------------------------
OTP-4837 Problem with varying font size in trace window fixed.
OTP-4839 File name for where to find documentation ('Help' button) is
now correct.
OTP-4842 If GS was unavailable, debugger:start() hanged.
Now a tuple {error,Reason} is returned instead.
OTP-4845 Several issues fixed, matching binaries could crash,
exit/throw handling could hang and calling fun's could crash.
OTP-4859 The debugger could not load code with some guard tests.
OTP-4868 Problem with unreadable font on platforms where 'screen' is
not available, is now fixed. 'Courier' is chosen instead.
--- erl_interface ------------------------------------------------------------
OTP-4777 erl_call -a parsed erlang terms incorrectly due to a bug in
ei_format, which is now corrected.
OTP-4865 Strings longer than 65535 bytes were encoded wrong in
ei/erl_interface.
OTP-4804 The undocumented possibility to use res_gethostbyname instead
of the supported gethostbyname call to resolve hostnames on
solaris is removed, as it caused dependency on the resolv
library. As to our knowlege, noone has ever used that
undocumented feature.
OTP-4874 Some undocumented functions where removed from the header
files and/or renamed in R9C breaking backward compatibility.
The following functions previously undocumented are now
documented and defined in the header files
erl_gethostbyname() erl_gethostbyname_r() erl_gethostbyaddr()
erl_gethostbyname_r() ei_gethostbyname() ei_gethostbyname_r()
ei_gethostbyaddr() ei_gethostbyname_r()
Some "ei_x" variants missing for the encoding functions were
also added
ei_x_encode_boolean() ei_x_encode_char() ei_x_encode_port()
ei_x_encode_ref() ei_x_encode_trace()
A bug in ei_connect_init() was corrected where it may
incorrectly result in a long node name (bug introduced in
R9C).
A small optimization was done in ei_rpc_from() not to scan
unnecessary file descriptors.
Now all integer decoding functions can handle unexpected but
correct encodings according to the external format
specification (the emulator or erl_inteface will never create
these encodings).
Now ei_decode_ulong() returns -1 when decoding up to 28 bit
negative numbers.
ei_encode_atom() is documented to truncate the name to
MAXATOMLEN (256) characters. It now does.
ei_encode_string() will now encode the empty string the same
compact way the emulator does, as the empty list/nil [].
Several serious bugs in the signed and unsigned "long long"
encode and decode functions where corrected.
There where a potential problem on Solaris if the Solaris
linker was used. Even if no "long long" functions were used
in the user code the linkage could break because of the
dependency for some "long long" operations to "libgcc.a", an
gcc internal library.
OTP-4930 The vxworks PPC860 version of erl_interface is not supposed
to call *any* soft floating point routines in libgcc.a. That
was not the case after bignum's were introduced in
erl_interface. A bug in the decoding of bignums on little
endian machines is also removed.
OTP-4874 Some undocumented functions where removed from the header
files and/or renamed in R9C breaking backward compatibility.
The following functions previously undocumented are now
documented and defined in the header files
erl_gethostbyname() erl_gethostbyname_r() erl_gethostbyaddr()
erl_gethostbyname_r() ei_gethostbyname() ei_gethostbyname_r()
ei_gethostbyaddr() ei_gethostbyname_r()
Some "ei_x" variants missing for the encoding functions were
also added
ei_x_encode_boolean() ei_x_encode_char() ei_x_encode_port()
ei_x_encode_ref() ei_x_encode_trace()
A bug in ei_connect_init() was corrected where it may
incorrectly result in a long node name (bug introduced in
R9C).
A small optimization was done in ei_rpc_from() not to scan
unnecessary file descriptors.
Now all integer decoding functions can handle unexpected but
correct encodings according to the external format
specification (the emulator or erl_inteface will never create
these encodings).
Now ei_decode_ulong() returns -1 when decoding up to 28 bit
negative numbers.
ei_encode_atom() is documented to truncate the name to
MAXATOMLEN (256) characters. It now does.
ei_encode_string() will now encode the empty string the same
compact way the emulator does, as the empty list/nil [].
Several serious bugs in the signed and unsigned "long long"
encode and decode functions where corrected.
There where a potential problem on Solaris if the Solaris
linker was used. Even if no "long long" functions were used
in the user code the linkage could break because of the
dependency for some "long long" operations to "libgcc.a", an
gcc internal library.
OTP-4874 Some undocumented functions where removed from the header
files and/or renamed in R9C breaking backward compatibility.
The following functions previously undocumented are now
documented and defined in the header files
erl_gethostbyname() erl_gethostbyname_r() erl_gethostbyaddr()
erl_gethostbyname_r() ei_gethostbyname() ei_gethostbyname_r()
ei_gethostbyaddr() ei_gethostbyname_r()
Some "ei_x" variants missing for the encoding functions were
also added
ei_x_encode_boolean() ei_x_encode_char() ei_x_encode_port()
ei_x_encode_ref() ei_x_encode_trace()
A bug in ei_connect_init() was corrected where it may
incorrectly result in a long node name (bug introduced in
R9C).
A small optimization was done in ei_rpc_from() not to scan
unnecessary file descriptors.
Now all integer decoding functions can handle unexpected but
correct encodings according to the external format
specification (the emulator or erl_inteface will never create
these encodings).
Now ei_decode_ulong() returns -1 when decoding up to 28 bit
negative numbers.
ei_encode_atom() is documented to truncate the name to
MAXATOMLEN (256) characters. It now does.
ei_encode_string() will now encode the empty string the same
compact way the emulator does, as the empty list/nil [].
Several serious bugs in the signed and unsigned "long long"
encode and decode functions where corrected.
There where a potential problem on Solaris if the Solaris
linker was used. Even if no "long long" functions were used
in the user code the linkage could break because of the
dependency for some "long long" operations to "libgcc.a", an
gcc internal library.
OTP-4995 Corrections for mistakes done for patch erl_605/OTP-4874.
--- erts ------------------------------------------------------------
OTP-4787 A bug in erl_scan caused the compiler to hang when
end-of-file in a comment was encountered. This is now
corrected.
OTP-4831 The linter now reports errors for unsafe variables when the
option
gen_server:cast/2
now crashes for invalid
arguments.
gen_server:abcast/2-3
now crashes for
invalid arguments. The behaviour when casting to the name
global
has been corrected. Previously,
gen_server:abcast(global,[node@host])
tried to
cast to the globally registered name node@host
,
which is more of a bug than less. Now such a call will cast
to the registered name global
at the node
node@host
as (probably) expected.
An rpc:call/5
and
rpc:block_call/5
having a timeout argument has
been added.
rpc:abcast/2-3
has been improved
not to get stuck waiting for connection setup if the remote
node is not connected. In this case the send is spawned off
to a temporary process.
OTP-4846 The boot server had become broken. Now it works again.
OTP-4855 When loading a dynamically linked in driver through
erl_ddll, the server ddll_server that held the port for the
driver handling shared libraries got the group leader of the
invoking application. Later, when the application was
terminated, it killed all processes in its group, also the
ddll_server, so the driver still had some shared libraries
loaded. Finally, when the ddll_server was restarted it
assumed that all shared libraries its driver knew of was
statically linked, so the dynamically linked in drivers that
was loaded when ddll_server was killed could neither be
loaded nor unloaded. This bug has now been fixed by setting
the group leader of ddll_server to something harmless and
more eternal, and by unloading all remaining dynamically
linked in drivers when ddll_server starts. A race condition
when starting ddll_server has also been fixed.
OTP-4818 The f/1 shell command did not work correctly with
restricted shell.
OTP-4838 The elib_malloc alternative dynamic memory allocator has been
improved to use an address order best fit strategy. The
instrumented emulator has been improved to be able to catch
memory allocations done by external libraries. The emulator
flag '+r' (stands for "relocate") makes ets updates always
result in an object relocation, which significantly lessens
the memory fragmentation in certain systems. The
erlang:system_info/1 bif can now be called with the argument
'ets_realloc_moves' and will return true if the '+r' emulator
flag is in effect, false otherwise.
OTP-4876 The driver for dynamically linked in drivers has been fixed
to delete loaded drivers when its erlang server dies. The
erlang server has also been updated to improve the
start-on-demand behaviour.
OTP-4890 The shell function c:regs() did crash if there was a
registered port among the registered names. This is now
corrected.
OTP-4892 erlang:register/2 does no longer generate an ERROR
REPORT to the error logger when the name already is
registered. If the name is already registered the process
function will crash with {'EXIT',Reason} and that is enough.
It is up to the caller to decide if it is an error that the
name is already registered.
OTP-4897 Starting Erlang with the +Bi flag (to ignore ^C), now also
disables the quit ('q') option in the JCL menu.
OTP-4898 A stdlib application variable, shell_esc, has been
introduced that controls the behaviour of ^G. If
shell_esc is set to abort, ^G restarts the
shell. If set to jcl, ^G invokes the JCL menu. The
latter is default.
OTP-4903 When using erlang:system_monitor(Pid,{long_gc,Time}), and the
GC time exceeded 1 second, it sometimes erroneously showed up
as about 4300 seconds. This bug has now been corrected.
OTP-4906 A bug has been fixed in Dets: not all objects were
always visible in tables with more than 131072 keys
OTP-4907 A bug has been fixed in Dets: when trying to repair a
version 9 table, a not_a_dets_file error message was
returned unnecessarily often.
OTP-4916 A possibility to make distribution messages be qued up during
running of erlang code, so that larger packages is sent over
the network is added.
OTP-4925 When code loading failed it was impossible to know exactly
what caused it, only {undef,[M,F,A],...} would be reported.
Now error_logger:warning_report/1 is called by the primitive
loader if a file operation fails. All file errors except
enoent and enotdir are reported this way.
OTP-4914 Distributed monitoring in combination with nodes restarting
did not behave correctly in rare circumstances.
OTP-4952 If a gen_server, gen_event or gen_fsm process exits with
{undef,[{M,F,A}|...]}, the error report will now state if the
function call failed because the module could not be loaded
or because the function was not exported.
OTP-4963 A module containing code similar to 'receive after 4.1' could
not be loaded.
OTP-4979 The Solaris kernel poll feature was changed from a compile
time option to a runtime option. The kernel poll feature can
be enabled, by passing the command-line argument "+K true" to
an emulator (see erl(1)) that have kernel poll support, i.e.
an emulator for Solaris 8. By default the kernel poll feature
is disabled.
OTP-4985 Before the Erlang emulator writes an erl_crash.dump file (for
any reason), it will close all open files and sockets.
OTP-4986 The '+c' switch has been added to disable time correction in
the runtime system, this should be used on systems where one
is certain no dramatic wall clock time changes will occur and
the time correction algorithm is too costly (namely very fast
Linux systems where loads of erlang:now() are executed).
OTP-4989 When opening a Dets table read only an attempt was made to
re-hash the table resulting in an error message. This problem
has been fixed.
OTP-4991 The process_flag/2,3 BIFs now take a flag min_heap_size that
allows changing an existing process's minimum heap size. The
actual size will only be changed when the next garbage
collection occurs.
OTP-4992 Problems fixed in file:open/2: "/dev/null" can now be opened.
Opening a FIFO will now return an error instead of hanging
the emulator. The documentation has been updated to point out
that file:open/2 returns the error code
gen_server:cast/2
now crashes for invalid
arguments.
gen_server:abcast/2-3
now crashes for
invalid arguments. The behaviour when casting to the name
global
has been corrected. Previously,
gen_server:abcast(global,[node@host])
tried to
cast to the globally registered name node@host
,
which is more of a bug than less. Now such a call will cast
to the registered name global
at the node
node@host
as (probably) expected.
An rpc:call/5
and
rpc:block_call/5
having a timeout argument has
been added.
rpc:abcast/2-3
has been improved
not to get stuck waiting for connection setup if the remote
node is not connected. In this case the send is spawned off
to a temporary process.
OTP-4846 The boot server had become broken. Now it works again.
OTP-4855 When loading a dynamically linked in driver through
erl_ddll, the server ddll_server that held the port for the
driver handling shared libraries got the group leader of the
invoking application. Later, when the application was
terminated, it killed all processes in its group, also the
ddll_server, so the driver still had some shared libraries
loaded. Finally, when the ddll_server was restarted it
assumed that all shared libraries its driver knew of was
statically linked, so the dynamically linked in drivers that
was loaded when ddll_server was killed could neither be
loaded nor unloaded. This bug has now been fixed by setting
the group leader of ddll_server to something harmless and
more eternal, and by unloading all remaining dynamically
linked in drivers when ddll_server starts. A race condition
when starting ddll_server has also been fixed.
OTP-4818 The f/1 shell command did not work correctly with
restricted shell.
OTP-4876 The driver for dynamically linked in drivers has been fixed
to delete loaded drivers when its erlang server dies. The
erlang server has also been updated to improve the
start-on-demand behaviour.
OTP-4890 The shell function c:regs() did crash if there was a
registered port among the registered names. This is now
corrected.
OTP-4892 erlang:register/2 does no longer generate an ERROR
REPORT to the error logger when the name already is
registered. If the name is already registered the process
function will crash with {'EXIT',Reason} and that is enough.
It is up to the caller to decide if it is an error that the
name is already registered.
OTP-4897 Starting Erlang with the +Bi flag (to ignore ^C), now also
disables the quit ('q') option in the JCL menu.
OTP-4898 A stdlib application variable, shell_esc, has been
introduced that controls the behaviour of ^G. If
shell_esc is set to abort, ^G restarts the
shell. If set to jcl, ^G invokes the JCL menu. The
latter is default.
OTP-4903 When using erlang:system_monitor(Pid,{long_gc,Time}), and the
GC time exceeded 1 second, it sometimes erroneously showed up
as about 4300 seconds. This bug has now been corrected.
OTP-4906 A bug has been fixed in Dets: not all objects were
always visible in tables with more than 131072 keys
OTP-4907 A bug has been fixed in Dets: when trying to repair a
version 9 table, a not_a_dets_file error message was
returned unnecessarily often.
OTP-4880 Bugs have been fixed in the disk_log module: if
reopen failed to rename a file, a message could
erroneously be sent to the client; if requests were queued
while a log was blocked, no replies were sent to the blocked
processes should the log be closed.
OTP-4902 In rare cases, the global name registration could hang during
simultaneous startup of several nodes, due to a cyclic
deadlock in the global:loop_the_locker processes.
OTP-4915 The kernel variable net_setuptime can now be defined in
fractions of seconds (using a floating point number)
OTP-4916 A possibility to make distribution messages be qued up during
running of erlang code, so that larger packages is sent over
the network is added.
OTP-4925 When code loading failed it was impossible to know exactly
what caused it, only {undef,[M,F,A],...} would be reported.
Now error_logger:warning_report/1 is called by the primitive
loader if a file operation fails. All file errors except
enoent and enotdir are reported this way.
OTP-4914 Distributed monitoring in combination with nodes restarting
did not behave correctly in rare circumstances.
OTP-4952 If a gen_server, gen_event or gen_fsm process exits with
{undef,[{M,F,A}|...]}, the error report will now state if the
function call failed because the module could not be loaded
or because the function was not exported.
OTP-4963 A module containing code similar to 'receive after 4.1' could
not be loaded.
OTP-4979 The Solaris kernel poll feature was changed from a compile
time option to a runtime option. The kernel poll feature can
be enabled, by passing the command-line argument "+K true" to
an emulator (see erl(1)) that have kernel poll support, i.e.
an emulator for Solaris 8. By default the kernel poll feature
is disabled.
OTP-4985 Before the Erlang emulator writes an erl_crash.dump file (for
any reason), it will close all open files and sockets.
OTP-4986 The '+c' switch has been added to disable time correction in
the runtime system, this should be used on systems where one
is certain no dramatic wall clock time changes will occur and
the time correction algorithm is too costly (namely very fast
Linux systems where loads of erlang:now() are executed).
OTP-4989 When opening a Dets table read only an attempt was made to
re-hash the table resulting in an error message. This problem
has been fixed.
OTP-4991 The process_flag/2,3 BIFs now take a flag min_heap_size that
allows changing an existing process's minimum heap size. The
actual size will only be changed when the next garbage
collection occurs.
OTP-4992 Problems fixed in file:open/2: "/dev/null" can now be opened.
Opening a FIFO will now return an error instead of hanging
the emulator. The documentation has been updated to point out
that file:open/2 returns the error code
gen_server:cast/2
now crashes for invalid
arguments.
gen_server:abcast/2-3
now crashes for
invalid arguments. The behaviour when casting to the name
global
has been corrected. Previously,
gen_server:abcast(global,[node@host])
tried to
cast to the globally registered name node@host
,
which is more of a bug than less. Now such a call will cast
to the registered name global
at the node
node@host
as (probably) expected.
An rpc:call/5
and
rpc:block_call/5
having a timeout argument has
been added.
rpc:abcast/2-3
has been improved
not to get stuck waiting for connection setup if the remote
node is not connected. In this case the send is spawned off
to a temporary process.
OTP-4846 The boot server had become broken. Now it works again.
OTP-4855 When loading a dynamically linked in driver through
erl_ddll, the server ddll_server that held the port for the
driver handling shared libraries got the group leader of the
invoking application. Later, when the application was
terminated, it killed all processes in its group, also the
ddll_server, so the driver still had some shared libraries
loaded. Finally, when the ddll_server was restarted it
assumed that all shared libraries its driver knew of was
statically linked, so the dynamically linked in drivers that
was loaded when ddll_server was killed could neither be
loaded nor unloaded. This bug has now been fixed by setting
the group leader of ddll_server to something harmless and
more eternal, and by unloading all remaining dynamically
linked in drivers when ddll_server starts. A race condition
when starting ddll_server has also been fixed.
OTP-4818 The f/1 shell command did not work correctly with
restricted shell.
OTP-4876 The driver for dynamically linked in drivers has been fixed
to delete loaded drivers when its erlang server dies. The
erlang server has also been updated to improve the
start-on-demand behaviour.
OTP-4890 The shell function c:regs() did crash if there was a
registered port among the registered names. This is now
corrected.
OTP-4892 erlang:register/2 does no longer generate an ERROR
REPORT to the error logger when the name already is
registered. If the name is already registered the process
function will crash with {'EXIT',Reason} and that is enough.
It is up to the caller to decide if it is an error that the
name is already registered.
OTP-4897 Starting Erlang with the +Bi flag (to ignore ^C), now also
disables the quit ('q') option in the JCL menu.
OTP-4898 A stdlib application variable, shell_esc, has been
introduced that controls the behaviour of ^G. If
shell_esc is set to abort, ^G restarts the
shell. If set to jcl, ^G invokes the JCL menu. The
latter is default.
OTP-4903 When using erlang:system_monitor(Pid,{long_gc,Time}), and the
GC time exceeded 1 second, it sometimes erroneously showed up
as about 4300 seconds. This bug has now been corrected.
OTP-4906 A bug has been fixed in Dets: not all objects were
always visible in tables with more than 131072 keys
OTP-4907 A bug has been fixed in Dets: when trying to repair a
version 9 table, a not_a_dets_file error message was
returned unnecessarily often.
OTP-4914 Distributed monitoring in combination with nodes restarting
did not behave correctly in rare circumstances.
OTP-4952 If a gen_server, gen_event or gen_fsm process exits with
{undef,[{M,F,A}|...]}, the error report will now state if the
function call failed because the module could not be loaded
or because the function was not exported.
OTP-4963 A module containing code similar to 'receive after 4.1' could
not be loaded.
OTP-4979 The Solaris kernel poll feature was changed from a compile
time option to a runtime option. The kernel poll feature can
be enabled, by passing the command-line argument "+K true" to
an emulator (see erl(1)) that have kernel poll support, i.e.
an emulator for Solaris 8. By default the kernel poll feature
is disabled.
OTP-4985 Before the Erlang emulator writes an erl_crash.dump file (for
any reason), it will close all open files and sockets.
OTP-4986 The '+c' switch has been added to disable time correction in
the runtime system, this should be used on systems where one
is certain no dramatic wall clock time changes will occur and
the time correction algorithm is too costly (namely very fast
Linux systems where loads of erlang:now() are executed).
OTP-4989 When opening a Dets table read only an attempt was made to
re-hash the table resulting in an error message. This problem
has been fixed.
OTP-4991 The process_flag/2,3 BIFs now take a flag min_heap_size that
allows changing an existing process's minimum heap size. The
actual size will only be changed when the next garbage
collection occurs.
OTP-4992 Problems fixed in file:open/2: "/dev/null" can now be opened.
Opening a FIFO will now return an error instead of hanging
the emulator. The documentation has been updated to point out
that file:open/2 returns the error code