Bug fix release : otp_src_R11B-2
Build date      : 2006-11-07

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

Note: To unpack the TAR archive you need a GNU TAR compatible
program. For instance, on MacOS X before 10.3 you must 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_R11B-2.exe


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

  http://www.erlang.org/download/otp_doc_html_R11B-2.tar.gz
  http://www.erlang.org/download/otp_doc_man_R11B-2.tar.gz

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

The OTP Team


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

    OTP-6240  Corrected some small bugs in Programming Examples, Getting
	      Started With Erlang and OTP Design Princples. (Thanks to
	      Tamas Szilagyi, Shannon -jj Behrens and Kari Pahula).


--- compiler-4.4.2 ------------------------------------------------------------

    OTP-6212  Defining a fun itself containing a fun in an after block of a
	      try would cause the compiler to crash or generate incorrect
	      code. (Thanks to Tim Rath.)

	      Shorter compilation times for modules containing with an
	      extreme number of functions (10000 functions or more).

	      (The compiled could generate deprecated instructions for
	      certain bit syntax matching operations.)

    OTP-6260  Fixed several bugs that would cause warnings to be shown
	      without file name and line number.

    OTP-6294  The strict_record_tests option is now default; that is,
	      reading a field from a record using the
	      Record#record_tag.field syntax will fail if Record is not a
	      record of the correct type.

	      If necessary, the record tests can be turned off by giving
	      the no_strict_record_tests option. To avoid editing
	      Makefiles, the environment variable ERL_COMPILER_OPTIONS can
	      be set to "no_strict_record_tests".

	      The no_strict_record_tests option will probably be removed in
	      the R12B release.


--- dialyzer-1.5.0 ------------------------------------------------------------

    OTP-6304  Dialyzer's building of PLT is based on a different type
	      inference algorithm. More specifically, Dialyzer uses
	      inferrence of refined success typings to infer function
	      prototypes. As a result, Dialyzer bases its analysis on a
	      significantly more powerful basis and thus is able to detect
	      more discrepancies. The downside is that building the PLT is
	      a considerably slower process. We will work on improving
	      that.

	      Dialyzer takes into account the BEAM compiler directive
	      -compile({nowarn_unused_function, {F,A}}). and then
	      suppresses the warning that function F/A will never be
	      called.

	      Dialyzer's default initial PLT now also includes "mnesia".


--- erl_interface-3.5.5.2 ------------------------------------------------------------

    OTP-6216  The combination of xeon processors with 64bit x86 extensions
	      and a 32bit linux could cause ei_decode_long and
	      ei_decode_longlong to fail for the value LONG_MIN and
	      LONGLONG_MIN. The conversion is now made more portable.


--- erts-5.5.1.1 ------------------------------------------------------------

    OTP-6249  There is now an option read_packets for UDP sockets that sets
	      the maximum number of UDP packets that will be read for each
	      invocation of the socket driver.


