~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to erts/notes.html

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<html>
2
 
<head>
3
 
  <title>Erts Release Notes</title>
4
 
  <style type="text/css">
5
 
<!--
6
 
    body          { background: white; margin: 3em }
7
 
 
8
 
    body          { font-family: Verdana, Arial, Helvetica, sans-serif }
9
 
    h1 h2 h3 h4   { font-family: Verdana, Arial, Helvetica, sans-serif }
10
 
    h1            { font-size: 48 }
11
 
    p li          { font-family: Verdana, Arial, Helvetica, sans-serif }
12
 
-->
13
 
  </style>
14
 
</head>
15
 
 
16
 
<body bgcolor=white>
17
 
 
18
 
<center><h1>Erts Release Notes</h1></center>
19
 
 
20
 
 
21
 
<!--- ################################################################# --->
22
 
 
23
 
<h2>Erts 5.3</h2>
24
 
 
25
 
 
26
 
<!--- ----------------------------------------------------------------- --->
27
 
 
28
 
<h3>Fixed errors and malfunctions</h3>
29
 
 
30
 
<ul>
31
 
 
32
 
  <li>
33
 
    The start_erl example script passed parameters to erlexec in an
34
 
    incorrect way; this is now corrected.<br>
35
 
    (Own Id: OTP-3004)<p>
36
 
  </li>
37
 
 
38
 
  <li>
39
 
    Better error checking of invalid floating point numbers in
40
 
    list_to_float/1.<br>
41
 
    (Own Id: OTP-4361)<p>
42
 
  </li>
43
 
 
44
 
  <li>
45
 
    The '{active,once}' option for <code>inet:setopts/2</code> is now
46
 
    documented.<br>
47
 
    (Own Id: OTP-4573)<p>
48
 
  </li>
49
 
 
50
 
 
51
 
  <li>
52
 
    An unneccessary garbage collection at process exit for processes with
53
 
    heap fragments is removed.<br>
54
 
    (Own Id: OTP-4603)<br>
55
 
    (Aux Id: seq7783)<p>
56
 
  </li>
57
 
 
58
 
  <li>
59
 
    The script 'start' now spawns off an run_erl that's completely
60
 
    disconnected from the controlling terminal and that ignores sighup
61
 
    (run_erl -daemon)<br>
62
 
    (Own Id: OTP-4612)<br>
63
 
    (Aux Id: seq7644)<p>
64
 
  </li>
65
 
 
66
 
  <li>
67
 
    Some internal memory allocation routines (used in BIFs) would allocate
68
 
    more memory than necessary, especially if the default mininum heap size
69
 
    had been raised. Corrected.<br>
70
 
    (Own Id: OTP-4625)<p>
71
 
  </li>
72
 
 
73
 
  <li>
74
 
    A mixup of read buffers in the inet driver could cause unpredictable
75
 
    results when communicating over TCP and for distributed erlang.<br>
76
 
    (Own Id: OTP-4626)<br>
77
 
    (Aux Id: seq7746)<p>
78
 
  </li>
79
 
 
80
 
  <li>
81
 
    Ets tables could show negative sizes in ets:info after a combination of
82
 
    safe_fixtable,delete and insert. The bug is removed.<br>
83
 
    (Own Id: OTP-4690)<br>
84
 
    (Aux Id: seq7871)<p>
85
 
  </li>
86
 
 
87
 
  <li>
88
 
    process_info(Pid, garbage_collection) didn't return information about
89
 
    Pid; instead, it returned information about the calling process. This
90
 
    bug has now been corrected.<br>
91
 
    (Own Id: OTP-4725)<p>
92
 
  </li>
93
 
 
94
 
  <li>
95
 
    Repeated process_flag(Pid, save_calls, X) calls could cause
96
 
    erlang:memory() (and other memory information bifs) to return erroneous
97
 
    information. This bug has now been corrected.<br>
98
 
    (Own Id: OTP-4731)<br>
99
 
    (Aux Id: OTP-4637)<p>
100
 
  </li>
101
 
 
102
 
  <li>
103
 
    ets:memory on set datatype could show wrong result after multiple
104
 
    inserts with same key. The error occurs after applying patch erl_487.
105
 
    The error is now corrected.<br>
106
 
    (Own Id: OTP-4756)<br>
107
 
    (Aux Id: OTP-4690, seq8001)<p>
108
 
  </li>
109
 
 
110
 
