From eaf8ca41dfa4850437ad270d3897399c9358ced0 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Tue, 30 May 2017 16:15:30 +0200 Subject: Prepare release --- lib/stdlib/doc/src/notes.xml | 412 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 412 insertions(+) (limited to 'lib/stdlib/doc/src/notes.xml') diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index a8a252cb35..fad0896d9b 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -31,6 +31,418 @@

This document describes the changes made to the STDLIB application.

+
STDLIB 3.4 + +
Fixed Bugs and Malfunctions + + +

For many releases, it has been legal to override a BIF + with a local function having the same name. However, + calling a local function with the same name as guard BIF + as filter in a list comprehension was not allowed.

+

+ Own Id: OTP-13690

+
+ +

A new (default) pseudo-random number generator + algorithm Xoroshiro116+ has been implemented in the + rand module.

The old algorithm + implementations had a number of flaws so they are all + deprecated, but corrected versions of two of them have + been added. See the documentation.

+

+ Own Id: OTP-14295 Aux Id: PR-1372

+
+ +

The Erlang shell, qlc:string_to_handle(), and + the Debugger (the Evaluator area and Edit variable window + of the Bindings area) can parse pids, ports, references, + and external funs, as long as they can be created in the + running system.

+

+ Own Id: OTP-14296

+
+ +

Internal code change: Calls to catch followed + by a call to erlang:get_stacktrace/0 has been + rewritten to use try instead of catch to + make the code future-proof.

+

+ Own Id: OTP-14400

+
+ +

The state machine engine gen_statem can now + handle generic time-outs (multiple named) as well as + absolute time-out time. See the documentation.

+ The gen_statem callback Module:init/1 has + become mandatory to harmonize with other gen_* + modules. This may be an incompatibility for + gen_statem callback modules that use + gen_statem:enter_loop/4-6.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14531

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

+ Improved unicode support for strings. Added normalization + functions in the unicode module. Extended the + string module API with new functions with improved + unicode handling and that works on grapheme clusters. The + new functions operates on the unicode:chardata() + type, thus they also accept UTF-8 binaries as + input.

+

+ The old string API have been marked as obsolete. The + return values have been changed for some error cases.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-10289 Aux Id: OTP-10309

+
+ +

There are two new guard BIFs 'floor/1' and + 'ceil/1'. They both return integers. In the + 'math' module, there are two new BIFs with the + same names that return floating point values.

+

+ Own Id: OTP-13692

+
+ +

+ Making code_change, terminate and handle_info callbacks + optional in the OTP behaviours.

+

+ Own Id: OTP-13801

+
+ +

The support for Dets files created with Erlang/OTP R7 + and earlier is removed.

+

+ Own Id: OTP-13830

+
+ +

Replaced usage of deprecated symbolic time + unit representations.

+

+ Own Id: OTP-13831 Aux Id: OTP-13735

+
+ +

The function fmod/2 has been added to the + math module.

+

+ Own Id: OTP-14000

+
+ +

The EXIT signals received from processes using + proc_lib now looks like EXIT signals from + processes that were spawned using spawn_link. In + particular, that means that the stack trace is now + included in the EXIT signal so that it can see where the + process crashed.

+

+ Own Id: OTP-14001

+
+ +

sets:add_element/2 is faster when adding an + element that is already present, and + sets:del_element/2 is faster when the element to + be deleted is not present. This optimization can make + certain operations, such as sets:union/2 with many + overlapping elements, up to two orders of magnitude + faster.

+

+ Own Id: OTP-14035

+
+ +

+ Add information in doc about supervisor shutdown reason + when maximum restart frequency is reached.

+

+ Own Id: OTP-14037 Aux Id: PR-1233

+
+ +

+ Added rand:jump/[0|1] functions.

+

+ Own Id: OTP-14038 Aux Id: PR-1235

+
+ +

Functions for detecting changed code has been added. + code:modified_modules/0 returns all currently + loaded modules that have changed on disk. + code:module_status/1 returns the status for a + module. In the shell and in c module, mm/0 + is short for code:modified_modules/0, and + lm/0 reloads all currently loaded modules that + have changed on disk.

+

+ Own Id: OTP-14059

+
+ +

Each assert macro in assert.hrl now has a + corresponding version with an extra argument, for adding + comments to assertions. These can for example be printed + as part of error reports, to clarify the meaning of the + check that failed.

+

+ Own Id: OTP-14066

+
+ +

error_logger_tty_h and + error_logger_file_h now inserts the node + information for nonlocal messages before the message + itself instead of after, both for readability and so as + not to change the line termination property at the end of + the message.

+

+ Own Id: OTP-14068

+
+ +

The Erlang code linter checks for badly formed type + constraints.

+

+ Own Id: OTP-14070 Aux Id: PR-1214

+
+ +

By default, there will now be a warning when + export_all is used. The warning can be disabled + using nowarn_export_all.

+

+ Own Id: OTP-14071

+
+ +

When a gen_server process crashes, the + stacktrace for the client will be printed to facilitate + debugging.

+

+ Own Id: OTP-14089

+
+ +

+ Optimized ETS operations by changing table identifier + type from integer to reference. The reference enables a + more direct mapping to the table with less potential lock + contention and makes especially creation and deletion of + tables scale much better.

+

+ The change of the opaque type for the ETS table + identifiers may cause failure in code that make faulty + assumptions about this opaque type.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14094

+
+ +

