OTP R9C-1 has been released

Bjorn Gustavsson bjorn@REDACTED
Wed May 26 15:33:30 CEST 2004


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)

If you have access to the Ericsson intranet you can find the same files at

  http://erlang.ericsson.se/opensource/download/

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 <c>nowarn_unused_vars</c> is given.

    OTP-4844  <p><code>gen_server:cast/2</code> now crashes for invalid
	      arguments. 
	      <p><code>gen_server:abcast/2-3</code> now crashes for 
	      invalid arguments. The behaviour when casting to the name
	      <code>global</code> has been corrected. Previously,
	      <code>gen_server:abcast(global,[node@REDACTED])</code> tried to
	      cast to the globally registered name <code>node@REDACTED</code>,
	      which is more of a bug than less. Now such a call will cast
	      to the registered name <code>global</code> at the node
	      <code>node@REDACTED</code> as (probably) expected. 
	      <p>An <code>rpc:call/5</code> and
	      <code>rpc:block_call/5</code> having a timeout argument has
	      been added. <p><code>rpc:abcast/2-3</code> 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 <c>eisdir</c> when
	      the pathname is not a regular file (the pathname is not
	      necesserarily a directory).

    OTP-5026  Conversion of extremely small floating point numbers in the
	      external format (distribution) could sometimes fail leading
	      to unexpected closing of distribution channels, i.e.
	      generating nodedowns for healthy nodes.

    OTP-5028  Emulator with elib_malloc enabled could hang when many I/O
	      threads were in use.

    OTP-5030  Remote spawn on a nonreachable node now gives warning instead
	      of error in the error_log.

    OTP-4789  A few portability enhancements for the R9C-1 Open Source
	      release: The installer for Windows can now be built with NSIS
	      2.0 (as well as with the NSIS 2.0b3). The driver header files
	      updated to allowed drivers to be built wich the MinGW
	      compiler on Windows. Minor portability enhancement in
	      io_lib:fread.

    OTP-5026  Conversion of extremely small floating point numbers in the
	      external format (distribution) could sometimes fail leading
	      to unexpected closing of distribution channels, i.e.
	      generating nodedowns for healthy nodes.
	      