</ul>
111
 
 
112
 
 
113
 
<!--- ----------------------------------------------------------------- --->
114
 
 
115
 
<h3>Improvements and new features</h3>
116
 
 
117
 
<ul>
118
 
 
119
 
  <li>
120
 
    Support for the HW watchdog on the CP_blade board (PPC_LINUX)<br>
121
 
    (Own Id: OTP-4520)<p>
122
 
  </li>
123
 
 
124
 
  <li>
125
 
    Support for zombies has been removed. <code>erlang:system_flag/2</code>
126
 
    will no longer accept the <code>keep_zombies</code> argument.
127
 
    <code>process_info/2</code> will no longer accept the <code>exit</code>
128
 
    option (which was used to retrieve the exit reason for a zombie
129
 
    process).<br>
130
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
131
 
    (Own Id: OTP-4523)<p>
132
 
  </li>
133
 
 
134
 
  <li>
135
 
    The BIF erlang:hibernate/3 allows a process to shrink its memory
136
 
    consumption while waiting for messages.<br>
137
 
    (Own Id: OTP-4727)<p>
138
 
  </li>
139
 
 
140
 
  <li>
141
 
    A number of new memory allocators have been introduced in order to
142
 
    further reduce the memory consumption of the emulator. In order to
143
 
    resemble the Erlang/OTP R9B system, most of these allocators are
144
 
    disabled by default in the Erlang/OTP R9C release. By starting the
145
 
    emulator with the command-line argument "<code>+Mea r10b</code>", the
146
 
    emulator will use the default configuration we currently expect the
147
 
    Erlang/OTP R10B emulator to use. See the <code>erts_alloc(3)</code>
148
 
    documentation for further information. <br><br> Also new functionality for
149
 
    inspection of memory usage has been introduced. See the
150
 
    <code>instrument(3)</code>, <code>erlang:system_info/1</code>, and
151
 
    <code>erts_alloc(3)</code> documentation for further information. <br><br>
152
 
    <em>NOTE:</em> Some system flags (+ command line arguments passed to
153
 
    erl) have been changed. The <code>+m</code>, <code>+t</code>, and
154
 
    <code>+T</code> flags have been changed to, respectively,
155
 
    <code>+MYm</code>, <code>+MYtt</code>, and <code>+MYtp</code>. The
156
 
    <code>+d</code>, and <code>+S*</code> flags have been removed. See the
157
 
    <code>erts_alloc(3)</code>, and the <code>erl(1)</code> documentation
158
 
    for further information.<br>
159
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
160
 
    (Own Id: OTP-4534)<br>
161
 
    (Aux Id: OTP-4761)<p>
162
 
  </li>
163
 
 
164
 
  <li>
165
 
    A way to make ets:update_counter wrap at certain values is now
166
 
    available. See the documentation for details.<br>
167
 
    (Own Id: OTP-4546)<br>
168
 
    (Aux Id: seq4605 (body9066))<p>
169
 
  </li>
170
 
 
171
 
  <li>
172
 
    The maximum number of ports can now be changed to an arbitrary value
173
 
    using the environment variable ERL_MAX_PORTS on windows, corresponding
174
 
    to the behaviour on other operating systems. The maximum number of
175
 
    simultaneously open i.e. sockets or port programs is now only limited
176
 
    by operating system imposed limits.<br>
177
 
    (Own Id: OTP-4578)<p>
178
 
  </li>
179
 
 
180
 
  <li>
181
 
    The beam files contain information about the source filenames unless
182
 
    stripped.<br>
183
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
184
 
    (Own Id: OTP-4611)<br>
185
 
    (Aux Id: seq7627)<p>
186
 
  </li>
187
 
 
188
 
  <li>
189
 
    A method of getting notifications of long garbage collections, large
190
 
    heaps and suspended processes due to busy ports is now available. See
191
 
    the documentation of erlang:system_monitor/0..2.<br>
192
 
    (Own Id: OTP-4627)<br>
193
 
    (Aux Id: seq7772)<p>
194
 
  </li>
195
 
 
196
 
  <li>
197
 
    erlang:memory/0 and erlang:memory/1 have been added.
198
 
    erlang:memory/[0,1] return the same type of information as
199
 
    c:memory/[0,1] previously did. The erlang:memory/[0,1] functions
200
 
    operate in constant time. c:memory/[0,1] now use erlang:memory/[0,1]
