# Potential Incompatibilities
Erlang 5.1/OTP R8B

> This document contains a list of all potential incompatibilities between Erlang 5.1/OTP R8B and the previous version Erlang 5.0/OTP R7B, and is an extract from the release notes for the respective applications.

## cosEvent, Orber OMG Event Service

- All APIs not compliant with the OMG standard have been removed.

- Registering the cosEvent application in the IFR is done via the `cosEventApp` module. Upgrade in runtime is not possible.

## cosNotification, Orber OMG Notification Service

- The include paths for `CosNotification.idl` have been changed. Hence, if you include this file in your own IDL-files you must update your paths to also point to where the cosEvent IDL-files are stored.
  (Own Id: OTP-4092)

## cosTime, Orber OMG Timer and TimerEvent Services

- An include path in `CosTimerEvent.idl` has been changed. Hence, if you include this file you should check your include paths for your IDL-file(s), that is, add the path to `CosEventComm.idl`.
  (Own Id: OTP-4093)

## Kernel

- A read timeout no longer resets the sequential trace token. This is an incompatibility towards the previous behaviour. Use `seq_trace:set_token([])` to reset the sequential trace token.

- The flag `procs` to `erlang:trace/3` has got a slightly new behaviour: Trace tag `spawn` has a new element, and trace tags `register`, `unregister`, and `getting_unlinked` are new. Therefore, new and/or different trace messages will arrive to the tracer when the `procs` trace flag is used.
  (Own Id: OTP-3934)
  (Aux Id: seq5193)

- `disk_log` caches written terms. This implies that the `close`, `lclose` and `sync` functions can return file errors. `pid2name/1` is a new debug function that given a disk log process (a pid) returns the name of the log.
  (Own Id: OTP-3952)

## Mesh

This application has been removed.

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

- Mnesia 4.0 and later will only run on OTP R8B and later.

## ODBC

- ODBC 0.9.1 needs Erl_Interface 3.2.9 or higher.

## Runtime_Tools

- A trace client fun that can be given to `dbg:trace_client/3` now gets informed about the end of trace, so it can do something useful with its collected data. See `dbg:trace_client/3`.
  (Own Id: OTP-3933)
  (Aux Id: seq5193)

- The file names for wrap file traces has been changed. This has been done to make it easier for auxiliary tools to know the file names when fetching wrap traces over the network, especially if the tools used for fetching does not support wildcards in filenames. See the documentation for `dbg:trace_port/2`. NOTE that this change may affect existing fetch tools. Especially note that the number of files in the wrap trace must now be known when reading the trace, or as it is stated in the documentation: the same wrap trace specification must be used when reading the trace as when creating the trace.
  (Own Id: OTP-3965)

## SASL, release handling tools

- `systools_make` uses Xref for cross reference checks. The format of the warnings for undefined functions has been changed.
  (Own Id: OTP-3922)

## STDLIB, Erlang standard libraries

- The hash function used in `dict` and `sets` is now `erlang:phash/2` rather than the broken `erlang:hash/2`.
  (Own Id: OTP-3802)

- Bug fix: `intersection/1` in the `sets` and `ordsets` modules no longer accepts the empty list as argument. The reason is that intersection of an empty set is undefined.
  (Own Id: OTP-4045)

- The `dets` module has been partly rewritten. `finsert/2` accepts a list of objects. `info/2` accepts the new item tags `access`, `ram_file` and `auto_save`, and the item tags `memory` and `pid` have been documented. The read cache has been removed and the `cache_size` option is ignored (incompatibility). Many functions have been more efficiently implemented than before, this holds in particular when there are several threads. The repair of Dets tables has been rewritten, and is significantly faster than before. New functions are: `to_ets/2` (adds Dets objects to an Ets table); `foldl/3` and `foldr/3` (iterate over the objects of a Dets table); `from_ets/2` (replaces Dets objects by Ets objects); `select/1,2,3` (select Dets objects using match specifications (see the ERTS User´s Guide for a description of match specifications)); `match/1,3` (match Dets objects in chunks); `select_delete/2` (deletes Dets objects using match specifications); `delete_all_objects/1` (deletes all objects of a Dets table efficiently); `init_table/2` (initiates a Dets table using a function to gather objects); `pid2name/1` (returns the name of the Dets table handled by a pid).
  (Own Id: OTP-3786)
  (Aux Id: OTP-3746, OTP-3782, OTP-1831)

## Tools

- Coast was much too slow and ineffiecient, especially for large modules. Also, it was discovered that Coast in some cases returned erroneous values. Consequently, Coast has been discontinued and is replaced with a new tool Cover with similar interface and functionality. Refer to the Tools User's Guide and Reference Manual for more information about Cover.
  (Own Id: OTP-3622)

- Xref represents unresolved calls with calls where the module, the function or the number of arguments are atoms and integers that are unlikely to occur in an Erlang system. Calls to `erlang:apply/2` and the like are included among the external calls. This is in contrast to R7 where calls to `apply` and `spawn` were used for representing unresolved calls.
  (Own Id: OTP-3948)