--- erts-5.5.2 ------------------------------------------------------------

    OTP-6160  Exit signals are now truly asynchronous in the runtime system
	      with SMP support. This simplifies locking in bifs a lot, and
	      makes process termination cheaper.

    OTP-6205  When tracing on the runtime system with SMP support it can be
	      difficult to know when a trace has been delivered to the
	      tracer. A new built in function erlang:trace_delivered/1 has
	      been introduced in order to make it easier to know when the
	      trace has been delivered. See the erlang(3) man page for more
	      information.

    OTP-6218  erlc: A typo in the help text for '-pa path' was corrected.

    OTP-6222  Kernel poll support can now be combined with SMP support.
	      Currently the following kernel poll versions exist:
	      /dev/poll, epoll, and kqueue. Linux kpoll has been replaced
	      with epoll. Some time in the future there will also be a
	      kernel poll version using Solaris event ports.

	      The "check io" implementation for unix has been completely
	      rewritten. The current kernel poll implementation reduce the
	      amount of system calls needed compared to the old kernel poll
	      implementation.

	      When epoll or kqueue is used either poll or select is used as
	      fallback. Previously only poll could be used as fallback.
	      Since select now can be used as fallback, kernel poll support
	      is now also available on newer MacOSX. Note however, when
	      select is used as fallback, the maximum number of file
	      descriptors is limited to FD_SETSIZE. 

	      Kernel poll support is now enabled by default if /dev/poll,
	      epoll, or kqueue is found when building OTP, i.e. you do not
	      have to pass the --enable-kernel-poll argument to configure.
	      As before, kernel poll is disabled by default in the runtime
	      system. In order to enable it, pass the +Ktrue command line
	      argument to erl.

	      Note: configure will refuse to enable kernel poll support on
	      FreeBSD since kqueue have problems with (at least) pipes on
	      all version of FreeBSD that we have tested.

    OTP-6224  Failure in port command/control driver callbacks could crash
	      the non-SMP emulator. This bug was introduced in the 5.5
	      version of erts.

    OTP-6229  Erroneous "Input driver gone away without deselecting!" error
	      reports could sometimes occur when a driver instance
	      terminated in the ready_output() callback of the driver. This
	      bug was only present in emulators that used poll(). Note,
	      that this bug was harmless, the only effect it had was the
	      erroneous error report.

    OTP-6234  The erl_ddll module and the code in the emulator have been
	      completely rewritten; several bugs were fixed.

    OTP-6235  The emulator could cause a type assertion failure while
	      writing an erl_crash.dump, causing the erl_crash.dump to be
	      terminated and a core dump generated.

    OTP-6237  The registered name of a process is now the last observable
	      resource removed before links and monitors are triggered when
	      a process terminates.

	      Previously ets tables were removed after the registered name.
	      This could cause problems on the runtime system with SMP
	      support for code that expected that ets tables owned by a
	      specific process had been removed if the name of the process
	      had been removed.

    OTP-6241  Failure to fork() a new (os) process could cause the emulator
	      to deadlock. This bug affect all emulators with SMP support,
	      and emulators with async thread support on SunOS.

    OTP-6246  Fprof traces could become truncated for the SMP emulator.
	      This bug has now been corrected.

    OTP-6252  The SMP emulator now avoids locking for the following
	      operations (thus making them as fast as in the UP emulator):
	      atom_to_list/1, atom comparision, atom hashing,
	      erlang:apply/3.

    OTP-6255  The undocumented functions inet:getiflist/0,1 inet:ifget/2,3
	      and inet:getif/1 were completely broken on Windows. That has
	      been fixed.

    OTP-6258  Behavior in case of disappeared nodes when using the
	      dist_auto_connect once got changed in R11B-1. The timeouts
	      regarding normal distributed operationes is now reverted to
	      the old (pre R11B-1).

    OTP-6259  The bsl and bsr operators could cause the emulator to crash
	      if given invalid arguments. (Thanks to datacompboy and Per
	      Gustafsson.)

    OTP-6261  driver_cancel_timer() could under certain circumstances fail
	      to cancel the timer on the runtime system with SMP support.

    OTP-6268  A call to erlang:system_info(info) could deadlock the runtime
	      system with SMP support.

    OTP-6281  There are new BIFs erlang:spawn_monitor/1,3, and the new
	      option monitor for spawn_opt/2,3,4,5.

	      The observer_backend module has been updated to handle the
	      new BIFs.


--- hipe-3.6.0 ------------------------------------------------------------

    OTP-6305  Support for native code on Solaris 10/AMD64.

	      Support for native code on FreeBSD/AMD64.

	      Native code now handles external funs (fun M:F/A). Native
	      code can now also apply so-called tuple-funs ({M,F}). (Tuple
	      funs are NOT recommended for new code; they are deprecated
	      and will be removed in some future release.)


