1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- This document was generated using DocBuilder 3.3.3 -->
<HTML>
<HEAD>
<TITLE>Highlights</TITLE>
<SCRIPT type="text/javascript" src="../doc/erlresolvelinks.js">
</SCRIPT>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#FF00FF"
ALINK="#FF0000">
<CENTER>
<A HREF="http://www.erlang.se"><IMG BORDER=0 ALT="[Ericsson AB]" SRC="min_head.gif"></A>
</CENTER>
<P>This document lists some highlights of Erlang 5.5/OTP R11B
(unpatched), compared to the previous version Erlang 5.4/OTP R10B,
with focus on things not already released as R10B patches.
<P>Note: This document was compiled at the time when R11B was released
and does not list any features introduced in R11B patches.<A NAME="1"><!-- Empty --></A>
<H2>1 SMP Support</H2>
<P>The major news is the support for SMP (Symmetric
MultiProcessing).
<P>SMP is supported by most modern operating systems like Linux,
Windows, Mac OSx, Solaris and is becoming more important now when
dual processors, hyper-threading technology and multi-core
systems are a reality.
<P>With Erlang, most of the problems which occur in multi-threaded
programs have been solved once and for all in the Erlang VM and
do not have to be handled by the application programmers.
<P>In the SMP version of the Erlang virtual machine, there can be
many process schedulers running in separate OS threads. As default
there will be as many schedulers as there are processors or
processor cores on the system.
<P>The SMP support is totally transparent for the Erlang programs.
That is, there is no need to change or recompile existing
programs. Programs with built-in assumptions about sequential
execution must be rewritten in order to take advantage of the SMP
support, however.
<P>In this release, the Erlang VM supports SMP with focus on
stability. There will follow a number of subsequent steps with
necessary optimizations and support for more platforms.
<P>The Erlang VM with SMP support has been tested on the following
platforms:
<P>
<UL>
<LI>
Solaris 10 sparc
</LI>
<LI>
Suse Linux (SLES 9) x86
</LI>
<LI>
Mac OSx PPC
</LI>
</UL>
<P>Some promising benchmarks:
<P>
<UL>
<LI>
Big<BR>
700 Erlang processes that "ping" each other. That is, all
processes send a message to and receive an acknowledgement
from all other processes.<BR>
</LI>
<LI>
Encode-decode<BR>
16 Erlang processes performing encode/decode of typical
telecom protocol messages independent of each other for a
duration of ten minutes, the total number of decodes counted.
Some of the processing involves calls to Erlang drivers which
are not parallelized yet.<BR>
</LI>
</UL>
<P>Sun Fire T2000 Server, Solaris 10, UltraSPARC T1 Processor which
is an 8 core CPU with 4 threads per core. Comparison between
single-threaded Erlang VM and Erlang SMP VM with 32 schedulers.
<P>
<CENTER>
<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=1>
<CAPTION ALIGN=BOTTOM><EM></EM></CAPTION>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>no SMP</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>SMP 32</STRONG>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Big
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
14
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Encode-decode
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
7
</TD>
</TR>
</TABLE>
</CENTER>
<P>ADM Opteron: 2 dual core CPUs running Suse Linux Enterprise
Server 9. Comparison between single-threaded Erlang VM and Erlang
SMP VM with 4 schedulers.
<P>
<CENTER>
<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=1>
<CAPTION ALIGN=BOTTOM><EM></EM></CAPTION>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>no SMP</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>SMP 4</STRONG>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Big
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
5
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Encode-decode
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
3.6
</TD>
</TR>
</TABLE>
</CENTER>
<P>Intel Xeon: 2 Hyper-threaded processors running Suse Linux
Enterprise Server 9 Comparison between single-threaded Erlang VM
and Erlang SMP VM with 4 schedulers.
<P>
<CENTER>
<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=1>
<CAPTION ALIGN=BOTTOM><EM></EM></CAPTION>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>no SMP</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>SMP 4</STRONG>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Big
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
2.5
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Encode-decode
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
3.7
</TD>
</TR>
</TABLE>
</CENTER>
<P>AMD Athlon (tm): 64 X2 Dual Core Processor 4200+, 2x512Kb L2
Cache, Linux Fedora Core 5; 2.6.16-1.2096_FC5.
<P>
<CENTER>
<TABLE CELLSPACING=0 CELLPADDING=2 BORDER=1>
<CAPTION ALIGN=BOTTOM><EM></EM></CAPTION>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>no SMP</STRONG>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<STRONG>SMP 2</STRONG>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Big
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
2.8
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
Encode-decode
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
1
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
2.3
</TD>
</TR>
</TABLE>
</CENTER>
<P>See <A HREF="javascript:erlhref('../', 'erts', 'notes.html');">ERTS Release Notes</A>.
<A NAME="2"><!-- Empty --></A>
<H2>2 Erlang Language and Related Issues</H2>
<P>
<UL>
<LI>
The <CODE>andalso</CODE> and <CODE>orelse</CODE> operators are now
allowed to be used in guards. That also applies to match
specifications. See
<A HREF="javascript:erlhref('../', 'doc/reference_manual', 'expressions.html#6.14');">Erlang Reference Manual</A>.<BR>
</LI>
<LI>
The BIF <CODE>is_record/3</CODE> can now be used in guards. Also,
<CODE>is_record/3</CODE> can now be called without an
<CODE>erlang:</CODE> module prefix for consistency with the other
<CODE>is_*</CODE> functions. See
<A HREF="javascript:erlhref('../', 'kernel', 'erlang.html#is_record/3');">erlang(3)</A>.<BR>
</LI>
<LI>
The compiler options <CODE>ignore_try</CODE> and
<CODE>ignore_cond</CODE>, which allowed code that used unquoted
<CODE>try</CODE> or <CODE>cond</CODE> as atoms or record tags, has been
removed. Old code that depended on the options need to be
revised to have occurrences of <CODE>try</CODE> or <CODE>cond</CODE> as
atom or record tags single-quoted. (Note: Although <CODE>cond</CODE>
is a reserved keyword, there is no <CODE>cond</CODE> statement. It
might be introduced in a future release.)<BR>
</LI>
<LI>
(ERTS 5.4.8) The new <CODE>fun M:F/A</CODE> construct creates a
fun that refers to the latest version of <CODE>M:F/A</CODE>. This
syntax is meant to replace tuple funs <CODE>{M,F}</CODE> which have
many problems. See
<A HREF="javascript:erlhref('../', 'doc/reference_manual', 'expressions.html#6.17');">Erlang Reference Manual</A>.<BR>
</LI>
<LI>
(ERTS 5.4.8) The new type test <CODE>is_function(Fun, Arity)</CODE>
-- which may be used in guards -- test whether <CODE>Fun</CODE> is
a fun that can be applied to <CODE>Arity</CODE> arguments. See
<A HREF="javascript:erlhref('../', 'kernel', 'erlang.html#is_function/2');">erlang(3)</A>.
<BR>
</LI>
</UL>
<A NAME="3"><!-- Empty --></A>
<H2>3 New Applications</H2>
<A NAME="3.1"><!-- Empty --></A>
<H3>3.1 Dialyzer</H3>
<P>Dialyzer is a static analysis tool that identifies software
discrepancies such as type errors, unreachable code, unnecessary
tests, etc in single Erlang modules or entire (sets of)
applications. See Dialyzer documentation.<A NAME="3.2"><!-- Empty --></A>
<H3>3.2 Inviso</H3>
<P>The Inviso application, together with some new extensions to
Runtime_Tools, is aimed at providing features for efficient
tracing of production Erlang/OTP systems:
<P>
<UL>
<LI>
Distributed tracing - tracing on any number of Erlang
nodes.
</LI>
<LI>
Autostart - tracing during system start-up.
</LI>
<LI>
Overload protection - mechanisms for suspending and later
reactivating tracing, should an overload situation occur.
</LI>
<LI>
Enhanced use of meta tracing.
</LI>
<LI>
Trace cases - predefined specifications of what to trace.
</LI>
<LI>
Off-line merging and formatting of log files.
</LI>
</UL>
<P>Inviso is still under development. An easier-to-use trace tool,
using the features listed above, is planned to be released as
an R11B patch in Q3/Q4 2006. See Inviso documentation.<A NAME="3.3"><!-- Empty --></A>
<H3>3.3 SSH</H3>
<P>The SSH application is an Erlang implementation of the secure
shell protocol. It is considered to be a beta release, meaning
there can be changes made to the API before it reaches 1.0.
See SSH documentation.<A NAME="4"><!-- Empty --></A>
<H2>4 Existing Applications</H2>
<A NAME="4.1"><!-- Empty --></A>
<H3>4.1 Compiler</H3>
<P>(Compiler 4.3.6)
It is now possible to encrypt the debug information in Beam
files. See
<A HREF="javascript:erlhref('../', 'stdlib', 'beam_lib.html#debug_info');">beam_lib(3)</A>.<A NAME="4.2"><!-- Empty --></A>
<H3>4.2 Debugger</H3>
<P>(Debugger 2.0)
The debugger can now handle the <CODE>try/catch</CODE> language
construct.<A NAME="4.3"><!-- Empty --></A>
<H3>4.3 Inets</H3>
<P>The Erlang implementation of the TFTP procotcol, <CODE>tftp</CODE>,
is now documented.
See <A HREF="javascript:erlhref('../', 'inets', 'tftp.html');">tftp(3)</A>.<A NAME="4.4"><!-- Empty --></A>
<H3>4.4 Kernel</H3>
<P>In Kernel 2.10.X, several bug fixes and improvements have been
made in <CODE>global</CODE>, the global name registration facility.
See <A HREF="javascript:erlhref('../', 'kernel', 'notes.html');">Kernel Release Notes</A>.<A NAME="4.5"><!-- Empty --></A>
<H3>4.5 OS_Mon</H3>
<P>(OS_Mon 2.0)
The entire OS_Mon application (code and documentation) has been
reviewed and consequently updated with the goal to make
the application more robust, homogeneous and easier to
configure. See <A HREF="javascript:erlhref('../', 'os_mon', 'notes.html');">OS_Mon Release Notes</A>.<A NAME="4.6"><!-- Empty --></A>
<H3>4.6 STDLIB</H3>
<P>Added the <CODE>zip</CODE> module with functions for reading and
creating zip archives.
See <A HREF="javascript:erlhref('../', 'stdlib', 'zip.html');">zip(3)</A>.<CENTER>
<HR>
<SMALL>
Copyright © 1991-2006
<A HREF="http://www.erlang.se">Ericsson AB</A><BR>
</SMALL>
</CENTER>
</BODY>
</HTML>
|