201
 
    and do therefore now also operate in constant time (which they
202
 
    previously did not). <br> erlang:memory/[0,1] return more accurate
203
 
    information than c:memory/[0,1] previously did. <br> For more
204
 
    information about erlang:memory/[0,1] see the erlang(3) man page.<br>
205
 
    (Own Id: OTP-4637)<p>
206
 
  </li>
207
 
 
208
 
  <li>
209
 
    A new class of error messages "warnings" are added. Warnings can be
210
 
    mapped to either error reports (the default), Info reports or a new
211
 
    class of reports, namely "warning reports". Non severe errors in OTP
212
 
    will be reported as warnings instead of forcing error reports.<br>
213
 
    (Own Id: OTP-4638)<br>
214
 
    (Aux Id: seq7788)<p>
215
 
  </li>
216
 
 
217
 
  <li>
218
 
    The <code>gen_tcp:shutdown/2</code> function has been added. To handle
219
 
    shutdown from the other side, the option <code>{exit_on_close,
220
 
    true|false}</code> has been added to the <code>inet:setops/2</code>
221
 
    function.<br>
222
 
    (Own Id: OTP-4664)<p>
223
 
  </li>
224
 
 
225
 
  <li>
226
 
    To give applications better control of conversion of local time to UTC
227
 
    with respect to daylight saving time, there are two new functions:
228
 
    erlang:localtime_to_universaltime/2 and
229
 
    calendar:local_time_to_uinversal_time_dst/1. See the documentation for
230
 
    details.<br>
231
 
    (Own Id: OTP-4667)<br>
232
 
    (Aux Id: seq7797)<p>
233
 
  </li>
234
 
 
235
 
  <li>
236
 
    In order to conform to the Erlang specification, comparison between two
237
 
    pids was changed in the R9B release. This change did however break a
238
 
    deadlock- prevention algorithm used by mnesia during release upgrade.
239
 
    Therefore, comparison between two pids has been changed back so that
240
 
    R9B nodes are compatible with Erlang nodes running pre-R9 releases.
241
 
    <br> Pre-R9 comparison between two pids which now is used again: If t1
242
 
    and t2 are both pids, t1 will precede t2 if and only if either * the
243
 
    node local id of t1 precedes the node local id of t2, or * the node
244
 
    local ids of t1 and t2 are equal, and node(t1) precedes node(t2), or *
245
 
    the node local ids of t1 and t2 are equal, and also node(t1) and
246
 
    node(t2) are equal, and node(t1) was created before node(t2). <br> The
247
 
    node local id consist of two integers; serial which is most
248
 
    significant, and number. <br> The Erlang specification states: If t1
249
 
    and t2 are both refs, both PIDs, or both ports, then t1 precedes t2 if
250
 
    and only if either * node(t1) precedes node(t2), or * node(t1) equals
251
 
    node(t2) and t1 was created before t2. <br> Note that comparisons
252
 
    between two refs, or two ports will still conform to the Erlang
253
 
    specification.<br>
254
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
255
 
    (Own Id: OTP-4715)<br>
256
 
    (Aux Id: OTP-4511, OTP-4512)<p>
257
 
  </li>
258
 
 
259
 
  <li>
260
 
    The <code>erlang:fun_info/2</code> function will now return the name of
261
 
    the local function that implements the fun. Also, the
262
 
    <code>arity</code> information returned has now been documented.<br>
263
 
    (Own Id: OTP-4719)<br>
264
 
    (Aux Id: OTP-4704)<p>
265
 
  </li>
266
 
 
267
 
  <li>
268
 
    <p>A http state bug in inet_drv (affecting gen_tcp) has been fixed.
269
 
    Patch from Claes Wikstr�m. <p>A bug in defining max number of ports has
270
 
    been fixed. Patch from Claes Wikstr�m. <p>A bug in erlang:port_call/3
271
 
    when calling a driver with a NULL driver struct ->call field has been
272
 
    fixed. Patch from Luke Gorrie. <p>There is a new function
273
 
    file:script/1,2 that does the same as file:eval/1 but gives a return
274
 
    value. For completness, file:path_script/2,3, file:eval/2 and
275
 
    file:path_eval/3 are also added. Suggestion from Ulf Wiger. See the
276
 
    documentation for details. <p><code>erlang:trace/3</code> did no clear
277
 
    trace flags on processes that were exiting. This bug has now been