--- ic ------------------------------------------------------------

    OTP-4763  Output of Java long was truncated to 32 bits. IDL long long
	      and unsigned long long could not be used in a struct for the
	      Java backend. All unsigned integer types for the Java backend
	      had broken marshalling for large values. These bugs has now
	      been fixed.

    OTP-4763  Output of Java long was truncated to 32 bits. IDL long long
	      and unsigned long long could not be used in a struct for the
	      Java backend. All unsigned integer types for the Java backend
	      had broken marshalling for large values. These bugs has now
	      been fixed.

    OTP-4881  In generated code for the C server back-end, the naming 
	      scope was in error for prototypes in C header files for 
	      interfaces inheriting base interfaces.
	      Improvements and new features:

    OTP-4972  Send and receive functions with timeouts have been added
	      to the C back-ends for the standard protocol (i.e. Erlang
	      distribution + gen_server protocol). 
	      Accordingly a new compiler option {c_timeout,
	      {SendTimeout, RecvTimeout}} has been added. Timeouts are
	      specified in milliseconds.
	      A user that want to implement its own protocols with
	      function timeouts has to implement the following functions. 
	      For C clients the functions int
	      PFX_send_notification(CORBA_Environment *env, unsigned int
	      send_ms), and int
	      PFX_send_request_and_receive_reply(CORBA_Environment *env,
	      unsigned int send_ms, unsigned int recv_ms) have to be
	      additionally implemented, where PFX is the user defined
	      prefix.
	      For C servers no additional functions have to be
	      implemented, but a clone of the int
	      oe_server_receive_tmo(CORBA_Environment *env, oe_map_t *map,
	      unsigned int send_ms, unsigned int recv_ms) might be
	      handy.

    OTP-4834  The C back-ends has been opened up, so that a user can 
	      define his own protocol, differing from the Erlang 
	      distribution + gen_server protocol.  
	      For C clients it means to replace the library functions int
	      oe_prepare_notification_encoding(CORBA_Environment *env),
	      int oe_send_notification(CORBA_Environment *env), int
	      oe_prepare_request_encoding(CORBA_Environment *env), int
	      oe_send_request_and_receive_reply(CORBA_Environment *env),
	      and int oe_prepare_reply_decoding(CORBA_Environment *env),
	      with functions of the same signature, but with the 
	      prefix "oe" replaced by a user defined prefix. 
	      For C servers the functions int 
	      oe_prepare_request_decoding(CORBA_Environment *env), and int
	      oe_prepare_reply_encoding(CORBA_Environment *env), 
	      are similarly replaced.
	      The new compiler option {user_protocol, Prefix} has 
	      been added. 
	      Improvements and new features:

    OTP-4972  Send and receive functions with timeouts have been added
	      to the C back-ends for the standard protocol (i.e. Erlang
	      distribution + gen_server protocol). 
	      Accordingly a new compiler option {c_timeout,
	      {SendTimeout, RecvTimeout}} has been added. Timeouts are
	      specified in milliseconds.
	      A user that want to implement its own protocols with
	      function timeouts has to implement the following functions. 
	      For C clients the functions int
	      PFX_send_notification(CORBA_Environment *env, unsigned int
	      send_ms), and int
	      PFX_send_request_and_receive_reply(CORBA_Environment *env,
	      unsigned int send_ms, unsigned int recv_ms) have to be
	      additionally implemented, where PFX is the user defined
	      prefix.
	      For C servers no additional functions have to be
	      implemented, but a clone of the int
	      oe_server_receive_tmo(CORBA_Environment *env, oe_map_t *map,
	      unsigned int send_ms, unsigned int recv_ms) might be
	      handy.

    OTP-4834  The C back-ends has been opened up, so that a user can 
	      define his own protocol, differing from the Erlang 
	      distribution + gen_server protocol.  
	      For C clients it means to replace the library functions int
	      oe_prepare_notification_encoding(CORBA_Environment *env),
	      int oe_send_notification(CORBA_Environment *env), int
	      oe_prepare_request_encoding(CORBA_Environment *env), int
	      oe_send_request_and_receive_reply(CORBA_Environment *env),
	      and int oe_prepare_reply_decoding(CORBA_Environment *env),
	      with functions of the same signature, but with the 
	      prefix "oe" replaced by a user defined prefix. 
	      For C servers the functions int 
	      oe_prepare_request_decoding(CORBA_Environment *env), and int
	      oe_prepare_reply_encoding(CORBA_Environment *env), 
	      are similarly replaced.
	      The new compiler option {user_protocol, Prefix} has 
	      been added. 
	      Improvements and new features:

    OTP-4972  Send and receive functions with timeouts have been added
	      to the C back-ends for the standard protocol (i.e. Erlang
	      distribution + gen_server protocol). 
	      Accordingly a new compiler option {c_timeout,
	      {SendTimeout, RecvTimeout}} has been added. Timeouts are
	      specified in milliseconds.
	      A user that want to implement its own protocols with
	      function timeouts has to implement the following functions. 
	      For C clients the functions int
	      PFX_send_notification(CORBA_Environment *env, unsigned int
	      send_ms), and int
	      PFX_send_request_and_receive_reply(CORBA_Environment *env,
	      unsigned int send_ms, unsigned int recv_ms) have to be
	      additionally implemented, where PFX is the user defined
	      prefix.
	      For C servers no additional functions have to be
	      implemented, but a clone of the int
	      oe_server_receive_tmo(CORBA_Environment *env, oe_map_t *map,
	      unsigned int send_ms, unsigned int recv_ms) might be
	      handy.

    OTP-4834  The C back-ends has been opened up, so that a user can 
	      define his own protocol, differing from the Erlang 
	      distribution + gen_server protocol.  
	      For C clients it means to replace the library functions int
	      oe_prepare_notification_encoding(CORBA_Environment *env),
	      int oe_send_notification(CORBA_Environment *env), int
	      oe_prepare_request_encoding(CORBA_Environment *env), int
	      oe_send_request_and_receive_reply(CORBA_Environment *env),
	      and int oe_prepare_reply_decoding(CORBA_Environment *env),
	      with functions of the same signature, but with the 
	      prefix "oe" replaced by a user defined prefix. 
	      For C servers the functions int 
	      oe_prepare_request_decoding(CORBA_Environment *env), and int
	      oe_prepare_reply_encoding(CORBA_Environment *env), 
	      are similarly replaced.
	      The new compiler option {user_protocol, Prefix} has 
	      been added. 
	      Improvements and new features:

    OTP-5036  The size of modules, used then registering data in the IFR DB
	      (e.g., oe_MyModule:oe_register()), can be minimized if the
	      compile option light_ifr is used and Orber is configured to
	      use Light IFR. Requires that orber-3.5, or later, is used.
	      Incompatibilities:

    OTP-5049  The compile otion multiple_be is no longer supported.

