Bug fix release : otp_src_R12B-4
Build date      : 2008-09-03

This is bug fix release 4 for the R12B release.

You can find the README file for the release at

  http://www.erlang.org/download/otp_src_R12B-4.readme (this file)

The source distribution and binary distribution for Windows can be
downloaded from

  http://www.erlang.org/download/otp_src_R12B-4.tar.gz
  http://www.erlang.org/download/otp_win32_R12B-4.exe

The distribution can also be downloaded using the BitTorrent
protocol. Use the following torrent files to download the source
distribution and binary distribution for Windows:

  http://www.erlang.org/download/otp_src_R12B-4.tar.gz.torrent
  http://www.erlang.org/download/otp_win32_R12B-4.exe.torrent

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

For installation instructions please read the README file that is part
of the distribution.

The 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-4.tar.gz
  http://www.erlang.org/download/otp_doc_man_R12B-4.tar.gz

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

The OTP Team


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

    OTP-7348  Performance for ETS intensive applications should now be
	      better in the SMP emulator. Also, ETS table identifiers (as
	      returned by ets:new/2) are now spread out in wider range than
	      before (using 28 bits in a 32-bit emulator) to make sure that
	      the table identifier for a deleted table will not be quickly
	      re-used.

	      NOTE: Table identifiers can now be negative integers.
	      Programs that (incorrectly) assume that table identifiers can
	      only be positive integers might stop to work. (The type of a
	      table identifier is intentionally not documented, and may
	      change in a future release.)

    OTP-7404  New BIF erlang:decode_packet/3 that extracts a protocol
	      packet from a binary. Similar to the socket option {packet,
	      Type}. Also documented the socket packet type http and made
	      it official. NOTE: The tuple format for http packets sent
	      from an active socket has been changed in an incompatible
	      way.

    OTP-7406  The source code for the documentation for some applications
	      (erts, kernel, stdlib, and several others) are now included
	      in the source tar ball. There is currently no Makefile
	      support for building HTML files from the source (such support
	      will be included in a future release).

    OTP-7477  Termination of a process that takes a long time can now be
	      preempted, i.e., the terminating process will be rescheduled
	      for later continuation of termination so that other processes
	      can execute. Termination of a process that owns many and/or
	      large ets tables typically takes a long time.


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

    OTP-7506  In the section about binary construction, the reference
	      manual now mentions what happens when an integer value does
	      not fit into an integer segment of size N (namely, that the N
	      least significant bits will be put into into the binary and
	      that the most significant bits will be silently discarded).
	      (Thanks to Edwin Fine.)


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

    OTP-7406  The source code for the documentation for some applications
	      (erts, kernel, stdlib, and several others) are now included
	      in the source tar ball. There is currently no Makefile
	      support for building HTML files from the source (such support
	      will be included in a future release).

    OTP-7499  A minimal source distribution can now be created by invoking
	      ./otp_build remove_prebuilt_files. For more information see
	      the distributed README file.


--- asn1-1.6 ------------------------------------------------------------

    OTP-7335  The ASN.1 compiler has got a new backend supporting PER
	      UNALIGNED. Previously there was only support for PER ALIGNED.

    OTP-7374  Now the asn1-compiler handles unions and intersections of
	      PermittedAlphabet constraints.

    OTP-7375  Now is ordering, accordering to the canonical order, of
	      components in a SET added. Canonical order is described in
	      X.691 9.2 and X.680 8.6

    OTP-7400  The precedence rules for extended constraints have been
	      misinterpreted. The rule says for instance that if there are
	      more than one constraint on a type that have extensionmark,
	      only the last of the extensionmarks would be kept. This
	      affects the encoding of PER and is now corrected.

    OTP-7403  A constrained number with a singlevalue constraint that is
	      extensible was falsely encoded/decoded in aligned/unaligned
	      PER. This is now corrected.

    OTP-7407  With the undocumented option <c>no_final_padding</c> the
	      whole encoded message is not padded to a border of a byte.
	      Thus the returned encoded message is a <c>bitstring</c>.


--- common_test-1.3.3 ------------------------------------------------------------

    OTP-7112  Various updates and improvements, plus some minor bug fixes,
	      have been implemented in Common Test and Test Server.

    OTP-7518  It is now possible, by means of the new function
	      ct:abort_current_testcase/1 or
	      test_server_ctrl:abort_current_testcase/1, to abort the
	      currently executing test case.