278
 
    fixed. <p>The gen_udp options <code>add_membership</code> and
279
 
    <code>drop_membership</code> are now allowed. Patch from Vance Shipley.
280
 
    <p><code>gen_udp:open/1,2</code> with service name instead of port
281
 
    number now works. Patch from carlos@lfcia.org. <p>An unjustified
282
 
    compiler warning when using an explicit space character as pad
283
 
    character to <code>io:format/2</code> and similar has been removed.
284
 
    <p>If an illegal node name is used to start a node, now
285
 
    <code>net_kernel</code> fails noisily instead of just letting the node
286
 
    start in non-distributed mode. <p>Now
287
 
    <code>gen_server:format_status/2</code> also works with non-registered
288
 
    processes. <p>There are two new functions
289
 
    <code>erlang:list_to_integer/2</code> and
290
 
    <code>erlang:integer_to_list/2</code> that takes a number base
291
 
    argument. See the documentataion for details. <p>New format characters
292
 
    for <code>io:format/2</code> and similar are ~b, ~B, ~x, ~X, ~+ and ~#.
293
 
    See the documentaion for details. <p>New format characters for
294
 
    <code>io:fread/2</code> and similar are ~u, ~- and ~#. See the
295
 
    documentation for details. <p>The token scanner <code>erl_scan</code>
296
 
    has been rewritten to become twice as fast as before. Now, incomplete
297
 
    any-base numbers such as "16#" are regarded as errors instead of as
298
 
    zero. The allowed base number range has been extended to 2..36 instead
299
 
    of previously 2..16. <p>There is a new function
300
 
    <code>lists:split/2</code>. See the documentation. <p>For everyone that
301
 
    has written their own function to calculate the time difference between
302
 
    two <code>now()</code> calls there is now
303
 
    <code>timer:now_diff/2</code>. See the documentation.<br>
304
 
    (Own Id: OTP-4747)<p>
305
 
  </li>
306
 
 
307
 
</ul>
308
 
 
309
 
 
310
 
<!--- ################################################################# --->
311
 
 
312
 
<h2>Erts 5.2</h2>
313
 
 
314
 
 
315
 
<!--- ----------------------------------------------------------------- --->
316
 
 
317
 
<h3>Fixed errors and malfunctions</h3>
318
 
 
319
 
<ul>
320
 
 
321
 
  <li>
322
 
    Bit syntax matching in the shell used to allow expressions for sizes;
323
 
    this is now disallowed just as it is in compiled code.<br>
324
 
    (Own Id: OTP-3781)<br>
325
 
    (Aux Id: Seq 5004)<p>
326
 
  </li>
327
 
 
328
 
  <li>
329
 
    spawn_opt/4 used 0 as default value for fullsweep_after instead of the
330
 
    default value used by spawn/3, and spawn_link/3. This caused all
331
 
    processes spawned by spawn_opt/4 (e.g. all gen_servers) to allways use
332
 
    fullsweep if the fullsweep_after option wasn't explicitly set.
333
 
    spawn_opt/4 has now been changed to use the same default value as
334
 
    spawn/3, and spawn_link/3.<br>
335
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
336
 
    (Own Id: OTP-4179)<p>
337
 
  </li>
338
 
 
339
 
  <li>
340
 
    The spawn bifs didn't fail with badarg as they should if the argument
341
 
    list wasn't a list; instead, the spawned process immediately exited.
342
 
    All spawn BIFs now fail with badarg if they are passed a bad argument
343
 
    as argument list. <br> spawn BIFs which take funs as arguments and
344
 
    remote spawn BIFs could fail with other errors than badarg when passed
345
 
    bad arguments. All spawn BIFs now fail with badarg when they fail due
346
 
    to bad arguments.<br>
347
 
    (Own Id: OTP-4185)<p>
348
 
  </li>
349
 
 
350
 
  <li>
351
 
    Negative field sizes in construction of binaries using the bit syntax
352
 
    would crash the emulator. Corrected.<br>
353
 
    (Own Id: OTP-4301)<p>
354
 
  </li>
355
 
 
356
 
  <li>
357
 
    System flags (+ command line arguments) taking values weren't handled
358
 
    correctly. If the value and the system flag were separated by
359
 
    whitespace some flags didn't work (e.g. +A 10). If multiple system
360
 
    flags with their corresponding values were passed, and the flags and
361
 
    the values were separated by whitespace, all of these flags were