--- inets-4.7.6 ------------------------------------------------------------

    OTP-5527  [httpc] - Added feature to send header values as they where
	      typed by the user of the client. Note that the http standard
	      requires them to be case insensative. This feature should
	      only be used if there is no other way to communicate with the
	      server or for testing purpose.

    OTP-5677  [httpc] - The parsing of uri's was rewritten so that it
	      should handle all types of uri's including ipv6 uri's.

    OTP-6005  [httpc, httpd] - Extensions and trailers where not properly
	      handled by the chunk decoding implementation.

    OTP-6243  [httpc] - A request resulting in an empty body is now
	      returned without any delays.

    OTP-6244  [httpc] - When http:request/4 was used with a configured
	      proxy, and the webserver returns 3XX code, http:request/4
	      entered an endless loop. Two problems was solved in this
	      area, the absolute uri is now updated when a redirect is
	      issued, so that the problem in this case will not arise, and
	      the redirection endless loop detection was fixed so that will
	      actually detect potential endless loops.

    OTP-6263  [httpc] - When using asynchronous HTTP-request it is now
	      possible to receive "200-responses" as streams instead of
	      having to wait until the whole response has been delivered.
	      It also possible to stream "200-response bodys" to a file
	      both for synchronous and asynchronous requests.

    OTP-6264  [httpc, httpd] - In some cases if a body contained the
	      sequence "\r\n0" and was chunked encoded this sequence was
	      incorrectly interpreted as the last chunk.

    OTP-6274  [httpc, httpd] - http_request.erl didn't handle https URIs,
	      which meant that redirects from ESI did not work.

    OTP-6279  [httpc, httpd] - The base 64 decoder was missing a guard so
	      that invalid input lead to an emulator crash instead of a
	      function clause as expected. Also the http server has been
	      improved to handle the function clause error returning a bad
	      credentials reply to the client.

    OTP-6280  [httpc] - Added option to generate Proxy-Authorization header
	      from provided proxy username and password.

    OTP-6283  [httpc] - Changed internal default value as it sometimes
	      would be interpreted incorrectly causing the client to return
	      an incomplete body.

    OTP-6297  [httpc] - Handling of 30X codes was changed so that it works
	      according to the documentation. For instance 301 and 302
	      codes will not be automatically redirected.

    OTP-6303  [httpc] - A bug in the pipeline-handling code could cause a
	      response to be sent to the client with an incorrect request
	      id.


--- kernel-2.11.1.1 ------------------------------------------------------------

    OTP-6249  There is now an option read_packets for UDP sockets that sets
	      the maximum number of UDP packets that will be read for each
	      invocation of the socket driver.


--- kernel-2.11.2 ------------------------------------------------------------

    OTP-6245  Code cleanup: the old internal obsolete file_server has been
	      removed. It was only used when communicating with R7 and
	      older nodes.

    OTP-6258  Behavior in case of disappeared nodes when using the
	      dist_auto_connect once got changed in R11B-1. The timeouts
	      regarding normal distributed operationes is now reverted to
	      the old (pre R11B-1).

    OTP-6278  Trying to open a non-existent or badly formed disk log no
	      longer results in a crash report. In particular,
	      ets:file2tab/1 reports no error when the argument is not a
	      well-formed disk log file. (The return value has not been
	      changed, it is still an error tuple.)

    OTP-6281  There are new BIFs erlang:spawn_monitor/1,3, and the new
	      option monitor for spawn_opt/2,3,4,5.

	      The observer_backend module has been updated to handle the
	      new BIFs.

    OTP-6286  Start-up problems for the internal process used by the
	      inet:gethostbyname() functions were eliminated. If the
	      internal process (inet_gethost_native) had not previously
	      been started, and if several processes at the same time
	      called one of the inet:gethostbyname() functions, the calls
	      could fail.

    OTP-6295  To help Dialyzer find more bugs, many functions in the Kernel
	      and STDLIB applications now only accept arguments of the type
	      that is documented.

	      For instance, the functions lists:prefix/2 and lists:suffix/2
	      are documented to only accept lists as their arguments, but
	      they actually accepted anything and returned false. That has
	      been changed so that the functions cause an exception if one
	      or both arguments are not lists.

	      Also, the string:strip/3 function is documented to take a
	      character argument that is a character to strip from one or
	      both ends of the string. Given a list instead of a character,
	      it used to do nothing, but will now cause an exception.

	      Dialyzer will find most cases where those functions are
	      passed arguments of the wrong type.