take/2 has been added to dict, + orddict, and gb_trees. take_any/2 + has been added to gb_trees.

+

+ Own Id: OTP-14102

+
+ +

+ Extend gen_event API to handle options as well.

+

+ Own Id: OTP-14123

+
+ +

+ Advice on how to tune the supervisor restart frequency + (intensity and period) is added to System Documentation - + Design Principles - Supervisor Behaviour.

+

+ Own Id: OTP-14168 Aux Id: PR-1289

+
+ +

+ gen_fsm is deprecated and is replaced by gen_statem, + however for backwards compatibility reasons gen_fsm may + continue to exist as an undocumented feature for quite + some time.

+

+ Own Id: OTP-14183

+
+ +

The shell functions c/1 and c/2 have + been extended so that if the argument is a module name + instead of a file name, it automatically locates the + .beam file and the corresponding source file, and then + recompiles the module using the same compiler options + (plus any options passed to c/2). If compilation fails, + the old beam file is preserved. Also adds c(Mod, Opts, + Filter), where the Filter argument allows you to + remove old compiler options before the new options are + added.

New utility functions file_find/2/3 + and find_source/1/2/3 have been added to + filelib.

+

+ Own Id: OTP-14190

+
+ +

erl_tar in previous versions of OTP only + supports the USTAR format. That limited path names to at + most 255 bytes, and did not support Unicode characters in + names in a portable way.

+

erl_tar now has support for reading tar + archives in the formats currently in common use, such as + v7, STAR, USTAR, PAX, and GNU tar's extensions to the + STAR/USTAR format. When writing tar archives, + erl_tar can now write them in the PAX + format if necessary (for example, to support very long + filenames or filenames with Unicode characters). If + possible, erl_tar will still write tar archives in + the USTAR for maximum portability.

+

+ Own Id: OTP-14226

+
+ +

base64:mime_decode/1 has been optimized so that + it is now almost as fast asbase64:decode/1; it + used be noticably slower.

+

+ Own Id: OTP-14245

+
+ +

erl_tar will now strip any leading '/' + from pathnames when extracting files from a tar archive + and write a message to the error logger. There is also + new check for directory traversal attacks; if a relative + path points above the current working directory the + extraction will be aborted.

+

+ Own Id: OTP-14278

+
+ +

Miscellaneous updates due to atoms containing + arbitrary Unicode characters.

+

+ Own Id: OTP-14285

+
+ +

+ The Crypto application now supports generation of + cryptographically strong random numbers (floats < 1.0 + and integer arbitrary ranges) as a plugin to the 'rand' + module.

+

+ Own Id: OTP-14317 Aux Id: PR-1372

+
+ +

+ Add new function ets:select_replace/2 which + performs atomic "compare-and-swap" operations for ETS + objects using match specifications.

+

+ Own Id: OTP-14319 Aux Id: PR-1076

+
+ +

The Erlang code linter checks for bad dialyzer + attributes. It also checks for bad type variables in type + declarations.

+

+ Own Id: OTP-14323

+
+ +

Two new functions has been implemented in the + rand module; normal/2 and + normal_s/3, that both produce normal distribution + (pseudo) random numbers with mean value and variance + according to arguments.

+

+ Own Id: OTP-14328 Aux Id: PR-1382

+
+ +

+ Upgraded the OTP internal PCRE library from version 8.33 + to version 8.40. This library is used for implementation + of the re + regular expressions module.

+

+ Besides various bug fixes, the new version allows for + better stack protection. In order to utilize this + feature, the stack size of normal scheduler threads is + now by default set to 128 kilo words on all platforms. + The stack size of normal scheduler threads can be set + upon system start by passing the +sss + command line argument to the erl command.

+

+ See http://pcre.org/original/changelog.txt + for information about changes made to PCRE between the + versions 8.33 and 8.40.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14331 Aux Id: ERL-208

+
+ +

+ Added function re:version/0 which returns + information about the OTP internal PCRE version used for + implementation of the re module.

+

+ Own Id: OTP-14347 Aux Id: PR-1412

+
+ +

The format of debug information that is stored in BEAM + files (when debug_info is used) has been changed. + The purpose of the change is to better support other + BEAM-based languages such as Elixir or LFE.

+

All tools included in OTP (dialyzer, debugger, cover, + and so on) will handle both the new format and the + previous format. Tools that retrieve the debug + information using beam_lib:chunk(Beam, + [abstract_code]) will continue to work with both the + new and old format. Tools that call + beam_lib:chunk(Beam, ["Abst"]) will not work with + the new format.

+

For more information, see the description of + debug_info in the documentation for + beam_lib and the description of the + {debug_info,{Backend,Data}} option in the + documentation for compile.

+

+ Own Id: OTP-14369 Aux Id: PR-1367

+
+ +

+ Add option hibernate_after to gen_server, gen_statem and + gen_event. Also added to the deprecated gen_fsm + behaviour.

+

+ Own Id: OTP-14405

+
+ +

The size of crash reports created by + gen_server, gen_statem and proc_lib + is limited with aid of the Kernel application variable + error_logger_format_depth. The purpose is to limit + the size of the error_logger process when + processes with huge message queues or states crash.

+

The new function + error_logger:get_format_depth/0 can be used to + retrieve the value of the Kernel application variable + error_logger_format_depth.

+

+ Own Id: OTP-14417

+
+
+
+ +
+
STDLIB 3.3
Fixed Bugs and Malfunctions -- cgit v1.2.3