From f719d0fe308f00b85f92c29d7cdf9b0dc20d98a2 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 7 Apr 2014 19:52:48 +0200 Subject: Update release notes --- erts/doc/src/notes.xml | 709 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 709 insertions(+) (limited to 'erts') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index b4ebef72f4..eba4cdf06f 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -30,6 +30,715 @@

This document describes the changes made to the ERTS application.

+
Erts 6.0 + +
Fixed Bugs and Malfunctions + + +

+ The option dupnames did not work as intended in re. When + looking for names with {capture, [Name, ...]}, re:run + returned a random instance of the match for that name, + instead of the leftmost matching instance, which was what + the documentation stated. This is now corrected to adhere + to the documentation. The option {capture,all_names} + along with a re:inspect/2 function is also added to + further help in using named subpatterns.

+

+ Own Id: OTP-11205

+
+ +

+ Allow loading of NIF library with unicode path name

+

+ Own Id: OTP-11408

+
+ +

+ Allow loading of driver with unicode path name

+

+ Own Id: OTP-11549

+
+ +

+ Fixed a bug where starting Erlang without having an open + stdin on fd 0 would sometimes deadlock the emulator when + terminating.

+

+ Own Id: OTP-11558

+
+ +

+ The option '-names' in epmd now works on Windows (Thanks + to Johannes Weißl)

+

+ Own Id: OTP-11565

+
+ +

+ Correction of the examples in escript documentation. + (Thanks to Pierre Fenoll).

+

+ Own Id: OTP-11577

+
+ +

+ Fix bs_get_integer instruction

+

+ The instruction bs_get_integer could unnecessarily + trigger a garbage collection in failure cases which is + unwanted or outright dangerous.

+

+ Ex:

+

+ <<X:Sz,_/bits>> = <<"some + binary">>

+

+ Previously, if Sz induced X to a bignum it would reserved + memory size this on the heap via a garbage collection + before checking if the size could actually match.

+

+ It will now check the binary size before triggering a + collection.

+

+ Own Id: OTP-11581

+
+ +

+ Remove heap space overestimation in binary_to_term + (and remote message reception) for integers in the + intervals [-2147483648,-1] and [256,2147483647] on 64-bit + emulators.

+

+ Own Id: OTP-11585

+
+ +

+ Add support for detecting the separate tinfo library from + ncurses (Thanks to Dirkjan Ochtman)

+

+ Own Id: OTP-11590

+
+ +

+ Deprecation warning for system_flag(cpu_topology) has + been extended for removal in OTP 18 (Thanks to Steve + Vinoski for the update)

+

+ Own Id: OTP-11602

+
+ +

+ Documentation improvement regarding some awkward wording + around the +spp flag. (Thanks to Brian L. Troutwine )

+

+ Own Id: OTP-11607

+
+ +

+ Fixed bug where sendfile would return the wrong error + code for a remotely closed socket if the socket was in + passive mode. (Thanks to Vincent Siliakus for reporting + the bug.)

+

+ Own Id: OTP-11614

+
+ +

+ Increase garbage collection tenure rate

+

The garbage collector tries to maintain the previous + heap block size during a minor gc, i.e. 'need' is not + utilized in determining the size of the new heap, instead + it relies on tenure and garbage to be sufficiently + large.

+

In instances during intense growing with exclusively + live data on the heap coupled with delayed tenure, + fullsweeps would be triggered directly after a minor gc + to make room for 'need' since the new heap would be + full.

+

To remedy this, the tenure of terms on the minor heap + will always happen (if it is below the high watermark) + instead of every other minor gc.

+

Characteristics Impact: Reduced CPU-time spent in + garbage collection but may infer delays in collecting + garbage from the heap. Tweak 'fullsweep_after' options to + increase gc pressure if needed.

+

+ Own Id: OTP-11617

+
+ +

+ Fix bug when comparing integers with floats larger than + 2^992. The bug could potentially cause memory corruption + on 32-bit emulators.

+

+ Own Id: OTP-11618

+
+ +

+ Cross-compilation fixes for TileraMDE-3.0.1.125620

+

+ Own Id: OTP-11635

+
+ +

+ sendfile no longer uses async threads by default

+

+ This has been done because a slow client attack is + possible if the async thread pool is used. The scenario + is:

+

+ Client does a request for a file and then slowly receives + the file one byte at a time. This will eventually fill + the async thread pool with blocking sendfile operations + and thus starving the vm of all file operations.

+

+ If you still want to use the async threads pool for + sendfile an option to enable it has been introduced.

+

+ Thanks to Christopher Faulet for identifying this + vulnerability.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11639

