Stdlib Release Notes
Stdlib 1.5.2
Fixed errors and malfunctions
-
ets:file2tab
which uses disk_log
now uses the read_only
option to disk_log:open
when it opens the file.
Own Id: OTP-1716
Aux Id: OTP-1765
-
On Unix, if the name of the current directory contained a blank,
os:cmd/1
would fail. This has been corrected.
Own Id: OTP-2026
-
It was possible for ets:all/1 to include malformed table
identifiers in the result. This has been fixed.
Own Id: OTP-2214
-
The compiler previously silently accepted that a module
defined a function with the same name and arity as an
imported function. This now causes an error.
Own Id: OTP-2338
Aux Id: seq 793
-
erl_scan:string/1 used to exit in many situations where it
should return an error tuple. This has been fixed.
Own Id: OTP-2347
-
When given a bad first argument, io:format/3, io:fwrite/3 and
io:fread/3 could hang instead of returning an error.
This has been fixed.
Own Id: OTP-2400
-
lists:seq/3 hanged instead of exiting for some invalid
arguments; e.g., lists:seq(1, 5, -1). This has been fixed.
Own Id: OTP-2404
-
Guard expressions could cause exit when used in shell
and erl_eval, instead of causing the guard to fail.
This has been fixed.
Own Id: OTP-2405
-
missing parameter, Id, in
application_controller:do_change_appl/3 fixed.
Own Id: OTP-2681
Aux Id: seq 1029
-
The low level process interface 'proc_lib' used by
itself and also by generic servers has a syncronisation
bug. The scenario is
1. Process A calls proc_lib:spawn() returning
the process id B of the child. The function
will wait for an answer from the child.
2. The function times out waiting for an answer
from the child using proc_lib:init_ack().
3. Process A tries again calling proc_lib:spawn()
returning process id C. But now the child B
has answered and because the wait function
doesn't check where the answer comes from
it believes that it was process C that
was succeeding.
Own Id: OTP-2702
Aux Id: seq1051
Improvements and new features
-
erl_lint now gives warnings for some useless
constructions which are usually the result of misspellings,
e.g., "7(X)", or "s#state{nr=1}".
Own Id: OTP-1927
Aux Id: OTP-1961
Stdlib 1.5.1
Fixed errors and malfunctions
-
keysort/2 is now stable (i.e., it preserves the order
of elements which have the same key).
Bad arguments now cause an exit, instead of just silently
returning the input list.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-2300
-
A call to dets:open_file/1 resulting in an error could
cause both the caller and the dets server to hang.
This has been fixed.
Own Id: OTP-2399
-
The documentation for erl_parse:parse_term/1 incorrectly
stated that it returns the abstract form of a term, so that
parse_term/1 and tokens/1 are the inverses of each other.
Actually, erl_parse:parse_term/1 returns the term itself.
The documentation has been changed to reflect this.
Own Id: OTP-2401
Improvements and new features
-
Many functions in stdlib do not enforce the types which the
functions are documented to accept, thus resulting in
undefined behaviour when given arguments of invalid type.
Stricter error checking has been added to some functions in
stdlib, namely lists:sublist/[2,3] and lists:keysort/2,
resulting in an exit if an invalid argument is given.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-2441
Aux Id: OTP-2300, OTP-2689
-
ets:i/0 used to truncate entries which didn't fit in the
designated field. Now, nothing is truncated - the remaining
entries are pushed to the right instead.
Own Id: OTP-2524