Bug fix release : otp_src_R12B-1
Build date      : 2008-02-06

This is bug fix release 1 for the R12B release.
You can download the full source distribution from
 
  http://www.erlang.org/download/otp_src_R12B-1.tar.gz
  http://www.erlang.org/download/otp_src_R12B-1.readme (this file)

Note: To unpack the TAR archive you need a GNU TAR compatible program.

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_R12B-1.exe


On-line documentation can be found at http://www.erlang.org/doc/.
You can also download the complete HTML documentation or the Unix manual files

  http://www.erlang.org/download/otp_doc_html_R12B-1.tar.gz
  http://www.erlang.org/download/otp_doc_man_R12B-1.tar.gz

We also want to thank those that sent us patches, suggestions and bug
reports,

The OTP Team


--- HIGHLIGHTS ------------------------------------------------------------

    OTP-7100  Memory management improvements especially for the runtime
              system with SMP support:

              The runtime system with SMP support can now use multiple,
              thread specific instances of most memory allocators. This
              improves performance since it reduces lock contention in the
              memory allocators. It may however increase memory usage for
              some applications. The runtime system with SMP support will
              by default enable this feature on most allocators. The amount
              of instances used can be configured.

              driver_alloc(), driver_realloc(), and driver_free() now use
              their own erts specific memory allocator instead of the
              default malloc() implementation on the system.

              The default configuration of some allocators have been
              changed to fit applications that use much memory better.

              Some new erts_alloc configuration parameters have been added.

              erts_alloc_config has been modified to be able to create
              configurations suitable for multiple instances of allocators.

              The returned value from erlang:system_info({allocator,
              Alloc}) has been changed. This since an allocator may now run
              in multiple instances.

              If you for some reason want the memory allocators to be
              configured as before, you can pass the +Mea r11b command-line
              argument to erl.

              For more information see the erts_alloc(3), the
              erts_alloc_config(3), and the erlang(3) documentation.


--- documentation ------------------------------------------------------------

    OTP-7016  Added missing parenthesis in an example of the binary
              comprehensions in the Reference manual. (Thanks to igwan.)

    OTP-7125  Corrected the example in Common Caveats, section 3.4. (Thanks
              to Ulf Wiger.)


--- otp ------------------------------------------------------------

    OTP-7058  All config.{guess,sub} files in OTP have been updated and all
              applications using these files now use the same versions. The
              makefile variable TARGET is now exported in the top makefile.
              (Thanks to Christian Faulhammer and Sergei Golovan)

    OTP-7059  A failure in a recursive make is now propagated. (Thanks to
              Christian Faulhammer)

    OTP-7092  When building from source, the configure script is better at
              finding problems with static linking of OpenSSL. Dynamic
              linking is instead selected when such problems occur. Dynamic
              linking of OpenSSL is now also possible to force by giving
              the option --enable-dynamic-ssl-lib to configure.


--- common_test-1.3.1 ------------------------------------------------------------

    OTP-7111  The rx library, included with common_test, failed to build on
              on some architectures because the -fPIC compiler option was
              missing.


--- compiler-4.5.1 ------------------------------------------------------------

    OTP-7018  A match expression inside a function call could cause a false
              "a term is constructed but never used" warning.

    OTP-7022  The compiler could crash if a binary tail was matched out,
              and then used in a binary append operation. (Thanks to Oleg
              Avdeev.)

              Similarly, the compiler could crash if a binary tail was
              matched out, and then used (incorrectly) in binary
              construction in an integer field. (Thanks to Fredrik Svahn.)
              Or was incorrectly used in a float field. Or was used in a
              binary field with a given length. (Thanks to Chih - Wei Yu.)

    OTP-7029  Matching an empty binary in a record and then using the same
              record again could cause a compiler crash. (Thanks to Fredrik
              Thulin.)

    OTP-7073  In rare circumstances, constants containing floating points
              and integers could be confused. Example:

              f(a) -> [1]; f(b) -> [1.0].

              Both f(a) and f(b) would return [1].

    OTP-7094  Some bit syntax code such as

              matching d(_,<<>>) -> one; d(0,<<D>>) ->two.

              could crash the compiler. (Thanks to Simon Cornish.)

    OTP-7101  The compiler could generate suboptimal code for record
              updates if the record update code consisted of multiple
              source code lines.

    OTP-7102  In unusual circumstances, a call to a fun could fail due to
              an unsafe optimization. (Thanks to Simon Cornish.)

    OTP-7113  Bit syntax matching with a guard containing two or more uses
              of andalso/orelse could cause the compiler to crash. (Thanks
              to Mateusz Berezecki.)

    OTP-7117  This was only a problem if you generated or wrote your own
              Core Erlang code: The Core Erlang optimizer code could move
              nested calls such as erlang:'<'(erlang:length(L), 2) as case
              expression into a guard, which would change the semantics.
              (Thanks to Robert Virding.)


