Changes in Erlang/OTP R15B01
Highlights:
* Dialyzer: The type analysis tool Dialyzer is optimized to be
generally faster. - It can now also run in parallel (default)
on SMP systems and by this perform the analysis significantly
faster (Thanks to Stavros Aronis and Kostis Sagonas)
* The SSL application now has experimental support for the
TLS 1.1 and 1.2 standards as well (Thanks to Andreas Schultz).
* CommonTest: It is now possible to sort the generated html tables.
A Netconf client (ct_netconf) which support basic netconf over
ssh is added
* Diameter: Statistics counters related to Diameter messages
can now be retrieved by calling the diameter:service_info/2
function.
* Various smaller optimizations in the Erlang VM
* This release also contains 66 contributions from users
outside the Ericsson team
Presumably fixes PR pkg/46297
Changes in Erlang/OTP R15B01
Highlights:
* Added erlang:statistics(scheduler_wall_time) to ensure
correct determination of scheduler utilization. Measuring
scheduler utilization is strongly preferred over CPU
utilization, since CPU utilization gives very poor
indications of actual scheduler/vm usage.
* Changed ssh implementation to use the public_key application
for all public key handling. This is also a first step for
enabling a callback API for supplying public keys and
handling keys protected with password phrases. Additionally
the test suites where improved so that they do not copy the
users keys to test server directories as this is a security
liability. Also ipv6 and file access issues found in the
process has been fixed.
* When an escript ends now all printout to standard output and
standard error gets out on the terminal. This bug has been
corrected by changing the behaviour of erlang:halt/0,1,
which should fix the same problem for other escript-like
applications, i.e. that data stored in the output port
driver buffers got lost when printing on a TTY and exiting
through erlang:halt/0,1. The BIF:s erlang:halt/0,1 has
gotten improved semantics and there is a new BIF
erlang:halt/2 to accomplish something like the old
semantics. See the documentation.
* The DTrace source patch from Scott Lystig Fritchie is
integrated in the source tree. Using an emulator with dtrace
probe is still not supported for production use, but may be
a valuable debugging tool.
* Added Torbjörn Törnkvists LDAP client as a new application
called eldap.
* Added options for the ssh client to support user keys files
that are password protected.
Changes in Erlang/OTP R15B
Highlights:
* Line number and filename information are now included in
exception backtraces. This information will be
pretty-printed in the shell and used in crash reports etc.
In practice it will be much easier to find where something
failed.
* The driver interface has been changed to enable 64-bit aware
drivers. Most importantly the return types for ErlDrvEntry
callbacks 'call' and 'control' has been changed which
require drivers to be changed.
* New in this release is the support for 64 bit Windows.
The self extracting installer can be found here.
* CommonTest hooks are now in a final supported version.
* There is a new GUI tool in the observer application which
integrates pman, etop, appmon and tv into one tool. The tool
does also contain functions for activating tracing in an easy way.
* The Erlang distribution can now be run over the new SSL implementation.
Changes in Erlang/OTP R15A
Notable changes:
OTP-9468 'Line numbers in exceptions'
OTP-9451 'Parallel make'
OTP-4779 A new GUI for Observer. Integrating pman, etop and tv into
observer with tracing facilities.
OTP-7775 A number of memory allocation optimizations have been
implemented. Most optimizations reduce contention caused by
synchronization between threads during allocation and
deallocation of memory. Most notably:
Synchronization of memory management in scheduler
specific allocator instances has been rewritten to
use lock-free synchronization.
Synchronization of memory management in scheduler
specific pre-allocators has been rewritten to use
lock-free synchronization.
The 'mseg_alloc' memory segment allocator now use
scheduler specific instances instead of one
instance. Apart from reducing contention this also
ensures that memory allocators always create memory
segments on the local NUMA node on a NUMA system.
OTP-9632 An ERTS internal, generic, many to one, lock-free
queue for communication between threads has been
introduced. The many to one scenario is very common in
ERTS, so it can be used in a lot of places in the
future. Currently it is used by scheduling of certain
jobs, and the async thread pool, but more uses are
planned for the future.
Drivers using the driver_async functionality are not
automatically locked to the system anymore, and can be
unloaded as any dynamically linked in driver.
Scheduling of ready async jobs is now also interleaved
in between other jobs. Previously all ready async jobs
were performed at once.
OTP-9631 The ERTS internal system block functionality has been
replaced by new functionality for blocking the system.
The old system block functionality had contention
issues and complexity issues. The new functionality
piggy-backs on thread progress tracking functionality
needed by newly introduced lock-free synchronization
in the runtime system. When the functionality for
blocking the system isn't used, there is more or less
no overhead at all. This since the functionality for
tracking thread progress is there and needed anyway.
This release is mainly a stabilization of the R14B03 release (but as
usual there are some new functionality as well).
One pkgsrc change: add flex to USE_TOOLS, so that megaco_flex_scanner_drv
gets built on all SunOS flavors.
Read full announcement at
http://www.erlang.org/download/otp_src_R14B04.readme
Highlights:
- Initial release of the diameter application.
- Strengthened random number generation.
- Some fixes for bugs that caused crashes.
Read full announcement at
http://www.erlang.org/download/otp_src_R14B03.readme
Highlights composed by Matthew Sporleder.
Changes in R14B02 (http://www.erlang.org/download/otp_src_R14B02.readme)
- It is now possible to use Erlang specifications and types
in EDoc documentation
- All tests in Erlang/OTP have been converted to be run with
Common Test as the backend instead of Test Server.
- From this release, the previously experimental halfword
emulator is now official
- Dependency generation for Makefiles has been added to the
compiler and erlc
- Add a --fullpath option to Dialyzer (include version 2.4.2)
- Many fixes in erts
- Remove hipe constants pool
- Partial support for recursive structs and unions
- It is now possible to use SSH to sign and verify binary data.
- typer has been rewritten
Changes R14B01 (http://www.erlang.org/download/otp_src_R14B01.readme)
- New ETS option compressed, to enable a more compact storage
format at the expence of heavier table operations
- There is now a new function inet:getifaddrs/0 modeled after
C library function getifaddrs() on BSD and Linux that reports
existing interfaces and their addresses on the host
- Multiple crashes and infinite loops fixed
- AES CTR encryption support in crypto
- erl_call: remove get_hostent
- The Erlang VM now supports Unicode filenames
- New ETS option compressed
Changes in R14B (http://www.erlang.org/download/otp_src_R14B.readme)
- Large parts of the ethread library have been rewritten.
- The changed API of the ethread library has also caused
modifications in the Erlang runtime system.
- Some Built In Functions (BIFs) are now autoimported
- Added erlang:system_info(build_type)
- A number of memory leaks in the crypto NIF library have been fixed
- erl_call: fix multiple buffer overflows
- NIF 64-bit integer support
- Removed some potential vulnerabilities from the Erlang Port
Mapper Daemon (epmd)
- Replaced the old http client api module (http) with the new,
httpc in the users guide.
- inet6 improvements
- ssh fixes
- many ssl improvements/fixes
- wx crash fix
Changes in R14A (http://www.erlang.org/download/otp_src_R14A.readme)
- R14A is a major new release of Erlang/OTP.
- The module binary from EEP31 (and EEP9) is implemented
- It is now possible for the user to provide specific callback
modules that handle test configuration data
- New NIF features
- Receive statements that can only read out a newly created
reference are now specially optimized so that it will execute
in constant time regardless of the number of messages in the
receive queue for the process.
- The run_test script has been replaced by a program (with the
same name) which can be executed without explicit installation
- eprof has been reimplemented with support in the Erlang
virtual machine and is now both faster (i.e. slows down the
code being measured less) and scales much better
Changes in R13B04 (http://www.erlang.org/download/otp_src_R13B04.readme)
- Many documentation and documentation build improvements
- cross-compile/build improvements
- buffer overflow fix
- telnet keep alive fixes
- compiler crash on boolean ifs
- -Werror for erlc fixed
- macro overloading implemented
- the crypto module now supports Blowfish
- explicit top directories in archive files are now optional
- add lock profiling tool: lcnt
- httpd methods "PUT" and "DELETE" now allowed + others fixes
to resolver routine
- compression supported when copying between mnesia nodes
SunOS, Java and ODBC support by Filip Hajny
and some tests by Matthias Kretschmer.
Changes in R13B03
-----------------
There are mostly error corrections, but also some new functionality.
Some highlights in the R13B03 release are:
- Native Implemented Functions (NIFs) still experimental but very useful.
- The documentation is built in a new way using xsltproc and Apache FOP.
The layout is changed both in HTML and PDF versions. This is the first
step, more changes and improvements will come in the following releases.
Changes between R13A and R13B02 are unknown.
Changes in R13A
---------------
1.1 Erlang Language and Run-time System
Multi-core and SMP performance improvements
There SMP performance is significantly improved:
- multiple, scheduler specific run queues;
- further optimized message passing;
- CPU-bound scheduler threads.
Unicode support as described in EEP10
New BIF's: atom_to_binary/2, binary_to_atom/2, binary_to_existing_atom/2.
Independent Erlang clusters on the same host
1.2 New Applications
Reltool, release management tool.
WxErlang
1.3 New features in Existing Applications
Common_test
- SSH and SFTP support
- test case groups
Dialyzer
- opaque type declarations;
- UTF segments handling
SSL
- pure Erlang implementation (except crypto routines)
STDLIB
- scanner has been augmented to return white-space, comments
and exact location of tokens.
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
=== SMP Support ===
The major news is the support for SMP (Symmetric MultiProcessing).
SMP is supported by most modern operating systems like Linux, Windows, Mac OSx,
Solaris and is becoming more important now when dual processors,
hyper-threading technology and multi-core systems are a reality.
With Erlang, most of the problems which occur in multi-threaded programs have
been solved once and for all in the Erlang VM and do not have to be handled by
the application programmers.
In the SMP version of the Erlang virtual machine, there can be many process
schedulers running in separate OS threads. As default there will be as many
schedulers as there are processors or processor cores on the system.
The SMP support is totally transparent for the Erlang programs. That is, there
is no need to change or recompile existing programs. Programs with built-in
assumptions about sequential execution must be rewritten in order to take
advantage of the SMP support, however.
In this release, the Erlang VM supports SMP with focus on stability. There will
follow a number of subsequent steps with necessary optimizations and support
for more platforms.
=== Erlang Language and Related Issues ===
* The andalso and orelse operators are now allowed to be used in guards.
That also applies to match specifications.
* The BIF is_record/3 can now be used in guards. Also, is_record/3 can now
be called without an erlang: module prefix for consistency with the other
is_* functions.
* The compiler options ignore_try and ignore_cond, which allowed code that
used unquoted try or cond as atoms or record tags, has been removed. Old
code that depended on the options need to be revised to have occurrences
of try or cond as atom or record tags single-quoted. (Note: Although cond
is a reserved keyword, there is no cond statement. It might be introduced
in a future release.)
* (ERTS 5.4.8) The new fun M:F/A construct creates a fun that refers to the
latest version of M:F/A. This syntax is meant to replace tuple funs {M,F}
which have many problems.
* (ERTS 5.4.8) The new type test is_function(Fun, Arity) -- which may be
used in guards -- test whether Fun is a fun that can be applied to Arity
arguments.
=== New Applications ===
Dialyzer
Dialyzer is a static analysis tool that identifies software discrepancies such
as type errors, unreachable code, unnecessary tests, etc in single Erlang
modules or entire (sets of) applications.
Inviso
The Inviso application, together with some new extensions to Runtime_Tools, is
aimed at providing features for efficient tracing of production Erlang/OTP
systems:
* Distributed tracing - tracing on any number of Erlang nodes.
* Autostart - tracing during system start-up.
* Overload protection - mechanisms for suspending and later reactivating
tracing, should an overload situation occur.
* Enhanced use of meta tracing.
* Trace cases - predefined specifications of what to trace.
* Off-line merging and formatting of log files.
Inviso is still under development. An easier-to-use trace tool, using the
features listed above, is planned to be released as an R11B patch in Q3/Q4
2006.
SSH
The SSH application is an Erlang implementation of the secure shell protocol.
It is considered to be a beta release, meaning there can be changes made to the
API before it reaches 1.0.
=== Existing Applications ===
Compiler
(Compiler 4.3.6) It is now possible to encrypt the debug information in Beam
files.
Debugger
(Debugger 2.0) The debugger can now handle the try/catch language construct.
Inets
The Erlang implementation of the TFTP procotcol, tftp, is now documented.
Kernel
In Kernel 2.10.X, several bug fixes and improvements have been made in global ,
the global name registration facility.
OS_Mon
(OS_Mon 2.0) The entire OS_Mon application (code and documentation) has been
reviewed and consequently updated with the goal to make the application more
robust, homogeneous and easier to configure.
STDLIB
Added the zip module with functions for reading and creating zip archives.
and add a new helper target and script, "show-buildlink3", that outputs
a listing of the buildlink3.mk files included as well as the depth at
which they are included.
For example, "make show-buildlink3" in fonts/Xft2 displays:
zlib
fontconfig
iconv
zlib
freetype2
expat
freetype2
Xrender
renderproto
RECOMMENDED is removed. It becomes ABI_DEPENDS.
BUILDLINK_RECOMMENDED.foo becomes BUILDLINK_ABI_DEPENDS.foo.
BUILDLINK_DEPENDS.foo becomes BUILDLINK_API_DEPENDS.foo.
BUILDLINK_DEPENDS does not change.
IGNORE_RECOMMENDED (which defaulted to "no") becomes USE_ABI_DEPENDS
which defaults to "yes".
Added to obsolete.mk checking for IGNORE_RECOMMENDED.
I did not manually go through and fix any aesthetic tab/spacing issues.
I have tested the above patch on DragonFly building and packaging
subversion and pkglint and their many dependencies.
I have also tested USE_ABI_DEPENDS=no on my NetBSD workstation (where I
have used IGNORE_RECOMMENDED for a long time). I have been an active user
of IGNORE_RECOMMENDED since it was available.
As suggested, I removed the documentation sentences suggesting bumping for
"security" issues.
As discussed on tech-pkg.
I will commit to revbump, pkglint, pkg_install, createbuildlink separately.
Note that if you use wip, it will fail! I will commit to pkgsrc-wip
later (within day).
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
systems, but the code that take care of them is inly implemented
on Linux. This made the build go into an infinite loop on NetBSD.
Disable floating point exceptions on NetBSD/amd64 for now, until
I get around implementing and testing the necessary sigaction glue.
been updated in more than two years.)
- Add a buildlink3.mk file.
- Make the Java dependency optional, and disable this option by default (this
will make erlang build in more bulk builds).
Ok by wiz.
around at either build-time or at run-time is:
USE_TOOLS+= perl # build-time
USE_TOOLS+= perl:run # run-time
Also remove some places where perl5/buildlink3.mk was being included
by a package Makefile, but all that the package wanted was the Perl
executable.
Several changes are involved since they are all interrelated. These
changes affect about 1000 files.
The first major change is rewriting bsd.builtin.mk as well as all of
the builtin.mk files to follow the new example in bsd.builtin.mk.
The loop to include all of the builtin.mk files needed by the package
is moved from bsd.builtin.mk and into bsd.buildlink3.mk. bsd.builtin.mk
is now included by each of the individual builtin.mk files and provides
some common logic for all of the builtin.mk files. Currently, this
includes the computation for whether the native or pkgsrc version of
the package is preferred. This causes USE_BUILTIN.* to be correctly
set when one builtin.mk file includes another.
The second major change is teach the builtin.mk files to consider
files under ${LOCALBASE} to be from pkgsrc-controlled packages. Most
of the builtin.mk files test for the presence of built-in software by
checking for the existence of certain files, e.g. <pthread.h>, and we
now assume that if that file is under ${LOCALBASE}, then it must be
from pkgsrc. This modification is a nod toward LOCALBASE=/usr. The
exceptions to this new check are the X11 distribution packages, which
are handled specially as noted below.
The third major change is providing builtin.mk and version.mk files
for each of the X11 distribution packages in pkgsrc. The builtin.mk
file can detect whether the native X11 distribution is the same as
the one provided by pkgsrc, and the version.mk file computes the
version of the X11 distribution package, whether it's built-in or not.
The fourth major change is that the buildlink3.mk files for X11 packages
that install parts which are part of X11 distribution packages, e.g.
Xpm, Xcursor, etc., now use imake to query the X11 distribution for
whether the software is already provided by the X11 distribution.
This is more accurate than grepping for a symbol name in the imake
config files. Using imake required sprinkling various builtin-imake.mk
helper files into pkgsrc directories. These files are used as input
to imake since imake can't use stdin for that purpose.
The fifth major change is in how packages note that they use X11.
Instead of setting USE_X11, package Makefiles should now include
x11.buildlink3.mk instead. This causes the X11 package buildlink3
and builtin logic to be executed at the correct place for buildlink3.mk
and builtin.mk files that previously set USE_X11, and fixes packages
that relied on buildlink3.mk files to implicitly note that X11 is
needed. Package buildlink3.mk should also include x11.buildlink3.mk
when linking against the package libraries requires also linking
against the X11 libraries. Where it was obvious, redundant inclusions
of x11.buildlink3.mk have been removed.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
"i386-unknown-netbsdelf2.0." directory when a "i386--netbsdelf"
one is present. Someone who wants to read gmake files is going
to have to fix that.
That aside, its now equivalemtly broken with bl3 rather than bl2.
curses.buildlink2.mk. This was wrong because we _really_ do want to
express that we want _n_curses when we include the buildlink2.mk file.
We should have a better way to say that the NetBSD curses doesn't
quite work well enough. In fact, it's far better to depend on ncurses
by default, and exceptionally note when it's okay to use NetBSD curses
for specific packages. We will look into this again in the future.
This version is focused on improved performance and stability,
rather than introducing new functionality, hence it is called R9C.
Build Process NEW
The build process has been improved so that it is possible to build
Erlang/OTP from source even on Windows platforms. There is also a
completely new installation program for Windows.
Observer
crashdump_viewer NEW
A HTML based tool for browsing Erlang crashdumps. The tool can handle
crashdumps from OTP R7B, R8B and R9B as well but there is additional
information in the crashdumps for R9C.
OTP_MIBs NEW
The OTP mibs that where included in the SASL application have been
moved to this new application otp_mibs. This is a step too create a
pure core for Erlang/OTP that does not depend on specific,
non-mainstream applications such as SNMP.
Erlang is a programming language which has many features more commonly
associated with an operating system than with a programming language:
concurrent processes, scheduling, memory management, distribution,
networking, etc.
The initial open-source Erlang release contains the implementation of
Erlang, as well as a large part of Ericsson's middleware for building
distributed high-availability systems.