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 --- lib/stdlib/doc/src/notes.xml | 384 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 384 insertions(+) (limited to 'lib/stdlib') diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index e94a4d6a55..15e6fdfa9f 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -30,6 +30,390 @@

This document describes the changes made to the STDLIB application.

+
STDLIB 2.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

+
+ +

+ If option 'binary' was set for standard_input, then c:i() + would hang if the output was more than one page long - + i.e. then input after "(c)ontinue (q)uit -->" could + not be read. This has been corrected. (Thanks to José + Valim)

+

+ Own Id: OTP-11589

+
+ +

+ stdlib/lists: Add function droplast/1 This functions + drops the last element of a non-empty list. lists:last/1 + and lists:droplast/1 are the dual of hd/1 and tl/1 but + for the end of a list. (Thanks to Hans Svensson)

+

+ Own Id: OTP-11677

+
+ +

+ Allow all auto imports to be suppressed at once. + Introducing the no_auto_import attribute: + -compile(no_auto_import). Useful for code generation + tools that always use the qualified function names and + want to avoid the auto imported functions clashing with + local ones. (Thanks to José Valim.)

+

+ Own Id: OTP-11682

+
+ +

+ supervisor_bridge does no longer report normal + termination of children. The reason is that in some + cases, for instance when the restart strategy is + simple_one_for_one, the log could be completely + overloaded with reports about normally terminating + processes. (Thanks to Artem Ocheredko)

+

+ Own Id: OTP-11685

+
+ +

The type annotations for alternative registries using + the {via, Module, Name} syntax for sup_name() and + sup_ref() in the supervisor module are now consistent + with the documentation. Dialyzer should no longer + complain about valid supervisor:start_link() and + supervisor:start_child() calls. (Thanks to Caleb + Helbling.)

+

+ Own Id: OTP-11707

+
+ +

Two Dets bugs have been fixed. When trying to open a + short file that is not a Dets file, the file was deleted + even with just read access. Calling + dets:is_dets_file/1 with a file that is not a Dets + file, a file descriptor was left open. (Thanks to Håkan + Mattsson for reporting the bugs.)

+

+ Own Id: OTP-11709

+
+ +

+ Fix race bug in ets:all. Concurrent creation of + tables could cause other tables to not be included in the + result. (Thanks to Florian Schintke for bug report)

+

+ Own Id: OTP-11726

+
+ +

+ erl_eval now properly evaluates '=='/2 when it is used in + guards. (Thanks to José Valim)

+

+ Own Id: OTP-11747

+
+ +

+ Calls to proplists:get_value/3 are replaced by the faster + lists:keyfind/3 in io_lib_pretty. Elements in the list + are always 2-tuples. (Thanks to Andrew Thompson)

+

+ Own Id: OTP-11752

+
+ +

A qlc bug where filters were erroneously optimized + away has been fixed. Thanks to Sam Bobroff for reporting + the bug.

+

+ Own Id: OTP-11758

+
+ +

+ A number of compiler errors where unusual or nonsensical + code would crash the compiler have been reported by Ulf + Norell and corrected by Anthony Ramine.

+

+ Own Id: OTP-11770

+
+ +

Since Erlang/OTP R16B the Erlang Core Linter + (erl_lint) has not emitted errors when built-in + types were re-defined. This bug has been fixed. (Thanks + to Roberto Aloi.)

+

+ Own Id: OTP-11772

+
+ +

+ The functions sys:get_state/1,2 and + sys:replace_state/2,3 are fixed so they can now be + run while the process is sys suspended. To accomplish + this, the new callbacks Mod:system_get_state/1 and + Mod:system_replace_state/2 are added, which are + also implemented by the generic behaviours + gen_server, gen_event and gen_fsm.

+

+ The potential incompatibility refers to

+

+ The previous behaviour of intercepting the + system message and passing a tuple of size 2 as the last + argument to sys:handle_system_msg/6 is no longer + supported. The error handling when + StateFun in sys:replace_state/2,3 fails is + changed from being totally silent to possibly (if the + callback module does not catch) throw an exception in the + client process.

