Changes in R15B03-1
After the release of R15B03 a very unfortunate bug in ssl:ssl_accept/2
(accept with timeout) was detected. This bug will have negative impact
on a number of popular http servers and server frameworks written in
Erlang.
The differences from R15B03 are in ssl-5.1.2 and erts-5.9.3.1.
Full log at http://www.erlang.org/download/otp_src_R15B03-1.readme
Changes in R15B03
Mostly bug fixes and small improvements.
Full log at http://www.erlang.org/download/otp_src_R15B03.readme
Changes in R15B02
Highlights
OTP-8871 == ssl ==
Experimental support for TLS 1.1 is now available, will be
officially supported from OTP-R16. Thanks to Andreas Schultz
for implementing the first version.
OTP-8872 == ssl ==
Experimental support for TLS 1.2 is now available, will be
officially supported from OTP-R16. Thanks to Andreas Schultz
for implementing the first version.
OTP-10113 == ssl ==
Removed some bottlenecks increasing the applications
parallelism especially for the client side.
Full log at http://www.erlang.org/download/otp_src_R15B02.readme
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.
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
patches to add it). Drop pax from the default USE_TOOLS list.
Make bsdtar the default for those places that wanted gtar to extract
long links etc, as bsdtar can be built of the tree.
=== 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.