--- debugger-3.1.1.2 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.


--- dialyzer-1.7.2 ------------------------------------------------------------

    OTP-7134  The warnings returned by the Erlang interface now contains a
              tag describing the type of warning.


--- docbuilder-0.9.8 ------------------------------------------------------------

    OTP-7027  The generated html should now be valid xhtml (with a few
              exceptions to be fixed in next version).


--- erl_interface-3.5.5.4 ------------------------------------------------------------

    OTP-7093  Corrected FreeBSD build error.


--- erts-5.6.1 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.

    OTP-7006  The SMP emulator on sparc64 erroneously used the sparc32
              atomic and the sparc32 spinlock implementations which caused
              it to crash.

    OTP-7008  Call tracing the new guard BIFs byte_size, bit_size, or
              tuple_size and the loading a module that uses one of those
              functions, could cause the emulator to terminate.

    OTP-7014  configuring --enable-darwin-universal or
              --enable-darwin-64bit on MacOSX could result in a non
              optimized emulator. Top level configure script now corrected.

    OTP-7015  configuring --with-gd did not produce correct include flags
              for percept.

    OTP-7035  Environment variables weren't handled in thread safe manner
              in the runtime system with SMP support on Windows.

              erl_drv_putenv(), and erl_drv_getenv() has been introduced
              for use in drivers. Do not use putenv(), or getenv() directly
              in drivers. For more information see the erl_driver
              documentation.

    OTP-7067  HIPE: Corrected the choice of interface to the send/3 and
              setnode/3 BIFs for native-compiled code. Using the incorrect
              interface could, in unusual circumstances, lead to random
              runtime errors.

    OTP-7068  Garbage collections could become extremely slow when there
              were many keys in the process dictionary. (Thanks to Fredrik
              Svahn.)

    OTP-7070  The duplicate documentation directory in the windows
              installation is removed.

    OTP-7079  Documentation bugfixes and clarifications. (Thanks to Joern
              (opendev@gmail.com), Matthias Lang, and Richard Carlsson.)

    OTP-7080  The runtime system with SMP support not using the native
              atomic integer implementation part of OTP could deadlock when
              run on a system with more than one logical processor. That
              is, only the runtime system with SMP support on other
              hardware platforms than x86, x86_64, sparc32, and powerpc32
              were effected by this bug.

    OTP-7085  Bit syntax construction with a small integer in a non-byte
              aligned field wider than the CPU's word size could cause
              garbage bits in the beginning of the field.

    OTP-7086  All Windows versions older than Windows 2000 are now not
              supported by the Erlang runtime system. This since there was
              a need for usage of features introduced in Windows 2000.

    OTP-7100  Memory management improvements especially for the runtime
              system with SMP support:

              The runtime system with SMP support can now use multiple,
              thread specific instances of most memory allocators. This
              improves performance since it reduces lock contention in the
              memory allocators. It may however increase memory usage for
              some applications. The runtime system with SMP support will
              by default enable this feature on most allocators. The amount
              of instances used can be configured.

              driver_alloc(), driver_realloc(), and driver_free() now use
              their own erts specific memory allocator instead of the
              default malloc() implementation on the system.

              The default configuration of some allocators have been
              changed to fit applications that use much memory better.

              Some new erts_alloc configuration parameters have been added.

              erts_alloc_config has been modified to be able to create
              configurations suitable for multiple instances of allocators.

              The returned value from erlang:system_info({allocator,
              Alloc}) has been changed. This since an allocator may now run
              in multiple instances.

              If you for some reason want the memory allocators to be
              configured as before, you can pass the +Mea r11b command-line
              argument to erl.

              For more information see the erts_alloc(3), the
              erts_alloc_config(3), and the erlang(3) documentation.

    OTP-7104  The break handling code (run when Ctrl-C is hit) could could
              potentially deadlock the runtime system with SMP support.

    OTP-7120  The sctp driver has been updated to work against newer lksctp
              packages e.g 1.0.7 that uses the API spelling change adaption
              -> adaptation. Older lksctp (1.0.6) still work. The erlang
              API in gen_sctp.erl and inet_sctp.hrl now spells 'adaptation'
              regardless of the underlying C API.

    OTP-7122  On Unix, denormalized floating point numbers could not be
              created using list_to_float/1 or binary_to_term/1. (Thanks to
              Matthew Dempsky.)

    OTP-7127  A bug in erlang:phash2/1 on 64-bit platforms has been fixed.
              (Thanks to Scott Lystig Fritchie.)

    OTP-7130  Native atomic integers and spin-locks are now also available
              for the runtime system with SMP support on sparc64.

    OTP-7131  FP exceptions support for sparc64 userspace on Linux has been
              added. Note that FP exception support is now turned off by
              default, so to actually enable it you need to do './configure
              --enable-fp-exceptions'.

    OTP-7132  The emulator could under rare circumstances crash while
              garbage collecting.