362
 
    replaced by the last one passed. These bugs have now been corrected.<br>
363
 
    (Own Id: OTP-4312)<br>
364
 
    (Aux Id: OTP-4267, OTP-4313, OTP-4314)<p>
365
 
  </li>
366
 
 
367
 
  <li>
368
 
    The emulator could deadlock on vfork() due to operations performed in
369
 
    the child process before exec() (only observed on multi-processor
370
 
    machines). This bug has now been fixed.<br>
371
 
    (Own Id: OTP-4389)<br>
372
 
    (Aux Id: seq7434)<p>
373
 
  </li>
374
 
 
375
 
  <li>
376
 
    When running the instrumented emulator and sl_alloc release 1,
377
 
    sl_realloc could fail to preserve all information. This has now been
378
 
    fixed.<br>
379
 
    (Own Id: OTP-4419)<br>
380
 
    (Aux Id: OTP-4570)<p>
381
 
  </li>
382
 
 
383
 
  <li>
384
 
    Harmless bug (which caused compilation warnings on some platforms)
385
 
    fixed in sl_alloc (release 2)<br>
386
 
    (Own Id: OTP-4420)<p>
387
 
  </li>
388
 
 
389
 
  <li>
390
 
    Documentation of obsolete system flag +s removed<br>
391
 
    (Own Id: OTP-4421)<p>
392
 
  </li>
393
 
 
394
 
  <li>
395
 
    A bug in <code>file</code> that failed to flush write buffers after
396
 
    write errors, for example device full, and caused subsequent writes
397
 
    (after repositioning to a still writable position in the file) to write
398
 
    invalid data, has been corrected.<br>
399
 
    (Own Id: OTP-4505)<br>
400
 
    (Aux Id: OTP-4500)<p>
401
 
  </li>
402
 
 
403
 
  <li>
404
 
    <p>A bug that causes <code>inet_drv.c</code> not to free prebound
405
 
    sockets has been corrected. <p>A bug that caused
406
 
    <code>prim_inet:getiflist/1</code> to miss some interfaces has been
407
 
    corrected.<br>
408
 
    (Own Id: OTP-4508)<p>
409
 
  </li>
410
 
 
411
 
  <li>
412
 
    A bug in the emulator that caused a memory leak if there had been more
413
 
    than 1024 ports open, and a port driver called <code>driver_exit</code>
414
 
    (A link from process to port was lost), has been corrected.<br>
415
 
    (Own Id: OTP-4509)<p>
416
 
  </li>
417
 
 
418
 
  <li>
419
 
    A bug that caused a segfault in the emulator when decoding a bad
420
 
    distribution message has been corrected.<br>
421
 
    (Own Id: OTP-4510)<p>
422
 
  </li>
423
 
 
424
 
</ul>
425
 
 
426
 
 
427
 
<!--- ----------------------------------------------------------------- --->
428
 
 
429
 
<h3>Improvements and new features</h3>
430
 
 
431
 
<ul>
432
 
 
433
 
  <li>
434
 
    The previous hard system limit of 255 known remote nodes has been
435
 
    removed. With the exception of node name atoms, all data regarding
436
 
    remote nodes are now garbage collected.<br>
437
 
    (Own Id: OTP-4196)<p>
438
 
  </li>
439
 
 
440
 
  <li>
441
 
    sl_alloc release 2 has been introduced in the emulator, see the
442
 
    sl_alloc(3) man page for more information.<br>
443
 
    (Own Id: OTP-4267)<br>
444
 
    (Aux Id: seq7276, OTP-4312, OTP-4313, OTP-4314)<p>
445
 
  </li>
446
 
 
447
 
  <li>
448
 
    The format of the monitor messages has been changed. The
449
 
    <code>Object</code> field in the <code>{'DOWN', MonitorReference, Type,
450
 
    Object, Info}</code> messages is now always on the form
451
 
    <code>{RegisteredName, NodeName}</code> when
452
 
    <code>erlang:monitor/2</code> has been called with a registered name
453
 
    (see erlang(3)).<br>
454
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
455
 
    (Own Id: OTP-4311)<br>
456
 
    (Aux Id: Seq7326)<p>
457
 
  </li>
458
 
 
459
 
  <li>
460
 
    More memory block types (most of the existing ones) are now identified
461
 
    by the instrumented emulator.<br>
462
 
    (Own Id: OTP-4313)<br>