--- megaco-3.4.4 ------------------------------------------------------------

    OTP-6217  There was still one case when "pending limit exceeded" was
	      reported as a message error instead of transaction error.
	      This has been fixed.

    OTP-6219  Improved documentation of megaco:call return values.


--- megaco-3.4.5 ------------------------------------------------------------

    OTP-6275  MG receiving a request, when the reply to the service-change
	      has not yet been received (505) (either because it's been
	      lost or because the MGC is erroneous). This will now result
	      in a call to handle_trans_reply with the UserReply: {error,
	      timeout}.


--- megaco-3.4.6 ------------------------------------------------------------

    OTP-6276  When replies arrive during a call to megaco:cancel there is a
	      raise condition possibillity. This has been eliminated.


--- megaco-3.5 ------------------------------------------------------------

    OTP-6223  All error/warning messages from the megaco application will
	      be tagged in such a way that they will be easy to identify
	      (and search for in logs).

    OTP-6253  The allowed return values of the send_message function of the
	      megaco_transport callback module has been extended (to allow
	      the transport module to cancel the message sending), see the
	      reference manual for more info.

    OTP-6256  A minor problem related to the passage of the pending limit
	      could potentially prevent the reply info to be retained when
	      it should have been removed. Also, the user will not be
	      informed about the passing of the pending limit in this
	      special case.


--- mnesia-4.3.3 ------------------------------------------------------------

    OTP-6298  Mnesia could crash during startup when loading tables from
	      remote node.

    OTP-6299  Mnesia could fail to update all copies during del_table_copy.

    OTP-6300  Rearranging fragmented tables is an O(N^2) operation.


--- observer-0.9.7.1 ------------------------------------------------------------

    OTP-6301  Crash dump with large integers could crash the
	      crashdump_viewer.


--- runtime_tools-1.6.1 ------------------------------------------------------------

    OTP-6281  There are new BIFs erlang:spawn_monitor/1,3, and the new
	      option monitor for spawn_opt/2,3,4,5.

	      The observer_backend module has been updated to handle the
	      new BIFs.


--- sasl-2.1.4 ------------------------------------------------------------

    OTP-6226  Added an option {outdir,Dir} to the functions in systools,
	      making it possible to specify in which directory a boot
	      script, relup file or release package file should be placed.

	      Also, when using systools:make_tar/2 to create a release
	      package file, the boot script, relup file and sys.config are
	      now searched for also in the current working directory and
	      any directory specified by the path option, not only in the
	      directory of the .rel file.

	      As part of the work some minor bugs have been corrected: *
	      systools:make_script/1,2 now returns error if the .script
	      and/or .boot file could not be opened for writing, not ok. *
	      systools:make_tar/1,2 can now handle a RelName argument which
	      includes a path. Previously this would cause the .rel file to
	      end up in the wrong directory in the resulting tar file. * A
	      documentation error for systools:make_tar/1,2: The .rel file
	      is placed in the releases directory in the tar file, not
	      releases/RelVsn.


--- snmp-4.8.2 ------------------------------------------------------------

    OTP-6214  Add timestamp to the verbosity printouts.

    OTP-6247  A badly formatted debug printout caused console printouts.