--- gs-1.5.8 ------------------------------------------------------------

    OTP-7115  Uses wish85 if available and fixed 'gs error:
              gstk_port_handler: error in input : unknown option "-sta"'
              error. Thanks Vance Shipley


--- hipe-3.6.5 ------------------------------------------------------------

    OTP-7067  HIPE: Corrected the choice of interface to the send/3 and
              setnode/3 BIFs for native-compiled code. Using the incorrect
              interface could, in unusual circumstances, lead to random
              runtime errors.

    OTP-7133  The HiPE compiler's SPARC backend has been rewritten,
              improving its correctness and long-term maintainability.


--- inets-5.0.1 ------------------------------------------------------------

    OTP-7040  [httpd] - Deprecated function httpd:start/1 did not accept
	      all inputs that it had done previously. This should now work
	      again.

    OTP-7041  [httpd] - Changed validity check on bind_address so that it
	      uses inet:getaddr instead of inet:gethostbyaddr as the former
	      puts a too hard restriction on the bind_address.

    OTP-7042  [httpc] - Internal process now does try-catch and terminates
	      normally in case of HTTP parse errors. Semantical the client
	      works just as before returning an error message to the
	      client, even if the error massage has been enhanced, but
	      there is no supervisor report in the shell of a internal
	      process crashing. (Which was the expected behavior and not a
	      fault.)


--- inets-5.0.2 ------------------------------------------------------------

    OTP-6661  [httpd] - Error logs now has a pretty and a compact format
              and access logs can be written on the common log format or
              the extended common log format.

    OTP-7024  [httpc] - Added acceptance of missing reason phrase to the
              relaxed mode.

    OTP-7043  [httpc] - A new option has been added to enable the client to
              act as lower version clients, by default the client is an
              HTTP/1.1 client.


--- kernel-2.12.1 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.

    OTP-7009  tuple_size/1 and byte_size/1 have been substituted for
              size/1.

    OTP-7013  file:read/2 and file:consult_stream/1,3 did not use an empty
              prompt on I/O devices. This bug has now been corrected.

    OTP-7120  The sctp driver has been updated to work against newer lksctp
              packages e.g 1.0.7 that uses the API spelling change adaption
              -> adaptation. Older lksctp (1.0.6) still work. The erlang
              API in gen_sctp.erl and inet_sctp.hrl now spells 'adaptation'
              regardless of the underlying C API.


--- megaco-3.7.1 ------------------------------------------------------------

    OTP-6919  Use of depricated function erlang:fault replaced by
	      erlang:error.

    OTP-6971  When the megaco application receives two instances of the
	      same transaction requests (re-send) within too small a time,
	      there is a small possibility that both are passed on to the
	      user via a call to the callback function
	      (handle_trans_request).

    OTP-6992  Failure to parse SDP attribute FMTP rows.

    OTP-6999  Fixed a reply timer race condition problem resulting in (case
	      clause) error message.

    OTP-7000  Updated documentation for function megaco:connect/4.

    OTP-7005  Reporting of error(s) detected during loading of the flex
	      driver has been improved, by calling the erlang:format_error
	      function.

    OTP-7124  Corrected usage of function file:open/2 (the Modes argument
	      is a list).


--- odbc-2.10 ------------------------------------------------------------

    OTP-7062  Enhanced configure to among other things work better when
              there is a library found but it is not usable e.i. 32 bit
              library in 64 bit build.


--- os_mon-2.1.5 ------------------------------------------------------------

    OTP-7108  CPU utilization, on linux, is now measured via a port program
              instead of os:cmd in erlang. This should enhance performance.


--- parsetools-1.4.3 ------------------------------------------------------------

    OTP-7009  tuple_size/1 and byte_size/1 have been substituted for
              size/1.


--- percept-0.6.2 ------------------------------------------------------------

    OTP-7126  A new module, percept_profile, can now be used to collect
              profiling data even if the percept application is not
              installed. This should help profiling erlang application on
              target machines without libgd installed.