463
 
    (Aux Id: OTP-4267, OTP-4312, OTP-4314)<p>
464
 
  </li>
465
 
 
466
 
  <li>
467
 
    Memory blocks in the emulator that are guaranteed never to be removed
468
 
    are placed in a special block at the beginning of the emulators heap
469
 
    segment if there are space left in it. This special block has been
470
 
    called the definite alloc block. The size of the definite alloc block
471
 
    can be set with the +d system flag (see the erl(1) manpage) (default
472
 
    size is 2 Mb). <br> The tuple {definite_alloc, BlockSize, UsedSize}
473
 
    that is part of the list returned from
474
 
    erlang:system_info(allocated_areas) can be used to determine how much
475
 
    that is used of the definite alloc block.<br>
476
 
    (Own Id: OTP-4314)<br>
477
 
    (Aux Id: seq7276, OTP-4267, OTP-4312, OTP-4313)<p>
478
 
  </li>
479
 
 
480
 
  <li>
481
 
    A number of sl_alloc improvements have been made. For example, the
482
 
    block header field have been shrunk, and some useless features have
483
 
    been removed.<br>
484
 
    (Own Id: OTP-4343)<br>
485
 
    (Aux Id: OTP-4267)<p>
486
 
  </li>
487
 
 
488
 
  <li>
489
 
    There are now two new trace breakpoint types - meta trace and call
490
 
    count trace. See erlang:trace_pattern/3 and erlang:trace_info/2.<br>
491
 
    (Own Id: OTP-4397)<p>
492
 
  </li>
493
 
 
494
 
  <li>
495
 
    The possibility to use elib_malloc instead of the default (libc) malloc
496
 
    has been added. The +m command line switch is used in order to enable
497
 
    another malloc than the default (see the erl(1) man page). In order to
498
 
    enable elib_malloc use "+m elib".<br>
499
 
    (Own Id: OTP-4398)<br>
500
 
    (Aux Id: seq7437)<p>
501
 
  </li>
502
 
 
503
 
  <li>
504
 
    There is a new portable hash function, <code>erlang:phash2</code>, that
505
 
    distributes small integers better than <code>erlang:phash</code>, and
506
 
    is faster for bignums and binaries.<br>
507
 
    (Own Id: OTP-4399)<p>
508
 
  </li>
509
 
 
510
 
  <li>
511
 
    The endianess specification 'native' has been added to the bit syntax.
512
 
    It will resolve to either big or little endian at load time. It is
513
 
    specially useful for communcating with linked-in drivers.<br>
514
 
    (Own Id: OTP-4458)<p>
515
 
  </li>
516
 
 
517
 
  <li>
518
 
    The control() routine in a driver called for a port that is set in
519
 
    binary mode (using set_port_control_flags()), is now allowed to return
520
 
    a NULL pointer instead of a pointer to a binary. A NULL pointer will be
521
 
    returned to the caller of port_control/3 as an empty list.<br>
522
 
    (Own Id: OTP-4459)<p>
523
 
  </li>
524
 
 
525
 
  <li>
526
 
    <p> Comparisons between two <code>port</code>s or between two
527
 
    <code>reference</code>s were previously unstable and didn't conform to
528
 
    the Erlang specification. Comparisons between two <code>pid</code>s
529
 
    didn't previously conform to the Erlang specification. The comparison
530
 
    between two <code>pid</code>s, <code>port</code>s, or
531
 
    <code>reference</code>s has therefore been changed and is now stable,
532
 
    and does now conform to the Erlang specification. </p> <p> Cut from the
533
 
    Erlang specification:<br> If <code>t1</code> and <code>t2</code> are
534
 
    both refs, both PIDs, or both ports, then <code>t1</code> precedes
535
 
    <code>t2</code> if and only if either<br> * <code>node(t1)</code>
536
 
    precedes <code>node(t2)</code>, or<br> * <code>node(t1)</code> equals
537
 
    <code>node(t2)</code> and <code>t1</code> was created before
538
 
    <code>t2</code>. </p><br>
539
 
    (*** POTENTIAL INCOMPATIBILITY ***)<br>
540
 
    (Own Id: OTP-4511)<p>
541
 
  </li>
542
 
 
543
 
</ul>
544
 
 
545
 
 
546
 
There are also release notes for
547
 
<a href="notes_history.html">older versions</a>.
548
 
 
549
 
</body>
550
 
</html>