+
+ +

+ Do proper rollback of calls to + enif_open_resource_type when load/upgrade + callbacks of NIF library return failure.

+

+ Own Id: OTP-11722

+
+ +

+ Changed the default configuration when configuring with + $ERL_TOP/configure to be the same as when + configuring with $ERL_TOP/otp_build configure.

+

+ Previously floating point exceptions got enabled by + default on Linux when HiPE was enabled when configuring + with $ERL_TOP/configure, but not when configuring + with $ERL_TOP/otp_build configure. The default is + now in both cases not to use floating point exceptions + since there still exist unresolved issues with floating + point exceptions on Linux.

+

+ For more information see $ERL_TOP/HOWTO/INSTALL.md.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11723

+
+ +

+ A comment in erl_db_tree.c no longer differ from the + code. (Thanks to Cobus Carstens)

+

+ Own Id: OTP-11793

+
+ +

+ Fix epmd debug functionality for VxWorks (Thanks to Jay + True)

+

+ Own Id: OTP-11808

+
+ +

+ Use closefrom/2 when available in child_setup (Thanks to + Rick Reed and Anthony Ramine)

+

+ Own Id: OTP-11809

+
+ +

+ Fix dtrace/systemtap bug where the probe arguments would + be concatenated due to faulty length calculation.

+

+ Thanks to Michal Ptaszek and Scott Lystig Fritchie

+

+ Own Id: OTP-11816

+
+ +

+ It is now better documented that the +fn* flags to + erl also affect how command line parameters and + environment variables are read. (Thanks to Vlad + Dumitrescu)

+

+ Own Id: OTP-11818

+
+
+
+ + +
Improvements and New Features + + +

+ Options to set match_limit and match_limit_recursion are + added to re:run. The option report_errors is also added + to get more information when re:run fails due to limits + or compilation errors.

+

+ Own Id: OTP-10285

+
+ +

Dialyzer's unmatched_return warnings have been + corrected.

+

+ Own Id: OTP-10908

+
+ +

+ A common case is to wrap an argument to + list_to_binary/1 in a list to ensure conversion + can happen even though the argument may already be a + binary. Take special care of this case and do not copy + binary.

+

+ Impact: May cause incompatibility since a single binary + is no longer copied. Use binary:copy/1,2 instead.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11082

+
+ +

+ Make erlang:open_port/2 spawn and spawn_executable handle + unicode.

+

+ Own Id: OTP-11105

+
+ +

+ Handle unicode (widestring) in erl, erlc, heart, etc on + windows.

+

+ Own Id: OTP-11135

+
+ +

+ The version of the PCRE library Used by Erlang's re + module is raised to 8.33 from 7.6. This means, among + other things, better Unicode and Unicode Character + Properties support. New options connected to PCRE 8.33 + are also added to the re module (ucd, notempty_atstart, + no_start_optimize). PCRE has extended the regular + expression syntax between 7.6 and 8.33, why this imposes + a potential incompatibility. Only very complicated + regular expressions may be affected, but if you know you + are using obscure features, please test run your regular + expressions and verify that their behavior has not + changed.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11204

+
+ +

Filenames containing UTF-8 encoded characters can now + be handled by erlc.

+

If you have set the ERLC_EMULATOR environment + variable, note that erlc in OTP 17 will only work + with erl in OTP 17 since the protocol between the + erlc program and the erl_compile module has + changed.

+

+ Own Id: OTP-11248

+
+ +

+ By giving --enable-static-{nifs,drivers} to configure it + is now possible to statically linking of nifs and drivers + to the main Erlang VM binary. At the moment only the asn1 + and crypto nifs of the Erlang/OTP nifs and drivers have + been prepared to be statically linked. For more details + see the Installation Guide in the System documentation.

+

+ Own Id: OTP-11258

+
+ +

+ Erlang/OTP has been ported to the realtime operating + system OSE. The port supports both smp and non-smp + emulator. For details around the port and how to started + see the User's Guide in the ose application.

+

+ Note that not all parts of Erlang/OTP has been ported.

+

+ Notable things that work are: non-smp and smp emulators, + OSE signal interaction, crypto, asn1, run_erl/to_erl, + tcp, epmd, distribution and most if not all non-os + specific functionality of Erlang.

+

+ Notable things that does not work are: udp/sctp, os_mon, + erl_interface, binding of schedulers.

+

+ Own Id: OTP-11334

+
+ +