--- ssh-0.9.5 ------------------------------------------------------------

    OTP-6231  The data window in SSH wasn't resized in the ssh_cli receive
	      data, this made the ssh_cli-server hang if more than 64K data
	      was received at one time. The option tcp_nodelay was added,
	      for nodelay in tcp connections.


--- stdlib-1.14.2 ------------------------------------------------------------

    OTP-6038  Support for faster join of two tables has been added to the
	      qlc module. There are two kinds of fast joins: lookup join
	      that uses existing indices, and merge join that takes two
	      sorted inputs. There is a new join option that can be used to
	      force QLC to use a particular kind of join in some QLC
	      expression.

	      Several other changes have also been included:

	      The new tmpdir option of cursor/2, eval/2, fold/4, and info/2
	      can be used to set the directory that join uses for temporary
	      files. The option also overrides the tmpdir option of
	      keysort/3 and sort/2.

	      The new lookup option can be used to assert that constants
	      are looked up when evaluating some QLC expression.

	      The cache and cache_all options accept new tags: ets, list,
	      and no. The tag list caches answers in a list using a
	      temporary file if the answers cannot be held in RAM.
	      Combining {cache,list} and {unique, true} is equivalent to
	      calling sort/2 with the option unique set to true. The old
	      tags true (equivalent to ets) and false (equivalent to no)
	      are recognized for backward compatibility.

	      The new option max_list_size can be used to set the limit
	      where merge join starts to use temporary files for large
	      equivalence classes and when answers cached in lists are put
	      on temporary files.

	      There is a new callback is_sorted_key to be supplied as an
	      option to table/2.

	      QLC analyzes each and every QLC expression when trying to
	      find constants for the lookup function. Hitherto only QLC
	      expressions with exactly one generator were analyzed.

	      Note that only filters with guard syntax placed immediately
	      after the generator are analyzed. The restriction to guard
	      filters is an incompatible change. See qlc(3) for further
	      details.

	      In a similar way several match specifications for traversal
	      of QLC tables can be utilized for different generators of one
	      single QLC expression.

	      A bug has been fixed: when caching answers to a sufficiently
	      complex query it could happen that some answers were not
	      returned.

    OTP-6227  The Erlang pretty printer (erl_pp) is now much faster when
	      the code is deeply nested. A few minor bugs have been fixed
	      as well.

    OTP-6230  The control sequences p and P of the Format argument of the
	      functions io:format/2,3 and io_lib:format/2 did not handle
	      binaries very well. This bug, introduced in stdlib-1.14, has
	      been fixed.

    OTP-6239  The Erlang shell now tries to garbage collect large binaries.
	      Under certain circumstances such binaries could otherwise
	      linger on for an indefinite amount of time.

    OTP-6271  filelib:wildcard(Wc, PathWithRedundantSlashes), where
	      PathWithRedundantSlashes is a directory path containing
	      redundant slashes, such as /tmp/ or //tmp, could return
	      incorrect results. (Thanks to Martin Bjorklund.)

    OTP-6277  The Erlang code preprocessor crashed if the predefined macros
	      ?MODULE or ?MODULE_STRING were used before the module
	      declaration. This bug has been fixed.

    OTP-6295  To help Dialyzer find more bugs, many functions in the Kernel
	      and STDLIB applications now only accept arguments of the type
	      that is documented.

	      For instance, the functions lists:prefix/2 and lists:suffix/2
	      are documented to only accept lists as their arguments, but
	      they actually accepted anything and returned false. That has
	      been changed so that the functions cause an exception if one
	      or both arguments are not lists.

	      Also, the string:strip/3 function is documented to take a
	      character argument that is a character to strip from one or
	      both ends of the string. Given a list instead of a character,
	      it used to do nothing, but will now cause an exception.

	      Dialyzer will find most cases where those functions are
	      passed arguments of the wrong type.


--- tools-2.5.2 ------------------------------------------------------------

    OTP-6246  Fprof traces could become truncated for the SMP emulator.
	      This bug has now been corrected.