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- 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