+ Add the {active,N} socket option for TCP, UDP, and SCTP, + where N is an integer in the range -32768..32767, to + allow a caller to specify the number of data messages to + be delivered to the controlling process. Once the + socket's delivered message count either reaches 0 or is + explicitly set to 0 with inet:setopts/2 or by including + {active,0} as an option when the socket is created, the + socket transitions to passive ({active, false}) mode and + the socket's controlling process receives a message to + inform it of the transition. TCP sockets receive + {tcp_passive,Socket}, UDP sockets receive + {udp_passive,Socket} and SCTP sockets receive + {sctp_passive,Socket}.

+

+ The socket's delivered message counter defaults to 0, but + it can be set using {active,N} via any gen_tcp, gen_udp, + or gen_sctp function that takes socket options as + arguments, or via inet:setopts/2. New N values are added + to the socket's current counter value, and negative + numbers can be used to reduce the counter value. + Specifying a number that would cause the socket's counter + value to go above 32767 causes an einval error. If a + negative number is specified such that the counter value + would become negative, the socket's counter value is set + to 0 and the socket transitions to passive mode. If the + counter value is already 0 and inet:setopts(Socket, + [{active,0}]) is specified, the counter value remains at + 0 but the appropriate passive mode transition message is + generated for the socket.

+

+ Thanks to Steve Vinoski

+

+ Own Id: OTP-11368

+
+ +

+ A new optional scheduler utilization balancing mechanism + has been introduced. For more information see the + +sub command + line argument.

+

+ Characteristics impact: None, when not enabled. When + enabled, changed timing in the system, normally a small + overhead due to measuring of utilization and calculating + balancing information. On some systems, such as old + Windows systems, the overhead can be quite substantial. + This time measurement overhead highly depend on the + underlying primitives provided by the OS.

+

+ Own Id: OTP-11385

+
+ +

+ A call to either the garbage_collect/1 BIF or the + check_process_code/2 BIF may trigger garbage + collection of another processes than the process calling + the BIF. The previous implementations performed these + kinds of garbage collections without considering the + internal state of the process being garbage collected. In + order to be able to more easily and more efficiently + implement yielding native code, these types of garbage + collections have been rewritten. A garbage collection + like this is now triggered by an asynchronous request + signal, the actual garbage collection is performed by the + process being garbage collected itself, and finalized by + a reply signal to the process issuing the request. Using + this approach processes can disable garbage collection + and yield without having to set up the heap in a state + that can be garbage collected.

+

+ The garbage_collect/2, + and check_process_code/3 + BIFs have been introduced. Both taking an option list as + last argument. Using these, one can issue asynchronous + requests.

+

+ code:purge/1 and code:soft_purge/1 have + been rewritten to utilize asynchronous + check_process_code requests in order to + parallelize work.

+

+ Characteristics impact: A call to the + garbage_collect/1 BIF or the + check_process_code/2 BIF will normally take longer + time to complete while the system as a whole wont be as + much negatively effected by the operation as before. A + call to code:purge/1 and code:soft_purge/1 + may complete faster or slower depending on the state of + the system while the system as a whole wont be as much + negatively effected by the operation as before.

+

+ Own Id: OTP-11388 Aux Id: OTP-11535, OTP-11648

+
+ +

+ Cleanup 'Buckets' and 'Time left' fields in crashdump to + ease parsing.

+

+ Own Id: OTP-11419

+
+ +

+ Add sync option to file:open/2.

+

+ The sync option adds the POSIX O_SYNC flag to the open + system call on platforms that support the flag or its + equivalent, e.g., FILE_FLAG_WRITE_THROUGH on Windows. For + platforms that don't support it, file:open/2 returns + {error, enotsup} if the sync option is passed in. Thank + to Steve Vinoski and Joseph Blomstedt

+

+ Own Id: OTP-11498

+
+ +

+ erlang:binary_to_term will now cost an appropriate amount + of reductions and will interrupt (yield) for reschedule + if the term is big. This avoids too long schedules when + binary_to_term is used. (Thanks to Svante Karlsson for + the original patch)

+

+ Impact: Programs running binary_to_term on large binaries + will run more smoothly, but rescheduling will impact the + single process performance of the BIF. Single threaded + benchmarks might show degraded performance of the BIF, + while general system behaviour will be improved.

+

+ Own Id: OTP-11535 Aux Id: OTP-11388

+
+ +

+ Added high resolution icon for windows. (Thanks to Daniel + Goertz for the inspiration.)

+

+ Own Id: OTP-11560

+
+ +

+ Migration of memory carriers has been enabled by default + on all ERTS internal memory allocators based on the + alloc_util + framework except for temp_alloc. That is, +M<S>acul + de is default for these allocators. Note + that this also implies changed allocation strategies for + all of these allocators. They will all now use the + "address order first fit carrier best fit" strategy.