+

+ (Thanks to James Fish and Steve Vinoski)

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11817

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

+
+ +

The pre-defined types array/0, dict/0, + digraph/0, gb_set/0, gb_tree/0, + queue/0, set/0, and tid/0 have been + deprecated. They will be removed in Erlang/OTP 18.0.

+

Instead the types array:array/0, + dict:dict/0, digraph:graph/0, + gb_set:set/0, gb_tree:tree/0, + queue:queue/0, sets:set/0, and + ets:tid/0 can be used. (Note: it has always been + necessary to use ets:tid/0.)

It is + allowed in Erlang/OTP 17.0 to locally re-define the types + array/0, dict/0, and so on.

New + types array:array/1, dict:dict/2, + gb_sets:set/1, gb_trees:tree/2, + queue:queue/1, and sets:set/1 have been + added.

A compiler option, + nowarn_deprecated_type, has been introduced. By + including the attribute

+ -compile(nowarn_deprecated_type).

in an Erlang + source file, warnings about deprecated types can be + avoided in Erlang/OTP 17.0.

The option can also + be given as a compiler flag:

erlc + +nowarn_deprecated_type file.erl +

+ Own Id: OTP-10342

+
+ +

+ Calls to erlang:open_port/2 with 'spawn' are updated to + handle space in the command path.

+

+ Own Id: OTP-10842

+
+ +

Dialyzer's unmatched_return warnings have been + corrected.

+

+ Own Id: OTP-10908

+
+ +

+ Forbid unsized fields in patterns of binary generators + and simplified v3_core's translation of bit string + generators. (Thanks to Anthony Ramine.)

+

+ Own Id: OTP-11186

+
+ +

+ 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

+
+ +

+ Added dict:is_empty/1 and orddict:is_empty/1. (Thanks to + Magnus Henoch.)

+

+ Own Id: OTP-11353

+
+ +

+ 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

+
+ +

Improve the documentation of the supervisor's + via reference. (Thanks to MaximMinin.)

+

+ Own Id: OTP-11399

+
+ +

orddict:from_list/1 now uses the optimized sort + routines in the lists module instead of + (essentially) an insertion sort. Depending on the input + data, the speed of the new from_list/1 is anything + from slightly faster up to several orders of magnitude + faster than the old from_list/1.

(Thanks to + Steve Vinoski.) +

+ Own Id: OTP-11552

+
+ +

+ 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

+
+ +

+ When tab completing the erlang shell now expands + zero-arity functions all the way to closing parenthesis, + unless there is another function with the same name and a + different arity. (Thanks to Pierre Fenoll.)

+

+ Own Id: OTP-11684

+
+ +

The Erlang Code Preprocessor (epp) could loop + when encountering a circular macro definition in an + included file. This bug has been fixed.

Thanks + to Maruthavanan Subbarayan for reporting the bug, and to + Richard Carlsson for providing a bug fix.

+

+ Own Id: OTP-11728

+
+ +

The Erlang Code Linter (erl_lint) has since + Erlang/OTP R13B emitted warnings whenever any of the + types arity(), bitstring(), + iodata(), or boolean() were re-defined. Now + errors are emitted instead.

+

+ *** POTENTIAL INCOMPATIBILITY ***

+

+ Own Id: OTP-11771

+
+ +

The encoding option of + erl_parse:abstract/2 has been extended to include + none and a callback function (a predicate).

+

+ Own Id: OTP-11807

+
+ +

+ Export zip option types to allow referal from other + modules.

+

+ Thanks to Pierre Fenoll and Håkan Mattson

+

+ Own Id: OTP-11828

+
+ +

+ The module pg has been deprecated and will be + removed in Erlang/OTP 18.

+

+ Own Id: OTP-11840

+
+
+
+ +
+
STDLIB 1.19.4
Fixed Bugs and Malfunctions -- cgit v1.2.1