--- compiler-4.5.4 ------------------------------------------------------------

    OTP-7498  Certain complex bit syntax matching operations matching out
	      binaries and having several clauses could give incorrect
	      results (the matched out binaries were too short). (Thanks to
	      Christian von Roques for bug report and correction.)


--- crypto-1.5.2.1 ------------------------------------------------------------

    OTP-7521  Minor performance optimization.


--- dialyzer-1.8.2 ------------------------------------------------------------

    OTP-7522  Minor updates.


--- erl_interface-3.5.8 ------------------------------------------------------------

    OTP-7448  Fixed bug in erl_interface when decoding broken data


--- erts-5.6.3.1 ------------------------------------------------------------

    OTP-7399  Doing local call trace on bit syntax matching code that has
	      been optimized with delayed sub-binary creation could crash
	      the emulator.


--- erts-5.6.3.2 ------------------------------------------------------------

    OTP-7415  Calls to erlang:memory/[0,1] could cause the runtime
	      system with SMP support to crash.


--- erts-5.6.3.3 ------------------------------------------------------------

    OTP-7422  Binary construction with an integer field of size 0 at the
	      end of the constructed binary (and the size given in a
	      variable), would cause a write of one byte outside the memory
	      reserved for the binary, which in turn could cause an
	      emulator crash.

    OTP-7464  A race condition in the dynamic driver implementation could
	      cause an emulator crash. (Thanks to Paul Fisher)

    OTP-7474  Calls to erlang:system_info(allocated_areas) could
	      cause the runtime system with SMP support to crash.

    OTP-7475  The env option to open_port() could cause the
	      runtime system with SMP support to crash.

    OTP-7480  Operations that needed to block other threads in the runtime
	      system with SMP support unnecessarily waited for async
	      threads to block. Most important the
	      erlang:memory/[0,1] bif, code loading, and the
	      erlang:trace/3 bif.


--- erts-5.6.4 ------------------------------------------------------------

    OTP-7348  Performance for ETS intensive applications should now be
	      better in the SMP emulator. Also, ETS table identifiers (as
	      returned by ets:new/2) are now spread out in wider range than
	      before (using 28 bits in a 32-bit emulator) to make sure that
	      the table identifier for a deleted table will not be quickly
	      re-used.

	      NOTE: Table identifiers can now be negative integers.
	      Programs that (incorrectly) assume that table identifiers can
	      only be positive integers might stop to work. (The type of a
	      table identifier is intentionally not documented, and may
	      change in a future release.)

    OTP-7404  New BIF erlang:decode_packet/3 that extracts a protocol
	      packet from a binary. Similar to the socket option {packet,
	      Type}. Also documented the socket packet type http and made
	      it official. NOTE: The tuple format for http packets sent
	      from an active socket has been changed in an incompatible
	      way.

    OTP-7406  The source code for the documentation for some applications
	      (erts, kernel, stdlib, and several others) are now included
	      in the source tar ball. There is currently no Makefile
	      support for building HTML files from the source (such support
	      will be included in a future release).

    OTP-7408  Double backslashes in format string passed to the erts
	      internal printf implementation produced erroneous results. No
	      such format strings were passed to the erts internal printf
	      implementation, i.e., the bug was therefore completely
	      harmless. (Thanks to Perry Smith.)

    OTP-7410  Large files are now handled on Windows, where the filesystem
	      supports it.

    OTP-7468  A lot of frequently accessed memory counters (erts internal)
	      have been removed. This since they hurt performance on the
	      runtime system with SMP support. As a result
	      erlang:memory/[0,1] will only deliver a result if all
	      erts_alloc(3) allocators are enabled (default). The result
	      delivered when all erts_alloc(3) allocators are enabled are
	      both more accurate and less accurate than before. More memory
	      than before are included in the result, but the different
	      parts that are summed are not gathered atomically. A call to
	      erlang:memory/[0,1] is much cheaper for the system than
	      before. This since the information isn't gathered atomically
	      anymore which was very expensive.

    OTP-7470  Pre-allocators used for, for example, timers, and messages
	      have been rewritten to be scheduler specific. That is,
	      different schedulers will now allocate from different pools
	      which reduces lock contention.

    OTP-7471  On Mac OS X, file:sync/1 now guarantees that all filesystem
	      buffers are written to the disk by using the fcntl() with
	      F_FULLFSYNC option. Previously, file:sync/1 called fsync(),
	      which only guaranteed that the data had been transferred to
	      the disk drive. (Thanks to Jan Lehnardt.)

    OTP-7477  Termination of a process that takes a long time can now be
	      preempted, i.e., the terminating process will be rescheduled
	      for later continuation of termination so that other processes
	      can execute. Termination of a process that owns many and/or
	      large ets tables typically takes a long time.

    OTP-7493  Using 16#ffffFFFF as a timeout value in receive...after would
	      often cause a timeout almost at once due to an 32-bit integer
	      overflow. (Thanks to Serge Aleynikov and Matthias Lang.)

    OTP-7494  The re module is exdended with repetitive matches (global
	      option) and replacement function.

    OTP-7506  In the section about binary construction, the reference
	      manual now mentions what happens when an integer value does
	      not fit into an integer segment of size N (namely, that the N
	      least significant bits will be put into into the binary and
	      that the most significant bits will be silently discarded).
	      (Thanks to Edwin Fine.)

    OTP-7517  For the process that an escript runs in, the trap_exit
	      process flag is now false instead of true (as in previous
	      releases). Scripts that depend on the previous
	      (counter-intuitive) behaviour might not work. (Thanks to
	      Bengt Kleberg.)

    OTP-7520  Setting the {active,once} for a socket (using
	      inets:setopts/2) is now specially optimized (because the
	      {active,once} option is typically used much more frequently
	      than other options).

    OTP-7526  A bug in the string:to_integer/1 builtin made the
              emulator unstable. This is now corrected. (Thanks to
              Lev Walkin.)


