erl -name foo),
then slave:start/1 on a nonexistent host exits
instead of returning an error tuple.
c:c(File, Options) is used with options such
that an intermediate file is produced instead of an
object file (e.g., 'S'), it still tries to load an object
file (which will be the old one, if one exists). This
could lead to confusion.
ets module can crash Erlang or block it for
a long time, e.g., ets:match(Table, '$123456789').
gen_server,
gen_event or gen_fsm was compiled, warnings
were given for
absent call-back functions, except for code_change.
Now, a warning is given for absent code_change as
well.
queue:to_list/1
didn't work properly. Now, it returns the elements of
the queue, the oldest first in the list.
append was used to create the list of all modules and
this is very inefficient. This has now been corrected:
1) code:all_loaded no longer uses append. 2) append
and
all other BIFs can no longer consume unlimited amounts of
memory before a garbage collection occurs.
erl_parse:abstract/1 crashed when given terms such
as [4|5].
erl_id_trans didn't handle unary operators
before numeric literals, or the Mnemosyne query
expression.
erl_scan:string/[1,2] handled comments incorrectly.
ets:match_object/2 is made faster by removing a
receive after 1 and letting the internal BIF
db_match_object decide
if the current process should be rescheduled.
dets is
made more efficient. In the previous version of dets
the dets:close/1 could take several hours in the worst
case because of computation which tried to combine the
freelist. This is now corrected and the new version has
significantly better performance in dets:open_file and
dets:close while having the same or marginally
worse performance on dets:delete. The time it takes
to open or close a dets file is now always short (at the seconds
level at worst , in the most cases much faster).
erl_pp:form/[1,2] now format upper-case record
names correctly; previously the necessary quoting was left
out. This affected for example the tools cover
and coast.
-include_lib didn't
contain a '/', the compilation/preprocessing crashed,
instead of giving a proper error message.
erl_lint:is_guard_test/1 did not accept
floating-point literals. This caused execution using
erl_eval (for example in the shell) to behave
incorrectly when floating-point literals occurred in guards.
verbose
option. Tww new functions, erl_tar:t/1 and erl_tar:tt/2,
prints the members of the tar file instead of returning them.
The tt/1 function simply prints the name of each member
(like 'tar t'), while tt/2 prints more information
similar to 'tar tv'.
lists:seq(N,N,0) now returns
[N] instead of giving an error.
c:m(Module) contains a tuple
{time, Time} which represents the date and time of
compilation
of the module. Previously, the time was in the local timezone
of the compilation. Since there is no record of what that
timezone was, the time information was unreliable, and
has been changed to always be in GMT (if the underlying
system supports it - in other words, what
erlang:universaltime/0 returns).
export_all compilation option no longer produces one
warning for each function defined in a module; it produces
one single warning (since export_all shouldn't be used
in production code).
The variables used in the matching functions in the
ets module are not
restricted to '$0' to '$9' anymore.
Own Id: OTP-3063
gen_server:call now uses the new BIF monitor/2 which
makes it possible to monitor the death of processes. This
makes the call safer and the feedback to the
caller will be immediate if the serving process has died
or dies when it services the call. Previously the only
way to prevent a hanging here was to use the Timeout argument
to the call function. A potential incompability is that the
gen_server:call and comparable functions in the
gen_event and gen_fsm modules now can exit
with another reason than timeout when the server has
terminated its execution. The new reason is noproc.
$ " to produce a space.
These constructions are still legal, but will produce
warnings in future releases, and at some point may be
removed from the language.
Instead, use: 1) character constant syntax; 2) the
escape code "\n"; 3) the character constant
"$\s".