---------------------------------------------------------------------
--- compiler-7.3.1 --------------------------------------------------
---------------------------------------------------------------------
The compiler-7.3.1 application can be applied independently of other
applications on a full OTP 21 installation.
--- Fixed Bugs and Malfunctions ---
OTP-15501 Application(s): compiler
Related Id(s): ERL-514, ERL-807, OTP-14808
An optimization that avoided allocation of a stack
frame for some case expressions was introduced in OTP
21. (ERL-504/OTP-14808) It turns out that in rare
circumstances, this optimization is not safe.
Therefore, this optimization has been disabled.
A similar optimization will be included in OTP 22 in a
safe way.
Full runtime dependencies of compiler-7.3.1: crypto-3.6, erts-9.0,
hipe-3.12, kernel-4.0, stdlib-2.5
---------------------------------------------------------------------
--- erts-10.2.2 -----------------------------------------------------
---------------------------------------------------------------------
Note! The erts-10.2.2 application can *not* be applied independently
of other applications on an arbitrary OTP 21 installation.
On a full OTP 21 installation, also the following runtime
dependencies have to be satisfied:
-- kernel-6.1 (first satisfied in OTP 21.1)
-- sasl-3.3 (first satisfied in OTP 21.2)
--- Fixed Bugs and Malfunctions ---
OTP-15495 Application(s): erts
Related Id(s): ERL-821
Fixed a crash when dangling files were closed after
init:restart/0.
OTP-15509 Application(s): erts
Related Id(s): PR-2027, PR-2093
A bug that could cause dirty schedulers to become
unresponsive has been fixed.
Full runtime dependencies of erts-10.2.2: kernel-6.1, sasl-3.3,
stdlib-3.5
---------------------------------------------------------------------
--- ssl-9.1.2 -------------------------------------------------------
---------------------------------------------------------------------
The ssl-9.1.2 application can be applied independently of other
applications on a full OTP 21 installation.
--- Fixed Bugs and Malfunctions ---
OTP-15477 Application(s): ssl
Related Id(s): ERL-790
Fix encoding of the SRP extension length field in ssl.
The old encoding of the SRP extension length could
cause interoperability problems with third party SSL
implementations when SRP was used.
OTP-15504 Application(s): ssl
Related Id(s): ERL-371
Guarantee active once data delivery, handling TCP
stream properly.
OTP-15505 Application(s): ssl
Correct gen_statem returns for some error cases
Full runtime dependencies of ssl-9.1.2: crypto-4.2, erts-10.0,
inets-5.10.7, kernel-6.0, public_key-1.5, stdlib-3.5
---------------------------------------------------------------------
--- xmerl-1.3.19 ----------------------------------------------------
---------------------------------------------------------------------
The xmerl-1.3.19 application can be applied independently of other
applications on a full OTP 21 installation.
--- Fixed Bugs and Malfunctions ---
OTP-15492 Application(s): xmerl
Related Id(s): ERIERL-283
The charset detection parsing crash in some cases when
the XML directive is not syntactic correct.
Full runtime dependencies of xmerl-1.3.19: erts-6.0, kernel-3.0,
stdlib-2.5
---------------------------------------------------------------------
---------------------------------------------------------------------
---------------------------------------------------------------------
Potential Incompatibilities
- All Corba applications are now moved from the OTP repository
- A new Corba repository will be created https://github.com/erlang
- New applications ftp and tftp, moved from inets
- ssl no longer supports 3_DES cipher suites or RSA-key exchange
cipher suites by default
- Erlang:monitor on a primitive node (erl_interface, jinterface, etc)
will no longer fail with badarg exception. Instead a monitor will be
created, but it will only supervise the connection to the node.
Erts:
- Enhanced IO scalability
- Support for usage of distribution controller processes for
alternative transports, routing etc
- compact instructions on 64bit systems for code below 4GB 20% less
memory for loaded code
- Rewrite of the efile-driver with NIFs and "Dirty schedulers"
resulting in faster file operations
- non-smp VM removed
- link and monitor optimized for scalability
- os:getenv/putenv now work on thread-safe emulation. No longer in
sync with libc getenv(3). Manual synchronization will be needed.
Compiler:
- Misc compiler optimizations including contributions from the Elixir
team resulting in 10% improvements in benchmarks
- "Tuple calls" have been removed from the run-time system.
- Code such as f({ok, Val}) -> {ok, Val} is now automatically
rewritten to f({ok, Val} = Tuple) -> Tuple. this reduces code size,
execution time, and removed GC pressure.
- More information in stacktrace from a number of operators
- erlang:get_stacktrace/0 deprecated to be replaced with try ... catch
C:R:Stacktrace -> ...
- Creation of small maps with literal keys optimized.
- A new predefined macro OTP_RELEASE and preprocessor directives -if
and -elif
Security:
- DTLS is now supported in the SSL application
- Enhanced support for distribution over TLS
- "unsecure" ciphers removed from defaults in SSL and SSH.
- A new option value defined to facilitate implementing exec servers.
Old option kept for compatibility, but now gives errors on stderror.
Standard libraries:
- New API for logging, logger
- New uri_string module for parsing URIs according to "The standard"
- New function lists:search(list,fun/1) -> {ok, Value} | false
- Changed default behaviour of .erlang loading. escript, erlc,
dialyzer and typer no longer load an .erlang at all.
Potential Incompatibilities
---------------------------
- ERTS:
- The non SMP Erlang VM is deprecated and not built by default
- Remove deprecated erlang:hash/2
- erlang:statistics/1 with scheduler_wall_time now also includes
info about dirty CPU schedulers.
- The new purge strategy introduced in OTP 19.1 is mandatory and
slightly incompatible for processes holding funs
- The NIF library reload is not supported anymore.
- Atoms can now contain arbitrary unicode characters which means
that the DFLAG_UTF8_ATOMS capability in the distribution protocol
must be supported if an OTP 20 node should accept the connection
with another node or library.
- Asn1: Deprecated module and functions removed (asn1rt,
asn1ct:encode/3 and decode/3)
- Ssh: client only option in a call to start a daemon will now fail
Highlights
----------
- Erts:
- Dirty schedulers enabled and supported on VM with SMP support.
- support for "dirty" BIFs and "dirty" GC.
- erlang:garbage_collect/2 for control of minor or major GC
- Erlang literals are no longer copied when sending messages.
- Improved performance for large ETS tables, >256 entries (except
ordered_set)
- erlang:system_info/1 atom_count and atom_limit
- Reduced memory pressure by converting sub-binaries to
heap-binaries during GC
- enif_select, map an external event to message
- Improvements of timers internally in the VM resulting in reduced
memory consumption and more efficient administration for timers
- Compiler:
- Code generation for complicated guards is improved.
- Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2,
'a'=>3} will warn for the repeated key a.
- By default there is now a warning when export_all is used. Can be
disabled
- Pattern matching for maps is optimized
- New option deterministic to omit path to source + options info the
BEAM file.
- Atoms may now contain arbitrary unicode characters.
- compile:file/2 has an option to include extra chunks in the BEAM
file.
- Misc other applications
- Significantly updated string module with unicode support and many
new functions
- crypto now supports OpenSSL 1.1
- Unnamed ets tables optimized
- gen_fsm is deprecated and replaced by gen_statem
- A new event manager to handle a subset of OS signals in Erlang
- Optimized sets add_element, del_element and union
- Added rand:jump/0-1
- When a gen_server crashes, the stacktrace for the client will be
printed to facilitate debugging.
- take/2 has been added to dict, orddict, and gb_trees.
- take_any/2 has been added to gb_trees
- erl_tar support for long path names and new file formats
- asn1: the new maps option changes the representation of SEQUENCE
to be maps instead of records
- A TLS client will by default call
public_key:pkix_verify_hostname/2 to verify the hostname
- ssl: DTLS documented in the API, experimental
- ssh: improving security, removing and adding algorithms
- New math:fmod/2
erlang-17.5
================================
Highlights:
- ERTS: Added command line argument option for setting the initial size
of process dictionaries.
- Diameter: configurable incoming_max len and string_decode for diameter
messages
- Bugfixes and minor small features in applications such as compiler,
common_test, crypto, debugger, eldap, erts, hipe, inets, ssh, ssl,...
Full changelog:
http://www.erlang.org/download/otp_src_17.5.readme
erlang-17.4
================================
Highlights:
- eldap: Nearly all TCP options are possible to give in the eldap:open/2 call.
- ssh: Added API functions ptty_alloc/3 and ptty_alloc/4, to allocate
a pseudo tty.
- ssl: Handle servers that may send an empty SNI extension to the client.
Full changelog:
http://www.erlang.org/download/otp_src_17.4.readme
erlang-17.3
================================
Highlights:
- erts: Introduced enif_schedule_nif() which allows a long running NIF
to be broken into separate NIF invocations without the help of a wrapper
function written in Erlang
- common_test: Experimental support for running Quickcheck and PropEr tests
from common_test suites is added. Examples of usage in the suites for
the ssh and inets applications
- Bugfixes and minor new features in applications such as asn1, erts, kernel,
stdlib, diameter, ssh, mnesia, ssl, jinterface
Full changelog:
http://www.erlang.org/download/otp_src_17.3.readme
erlang-17.1
================================
Highlights:
- crypto: Add aes_cfb8 cypher to crypto:block_encrypt and block_decrypt.
- diameter: Add result code counters for CEA, DWA, and DPA.
- erts: The following built in functions in the erlang and binary modules
now bump an appropriate amount of reductions and yield when
out of reductions:
binary_to_list/1, binary_to_list/3, bitstring_to_list/1,
list_to_binary/1, iolist_to_binary/1, list_to_bitstring/1,
binary:list_to_bin/1
- hipe: Handle Maps instructions get_map_elements, put_map_assoc,
put_map_exact in the HiPE native code compiler.
- mnesia: The time for inserting locks for a transaction with large
number of locks is reduced significantly.
- ssh: Option max_sessions added to ssh:daemon/{2,3}.
- stdlib: Add maps:get/3 to maps module. The function will return the
supplied default value if the key does not exist in the map.
Full changelog:
http://www.erlang.org/download/otp_src_17.1.readme
erlang-17.0
================================
Highlights:
- Erlang/OTP has been ported to the realtime operating system OSE.
- Maps, a new dictionary data type (experimental)
- A more natural mapping from ASN.1 OCTET STRING and BIT STRING to
Erlang types, and other ASN.1 improvements and optimizations
- The {active, N} socket option for TCP, UDP, and SCTP
- A new (optional) scheduler utilization balancing mechanism
- Migration of memory carriers has been enabled by default on all
ERTS internal memory allocators
- Increased garbage collection tenure rate
- Experimental "dirty schedulers" functionality
- Funs can now be given names
- Miscellaneous unicode support enhancements
- A new version scheme for OTP its applications has been introduced
Full changelog:
http://www.erlang.org/download/otp_src_17.0.readme
erlang 16.1.3.1 (R16B03-1)
================================
Highlights:
- The ODBC application was missing in the prebuilt Windows installers
- 3 corrections in the SSL application:
- Add missing validation of the server_name_indication option and test
for its explicit use.
- Elliptic curve selection in server mode now properly selects a curve
suggested by the client, if possible.
- The server did not indicate support for secure renegotiation during
TLS extension handling.
- In the syntax tools application a bug was introduced which broke
reverting of local funs. This is now corrected (thanks to Anthony Ramine)
- wx - Solved a problem which caused the debugger to crash when closing
a window. Fixed static linking on Mac.
- xmerl - Fixed a problem in the SAX-parser when the header of
the next document was appearing in the buffer when using
the xmerl_sax_parser:stream/2 function.
Full changelog:
http://www.erlang.org/download/otp_src_R16B03-1.readme
erlang-16.1.3 (R16B03)
================================
Highlights:
- A new memory allocation feature called "super carrier" has been introduced.
It can for example be used for pre-allocation of all memory that the
runtime system should be able to use. It is enabled by passing the +MMscs
(size in MB) command line argument. For more information see
the documentation of the +MMsco, +MMscrfsd, +MMscrpm, +MMscs, +MMusac, and,
+Mlpm command line arguments in the erts_alloc(3) documentation.
- The ldap client eldap now supports the start_tls operation. This upgrades
an existing tcp connection to encryption using tls,
see eldap:start_tls/2 and /3.
- The ftp client (inets application) now supports ftp over tls (ftps).
Full changelog:
http://www.erlang.org/download/otp_src_R16B03.readme
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.