# Tools Release Notes

## Tools 2.3

### Fixed errors and malfunctions

- Totally rewritten the interface for WebCover. Can now compile both .erl and .beam files and export/import cover data.
  (Own Id: OTP-4706)

- Cover does no longer report coverage on lines which are not executed.
  (Own Id: OTP-4734)

- Fixed so that the generation of new function clauses works also for guarded functions in the erlang mode.
  (Own Id: OTP-3697)

- Fixed so that you do not get the error message "unbalanced parenthesis" when indenting correct code including bit syntax in the erlang mode.
  (Own Id: OTP-4526)

- The guard, function, is now colored by the emacs mode.
  (Own Id: OTP-4533)

- Indentation of macros is handled correctly in all cases by the erlang mode..
  (Own Id: OTP-4561, OTP-4687)

- is_* guards are now colored by the erlang mode.
  (Own Id: OTP-4562)

- The erlang mode now handles the fact that a function argument may be a guard expression. (That is useful when writing test case code.)
  (Own Id: OTP-4579)

- Keywords andalso and orelse are now colored by the erlang mode.
  (Own Id: OTP-4580)

- Fixed bug in the erlang mode function that calculates the arity of an Erlang function.
  (Own Id: OTP-4581)

### Improvements and new features

- Added functions `cover:start(Nodes)` and `cover:stop(Nodes)`. Cover compiled modules will be loaded on all nodes added with `cover:start(Nodes)`. `cover:stop(Nodes)` will collect coverage data from the stopped nodes and merge it with data collected on the main (controller) node.
  `cover:analyse/1,2,3` and `cover:analyse_to_file/1,2,3` will also collect data from all nodes before analysing.
  (Own Id: OTP-4177)

- The module attribute tag `deprecated` is used by Xref to find calls to deprecated functions. The `m/1`, `d/1`, and `analyze/2,3` functions have been updated to return calls to deprecated functions. See also xref(3) for more details.
  (Own Id: OTP-4695)

- Added functions `cover:compile_beam/1` and `cover:compile_beam_directory/0,1`. These functions use abstract code from existing beam files when cover compiling.
  Added option 'html' to `cover:analyse_to_file/1,2,3`. Instead of plain text, a HTML file is generated with all uncovered lines colored red.
  Added functions `cover:export/1,2` and `cover:import/1`. These functions can be used to export current coverage data to a file, and then import the data in a later session. Data can be exported for one single module or for all currently cover compiled modules.
  (Own Id: OTP-4702)

- Added function erlang-align-arrows to the erlang mode.
  (Own Id: OTP-4737)

- The module interface for the `instrument` module has been slightely changed. Also some new functionallity has been added. See the `instrument(3)` man page for more information.
  (*** POTENTIAL INCOMPATIBILITY ***)
  (Own Id: OTP-4761)
  (Aux Id: OTP-4534)

## Tools 2.2

### Improvements and new features

- The make options 'par' is removed
  Emakefiles can now contain compiler options
  (Own Id: OTP-4572)

## Tools 2.1

### Fixed errors and malfunctions

- An error could occur when stopping cover, and thus unloading all cover-compiled modules, if any of these modules was used by the code server itself.
  (Own Id: OTP-4269)

- Some bug fixes in `fprof` regarding complicated call stack scenarios that caused it to crash.
  (Own Id: OTP-4506)

### Improvements and new features

- More memory block types (most of the existing ones) are now identified by the instrumented emulator.
  (Own Id: OTP-4313)
  (Aux Id: OTP-4267, OTP-4312, OTP-4314)

- 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.
  (Own Id: OTP-4507)

There are also release notes for older versions.