--- hipe-3.6.8 ------------------------------------------------------------

    OTP-7522  Minor updates.


--- inets-5.0.10 ------------------------------------------------------------

    OTP-7450  Enhanced an info report.

    OTP-7454  Changed error message from
	      {wrong_type,{document_root,"/tmp/htdocs"}} to
	      {invalid_option,{non_existing, document_root,"/tmp/htdocs"}}.

    OTP-7490  Relative paths in directory authentication did not work as
	      intended, this has now been fixed.

    OTP-7512  The query-string passed to the callback function was not
	      compliant with the documentation, it is now.


--- kernel-2.12.4 ------------------------------------------------------------

    OTP-7404  New BIF erlang:decode_packet/3 that extracts a protocol
	      packet from a binary. Similar to the socket option {packet,
	      Type}. Also documented the socket packet type http and made
	      it official. NOTE: The tuple format for http packets sent
	      from an active socket has been changed in an incompatible
	      way.

    OTP-7410  Large files are now handled on Windows, where the filesystem
	      supports it.

    OTP-7520  Setting the {active,once} for a socket (using
	      inets:setopts/2) is now specially optimized (because the
	      {active,once} option is typically used much more frequently
	      than other options).


--- megaco-3.8.1 ------------------------------------------------------------

    OTP-7398  Improve (test case) coverage

    OTP-7417  Some minor documentation cleanup of the "The transaction
	      sender" chapter of the User's Guide.

    OTP-7444  The event parameter value for completion event ce of the dd
	      package was incorrectly encoded as type Value instead of as a
	      quoted string.

    OTP-7449  DigitMap ([0-9ef]) incorrectly interpreted as ([0-9]ef).

    OTP-7455  Receiving an unexpected segment reply could case an case
	      clause crash. Now a warning message will be issued instead.

    OTP-7457  The flex scanner had problems parsing wildcarded
	      service-change request, ammRequest (with add) and
	      notifyRequest.

    OTP-7459  Processing requests when "autoconnecting" caused function
	      cause after reboot.


--- mnesia-4.4.4 ------------------------------------------------------------

    OTP-7419  Mnesia did not garbage collect transaction decisions on disk
	      based nodes if no transactions where made on the local node.


--- mnesia-4.4.5 ------------------------------------------------------------

    OTP-7466  mnesia:clear_table/1 does not require that all replicas of
	      the table are available anymore.


--- odbc-2.10.3 ------------------------------------------------------------

    OTP-7418  Configure update for mac.


--- os_mon-2.1.7 ------------------------------------------------------------

    OTP-7409  Memory information in memsup:get_system_memory_data/0 now has
	      additional entries in its property list for linux.

    OTP-7505  Fixed a build error that occurred on NetBSD (Thanks to Per
	      Hedeland and Raphael Langerhorst)


