# Highlights
Erlang 5.2/OTP R9B

> This document describes the major new features and changes in version R9B of Erlang/OTP. The changes are described as a comparision with the original R8B release and some of them have already been delivered as patches to R8B and/or R7B. For more detailed information, please refer to the release notes for the individual applications. Interesting news in this release is that we have integrated results from the ASTEC-HiPE research project as part of the product. See Hipe and Packages below for more info on that.

## Asn1, compiler and runtime functions for ASN.1

- New option optimize in combination with per_bin and ber_bin which makes the encode/decode functions much faster than before. In rough terms the encode/decode is 2 times faster when optimize is used.
- It is now possible to add options to the Erlang compiler to be used when compiling the generated .erl file. Any option that is not recognized as a specific ASN.1 option will be passed to the final step like: `erlc +debug_info Mymodule.asn` or `asn1ct:compile('Mymodule',[debug_info])`.
- The feature "multi file compilation" which compiles several ASN.1 modules together and produces one .erl file is improved.

## Comet, COM client for Erlang (REMOVED)

The Comet application is removed from the product because we currently have no resources to maintain it. We plan to make it available on the Open Source site. It still works on Windows NT 4, but there are problems on Windows XP.

## Compiler

- The documentation for the 'compile' module now lists several options that were previously undocumented or only documented in the 'erl_lint' documentation. One very useful option is `warn_unused_vars`, which also is improved in the compiler. Use of this option can reveal bugs and dead code, it is highly recommended.
- The endianess specification 'native' has been added to the bit syntax. It will resolve to either big or little endian at load time. It is specially useful for communcating with linked-in drivers.

## cosEvent, Orber OMG Event Service

Unchanged since Erlang/OTP R8B.

## cosEventDomain, OMG Event Domain Admin Service NEW

A new Corba service "cosEventDomain" is added as a separate application. cosEventDomain is compliant with the OMG service CosEventDomainAdmin.

## cosFileTransfer

Unchanged since Erlang/OTP R8B.

## cosNotification, Orber OMG Notification Service

Minor changes.

## cosProperty, Orber OMG Property Service

Unchanged since Erlang/OTP R8B

## cosTime, Orber OMG Timer and TimerEvent Services

Unchanged since Erlang/OTP R8B.

## cosTransactions, Orber OMG Transaction Service

Minor changes.

## Crypto, MD5, SHA and CBC-DES encryption/decryption

No changes since OTP R8B.

## Debugger

Minor bugfixes.

## ERTS, Erlang emulator

- The previous hard system limit of 255 known remote nodes has been removed. With the exception of node-name atoms, all data regarding remote nodes is now garbage collected.
- Major improvements regarding memory handling, introduction of sl_alloc version 1 default and sl_alloc version 2 which makes it possible to tune the memory allocation behaviour to best suite a certain system. A number of other memory handling improvements are also added.
- The endianess specification 'native' has been added to the bit syntax. It will resolve to either big or little endian at load time. It is specially useful for communcating with linked-in drivers.

## Erl_Interface, low level interface to C

Minor bugfixes.

## EVA, a multi-featured event and alarm handler

Minor updates.

## Et, an Event Tracer with graphical viewing of trace data NEW

The two major components of the Event Tracer (ET) tool is a graphical sequence chart viewer (et_viewer) and its backing storage (et_collector).
One collector may be used as backing storage for several simultaneous viewers where each one may display a different view of the same trace data.

## GS, a Graphics System

GS is updated to use Tcl/Tk 8.3.4. This is a major update since GS previously used an ancient version of Tcl/Tk.

## HiPE, High Performance Erlang NEW

A number of useful and promising features from the HiPE project at Uppsala University is integrated into this version of Erlang/OTP. The major features are:

- Native code generation for Sparc (Solaris) and x86 (Linux). The `native` option to the compiler is used to select this codegeneration. It is then possible to run the generated modules together with the ordinary interpreted modules on a standard OTP R9B system.
  The native codegeneration can give significant performance improvements especially on sequential code. See http://www.csd.uu.se/projects/hipe/hipe.html for more info. This feature is intended for evaluation and may be supported in future versions. Feedback is velcome.
- "Shared heap" a new approach to memory handling within the Erlang emulator where all Erlang processes share a common heap. This way of handling memory is very interesting and have a potential to reduce memory consumption an improve performance. A separate emulator is built to support "shared_heap", it is started with '`erl -shared`'. This feature is intended for evaluation and may be supported in future versions. Feedback is velcome.

## IC, an IDL compiler

A number of minor improvements and corrections.

## Inets, HTTP server and FTP client.

- A HTTP client is added to the application. Author: Johan Blom of Mobile Arts AB. It is provided as is with very limited documentation in this version but we plan to support it fully in coming versions of Inets.
- Updated to handle HTTP/1.1.

## Jinterface, low level interface to Java

No changes since R8B.

## Kernel