--- runtime_tools-1.7.1 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.

    OTP-7100  Memory management improvements especially for the runtime
              system with SMP support:

              The runtime system with SMP support can now use multiple,
              thread specific instances of most memory allocators. This
              improves performance since it reduces lock contention in the
              memory allocators. It may however increase memory usage for
              some applications. The runtime system with SMP support will
              by default enable this feature on most allocators. The amount
              of instances used can be configured.

              driver_alloc(), driver_realloc(), and driver_free() now use
              their own erts specific memory allocator instead of the
              default malloc() implementation on the system.

              The default configuration of some allocators have been
              changed to fit applications that use much memory better.

              Some new erts_alloc configuration parameters have been added.

              erts_alloc_config has been modified to be able to create
              configurations suitable for multiple instances of allocators.

              The returned value from erlang:system_info({allocator,
              Alloc}) has been changed. This since an allocator may now run
              in multiple instances.

              If you for some reason want the memory allocators to be
              configured as before, you can pass the +Mea r11b command-line
              argument to erl.

              For more information see the erts_alloc(3), the
              erts_alloc_config(3), and the erlang(3) documentation.


--- snmp-4.10.1 ------------------------------------------------------------

    OTP-7083  There is a bug in snmp_pdus:enc_oct_str_tag/1. All the enc_*
	      functions are supposed to return a flat list, but the second
	      clause of this function does not. If it gets a binary it
	      returns a deep list.

    OTP-7109  The SNMP application contains some simple utility functions
	      that wrappes dbg. These functions is intended to make it easy
	      to enable tracing on individual functions. There where some
	      miscellaneous errors which has been corrected.

    OTP-7110  Corrected usage of function file:open/2 (the Modes argument
	      is a list).

    OTP-7119  Old style funs cleanup in the MIB compiler.

    OTP-7121  [agent] Remeoved invalid guard. There was an invalid guard on
	      the start function of the top agent supervisor.

    OTP-7123  [manager] Fixed usage of inet:gethostname/1.


--- ssh-0.9.9.5 ------------------------------------------------------------

    OTP-7063  Documentation update of ssh.

    OTP-7089  ssh_cm hanged when connection was closed during handshake.
              (Triggered by putty 0.60 client.)

    OTP-7090  Same listener is used for both sshd and sftpd. Previously the
              sftpd server had to be run on a separate port, now the sshd
              listener will start an sftpd server when an sftp client
              connects.

    OTP-7135  Fixed crash in server when receiving an empty ignore-msg.
              (From the putty 0.60 client.)


--- stdlib-1.15.1 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.

    OTP-7009  tuple_size/1 and byte_size/1 have been substituted for
              size/1.

    OTP-7025  Ets:select/3 in combination with ets:repair_continuation/2
              and ordered_set data tables could result in function_clause
              although used as intended. This is now corrected. Thanks to
              Paul Mineiro for finding and isolating the bug!

    OTP-7026  It is now possible to hibernate a
              gen_server/gen_event/gen_fsm. In gen_server and gen_fsm,
              hibernation is triggered by returning the atom
              'hibernate' instead of a timeout value. In the gen_event case
              hibernation is triggered by a event handler returning a tuple
              with an extra element containing the atom 'hibernate'.

    OTP-7034  The compiler warning for the deprecated function ftp:close/1
              now mentions the correct replacement function.

              The warning for the removed functions in the httpd_util
              module have been changed to say they have been removed, not
              merely deprecated. (Thanks to Fredrik Thulin.)

    OTP-7066  Some undocumented debug functionality has been added to Dets.

    OTP-7078  In (Expr)#r{} (no fields are updated), Expr is no longer
              evaluated more than once. There is also a test that Expr is
              of the correct record type. (Thanks to Dominic Williams.)

    OTP-7079  Documentation bugfixes and clarifications. (Thanks to Joern
              (opendev@gmail.com), Matthias Lang, and Richard Carlsson.)

    OTP-7081  The functions digraph_utils:is_tree/1,
              digraph_utils:is_arborescence/1, and
              digraph_utils:arborescence_root/1 are new.

    OTP-7101  The compiler could generate suboptimal code for record
              updates if the record update code consisted of multiple
              source code lines.

    OTP-7114  Duplicated objects were sometimes not deleted from the list
              of answers when a QLC table was traversed using a match
              specification. (Thanks to Dmitri Girenko.)


--- test_server-3.2.1 ------------------------------------------------------------

    OTP-7091  When init_per_suite or end_per_suite terminated due to
              runtime failure, test_server failed to format the line number
              information properly and crashed. This error has now been
              fixed.


--- tools-2.6.1 ------------------------------------------------------------

    OTP-6944  The documentation has been updated so as to reflect the last
              updates of the Erlang shell as well as the minor
              modifications of the control sequence p of the io_lib module.

              Superfluous empty lines have been removed from code examples
              and from Erlang shell examples.

    OTP-7009  tuple_size/1 and byte_size/1 have been substituted for
              size/1.

    OTP-7095  The coverage analysis tool cover now handles the
              short-circuit Boolean expressions andalso/2 and orelse/2
              properly.