# Tools Release Notes

## Tools 1.6.2

### Improvements and new features

- The functions `xref:m/1` and `xref:d/1` return a list of undefined functions in case the BEAM files do not contain debug information.
  Own Id: OTP-3879

## Tools 1.6.1

### Known Problems

See Tools 1.6.

### Improvements and New Features

- The following changes has been made to Xref:
  - `xref:m/1` has been changed to accept a filename.
  - bug fix: the predefined analysis `locals_not_called` and `xref:m/1` could sometimes miss unused local functions.
  - bug fix: the bit syntax is now recognized...
  - bug fix: setting the library path to `code_path` did not force the setting up of data.
  - # has lower precedence now.
  - only atoms are allowed as release and application names.
  - invalid symbolic links are ignored unless the extension is recognized (`.beam` typically).
  - calls where the module is fixed but the function is not are no longer unresolved; instead the "function" `'$F_EXPR'` is "called".
  - `xref_compiler:format_error/1` has been improved.
  - bug fix: calls to `'MNEMOSYNE RULE'` et al removed.
  - `m/1` and `d/1` return a list that always contains two elements.
  - `xref_parser:t2s/1` adds quotes to atoms that need them.
  - the documentation is less incomplete and buggy.
  - the strict operator has been documented (it was present in the code before).
  Own Id: OTP-3681

## Tools 1.6

### Known Problems

- Externally defined macros are not handled correctly in Coast.
  Own Id: OTP-3273
  Aux Id: seq3910

### Fixed Errors and Malfunctions

- `make:all()` no longer unnecessarily recompiles modules located in other directories than the current working directory.
  Own Id: OTP-3336
  Aux Id: Seq 4055
- When waiting for a reply from the Coast server process, the user interface functions did a `receive` that accepted any term. The `receive` has now been restricted to accept only the correct replies and not accidently a message from some other process.
  Own Id: OTP-3394
  Aux Id: Seq 4209
- `coast:compile_all/1,2` now returns the correct return value `{error,Reason}` if the directory given as argument does not exist or cannot be read.
  Own Id: OTP-3500
  Aux Id: Seq 4394
- The function `instrument:memory_data/0` returned invalid information if an address or size exceeded 2^27. `instrument:store_memory_data` did not have that problem.
  Own Id: OTP-3635

### Improvements and new features

- `make:all()` now recompiles modules where an include file has been modified.
  Own Id: OTP-3088
  Aux Id: seq1645, seq4228
- The eprof module has been optimised to minimise the measuring overhead. Typically, the measured program runs at about 50% of its ordinary speed.
  Own Id: OTP-3163
- xref is a new cross reference tool.
  Own Id: OTP-3639

## Tools 1.5.2

### Fixed Errors and Malfunctions

- Eprof was corrected because the `trace` BIF and format of trace messages were changed.
  Own Id: OTP-3369

## Tools 1.5.1

### Improvements and New Features

- The memory information obtained with the `instrument` module now contains an additional field, which represents the process which allocated a block.
  Own Id: OTP-3142

### Fixed Errors and Malfunctions

- Due to a bug in Coast, a module could be initialized repeatedly. However, it is only necessary to initiate a module once and this is now fixed.
  Own Id: OTP-3225

## Tools 1.4.3

### Incompatibilities With Tools 1.4

The module dbg is moved to the Runtime tools application

### Known Problems

- In `cover` two or more processes, running the same code, may in rare situations give rise to race conditions when updating the ETS table used.
  Own Id: OTP-2625
- `cover` counts the number of executed statements, instead of the number of function calls. (This problem is solved by using `coast` instead!)
  Own Id: OTP-1247
- `cover` doesn't store the accumulated data persistently.
  Own Id: OTP-1318

## Tools 1.4.1

### Fixed Errors and Malfunctions

- In Coast, recursive function calls containing other function calls as arguments are now recognised as being recursive.
  Own Id: OTP-1981
- In Coast there can no longer be a race condition if two (or more) processes, running the same code, tries to update the ETS tables used.
  Own Id: OTP-2625

### Incompatibilities With Tools 1.4

- The `run` function call will, if the call to the Coast-compiled module fails, return an exit signal instead of the tuple {'EXIT', Reason}.
- The internal representation of data has been changed, meaning that all previously Coast-compiled modules have to be recompiled.

### Known Problems

- In `cover` two or more processes, running the same code, may in rare situations give rise to race conditions when updating the ETS table used.
  Own Id: OTP-2625
- `cover` counts the number of executed statements, instead of the number of function calls. (This problem is solved by using `coast` instead!)
  Own Id: OTP-1247
- `cover` doesn't store the accumulated data persistently.
  Own Id: OTP-1318

## Tools 1.4

There is a new document module creating Emacs TAGS files, `tags`.

### Fixed Errors and Malfunctions

- `exref:delete_module/1` now works properly.
  Own Id: OTP-1115
- `exref` no longer have problems with guards (such as `record` and `atom`) in list comprehension (LC) expressions.
  Own Id: OTP-1291
- `exref` no longer mixes up modules.
  Own Id: OTP-1220
- `exref` no longer changes the working directory.
- `exref` now handles internal functions correctly under certain conditions.
- When using the `auto` option, exref no longer enters an infinite loop.

### Incompatibilities With Tools 1.2.1

- `exref:module` no longer accepts modules specified as strings, so the implementation now agrees with the documentation.

### Known Problems

- In Coast a recursive function call containing another function call as argument is currently not recognised as being recursive, unless the function call used as argument is made to a module not having been coast-compiled.
  Own Id: OTP-1981
- `cover` counts the number of executed statements, instead of the number of function calls. (This problem is solved by using `coast` instead!)
  Own Id: OTP-1247
- `cover` doesn't store the accumulated data persistently.
  Own Id: OTP-1318
- In Emacs occurances of `$` confuses indentation mechanism.
  Own Id: OTP-1203, OTP-1674, OTP-1675

## Tools 1.2.1

### Fixed Errors and Malfunctions

- The function `make:all` now works withoout a `Emakefile`.
  Own Id: OTP-1340
- `exref` now know about the language construct `query`.
  Own Id: OTP-1368

### Known Problems

- The function `exref:delete_module/1` does not work properly, so subesquent calls to `exref:analyse` will give incorrect results.
  Own Id: OTP-1115

## Tools 1.2

### Fixed Errors and Malfunctions

- Deadlock situation with COVER compile solved.
  Own Id: OTP-1072
  Aux Id: HA34612
- Cover does now work with include files.
  OwnId: OTP-1074
  Aux Id: HA34302
- Changed cover to used `filename:find_src/1` instead of the obsolete `file_util` module.

### Known Problems

- Not cleaning up when module removed.

## Tools 1.1

### Fixed Errors and Malfunctions

- Cover did not use `Options` in `file/2` in a correct way (OTP-1074).
- Cover tried to load the "tools" application dynamically which could cause deadlock in the startup if cover-compiled modules are involved at this stage. The attempt to load the application is now removed (must be specified in the start script).