--- inets ------------------------------------------------------------

    OTP-4822  [ftp] FTP client doesn't notice when disk is full.

    OTP-4808  [httpd] In module mod_browser, malformed search for 
	      parsed header, user-agent. Also added new os and 
	      browser.

    OTP-4807  [httpc] HTTP client reformats some URLs (e.g. 
	      containing %20, space). Updated client from 
	      sowap.sf.net as of 2003-09-08.
	      Johan Blom of Mobile Arts AB 

    OTP-4806  [httpd] Fixed a number of transfer-encoding problems.
	      First part of the data received from a CGI-script was 
	      sent as chunked even if the client was HTTP/1.0.
	      Introduced new directive 
	      (DisableChunkedTransferEncodingSend) to turn off usage 
	      of chunked transfer-encoding (when sending) since it 
	      appears some browsers have problems handling this. 
	      This applies if the client is HTTP/1.1.
	      
--- jinterface ------------------------------------------------------------

    OTP-4763  Output of Java long was truncated to 32 bits. IDL long long
	      and unsigned long long could not be used in a struct for the
	      Java backend. All unsigned integer types for the Java backend
	      had broken marshalling for large values. These bugs has now
	      been fixed.

    OTP-4763  Output of Java long was truncated to 32 bits. IDL long long
	      and unsigned long long could not be used in a struct for the
	      Java backend. All unsigned integer types for the Java backend
	      had broken marshalling for large values. These bugs has now
	      been fixed.
	      
--- kernel ------------------------------------------------------------

    OTP-4788  When the emulator was started with command line arguments
	      -run or -s and the started code did an uncatched
	      erlang:throw/1, the emulator ignored the throw which is
	      rather strange. Now the init process exits with nocatch as
	      expected.

    OTP-4802  The code server could hang if invoked early in the startup.
	      For example if the emulator was started with "-s file eval
	      Filename" and Filename contained a call to code:add_patha/1
	      the code server accidentally tried to execute code in an
	      unloaded module from inside the code that loaded a module -
	      hence hangup. This bug has now been fixed.

    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 <c>nowarn_unused_vars</c> is given.

    OTP-4844  <p><code>gen_server:cast/2</code> now crashes for invalid
	      arguments. 
	      <p><code>gen_server:abcast/2-3</code> now crashes for 
	      invalid arguments. The behaviour when casting to the name
	      <code>global</code> has been corrected. Previously,
	      <code>gen_server:abcast(global,[node@REDACTED])</code> tried to
	      cast to the globally registered name <code>node@REDACTED</code>,
	      which is more of a bug than less. Now such a call will cast
	      to the registered name <code>global</code> at the node
	      <code>node@REDACTED</code> as (probably) expected. 
	      <p>An <code>rpc:call/5</code> and
	      <code>rpc:block_call/5</code> having a timeout argument has
	      been added. <p><code>rpc:abcast/2-3</code> 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 <c>eisdir</c> when
	      the pathname is not a regular file (the pathname is not
	      necesserarily a directory).

    OTP-5020  An error that made the code server ignore version numbers on
	      lib directories has been corrected.

    OTP-5026  Conversion of extremely small floating point numbers in the
	      external format (distribution) could sometimes fail leading
	      to unexpected closing of distribution channels, i.e.
	      generating nodedowns for healthy nodes.

    OTP-5028  Emulator with elib_malloc enabled could hang when many I/O
	      threads were in use.

    OTP-5030  Remote spawn on a nonreachable node now gives warning instead
	      of error in the error_log.

    OTP-4789  A few portability enhancements for the R9C-1 Open Source
	      release: The installer for Windows can now be built with NSIS
	      2.0 (as well as with the NSIS 2.0b3). The driver header files
	      updated to allowed drivers to be built wich the MinGW
	      compiler on Windows. Minor portability enhancement in
	      io_lib:fread.

    OTP-5026  Conversion of extremely small floating point numbers in the
	      external format (distribution) could sometimes fail leading
	      to unexpected closing of distribution channels, i.e.
	      generating nodedowns for healthy nodes.
	      