--- snmp-4.11.1 ------------------------------------------------------------

    OTP-7412  Added utility functions for transforming DateAndTime as
	      [int()] to strings; date_and_time_to_string/2 and
	      date_and_time_to_string2/1. Also added new validation
	      function validate_date_and_time/2.

    OTP-7426  [compiler] The MIB compiler didn't properly handle the
	      REFERENCE part of a MIB definition. The actual reference
	      string was thrown away.

    OTP-7432  [manager] Encryption error when attempting to send version 3
	      inform-requests.


--- ssh-1.0 ------------------------------------------------------------

    OTP-7356  The architecture of the ssh processes has been reconstructed
	      to fit in a supervision tree as to become a real OTP
	      application and benefit from this when starting and stopping.

    OTP-7485  Removed some special handling of prompts that made ssh behave
	      differently than openssh.

    OTP-7502  Support for pty option echo off added. Requires kernel from
	      R12B-4.

    OTP-7503  The ssh API has been enhanced a lot of old API functions has
	      become deprecated.

    OTP-7504  Bug in encoding of pty opts has been fixed.


--- stdlib-1.15.4 ------------------------------------------------------------

    OTP-7344  A bug in the calendar module could cause
	      calendar:local_time_to_universal_time_dst/1 to return
	      duplicate identical values for local times in timezones
	      without DST. Multiple values should only be returned when a
	      local time is within the hour occurring twice due to shift
	      from DST to non-DST, and certainly only in timezones with
	      DST. The correct behaviour is now implemented.

    OTP-7413  The documentation of (d)ets:init_table() has been corrected.
	      (Thanks to Paul Mineiro.)

    OTP-7421  The soft upper limit of 60 on the number of non-white
	      characters on a line, which was introduced in R12B-0 for the
	      control sequences p and P of the functions io:fwrite/2,3 and
	      io_lib:fwrite/2, has been removed. This means that terms
	      whose printed representation fits on a line will have no
	      NEWLINEs. The Erlang shell still uses the 60 character limit,
	      though.

    OTP-7424  Some debug code has been removed from Dets.

    OTP-7445  The documentation of dets:match_delete/2 has been corrected.
	      (Thanks to Paul Mineiro.)

    OTP-7489  The documentation of lists:(u)sort/2 now states what is
	      expected of an ordering function.

    OTP-7492  Corrections of digraph(3). (Thanks to Vlad Dumitrescu.)

    OTP-7494  The re module is exdended with repetitive matches (global
	      option) and replacement function.

    OTP-7495  The Erlang shell now displays a nicer error message when
	      evaluating an undefined command. (Thanks to Richard
	      Carlsson.)

    OTP-7517  For the process that an escript runs in, the trap_exit
	      process flag is now false instead of true (as in previous
	      releases). Scripts that depend on the previous
	      (counter-intuitive) behaviour might not work. (Thanks to
	      Bengt Kleberg.)


--- test_server-3.2.3 ------------------------------------------------------------

    OTP-7112  Various updates and improvements, plus some minor bug fixes,
	      have been implemented in Common Test and Test Server.

    OTP-7447  When a testcase terminated due to a timetrap, io sent to the
	      group leader from framework:end_tc/3 (using ct:pal/2/3 or
	      ct:log/2/3) would cause deadlock. This has been fixed.

    OTP-7518  It is now possible, by means of the new function
	      ct:abort_current_testcase/1 or
	      test_server_ctrl:abort_current_testcase/1, to abort the
	      currently executing test case.


--- tools-2.6.2 ------------------------------------------------------------

    OTP-7423  A bug in the Xref scanner has been fixed.

    OTP-7509  A bug in Fprof where the function 'undefined' appeared to
	      call 'undefined' has been corrected.


--- typer-0.1.4 ------------------------------------------------------------

    OTP-7522  Minor updates.


--- xmerl-1.1.10 ------------------------------------------------------------

    OTP-6053  Changed the examples in "Customization Functions Tutorial" to
	      correct Erlang code.

    OTP-6873  The XPath function contains() now implemented. See XPath 1.0
	      section 4.2.

    OTP-7430  Fixed xmerl_scan's problem with contents of numeric character
	      references followed by UTF-8 characters.

    OTP-7473  Fixed an incorrect guard for xmerl_scan:to_ucs/2.

    OTP-7496  Some bug corrections of xmerl XPath implementation, most
	      provided by Matthew Dempsky.