+

+ By passing +Muacul 0 on the command line, all + configuration changes made by this change will be + reverted.

+

+ Characteristics impact: Improved memory characteristics + with a smaller memory footprint at the expense of a quite + small performance cost.

+

+ Own Id: OTP-11604 Aux Id: OTP-10279

+
+ +

A clarification has been added to the documentation of + -on_load() in the Reference Manual that it is only + recommended for loading NIF libraries.

+

+ Own Id: OTP-11611

+
+ +

+fnaw is now default when starting the + emulator; it used to be +fnl.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11612

+
+ +

+ EEP43: New data type - Maps

+

+ With Maps you may for instance: M0 = + #{ a => 1, b => 2}, % create + associations M1 = M0#{ a := 10 }, % + update values M2 = M1#{ "hi" => + "hello"}, % add new associations #{ + "hi" := V1, a := V2, b := V3} = M2. % match keys with + values

+

+ For information on how to use Maps please see the + Reference + Manual.

+

+ The current implementation is without the following + features: No variable keys + No single value access No map + comprehensions

+

+ Note that Maps is experimental during OTP 17.0.

+

+ Own Id: OTP-11616

+
+ +

+ The previously deprecated driver API function + driver_async_cancel() has been removed. Due to + this, the driver API version has been bumped to 3.0.

+

+ Thanks to Steve Vinoski.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11628

+
+ +

+ Experimental "dirty scheduler" functionality has been + introduced. In order to try the functionality out, you + need to pass the command line argument + --enable-dirty-schedulers to configure when + building the system.

+

+ Dirty schedulers can currently only be used by NIFs on a + system with SMP support. More information can be found in + the erl_nif(3) + documentation, the erl(1) documentation, and + in the git commit comment of commit + 'c1c03ae4ee50e58b7669ea88ec4d29c6b2b67c7b'.

+

+ Note that the functionality is experimental, and + not supported. This functionality will + be subject to backward incompatible changes. You should + not enable the dirty scheduler functionality on + production systems. It is only provided for testing.

+

+ Thanks to Steve Vinoski.

+

+ Own Id: OTP-11629

+
+ +

+ Improve reduction cost and yielding of + term_to_binary. The reduction cost is increased + and garbage collection is disabled during yield.

+

+ Impact: Improves system responsiveness when + term_to_binary is called with large terms without + significant degradation of single threaded performance.

+

+ Own Id: OTP-11648 Aux Id: OTP-11388

+
+ +

+ By default, the system's version of zlib will be used, + provided its version is 1.2.4 or higher; otherwise the + built-in zlib will be used. The built-in version of zlib + has been bumped to 1.2.8. (Use the + --enable-builtin-zlib option to configure + to force the use of the built-in zlib.)

+

+ Own Id: OTP-11669

+
+ +

+ The default float encoding in binary_to_term and + external_size has been changed to use minor_mode 1 + instead of 0.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11738

+
+ +

+ Introduced the configure option + --with-assumed-cache-line-size=SIZE. For more + information see $ERL_TOP/HOWTO/INSTALL.md.

+

+ Own Id: OTP-11742

+
+ +

+ Halfword emulator is marked as deprecated. It still works + as before but is planned to be removed in a future major + release.

+

+ Own Id: OTP-11777

+
+ +

+ The external format for Maps has changed in a way that is + not compatible with the format used in OTP 17.0-rc1 and + OTP 17.0-rc2.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11782

+
+ +

+ Fixed faulty make dependency that would make some make + versions fail while building gen_git_version.mk.

+

+ Own Id: OTP-11784

+
+ +

+ Introduced functionality for allowing old drivers and NIF + libraries to be loaded during a transition period. For + more information see the version + management section in the erl_driver(3) + documentation and the version + management section in the erl_nif(3) + documentation.

+

+ Own Id: OTP-11799

+
+ +

+ Support file paths longer than 259 characters on Windows. + Long absolute paths are automatically converted to UNC + format with a \\?\ prefix which is the only way to + represent long paths. The 259 character limit still + applies for individual file names, relative paths and the + current working directory.

+

+ Own Id: OTP-11813

+
+ +

+ Document that escript:create/2 also accepts a 3-elements + tuple containing files and zip:create/3 options to build + a zip file.

+

+ Thanks to Pierre Fenoll

+

+ Own Id: OTP-11827

+
+ +

+ Add systemd socket activation for epmd.

+

+ Thanks to Matwey V. Kornilov

+

+ Own Id: OTP-11829

+
+
+
+ +
+
Erts 5.10.4
Fixed Bugs and Malfunctions -- cgit v1.2.3