pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/lang



Module Name:    pkgsrc
Committed By:   asau
Date:           Sat Jun  8 06:48:24 UTC 2013

Modified Files:
        pkgsrc/lang/erlang: Makefile Makefile.versions PLIST distinfo
        pkgsrc/lang/erlang-doc: PLIST distinfo
        pkgsrc/lang/erlang-man: PLIST distinfo
        pkgsrc/lang/erlang/patches: patch-ab patch-lib_wx_configure
            patch-lib_wx_configure.in
Added Files:
        pkgsrc/lang/erlang/patches: patch-erts_emulator_sys_common_erl__mseg.c

Log Message:
Update to Erlang/OTP R16B (designated as 16.1 in pkgsrc).

R16B is a major new release of Erlang/OTP.

Detailed information on changes can be fetched at
http://www.erlang.org/download/otp_src_R16B.readme

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

    OTP-7786  == ssh ==

              Added User Guide for the SSH application

    OTP-9892  == erts ==

              Process optimizations. The most notable:

              -- New internal process table implementation allowing for
              both parallel reads as well as writes. Especially read
              operations have become really cheap. This reduce contention
              in various situations. For example when, spawning processes,
              terminating processes, sending messages, etc.

              -- Optimizations of run queue management reducing contention.

              -- Optimizations of process state changes reducing
              contention.

              These changes imply changes of the characteristics the
              system. Most notable: changed timing in the system.

    OTP-9974  == erts ==

              Non-blocking code loading. Earlier when an Erlang module was
              loaded, all other execution in the VM were halted while the
              load operation was carried out in single threaded mode. Now
              modules are loaded without blocking the VM. Processes may
              continue executing undisturbed in parallel during the entire
              load operation. The load operation is completed by making the
              loaded code visible to all processes in a consistent way with
              one single atomic instruction. Non-blocking code loading will
              improve realtime characteristics when modules are
              loaded/upgraded on a running SMP system.

   OTP-10256  == inets ==

              httpc: The HTTP client now supports HTTPS through proxies

   OTP-10336  == erts ==

              Major port improvements. The most notable:

              -- New internal port table implementation allowing for both
              parallel reads as well as writes. Especially read operations
              have become really cheap.This reduce contention in various
              situations. For example when, creating ports, terminating
              ports, etc.

              -- Dynamic allocation of port structures. This allow for a
              much larger maximum amount of ports allowed as a default. The
              previous default of 1024 has been raised to 65536. Maximum
              amount of ports can be set using the +Q command line flag of
              erl(1). The previously used environment variable
              ERL_MAX_PORTS has been deprecated and scheduled for removal
              in OTP-R17.

              -- Major rewrite of scheduling of port tasks. Major benefits
              of the rewrite are reduced contention on run queue locks, and
              reduced amount of memory allocation operations needed. The
              rewrite was also necessary in order to make it possible to
              schedule signals from processes to ports.

              -- Improved internal thread progress functionality for easy
              management of unmanaged threads. This improvement was
              necessary for the rewrite of the port task scheduling.

              -- Rewrite of all process to port signal implementations in
              order to make it possible to schedule those operations. All
              port operations can now be scheduled which allows for reduced
              lock contention on the port lock as well as truly
              asynchronous communication with ports.

              -- Optimized lookup of port handles from drivers.

              -- Optimized driver lookup when creating ports.

              -- Preemptable erlang:ports/0 BIF.

              -- Improving responsiveness by bumping reductions for a
              process calling a driver callback directly.

              These changes imply changes of the characteristics of the
              system. The most notable:

              -- Order of signal delivery -- The previous implementation of
              the VM has delivered signals from processes to ports in a
              synchronous stricter fashion than required by the language.
              As of ERTS version 5.10, signals are truly asynchronously
              delivered. The order of signal delivery still adheres to the
              requirements of the language, but only to the requirements.
              That is, some signal sequences that previously always were
              delivered in one specific order may now from time to time be
              delivered in different orders. This may cause Erlang programs
              that have made false assumptions about signal delivery order
              to fail even though they previously succeeded. For more
              information about signal ordering guarantees, see the chapter
              on communication in the ERTS user's guide. The +n command
              line flag of erl(1) can be helpful when trying to find
              signaling order bugs in Erlang code that have been exposed by
              these changes.

              -- Latency of signals sent from processes to ports -- Signals
              from processes to ports where previously always delivered
              immediately. This kept latency for such communication to a
              minimum, but it could cause lock contention which was very
              expensive for the system as a whole. In order to keep this
              latency low also in the future, most signals from processes
              to ports are by default still delivered immediately as long
              as no conflicts occur. Such conflicts include not being able
              to acquire the port lock, but also include other conflicts.
              When a conflict occur, the signal will be scheduled for
              delivery at a later time. A scheduled signal delivery may
              cause a higher latency for this specific communication, but
              improves the overall performance of the system since it
              reduce lock contention between schedulers. The default
              behavior of only scheduling delivery of these signals on
              conflict can be changed by passing the +spp command line flag
              to erl(1). The behavior can also be changed on port basis
              using the parallelism option of the open_port/2 BIF.

              -- Execution time of the erlang:ports/0 BIF -- Since
              erlang:ports/0 now can be preempted, the responsiveness of
              the system as a whole has been improved. A call to
              erlang:ports/0 may, however, take a much longer time to
              complete than before. How much longer time heavily depends on
              the system load.

              -- Reduction cost of calling driver callbacks -- Calling a
              driver callback is quite costly. This was previously not
              reflected in reduction cost at all. Since the reduction cost
              now has increased, a process performing lots of direct driver
              calls will be scheduled out more frequently than before.

              Potential incompatibilities:

              -- driver_send_term() has been deprecated and has been
              scheduled for removal in OTP-R17. Replace usage of
              driver_send_term() with usage of erl_drv_send_term().

              -- driver_output_term() has been deprecated and has been
              scheduled for removal in OTP-R17. Replace usage of
              driver_output_term() with usage of erl_drv_output_term().

              -- The new function erl_drv_busy_msgq_limits() has been added
              in order to able to control management of port queues.

              The driver API version has been bumped to 2.1 from 2.0 due to
              the above changes in the driver API.

   OTP-10410  == asn1 ==

              The options for the ASN.1 compiler has been drastically
              simplified. The backend is chosen by using ber, per, or uper.
              The options optimize, nif, and driver are no longer needed.
              The old options will still work, but will issue a warning.

              Another change is that generated encode/2 function will
              always return a binary (some backends used to return an
              iolist).

   OTP-10588  == asn1 ==

              The ASN.1 compiler will now always include necessary run-time
              functions in the generated Erlang modules (except for
              asn1rt_nif which is still neeeded). If the option 'inline' is
              used the ASN.1 compiler will generate a warning. But if
              '{inline,OutputFile}' is use, the ASN.1 compiler will refuse
              to compile the file. (Use a .set.asn file if you need to
              remove the output file.)

              The 'BIT STRING' type will now be decoded as Erlang
              bitstrings by default. Use the new legacy_bit_string option
              to encode as lists of ones and zeroes. (The
              compact_bit_string option still works as before.)

              Open types are now always returned as binaries (when there is
              no information allowing them to be decoded).

