Bug fix release : otp_src_17.4
Build date : 2014-12-10
This is 17.4, the fourth maintenance release for the 17 major release.
You can find the README file for the release at
http://www.erlang.org/download/otp_src_17.4.readme (this file)
The source distribution and binary distributions for Windows can be
downloaded from
http://www.erlang.org/download/otp_src_17.4.tar.gz
http://www.erlang.org/download/otp_win32_17.4.exe
http://www.erlang.org/download/otp_win64_17.4.exe
Note: To unpack the TAR archive you need a GNU TAR compatible program.
For installation instructions please read the README file that is part
of the distribution.
The on-line documentation can be found at: http://www.erlang.org/doc/
You can also download the complete HTML documentation or the Unix manual files
http://www.erlang.org/download/otp_doc_html_17.4.tar.gz
http://www.erlang.org/download/otp_doc_man_17.4.tar.gz
We also want to thank those that sent us patches, suggestions and bug reports,
The OTP Team
--- HIGHLIGHTS ----------------------------------------------------------
OTP-11542 == ssh ==
Added API functions ptty_alloc/3 and ptty_alloc/4, to
allocate a pseudo tty.
OTP-12171 == eldap ==
Nearly all TCP options are possible to give in the
eldap:open/2 call.
--- otp -----------------------------------------------------------------
OTP-12280 Fixed the --without-<APPLICATION> option of configure.
Thanks to Tuncer Ayaz.
OTP-12327 The type function() has been documented.
--- asn1-3.0.3 ----------------------------------------------------------
OTP-12205 When decoding BER, primitives with an indefinite length will
be immediately rejected. (Thanks to Simon Cornish for
reporting this bug.)
OTP-12318 BER: A bug with compliance to X.680 (200811) s31.2.7 has been
fixed. Basically, when TagDefault is AUTOMATIC then tags are
IMPLICIT unless EXPLICIT is given.
OTP-12326 Usage of the EXTERNAL 1994 variant type was broken.
--- common_test-1.9 -----------------------------------------------------
OTP-11766 The source code to html code generator in Test Server (and
Common Test) would fail to generate anchors in the html code
for functions with non-expandable macros, resulting in bad
html links to such functions. This correction lets the code
generator ignore macros that can't be expanded (i.e. not
pre-process them), so that correct anchors will always be
produced.
OTP-12031 OTP-11971 erroneously changed the handling of relative paths
(import/export files) specified in the cover spec file. This
is now corrected so these are expected to be relative to the
directory where the cover spec file itself is stored.
OTP-12159 Common Test would sometimes crash while trying to print large
amounts of SASL reports to log on a computer with a slow file
system. This problem (due to an error in IO message buffering
in ct_logs) has been fixed.
OTP-12252 A new option, {newline,boolean()} is added to all functions
in ct_telnet that send data (command strings) to the telnet
server. By default, ct_telnet adds a newline to all command
strings, and by setting the new option to false this behavior
is turned off.
OTP-12329 The common_test telnet client, ct_telnet and friends, had
some unstable test cases. Some of these were caused by the
unix_telnet callback sending an extra newline after sending
the password. This caused the sever to send an extra prompt
back which confused the tests. The extra newline is no longer
sent.
Also, debug printouts and logging from the telnet client is
improved, and some test cases are slightly modified in order
to stabilize the test.
OTP-12334 ct_netconfc did not expect the return value {error,timeout}
from ssh_connection:subsystem/4. This has been corrected.
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
--- compiler-5.0.3 ------------------------------------------------------
OTP-12262 Named funs with the same name and arity could get mixed up
with each other.
OTP-12347 Coalesce map keys in dialyzer mode
This fixes a regression introduced in commit
805f9c89fc01220bc1bb0f27e1b68fd4eca688ba The problem occurred
with compounded map keys compiled with dialyzer option turned
on, '+dialyzer'.
Reported by: Ivan Uemlianin
--- crypto-3.4.2 --------------------------------------------------------
OTP-12215 Add configure option --with-ssl-incl=PATH to support OpenSSL
installations with headers and libraries at different places.
OTP-12316 Add configure option --with-ssl-rpath to control which
runtime library path to use for dynamic linkage toward
OpenSSL.
--- debugger-4.0.2 ------------------------------------------------------
OTP-12197 Make sure to install .hrl files when needed
OTP-12357 Invoking debugger functions ia/1 and iaa/1 crashed, when it
tried to invoke the old and removed gs based gui functions.
--- dialyzer-2.7.3 ------------------------------------------------------
OTP-12225 When compiling Erlang source, Dialyzer now ignores the
environment variable ERL_COMPILER_OPTIONS as well as skips
the Erlang Compiler option warnings_as_errors.
OTP-12319 Dialyzer did not check the type of record elements when
updating them. The bug, introduced in Erlang/OTP 17.1, has
been corrected. (Thanks to Nicolas Dudebout for pointing it
out.)
OTP-12347 Coalesce map keys in dialyzer mode
This fixes a regression introduced in commit
805f9c89fc01220bc1bb0f27e1b68fd4eca688ba The problem occurred
with compounded map keys compiled with dialyzer option turned
on, '+dialyzer'.
Reported by: Ivan Uemlianin
--- diameter-1.8 --------------------------------------------------------
OTP-12196 Fix remote diameter_request table leak.
An outgoing request whose pick_peer callback selected a
transport on another node resulted in an orphaned table entry
on that node.
OTP-12233 Fix handling of 3xxx Result-Code without E-bit.
OTP-12233 broke the population of the errors field of the
diameter_packet record when an incoming request with an
E-bit/Result-Code mismatch was detected, causing a 4-tuple to
be inserted as Result-Code in a diameter_avp record.
OTP-12281 Fix ignored connect timer.
There are two timers governing the establishment of peer
connections: connect_timer and watchdog_timer. The former is
the RFC 6733 Tc timer, and is used at initial connection
establishment. The latter is RFC 3539 TwInit, and is used for
connection reestablishment. A connecting transport
erroneously used watchdog_timer in both cases.
OTP-12308 Order candidate peers in pick_peer callbacks.
The order of candidate peers presented to a diameter_app(3)
pick_peer callback has previously not been documented, but
there are use cases that are simplified by an ordering. The
order is now determined by the filter.
--- edoc-0.7.16 ---------------------------------------------------------
OTP-12190 Maps: Properly align union typed assoc values in
documentation
--- eldap-1.1 -----------------------------------------------------------
OTP-12171 Nearly all TCP options are possible to give in the
eldap:open/2 call.
OTP-12174 Added the LDAP filter extensibleMatch.
OTP-12311 Fixed that eldap:open did not use the Timeout parameter when
calling ssl:connect. (Thanks Wiesław Bieniek for reporting)
--- erl_docgen-0.3.7 ----------------------------------------------------
OTP-12190 Maps: Properly align union typed assoc values in
documentation
--- erl_interface-3.7.20 ------------------------------------------------
OTP-12178 Added a .app file for the application.
OTP-12268 Use C99 function isfinite() instead of finite() when
available on non GCC compilers.
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
OTP-12358 Added an .appup file for the application.
--- erts-6.3 ------------------------------------------------------------
OTP-12117 Introduced support for eager check I/O.
By default eager check I/O will be disabled, but this will
most likely be changed in OTP 18. When eager check I/O is
enabled, schedulers will more frequently check for I/O work.
Outstanding I/O operations will however not be prioritized to
the same extent as when eager check I/O is disabled.
Eager check I/O can be enabled using the erl command line
argument: +secio true
Characteristics impact when enabled:
-- Lower latency and smoother management of externally
triggered I/O operations.
-- A slightly reduced priority of externally triggered I/O
operations.
OTP-12188 Fix HiPE debug lock checking on OS X 64bit
Position-independent code is mandatory on OS X. We use r11 as
an intermediate register to fill BIF_P->hipe.bif_callee. This
fixes the following error when doing `make debug FLAVOR=smp`:
clang -cc1as: fatal error: error in backend: 32-bit absolute
addressing is not supported in 64-bit mode
OTP-12189 Fix erts .app-file
OTP-12208 Fix race bug that could cause VM crash in
erlang:port_get_data/1 if the port was closed by a concurrent
process. Also fix fatal bug if port_set_data/2 is called with
a non-immediate data term. Both bugs exist since R16B01.
OTP-12215 Add configure option --with-ssl-incl=PATH to support OpenSSL
installations with headers and libraries at different places.
OTP-12216 Correct make variable SSL_DED_LD_RUNTIME_LIBRARY_PATH when
erl_xcomp_sysroot ends with a slash.
OTP-12222 Fix two cases of unreachable code caused by false use of
assigment operators.
OTP-12231 Fix bug when hipe compiled code makes tail call to a BIF that
disables GC while trapping (sush as binary_to_list,
list_to_binary, binary_to_term, term_to_binary).
OTP-12249 Fix bug when a migrated empty memory carrier is reused just
before it should be destroyed by the thread that created it.
OTP-12250 Optimization of atomic memory operations with release barrier
semantics on 32-bit PowerPC when using the implementation
included in OTP.
OTP-12266 Prevents compile-time errors in NIFs, when the compiler is
instructed to treat missing field initializers as errors, by
adding an initializer for the new options field which was
added to ErlNifEntry for 17.3.
OTP-12267 Fixed CPU topology detection on FreeBSD systems where
Erlang/OTP is compiled by new C compilers (including, but
possibly not limited to, gcc 4.9 and clang).
OTP-12268 Use C99 function isfinite() instead of finite() when
available on non GCC compilers.
OTP-12269 Fix bug on windows where an incorrect number of links could
be returned when doing file:read_file_info on a directory.
OTP-12273 Fix rare bug when purging module on VM started with +Meamin.
OTP-12275 Repair run_erl terminal window size adjustment sent from
to_erl. This was broken in OTP 17.0 which could lead to
strange cursor behaviour in the to_erl shell.
OTP-12287 Minor adjustment of scheduler activation code making sure
that an activation of a scheduler is not prevented by its
run-queue being non-empty. (Thanks to Songlu Cai)
OTP-12289 Fixed bug on windows causing gen_tcp/udp to return an error
when given an fd to work with.
OTP-12290 Fix various internal erts issues where negating a signed
integer in C would trigger undefined behavior. This fixes
issues when dividing with bignums and list_to_integer.
OTP-12291 When flushing output to stdout on windows, the emulator could
sometimes hang indefinitely waiting for the flush to
complete. This has been fixed.
OTP-12295 Fix so that non-smp emulators with dirty scheduler support
shows the correct number of dirty schedulers when calling
erlang:system_info(system_version).
OTP-12298 Add nif_version to erlang:system_info/1 in order to get the
NIF API version of the runtime system in a way similar to
driver_version.
OTP-12300 Fix bug that could cause the return value from dirty NIF with
zero arity to be treated as garbage, leading to VM crash.
OTP-12302 Improved support for atomic memory operations provided by the
libatomic_ops library. Most importantly support for use of
native double word atomics when implemented by libatomic_ops
(for example, implemented for ARM).
The $ERL_TOP/HOWTO/INSTALL.md document now also more clearly
describes when you want to build together with a
libatomic_ops installation.
OTP-12316 Add configure option --with-ssl-rpath to control which
runtime library path to use for dynamic linkage toward
OpenSSL.
OTP-12321 Added systemd notify support to epmd
OTP-12323 Improve allocation carrier migration search logic. This will
reduce the risk of failed migrations that could lead to
excess memory consumption. It will also improve smp
performance due to reduced memory contention on the migration
pool.
--- eunit-2.2.9 ---------------------------------------------------------
OTP-12197 Make sure to install .hrl files when needed
OTP-12200 Make sure the clean rule for ssh, ssl, eunit and otp_mibs
actually removes generated files.
--- hipe-3.11.2 ---------------------------------------------------------
OTP-12322 Fixed internal elf_format hrl file to contain valid erlang
--- inets-5.10.4 --------------------------------------------------------
OTP-12221 Fixed a spelling mistake in httpc documentation.
OTP-12255 Add option {ftp_extension, boolean} to enable use of extended
commands EPSV and EPRT, as specified in RFC 2428, for IPv4
instead of using the legacy commands. Ipv6 can not be
supported without the extended commands.
--- jinterface-1.5.12 ---------------------------------------------------
OTP-12178 Added a .app file for the application.
OTP-12210 handle empty .erlang.cookie without crashing and
OtpErlangList.clone must not return null
OTP-12211 This fixes all the compilation warnings in the Java code
OTP-12358 Added an .appup file for the application.
--- kernel-3.1 ----------------------------------------------------------
OTP-12197 Make sure to install .hrl files when needed
OTP-12276 Removed the undocumented application environment variable
'raw_files' from the kernel application. This variable was
checked (by call to application:get_env/2) each time a raw
file was to be opened in the file module.
OTP-12296 Updated documentation for inet buffer size options.
OTP-12314 A bug has been fixed when using the netns option to gen_udp,
which accidentally only worked if it was the last option.
OTP-12325 Introduce new option 'raw' in file_info and link_info
functions. This option allows the caller not to go through
the file server for information about files guaranteed to be
local.
--- megaco-3.17.3 -------------------------------------------------------
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
--- mnesia-4.12.4 -------------------------------------------------------
OTP-12278 Fixed a spelling mistake in mnesia documentation.
OTP-12304 Matching data with mnesia:match_object/1 did not work as
expected in some cases, when data was written in the same
transaction before the matching was invoked.
--- observer-2.0.3 ------------------------------------------------------
OTP-12078 A note saying only R15B nodes can be observed is removed from
the user guide.
--- odbc-2.10.22 --------------------------------------------------------
OTP-12260 OS X Mavericks is based on Darwin version 13.x, and Yosemite
on 14.x. Change the ODBC configure.in script to recognize
these versions.
OTP-12346 The commands longer than 127 chars sent to odbc server
crashed it, e.g. a connection string with driver path and
some additional parameters.
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
--- orber ---------------------------------------------------------------
OTP-12193 Fixed problem with IPv6 addresses in Service Context when
Orber is default configured for IPv4.
--- ose -----------------------------------------------------------------
OTP-12177 Add missing release notes for the OSE application.
--- otp_mibs-1.0.10 -----------------------------------------------------
OTP-12200 Make sure the clean rule for ssh, ssl, eunit and otp_mibs
actually removes generated files.
--- parsetools-2.0.12 ---------------------------------------------------
OTP-12238 The line counter becomes invalid when rules with linewrap are
used. This issue appears because the parsing FSM does not
roll back the line counter after attempting such a rule.
--- percept-0.8.10 ------------------------------------------------------
OTP-12197 Make sure to install .hrl files when needed
--- runtime_tools-1.8.15 ------------------------------------------------
OTP-12298 Add nif_version to erlang:system_info/1 in order to get the
NIF API version of the runtime system in a way similar to
driver_version.
--- snmp-5.1.1 ----------------------------------------------------------
OTP-12066 [compiler] Refinement of type Opaque was not allowed. MIB
constructs such as "SYNTAX Opaque (SIZE(0..65535))" was
previously not allowed, this has now been fixed. See the
standard ALARM-MIB for eaxmple.
--- ssh-3.1 -------------------------------------------------------------
OTP-11329 Fix option user_interaction to work as expected. When
password authentication is implemented with ssh
keyboard-interactive method and the password is already
supplied, so that we do not need to query user, then
connections should succeed even though user_interaction
option is set to false.
OTP-11542 Added API functions ptty_alloc/3 and ptty_alloc/4, to
allocate a pseudo tty.
OTP-12157 Gracefully handle bad data from the client when expecting ssh
version exchange.
OTP-12168 When restarting an ssh daemon, that was stopped with
ssh:stop_listner/ [1,2] new options given shall replace old
ones.
OTP-12180 Supports tar file creation on other media than file systems
mounted on the local machine.
The erl_tar api is extended with erl_tar:init/3 that enables
usage of user provided media storage routines. A ssh-specific
set of such routines is hidden in the new function
ssh_sftp:open_tar/3 to simplify creating a tar archive on a
remote ssh server.
A chunked file reading option is added to erl_tar:add/3,4 to
save memory on e.g small embedded systems. The size of the
slices read from a file in that case can be specified.
OTP-12185 Always send SSH_DISCONNECT protocol messages when peer sends
corrupt messages.
OTP-12194 The option parallel_login didn't work with the value true.
All logins were serial.
OTP-12200 Make sure the clean rule for ssh, ssl, eunit and otp_mibs
actually removes generated files.
OTP-12247 Fixes of login blocking after port scanning.
OTP-12256 Improved Property Tests (Thanks to Thomas, John and Tobias at
QuviQ)
OTP-12277 Correct typo of renegotiate that could cause rekeying to fail
OTP-12306 The {timeout, Timeout} option passed to
ssh_sftp:start_channel was not applied to the early phases of
the SSH protocol. This patch passes the Timeout through to
ssh:connect. In case the timeout occurs during these phases,
{error, timeout} is returned. (Thanks to Simon Cornish)
OTP-12312 Hooks for funs that can change binaries sent to remote sites
from erl_tar for renote tar file creation are added. See
ssh_sftp:open_tar/3,4 for details. The hooks could also be
used to read remote tar files that need transformation before
file extraction.
Those hooks are intended for encryption and decryption of tar
files. Effort is put into memory, disk and network resource
economy.
--- ssl-5.3.8 -----------------------------------------------------------
OTP-12198 Handle the fact that servers may send an empty SNI extension
to the client.
OTP-12200 Make sure the clean rule for ssh, ssl, eunit and otp_mibs
actually removes generated files.
OTP-12341 Change code to reflect that state data may be secret to avoid
breaking dialyzer contracts.
--- stdlib-2.3 ----------------------------------------------------------
OTP-12036 The documentation of string:tokens/2 now explicitly specifies
that adjacent separator characters do not give any empty
strings in the resulting list of tokens.
OTP-12180 Supports tar file creation on other media than file systems
mounted on the local machine.
The erl_tar api is extended with erl_tar:init/3 that enables
usage of user provided media storage routines. A ssh-specific
set of such routines is hidden in the new function
ssh_sftp:open_tar/3 to simplify creating a tar archive on a
remote ssh server.
A chunked file reading option is added to erl_tar:add/3,4 to
save memory on e.g small embedded systems. The size of the
slices read from a file in that case can be specified.
OTP-12187 Fix broken deprecation warnings in ssh application
OTP-12190 Maps: Properly align union typed assoc values in
documentation
OTP-12212 Fix filelib:wildcard/2 when 'Cwd' ends with a dot
OTP-12213 Allow Name/Arity syntax in maps values inside attributes.
OTP-12224 Fix edlin to correctly save text killed with ctrl-u. Prior to
this fix, entering text into the Erlang shell and then
killing it with ctrl-u followed by yanking it back with
ctrl-y would result in the yanked text being the reverse of
the original killed text.
OTP-12263 If a callback function was terminated with exit/1, there
would be no stack trace in the ERROR REPORT produced by
gen_server. This has been corrected.
To keep the backwards compatibility, the actual exit reason
for the process is not changed.
OTP-12264 Warnings produced by ms_transform could point out the wrong
line number.
OTP-12315 I/O requests are optimized for long message queues in the
calling process.
--- syntax_tools-1.6.17 -------------------------------------------------
OTP-12265 Teach Maps to erl_syntax
Affected functions:
-- erl_syntax:abstract/1
-- erl_syntax:concrete/1
-- erl_syntax:is_leaf/1
-- erl_syntax:is_literal/1
--- test_server-3.7.2 ---------------------------------------------------
OTP-11766 The source code to html code generator in Test Server (and
Common Test) would fail to generate anchors in the html code
for functions with non-expandable macros, resulting in bad
html links to such functions. This correction lets the code
generator ignore macros that can't be expanded (i.e. not
pre-process them), so that correct anchors will always be
produced.
OTP-12197 Make sure to install .hrl files when needed
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
--- tools-2.7.1 ---------------------------------------------------------
OTP-12214 Fixed a typo in erlang-mode comment.
OTP-12283 Add a skeleton for -spec in Erlang mode for Emacs
OTP-12328 Cover no longer crashes when compiling receive and the like
with just an after clause. Thanks to José Valim for
providing a fix.
--- wx-1.3.2 ------------------------------------------------------------
OTP-12259 Fixed a minor typo in the graphicsContext example.
OTP-12348 Distribute autoconf helpers to applications at build time
instead of having multiple identical copies committed in the
repository.
--- Open Source Contributors --------------------------------------------
Thanks to: Andrey Tsirulev, Anthony Ramine, Christopher Faulet,
David N. Welton, Derek Brown, Dmitry Belyaev, Emil Holmström,
Evgeny M, Garret Smith, Jani Hakala, Josh Adams, José Valim,
Kirill Zaborsky, Magnus Henoch, Matwey V. Kornilov, Olle Mattsson,
Paul Guyot, Peter Lemenkov, Sebastian Strollo, Simon Cornish,
Sina Samavati, Steve Vinoski, Thomas Arts, Tuncer Ayaz,
Vlad Dumitrescu, Vladimir Shmalko, Yuki Ito, adelzhang, archimed,
dcy, goofansu, jmrepetti
Erlang/OTP 17.4
This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).
docker run -it erlang:17.4