From bb19e24a485e9ef43bcca3fbe9757da83f70c3a0 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Tue, 19 Jun 2018 08:24:54 +0200 Subject: Prepare release --- lib/stdlib/doc/src/notes.xml | 421 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 421 insertions(+) (limited to 'lib/stdlib/doc') diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index bc90474465..611bfe73e0 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -31,6 +31,427 @@

This document describes the changes made to the STDLIB application.

+
STDLIB 3.5 + +
Fixed Bugs and Malfunctions + + +

gen_statem improvements.

When using an + exception that is valid but not allowed in a state enter + call, the reason has been changed from + {bad_action_from_state_function,Action} to + {bad_state_enter_action_from_state_function,Action}. +

Timer parsing has been improved. Many erroneous + timeout tuples was not handled correctly.

The + documentation has been updated, in particular the User's + Guide and the pointer to it from the Reference Manual is + much more obvious.

+

+ Own Id: OTP-14015

+
+ +

+ The type specifications for file:posix/0 and + inet:posix/0 have been updated according to which + errors file and socket operations should be able to + return.

+

+ Own Id: OTP-14019 Aux Id: ERL-550

+
+ +

File operations used to accept filenames + containing null characters (integer value zero). This + caused the name to be truncated and in some cases + arguments to primitive operations to be mixed up. + Filenames containing null characters inside the filename + are now rejected and will cause primitive file + operations to fail.

Also environment variable + operations used to accept names and + values of + environment variables containing null characters (integer + value zero). This caused operations to silently produce + erroneous results. Environment variable names and values + containing null characters inside the name or value are + now rejected and will cause environment variable + operations to fail.

Primitive environment + variable operations also used to accept the $= + character in environment variable names causing various + problems. $= characters in environment variable + names are now also rejected.

Also + os:cmd/1 now + reject null characters inside its command. +

erlang:open_port/2 + will also reject null characters inside the port name + from now on.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14543 Aux Id: ERL-370

+
+ +

Make io_lib:unscan_format/1 work with pad char + and default precision.

+

+ Own Id: OTP-14958 Aux Id: PR-1735

+
+ +

The control sequence modifiers t and l + can be used together in the same control sequence which + makes it possible to have Unicode atoms and no detection + of printable character lists at the same time.

+

+ Own Id: OTP-14971 Aux Id: PR-1743

+
+ +

Fix a bug in the Erlang code linter: the check of + guard expressions no longer returns false if the + map syntax is used. The bug affected the Erlang shell, + the Debugger, and other modules evaluating abstract code. +

+

+ Own Id: OTP-15035 Aux Id: ERL-613

+
+ +

+ A sys debug fun of type {Fun,State} should not be + possible to install twice. This was, however, possible if + the current State was 'undefined', which was mistaken for + non-existing fun. This has been corrected.

+

+ Own Id: OTP-15049

+
+ +

+ Fix io:putchars/2 stacktrace rewriting at errors + to point to a valid function.

+

+ Own Id: OTP-15101

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

+ The gen_server has gotten a new callback + handle_continue/2 for check pointing the state. + This is useful at least when implementing behaviours on + top of gen_server and for some start up scenarios.

+

+ Own Id: OTP-13019 Aux Id: PR-1490

+
+ +

The semantics of timeout parameter + {clean_timeout,infinity} to + gen_statem:call/3 has been changed to use a proxy + process for the call. With this change + clean_timeout implicates a proxy process with no + exceptions. This may be a hard to observe + incompatibility: in the presence of network problems a + late reply could arrive in the caller's message queue + when catching errors. That will not happen after this + correction.

The semantics of timeout parameter + infinity has not been changed.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-13073 Aux Id: PR-1595

+
+ +

A new logging API is added to Erlang/OTP, see the + logger(3) manual + page, and section Logging in the + Kernel User's Guide.

+

Calls to error_logger are automatically + redirected to the new API, and legacy error logger event + handlers can still be used. It is, however, recommended + to use the Logger API directly when writing new code.

+

Notice the following potential incompatibilities:

+

Kernel configuration parameters + error_logger still works, but is overruled if the + default handler's output destination is configured with + Kernel configuration parameter logger.

In + general, parameters for configuring error logger are + overwritten by new parameters for configuring + Logger.

The concept of SASL error + logging is deprecated, meaning that by default the SASL + application does not affect which log events are + logged.

By default, supervisor reports and crash + reports are logged by the default Logger handler started + by Kernel, and end up at the same destination (terminal + or file) as other standard log event from Erlang/OTP.

+

Progress reports are not logged by default, but can be + enabled by setting the primary log level to info, for + example with the Kernel configuration parameter + logger_level.

To obtain backwards + compatibility with the SASL error logging functionality + from earlier releases, set Kernel configuration parameter + logger_sasl_compatible to true. This + prevents the default Logger handler from logging any + supervisor-, crash-, or progress reports. Instead, SASL + adds a separate Logger handler during application start, + which takes care of these log events. The SASL + configuration parameters sasl_error_logger and + sasl_errlog_type specify the destination (terminal + or file) and severity level to log for these + events.

+

+ Since Logger is new in Erlang/OTP 21.0, we do reserve the + right to introduce changes to the Logger API and + functionality in patches following this release. These + changes might or might not be backwards compatible with + the initial version.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-13295

+
+ +

Add functions + calendar:system_time_to_local_time/2 and + calendar:system_time_to_universal_time/2.

+

+ Own Id: OTP-13413

+
+ +