--- megaco ------------------------------------------------------------

    OTP-4836  Update of the request timer incorrect when receiving a 
	      pending message. Could cause an exit of the process 
	      handling the message and a subsequent call to the
	      handle_disconnect callback function. 

    OTP-4843  Failed stopping the request timer when receiving a reply. 
	      The only effect this had was that the request timer 
	      possibly ran one extra time (without doing anything).
	      Fixed bugs and malfunctions:

    OTP-4836  Update of the request timer incorrect when receiving a 
	      pending message. Could cause an exit of the process 
	      handling the message and a subsequent call to the
	      handle_disconnect callback function.

    OTP-4843  Failed stopping the request timer when receiving a reply. 
	      The only effect this had was that the request timer 
	      possibly ran one extra time (without doing anything).
	      Improvements and new features:
	      - Support for both version 1 & 2 of the Megaco standard, updated 
	      according with IGv10-13.
	      Version selection is described in chapter Handling megaco 
	      versions 1 & 2. 
	      - It is now possible to use the ASN.1 linked in driver for 
	      decode/encode of messages (encoding config driver). 
	      See chapter Configuration of binary encoding module(s). 
	      - Added a new configuration parameter, orig_pending_limit, to support 
	      the xOriginatingPendingLimit (x = MG or MGC) property in the root 
	      package. 
	      See the orig_pending_limit parameter of the user_info function 
	      (also conn_info). 
	      - Added a new configuration parameter, threaded. This tells the megaco
	      app, that all transaction requests in a message should be executed 
	      in parallel (e.g. each in it's own process). 
	      See the threaded parameter of the user_info function 
	      (also conn_info). 
	      - Added behaviour modules megaco_transport and megaco_encoder. 
	      - Added new (message) test functions to the megaco module, see 
	      test_request and test_reply. 
	      - Minor improvements to the tracing.
	      - Minor improvements to the simple example.
	      Incompatibilities:
	      - signalsDescriptor has changed i v2.
	      - ServiceChangeProfile has changed in v2.

    OTP-4920  Megaco did not handle IPv6-addresses.

    OTP-4921  Text encoding of hex-digits sometimes incorrect.
	      Improvements and new features:
	      - Allow separatelly encode action requests. Handle sending of those 
	      previously encoded action requests as binaries (as well as lists of 
	      action requests). 
	      See encode_actions, call and cast.
	      - Introduce a transaction sender process (one for each connection) 
	      which will accumulate transactions and send several in one message. 
	      See transaction sender, user_info and conn_info.
	      - New encoding-config options for the erl_dist encoder which makes it 
	      possible to compress the megaco messages. This makes the erl_dist 
	      encoded message much more compact (about 1/3 of the size). 
	      See megaco_compressed.
	      Fixed bugs and malfunctions:

    OTP-4974  Text parser(s) did not handle parsing of the StreamId field 
	      of RequestedEvent and SecondRequestedEvent.

    OTP-4956  Repeated transaction request receiving when exceeding 
	      pending limit will cause the message handling process to 
	      crash.

    OTP-4950  Text parser did not handle auditReturnItem properly, as 
	      defined in IGv11.

    OTP-4949  Missing [text] servChgReplyParm constistency check.

    OTP-4946  Incorrect handling of comments in text messages.

    OTP-4945  Missing [text] serviceChangeParm constistency check.
	      Incompatibilities:

    OTP-4950  Text parser did not handle auditReturnItem properly, as 
	      defined in IGv11. The result which was supposed to have 
	      been presented as the tuple:
	      {emptyDescriptor, #'AuditDescriptor{}} 
	      in the termination audit list, was instead entered as 
	      {auditReturnItem, atom()} 
	      in the termination audit list. This has been fixed.
	      - In previous releases there where a couple of user and connection 
	      config items dealing with accumulating transaction ack sending. 
	      These has all been renamed due to the introduction of the 
	      transaction sender. 
	      See transaction sender, user_info and conn_info.

    OTP-5025  During node restart in a high load senario, the
	      megaco_messenger:receive_reply_remote function could be
	      called on a node before the megaco app has actually been
	      started. This will result in a crash (EXIT with badarg). This
	      is now handled in the same way as if the request was not
	      found (with a call to the callback function
	      handle_unexpected_trans).

    OTP-5042  A pretty text message containing an ObservedEvents without
	      timestamp, will fail to decode.
	      
--- mnesia ------------------------------------------------------------

    OTP-4803  Mnesia could deadlock if add_table_copy was called 
	      during a node startup.

    OTP-4863  Mnesia couldn't mix normal transactions and activities 
	      (fragmented tables) in nested transactions. 

    OTP-4864  Mnesia copied to much data when connecting to an old 
	      node, this could cause slow startup times. 

    OTP-4926  Fixed startup problems with ram based mnesia nodes, 
	      multiple synchronization problems could cause mnesia 
	      to either hang or crash.

    OTP-4964  Mnesia's monitor process could crash with badarg or
	      badmatch in mnesia-4.1.8.

    OTP-5012  Mnesia could crash if a cleartable operation
	      was made during startup of any node. 

    OTP-5013  Restarting mnesia (fast) could lead to
	      synchronization problems, leaving transactions unfinished. 

    OTP-5014  Mnesia could fail to load tables that only existed on
	      2 nodes and mnesia couldn't grab a lock on that table in 20 tries. 

    OTP-5039  Mnesia's internal state could be inconsistent between nodes
	      on ram-only systems. Data could be commited on nodes despite
	      that the lock was not grabbed on all nodes (that could happen
	      on all type of nodes).
	      
--- orber ------------------------------------------------------------

    OTP-4780  The operation orber:start() could return before all Mnesia
	      tables were accessible.

    OTP-4781  Concurrent creation of non-anonymous IFR types could result
	      in duplicates in the DB.

    OTP-4781  Due to IFR DB lock mechanisms, concurrent creation of 
	      non-anonymous IFR types could still result in duplicated 
	      entries.
	      Improvements and new features:

    OTP-4698  It is now possible to configure Orber to use NAT 
	      (Network Address Translation) friendly parameters.
	      A new section in the User's Guide describes how to
	      handle communication via firewalls.	

    OTP-4699  A new module called orber_diagnostics have been added,
	      which is intended to aid a user during the test and
	      development phase. For more information, see the
	      reference manual.

    OTP-4937  IPv6 supported.

    OTP-4938  Possible to configure Orber so that exported IOR:s
	      contain multiple IIOP components for different interfaces.

    OTP-4939  Improved typechecking of typecode supplied to the
	      operations orber_tc:check_tc/1, any:create/2 and
	      any:set_typecode/2.

    OTP-4940  Server objects can now be started as EXIT tolerant.

    OTP-4941  Possible to use interceptors for local invocations as well.

    OTP-5001  If the IFR is not explicitly used, Orber can be configured
	      to use a minimal IFR to reduce memory usage and installation
	      time.

    OTP-5002  To avoid malicious attacks it is now possible to configure
	      Orber to limit the number of concurrent connections and
	      requests and the amount of IIOP fragments.

    OTP-5004  The operation orber:iiop_connections/0 now also include
	      incoming connections.

    OTP-5006  The function orber:add_node/2 now accepts more options.

    OTP-5007  The module orber_diagnostics now exports a function which
	      list missing modules generated by IC and required by Orber.
	      Fixed bugs and malfunctions:

    OTP-4700  Orber's NameService did not return a NIL object reference
	      if the total number of existing bindings was less than,
	      or equal to, the HowMany parameter passed to 
	      'CosNaming_NamingContext':list/2 operation. This have now
	      been changed to be compliant with the OMG standard.
	      Furthermore, the operation 'CosNaming_BindingIterator':next_n/2
	      did not handle the index correctly in all situations.

    OTP-5003  If the Orber internal gen_server orber_iiop_pm was stopped in
	      such a way that the terminate function was not invoked, then 
	      ghost processes would appear.

    OTP-5018  orber_ifr:contents/3 always returned an empty list when using
	      Light IFR. Little or no effect.
	      Incompatibilities:

    OTP-5005  Since the OMG has defined a default port number (2809), Orber
	      no longer support the boostrap port.

    OTP-4608  The work-around introduced in version 3.4.1 has now been removed.
	      Make sure you are using IC-4.2 or later.

    OTP-5034  When using Light IFR it was not possible unregister data
	      (i.e., invoking 'MyModule':oe_unregister()).
	      Introduced in Orber-3.5.0.1.

--- os_mon ------------------------------------------------------------

    OTP-4966  Os_mon_mib could add faulty records to it's tables when
	      rpc-calls failed due to remote nodes shutting down.

--- otp_mibs ------------------------------------------------------------

    OTP-4801  Missing app- and appup-files in ebin-dir.

    OTP-4823  Incorrect app-file (missing mandatory 'registered').
	      
--- snmp ------------------------------------------------------------

    OTP-4810  [agent] Minor errors in debug macros and sample config 
	      file. Serge Aleynikov

    OTP-4811  [agent] Code up/downgrade cleanup.

    OTP-4825  [compiler] Fixed a parser error that caused the group 
	      checks to behave erratic.
	      Also fixed related group check problems which among other 
	      things produced cryptic error messages.
Reported Fixed Bugs and Malfunctions:

    OTP-4879  Handling of subagents (with subtrees not in sequence).
	      When a subagent has two subtrees registered, A and C, and 
	      another agent has a subtree between the two, B. A get-next 
	      operation for the last variable in A would return the first 
	      variable in B, which is wrong. The master agent did check 
	      this, but not very good. 
	      Martin Björklund
	      Improvements and new features:

    OTP-4873  Added new date and time function(s) utilizing the 
	      local_time_to_universal_time_dst of the calendar module.
	      See local_time_to_date_and_time_dst and 
	      date_and_time_to_universal_time_dst.
	      The old functions, local_time_to_date_and_time/1 and
	      date_and_time_to_universal_time/1, has been obsoleted and 
	      will be removed at a later date.
	      Incompatibilities:
	      Functions snmp:local_time_to_date_and_time/1 and 
	      snmp:date_and_time_to_universal_time/1, has been 
	      obsoleted and will be removed at a later date.
	      Improvements and new features:

    OTP-4980  [agent] Improved load control. Added a new config 
	      parameter, snmp_req_limit, which allow for some load 
	      control, see configuration parameters.

    OTP-4993  [agent] The example manager cannot handle start option 
	      receive_type.

    OTP-4931  [compiler] Notifications now included in generated header 
	      files.

    OTP-4934  [compiler] Defines of the SNMPv2-TC now builtin. This also 
	      means that the SNMPv2-TC provided with this application is 
	      the proper one.

    OTP-4996  [agent] Added functions to add/delete config in runtime, 
	      equivalent to the config files:
	      - add_community/5 and delete_community/1 
	      - add_context/1 and delete_context/1 
	      - add_notify/3 and delete_notify/1 
	      - add_addr/10, delete_addr/1, add_params/5 and 
	      delete_params/1 
	      - add_user/13 and delete_user/1 
	      - add_sec2group/3, delete_sec2group/1, add_access/8, 
	      delete_access/1, add_view_tree_fam/4 and 
	      delete_view_tree_fam/1 
	      Reported Fixed Bugs and Malfunctions:

    OTP-4978  [agent] Access with typo causes system crash. Adding a 
	      rudimentary type check to the (set-) access functions:
	      - SNMP-COMMUNITY-MIB: snmpCommunityTable/3 
	      - SNMP-NOTIFICATION-MIB: snmpNotifyTable/3 
	      - SNMP-TARGET-MIB: snmpTargetAddrTable/3,
	      snmpTargetParamsTable/3 
	      - SNMP-USER-BASED-SM-MIB: usmUserTable/3 
	      - SNMP-VIEW-BASED-ACM-MIB: vacmSecurityToGroupTable/3, 
	      vacmAccessTable/3 & vacmViewTreeFamilyTable/3 

    OTP-4981  [compiler] SNMP compiler cannot handle MIBs without 
	      object defs. 

    OTP-3843  [agent] Instrumentation function usmUserTable exited on 
	      bad values.

    OTP-4999  SNMP trap send stops after change to Access Group Data

    OTP-5000  get-next on vacmAccessTable failes for column 3

    OTP-5017  snmp_user_based_sm_mib:add_user/13 calls undef function
	      snmp_conf:check_user/1. Should have been
	      snmp_conf:check_usm/1

    OTP-5041  Incorrect (v3-) password causes the agent to not send a
	      report back to the manager and counters to not be updated,
	      due to a decode crash.
	      Improvements and new features:

    OTP-5056  Application test directory included in the source release. 
	      Reported Fixed Bugs and Malfunctions:

    OTP-5051  [compiler] The value range part of the SYNTAX Integer32 
	      does not handle values given as hexStr or bitStr 
	      (only 10-base integers). 

    OTP-5052  [compiler] The mib compiler cannot handle mib 
	      traps/notifications with included values (OBJECTS) 
	      which are defined later in the MIB. 

--- ssl ------------------------------------------------------------

    OTP-4971  The UTF8String type is now defined in asn1-1.4.4.2 and later.
	      Therefore the definitions of UTF8String has been removed from
	      the ASN.1 modules PKIX1Explicit88.asn1 and PKIXAttributeCertificate.asn1.
	      The SSL application can now only be built using asn-1.4.4.2 or later. 

--- stdlib ------------------------------------------------------------

    OTP-4788  When the emulator was started with command line arguments
	      -run or -s and the started code did an uncatched
	      erlang:throw/1, the emulator ignored the throw which is
	      rather strange. Now the init process exits with nocatch as
	      expected.

    OTP-4802  The code server could hang if invoked early in the startup.
	      For example if the emulator was started with "-s file eval
	      Filename" and Filename contained a call to code:add_patha/1
	      the code server accidentally tried to execute code in an
	      unloaded module from inside the code that loaded a module -
	      hence hangup. This bug has now been fixed.

    OTP-4820  gen_server:s internal function get_parent, called by
	      gen_server:enter_loop/[4,5], now returns the pid of parents
	      that are registered processes, instead of returning their
	      name. The reason for this is that gen_server relies on that
	      the parent is represented as a pid. This error in
	      get_parent/0 had the effect that the terminate function of
	      the child was not run when it was shutdown.

    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 <c>nowarn_unused_vars</c> is given.

    OTP-4844  <p><code>gen_server:cast/2</code> now crashes for invalid
	      arguments. 
	      <p><code>gen_server:abcast/2-3</code> now crashes for 
	      invalid arguments. The behaviour when casting to the name
	      <code>global</code> has been corrected. Previously,
	      <code>gen_server:abcast(global,[node@REDACTED])</code> tried to
	      cast to the globally registered name <code>node@REDACTED</code>,
	      which is more of a bug than less. Now such a call will cast
	      to the registered name <code>global</code> at the node
	      <code>node@REDACTED</code> as (probably) expected. 
	      <p>An <code>rpc:call/5</code> and
	      <code>rpc:block_call/5</code> having a timeout argument has
	      been added. <p><code>rpc:abcast/2-3</code> 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 <c>eisdir</c> when
	      the pathname is not a regular file (the pathname is not
	      necesserarily a directory).

    OTP-5046  If many files or sockets were open (more than 256), beam_lib
	      operations could fail. Corrected.

    OTP-4789  A few portability enhancements for the R9C-1 Open Source
	      release: The installer for Windows can now be built with NSIS
	      2.0 (as well as with the NSIS 2.0b3). The driver header files
	      updated to allowed drivers to be built wich the MinGW
	      compiler on Windows. Minor portability enhancement in
	      io_lib:fread.

    OTP-5026  Conversion of extremely small floating point numbers in the
	      external format (distribution) could sometimes fail leading
	      to unexpected closing of distribution channels, i.e.
	      generating nodedowns for healthy nodes.
	      

-- 
Björn Gustavsson, Erlang/OTP, Ericsson AB



More information about the erlang-questions mailing list