- The set_net_ticktime/[1,2] and get_net_ticktime/0 functions has been added to the net_kernel module (see net_kernel(3)) which makes it possible to change the net_tick time during operation.
- There are new functions `bchunk/2,3` in the `disk_log` module that are to be used like `chunk/2,3` but return objects as binaries.
- The loading of BEAM code at start-up of embedded systems has been optimized: if the thread pool is non-empty (see the system flag `+A` in `erl(3)`) and files are read from a file system (the default, see the value `efile` of the `-loader` flag in `erl(3)`) disk seek times have been reduced.

## Megaco, a Megaco/H.248 protocol stack

- The binary codecs ber_bin and per_bin is now both compiled with the +optimize asn1-compiler flag for better runtime performance.
- The previously included tool, et, has been moved out of the Megaco application. It is now provided as a separate application called Et.

## Mnemosyne, query language support for Mnesia

No changes since R8B.

## Mnesia, a heavy duty real-time distributed database

- The table fragmentation functionality in Mnesia has been improved.
- Select and match_object is done in parallel which should improve performance.
- A new concept of hash modules has been introduced. This means that a user now can define its own mapping between record keys and the actual table fragment hosting the record.

- Improved table loading performance during startup. Mnesia should be able to utilize the network bandwidth better, and Mnesia also uses new dets functionality to improve the loading of disc_only_copies tables, if possible.

## Mnesia_Session, a foreign language interface to Mnesia

Minor bugfixes.

## Observer NEW

Observer is a new application with various facilities for "observing" a live system with minimal disturbance. The application is fully functional and supported, but the functionality and API's are still in beta-status i.e they can be changed in the next versions. We are very interested in feedback from users regarding the functionality in Observer.

Observer currently contains two different parts:

- Trace Tool Builder , a base for building trace tools for single node or distributed Erlang systems.
- Erlang Top, a tool for monitoring of Erlang processes similar to the UNIX top utility.

## ODBC

- The Erlang ODBC application consists of both Erlang and C code. The C code is now delivered as a precompiled executable for Windows and Solaris.
- Various optimizations.
- New API that has an Erlang/OTP touch and feel instead of being a C-interface with Erlang syntax. The old interface is deprecated and will be removed in Erlang/OTP R10.

## Orber, a CORBA Object Request Broker

- Support for fragmented IIOP-1.2 messages.
- Possible to add and use the IOR component TAG_ALTERNATE_IIOP_ADDRESS.
- Unique VMCID:s assigned to Orber by the OMG.
- Supports the Fixed datatype.
- Possible to add new initial references.
- The NameService can be configured to be stored on disk.
- It is now possible to set Orber's configuration parameters in, for example, an Erlang shell.
- Possible to list which port numbers Orber may use locally when connecting to another ORB.
- Improved documentation.
- Several new debugging facilities:

- Two IIOP trace interceptors included (different verbosity).
- Type checking within an Erlang node.
- OrberWeb, which is an extension of the WebTool application.
- IOR dump.

## OS_Mon, monitoring of disk usage and OS resources

- cpu_sup:util/0 and cpu_sup:util/1 which returns information about cpu utilization have been added. For further information see cpu_sup(3).
- Nodename is now used as key in loadtable (os_mon mib).
- The loadCpuLoad5, loadCpuLoad15 values has been added to the os_mon mib.

## Packages NEW

This is an extension to Erlang with structured program module packages, in a simple, straightforward and useful way. The implementation is done by Richard Carlsson from the HiPE team at Uppsala University and is intended for evaluation. This or a slightly modified solution may be supported in future versions of Erlang/OTP. The debugger might have some problems with the naming of modules when packages are used. See http://www.erlang.se/publications/packages.html for more info. There is also a paper about Packages at http://www.it.uu.se/research/reports/2000-001.

## Parsetools, parsing and lexical analysis tools

No changes since R8B.

## Pman, graphical process manager

Minor changes.

## Runtime_Tools

- Trace ports can now be opened on remote nodes
- It is possible to use the local node as a "trace control node", i.e. trace only remote nodes.
- The function `dbg:i/0` now prints information about all traced nodes
- Added a number of functions for controlling tracing on remote nodes.

## SASL, release handling tools

Minor updates.

## SNMP

Minor additions and bugfixes.

## SSL

Minor changes.

## STDLIB, Erlang standard libraries

- A number of improvements in `dets`.
- The function `ets:select_count/2` is added to the stdlib application.
- New functions `sofs:extension/3` and `sofs:partition/3`.
- A new module `ms_transform` which implements a parse transform that translates 'fun' syntax into "match specifications". This simplifies writing of "match specifications" used in `ets:select` and in `dbg.`
- The undocumented and deprecated modules `bplus_tree` and `unix` has been removed.

## Toolbar

Minor changes.

## Tools

There is a new tool `cprof,` a call count profiler. It is something inbetween `cover` and `fprof,` and can be used to get a picture of which functions are most frequently called.
See tools user's guide and reference manual.

## TV, grapical table visualizer

Minor changes.

## WebTool

Minor changes.