Functions rand:uniform_real/0 and + rand:uniform_real_s/1 have been added. They + produce uniformly distributed numbers in the range 0.0 + =< X < 1.0 that are as close to random real + numbers as Normalized IEEE 754 Double Precision allows. + Because the random real number exactly 0.0 is + infinitely improbable they will never return exactly + 0.0.

These properties are useful when you + need to call for example math:log(X) or 1 / + X on a random value X, since that will never + fail with a number from these new functions.

+

+ Own Id: OTP-13764 Aux Id: PR-1574

+
+ +

+ Added maps:iterator/0 and maps:next/1 to be used for + iterating over the key-value associations in a map.

+

+ Own Id: OTP-14012

+
+ +

Changed the default behaviour of .erlang + loading: .erlang is no longer loaded from the + current directory. c:erlangrc(PathList) can be + used to search and load an .erlang file from user + specified directories.

escript, + erlc, dialyzer and typer no longer + load an .erlang at all.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14439

+
+ +

+ Added new uri_string module to stdlib for handling URIs + (RFC 3986).

+

+ Own Id: OTP-14496

+
+ +

+ Update Unicode specification to version 10.0.

+

+ Own Id: OTP-14503

+
+ +

filelib:wildcard() now allows characters with a + special meaning to be escaped using backslashes.

+

This is an incompatible change, but note that the use + of backslashes in wildcards would already work + differently on Windows and Unix. Existing calls to + filelib:wildcard() needs to be updated. On + Windows, directory separators must always be written as a + slash.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-14577

+
+ +

+ The supervisor now stores its child specifications in a + map instead of a list. This causes a significant + improvement when starting many children under a + non-simple_one_for_one supervisor.

+

+ Own Id: OTP-14586

+
+ +

The base64 module is optimized.

Note + that the functions encode/1, decode/1, and + mime_decode/1 fail unless called with an argument + of the documented type. They used to accept any + iodata().

+

+ Own Id: OTP-14624 Aux Id: PR-1565

+
+ +

Add function lists:search/2.

+

+ Own Id: OTP-14675 Aux Id: PR-102

+
+ +

+ uri_string module extended with functions for handling + application/x-www-form-urlencoded query strings based on + the HTML5 specification.

+

+ Own Id: OTP-14747

+
+ +

Add functions + calendar:rfc3339_to_system_time/1,2 and + calendar:system_time_to_rfc3339/1,2.

+

+ Own Id: OTP-14764

+
+ +

The stack traces returned by the functions of the + erl_eval module more accurately reflect where the + exception occurred.

+

+ Own Id: OTP-14826 Aux Id: PR 1540

+
+ +

Add options atime, mtime, ctime, + uid, and gid to the erl_tar:add/3,4 + functions.

+

+ Own Id: OTP-14834 Aux Id: PR 1608

+
+ +

Added ets:whereis/1 for retrieving the table + identifier of a named table.

+

+ Own Id: OTP-14884

+
+ +

+ Improved URI normalization functions in the uri_string + module.

+

+ Own Id: OTP-14910

+
+ +

The new functions io_lib:fwrite/3 and + io_lib:format/3 take a third argument, an option + list. The only option is chars_limit, which is + used for limiting the number of returned characters. The + limit is soft, which means that the number of returned + characters exceeds the limit with at most a smallish + amount. If the limit is set, the functions + format/3 and fwrite/3 try to distribute the + number of characters evenly over the control sequences + pPswW. Furthermore, the control sequences + pPwP try to distribute the number of characters + evenly over substructures.

A modification of the + control sequences pPwW is that even if there is no + limit on the number of returned characters, all + associations of a map are printed to the same depth. The + aim is to give a more consistent output as the order of + map keys is not defined. As before, if the depth is less + than the number of associations of a map, the selection + of associations to print is arbitrary.

+

+ Own Id: OTP-14983

+
+ +

Add functions ordsets:is_empty/1 and + sets:is_empty/1.

+

+ Own Id: OTP-14996 Aux Id: ERL-557, PR-1703

+
+ +

+ Improve performance of string:uppercase/1, + string:lowercase/1 and string:casefold/1 + when handling ASCII characters.

+

+ Own Id: OTP-14998

+
+ +

External funs with literal values for module, name, + and arity (e.g. erlang:abs/1) are now treated as + literals. That means more efficient code that produces + less garbage on the heap.

+

+ Own Id: OTP-15003

+
+ +

+ sys:statistics(Pid,get) did not report 'out' messages + from gen_server. This is now corrected.

+

+ Own Id: OTP-15047

+
+ +

+ A sys debug function can now have the format + {Id,Fun,State} in addition to the old {Fun,State}. This + allows installing multiple instances of a debug fun.

+

+ Own Id: OTP-15048

+
+ +

The lib module is removed:

lib:error_message/2 is + removed. lib:flush_receive/0 is + removed. lib:nonl/1 is + removed. lib:progname/0 is replaced + by ct:get_progname/0. + lib:send/2 is removed. + lib:sendw/2 is removed. +

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-15072 Aux Id: PR 1786, OTP-15114

+
+ +

+ Function ets:delete_all_objects/1 now yields the + scheduler thread for large tables that take significant + time to clear. This to improve real time characteristics + of other runnable processes.

+

+ Own Id: OTP-15078

+
+ +

In control sequences of the functions + io:fwrite/2,3 and io_lib:fwrite/2,3 + containing p or P, a field width of value + 0 means that no line breaks are inserted. This is + in contrast to the old behaviour, where 0 used to + insert line breaks after every subterm. To insert line + breaks after every subterm, a field width of value + 1 can be used.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-15103 Aux Id: ERL-607

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