--- POTENTIAL INCOMPATIBILITIES -----------------------------------------

    OTP-9052  == common_test ==

              Removed depricated run_test program, use ct_run instead.

    OTP-9881  == common_test ==

              It is now possible to let a test specification include other
              test specifications. Included specs can either be joined with
              the source spec (and all other joined specs), resulting in
              one single test run, or they can be executed in separate test
              runs. Also, a start flag/option, join_specs, has been
              introduced, to be used in combination with the spec option.
              With join_specs, Common Test can be told to either join
              multiple test specifications, or run them separately. Without
              join_specs, the latter behaviour is default. Note that this
              is a change compared to earlier versions of Common Test,
              where specifications could only be joined. More information
              can be found in the Running Tests chapter in the User's Guide
              (see the Test Specifications section).

   OTP-10117  == inviso ==

              The inviso application has been removed.

   OTP-10170  == erts pman ==

              Tuple funs (deprecated in R15B) are no longer supported.

   OTP-10195  == edoc ==

              Since EDoc 0.7.7 (R14B02) separate values of union types can
              be annotated. However, the parser has hitherto chosen not to
              add the necessary parentheses due to backwards compatibility.

              From this release on code traversing the output of
              edoc_parser needs to take care of parentheses around separate
              values of union types. Examples of such code are layout
              modules and doclet modules.

   OTP-10336  == erts ==

              Major port improvements. The most notable:

              -- New internal port table implementation allowing for both
              parallel reads as well as writes. Especially read operations
              have become really cheap.This reduce contention in various
              situations. For example when, creating ports, terminating
              ports, etc.

              -- Dynamic allocation of port structures. This allow for a
              much larger maximum amount of ports allowed as a default. The
              previous default of 1024 has been raised to 65536. Maximum
              amount of ports can be set using the +Q command line flag of
              erl(1). The previously used environment variable
              ERL_MAX_PORTS has been deprecated and scheduled for removal
              in OTP-R17.

              -- Major rewrite of scheduling of port tasks. Major benefits
              of the rewrite are reduced contention on run queue locks, and
              reduced amount of memory allocation operations needed. The
              rewrite was also necessary in order to make it possible to
              schedule signals from processes to ports.

              -- Improved internal thread progress functionality for easy
              management of unmanaged threads. This improvement was
              necessary for the rewrite of the port task scheduling.

              -- Rewrite of all process to port signal implementations in
              order to make it possible to schedule those operations. All
              port operations can now be scheduled which allows for reduced
              lock contention on the port lock as well as truly
              asynchronous communication with ports.

              -- Optimized lookup of port handles from drivers.

              -- Optimized driver lookup when creating ports.

              -- Preemptable erlang:ports/0 BIF.

              -- Improving responsiveness by bumping reductions for a
              process calling a driver callback directly.

              These changes imply changes of the characteristics of the
              system. The most notable:

              -- Order of signal delivery -- The previous implementation of
              the VM has delivered signals from processes to ports in a
              synchronous stricter fashion than required by the language.
              As of ERTS version 5.10, signals are truly asynchronously
              delivered. The order of signal delivery still adheres to the
              requirements of the language, but only to the requirements.
              That is, some signal sequences that previously always were
              delivered in one specific order may now from time to time be
              delivered in different orders. This may cause Erlang programs
              that have made false assumptions about signal delivery order
              to fail even though they previously succeeded. For more
              information about signal ordering guarantees, see the chapter
              on communication in the ERTS user's guide. The +n command
              line flag of erl(1) can be helpful when trying to find
              signaling order bugs in Erlang code that have been exposed by
              these changes.

              -- Latency of signals sent from processes to ports -- Signals
              from processes to ports where previously always delivered
              immediately. This kept latency for such communication to a
              minimum, but it could cause lock contention which was very
              expensive for the system as a whole. In order to keep this
              latency low also in the future, most signals from processes
              to ports are by default still delivered immediately as long
              as no conflicts occur. Such conflicts include not being able
              to acquire the port lock, but also include other conflicts.
              When a conflict occur, the signal will be scheduled for
              delivery at a later time. A scheduled signal delivery may
              cause a higher latency for this specific communication, but
              improves the overall performance of the system since it
              reduce lock contention between schedulers. The default
              behavior of only scheduling delivery of these signals on
              conflict can be changed by passing the +spp command line flag
              to erl(1). The behavior can also be changed on port basis
              using the parallelism option of the open_port/2 BIF.

              -- Execution time of the erlang:ports/0 BIF -- Since
              erlang:ports/0 now can be preempted, the responsiveness of
              the system as a whole has been improved. A call to
              erlang:ports/0 may, however, take a much longer time to
              complete than before. How much longer time heavily depends on
              the system load.

              -- Reduction cost of calling driver callbacks -- Calling a
              driver callback is quite costly. This was previously not
              reflected in reduction cost at all. Since the reduction cost
              now has increased, a process performing lots of direct driver
              calls will be scheduled out more frequently than before.

              Potential incompatibilities:

              -- driver_send_term() has been deprecated and has been
              scheduled for removal in OTP-R17. Replace usage of
              driver_send_term() with usage of erl_drv_send_term().

              -- driver_output_term() has been deprecated and has been
              scheduled for removal in OTP-R17. Replace usage of
              driver_output_term() with usage of erl_drv_output_term().

              -- The new function erl_drv_busy_msgq_limits() has been added
              in order to able to control management of port queues.

              The driver API version has been bumped to 2.1 from 2.0 due to
              the above changes in the driver API.

   OTP-10410  == asn1 ==

              The options for the ASN.1 compiler has been drastically
              simplified. The backend is chosen by using ber, per, or uper.
              The options optimize, nif, and driver are no longer needed.
              The old options will still work, but will issue a warning.

              Another change is that generated encode/2 function will
              always return a binary (some backends used to return an
              iolist).

   OTP-10417  == kernel sasl ==

              It is no longer possible to have {Mod,Vsn} in the 'modules'
              list in a .app file.

              This was earlier possible, although never documented in the
              .app file reference manual. It was however visible in the
              documentation of application:load/[1,2], where the same term
              as in a .app file can be used as the first argument.

              The possibility has been removed since the Vsn part was never
              used.

   OTP-10451  == ssl ==

              Remove filter mechanisms that made error messages backwards
              compatible with old ssl but hid information about what
              actually happened.

              This does not break the documented API however other reason
              terms may be returned, so code that matches on the reason
              part of {error, Reason} may fail.

   OTP-10490  == stdlib ==

              If a child process fails in its start function, then the
              error reason was earlier only reported as an error report
              from the error_handler, and supervisor:start_link would only
              return {error,shutdown}. This has been changed so the
              supervisor will now return {error,{shutdown,Reason}}, where
              Reason identifies the failing child and its error reason.
              (Thanks to Tomas Pihl)

   OTP-10523  == tools ==

              A new function, cover:flush(Nodes), is added which will fetch
              data from remote nodes without stopping cover on those nodes.
              This is used by test_server and common_test when it is safe
              to assume that the node will be terminated after the test
              anyway. The purpose is to avoid processes crashing when
              re-loading the original beam if the processes is still
              running old code.

              Remote nodes will now continue to count code coverage if the
              connection to the main node is broken. Earlier, a broken
              connection would cause the cover_server on the remote node to
              die and thus any still cover compiled modules would cause
              process crash when trying to insert cover data in ets tables
              that used to exist on the cover_server. The new functionality
              also involves synchronization with the main node if the nodes
              are reconnected.

   OTP-10588  == asn1 ==

              The ASN.1 compiler will now always include necessary run-time
              functions in the generated Erlang modules (except for
              asn1rt_nif which is still neeeded). If the option 'inline' is
              used the ASN.1 compiler will generate a warning. But if
              '{inline,OutputFile}' is use, the ASN.1 compiler will refuse
              to compile the file. (Use a .set.asn file if you need to
              remove the output file.)

              The 'BIT STRING' type will now be decoded as Erlang
              bitstrings by default. Use the new legacy_bit_string option
              to encode as lists of ones and zeroes. (The
              compact_bit_string option still works as before.)

              Open types are now always returned as binaries (when there is
              no information allowing them to be decoded).

   OTP-10613  == ssl ==

              Removed deprecated function ssl:pid/0, it has been pointless
              since R14 but has been keep for backwards compatibility.

   OTP-10633  == erts ==

              Erlang specification 4.7.3 defines max tuple size to 65535
              elements It is now enforced to no more than 16777215 elements
              (arity 24 bits)

              Previous edge cases (28 bits) were not validated and could
              cause undefined behaviour.

   OTP-10647  == erts ==

              The previous default of a maximum of 32768 simultaneous
              processes has been raised to 262144. This value can be
              changed using the the +P command line flag of erl(1). Note
              that the value passed now is considered as a hint, and that
              actual value chosen in most cases will be a power of two.

   OTP-10812  == stdlib ==

              filelib:wildcard("some/relative/path/*.beam", Path) would
              fail to match any file. That is, filelib:wildcard/2 would not
              work if the first component of the pattern did not contain
              any wildcard characters. (A previous attempt to fix the
              problem in R15B02 seems to have made matters worse.)

              (Thanks to Samuel Rivas and Tuncer Ayaz.)

              There is also an incompatible change to the Path argument. It
              is no longer allowed to be a binary.

   OTP-10872  == erts ==

              As of ERTS-5.10/OTP-R16A node names passed in the EPMD
              protocol are required to be encoded in UTF-8. Since EPMD
              previously accepted latin1 encoded node names this is an
              incompatibility. However, since Erlang nodes always have
              required characters in node names to be 7-bit ASCII
              characters (and still do require this), this incompatibility
              should not effect anyone using EPMD as an Erlang Port Mapper
              Daemon.


To generate a diff of this commit:
cvs rdiff -u -r1.56 -r1.57 pkgsrc/lang/erlang/Makefile
cvs rdiff -u -r1.15 -r1.16 pkgsrc/lang/erlang/Makefile.versions
cvs rdiff -u -r1.12 -r1.13 pkgsrc/lang/erlang/PLIST
cvs rdiff -u -r1.30 -r1.31 pkgsrc/lang/erlang/distinfo
cvs rdiff -u -r1.14 -r1.15 pkgsrc/lang/erlang-doc/PLIST
cvs rdiff -u -r1.11 -r1.12 pkgsrc/lang/erlang-doc/distinfo
cvs rdiff -u -r1.12 -r1.13 pkgsrc/lang/erlang-man/PLIST
cvs rdiff -u -r1.11 -r1.12 pkgsrc/lang/erlang-man/distinfo
cvs rdiff -u -r1.5 -r1.6 pkgsrc/lang/erlang/patches/patch-ab
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/lang/erlang/patches/patch-erts_emulator_sys_common_erl__mseg.c
cvs rdiff -u -r1.1 -r1.2 pkgsrc/lang/erlang/patches/patch-lib_wx_configure \
    pkgsrc/lang/erlang/patches/patch-lib_wx_configure.in

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index