# Sasl Release Notes

## SASL 1.9.1 (R7B01)

### Fixed Errors and Malfunctions

- If a new application was added using `code:replace_path/2`, the `code:lib_dir/1` function would fail on the new application name. This has been corrected.
  Own Id: OTP-3780
  Aux Id: Seq 5003
- A printout has been added in `release_handler` when `install_release` fails.
  Own Id: OTP-3767
  Aux Id: seq4983

## Sasl 1.9 (R7B)

### Fixed Errors and Malfunctions

- In the release handler the upgrade instructions before the point_of_no_return instruction, were executed in reverse order.
  Own Id: OTP-3604
- In the release handler, the tar file containing a release was not removed after the release had been successfully unpacked.
  Own Id: OTP-3605
- In the release handler, the relative matching of release versions (e.g. 3.1 matches 3.1.1) was wrong. Such matching has been removed altogether, and now only exact matches are allowed.
  Own Id: OTP-3606
- In systools, when reordering instructions with respect to dependency, the case of duplicate instructions for the same module was not properly checked.
  Own Id: OTP-3607

## Sasl 1.8.3

### Fixed Errors and Malfunctions

- Release handler didn't find topmost supervisors.
  Own Id: OTP-3452
- Processes were suspended in the wrong order.
  Processes are now suspended and resumed in correct order: suspension is in the order of dependency, and resumption is in the reversed order of dependency (both for upgrade and downgrade). Furthermore, modules are loaded in the reversed order of dependency at upgrade, and in the order of dependency at downgrade.
  Own Id: OTP-3453
  Aux Id: seq4270
- Empty suspend and remove instructions are now removed from boot scripts.
  Own Id: OTP-3469
- Modules added by the add_module instruction was not in the dependency chain.
  Own Id: OTP-3477

## Sasl 1.8.2

### Fixed Errors and Malfunctions

- The high-level release upgrade instructions `add_application` and `remove_application` were broken.
  Own Id: OTP-3347

### Improvements and New Features

- The high-level release upgrade instruction `restart_application` has been added.
  Own Id: OTP-3347
- All modules in the Sasl application have got new vsn-numbers.
  Own Id: OTP-3330

## Sasl 1.8.1

### Fixed Errors and Malfunctions

- The entries for Erlang machine and version in OTP-MIB were mixed up.
  Own Id: OTP-3204
  Aux Id: seq3710

### Improvements and New Features

- One more option, `restart_emulator`, has been added to `systools:make_relup()`. The presence of this options ensures that a complete reboot of the system is done when the system is upgraded or downgraded.
  Own Id: OTP-2561
  Aux Id: seq 922
- The functions `behaviour_info/[0,1]` have been removed from the module `systools`.
  (*** POTENTIAL INCOMPATIBILITY ***)
  Own Id: OTP-3159
  Aux Id: OTP-1965
- The function `release_handler:install_release/2` takes two more options: `code_change_timout` overrides the default timeout used while waiting for a module to perform code change; `suspend_timeout` overrides the timeout supplied by the high-level instruction `update` or by the low-level instruction `suspend`. Valid values are integers greater than zero, `infinity` and `default`.
  Own Id: OTP-3321
  Aux Id: Seq4014

## Sasl 1.8.2

### Fixed Errors and Malfunctions

- The high-level release upgrade instructions `add_application` and `remove_application` were broken.
  Own Id: OTP-3347

### Improvements and New Features

- The high-level release upgrade instruction `restart_application` has been added.
  Own Id: OTP-3347
- All modules in the Sasl application have got new vsn-numbers.
  Own Id: OTP-3330

## Sasl 1.8.1

### Fixed Errors and Malfunctions

- The entries for Erlang machine and version in OTP-MIB were mixed up.
  Own Id: OTP-3204
  Aux Id: seq3710

### Improvements and New Features

- One more option, `restart_emulator`, has been added to `systools:make_relup()`. The presence of this options ensures that a complete reboot of the system is done when the system is upgraded or downgraded.
  Own Id: OTP-2561
  Aux Id: seq 922
- The functions `behaviour_info/[0,1]` have been removed from the module `systools`.
  (*** POTENTIAL INCOMPATIBILITY ***)
  Own Id: OTP-3159
  Aux Id: OTP-1965
- The function `release_handler:install_release/2` takes two more options: `code_change_timout` overrides the default timeout used while waiting for a module to perform code change; `suspend_timeout` overrides the timeout supplied by the high-level instruction `update` or by the low-level instruction `suspend`. Valid values are integers greater than zero, `infinity` and `default`.
  Own Id: OTP-3321
  Aux Id: Seq4014

## Sasl 1.7.1

### Fixed Errors and Malfunctions

- If a system is started and a permanent application has erroneous environment parameters, the system should crash. This is the behaviour now, before the system only printed an error report. The system will only crash if the application is started from a boot script genrated by calling systools:make_script/1/2. If application:start/1/2 is called the behaviour is as before.
  Note: affects the result of the systools:make_script/1/2. systools:make_script generates now a call to application:start_boot/2 instead of as prevoiusly a call to application:start/2.
  Own Id: OTP-3002
- It is now allowed that an application X includes application Y, and application Y in its turn is depending of application X. Previously this caused a circular dependency in systools:make_script.
  Own Id: OTP-3065
  Aux Id: Seq 1593 (OTP-2564, Seq 921)

### Improvements and New Features

- It is possible to define a new parameter when installing a new release at upgrade. The parameter defines if the node should be restarted or rebooted in case of an error at installation. Syntax is as follows:
  release_handler:install_release(Vsn, Opt) where Opt = [{error_action, EA}] EA = restart | reboot
  Default value is restart. The old install_release/1 gives also the default error action restart, as before.
  Own Id: OTP-2966
  Aux Id: Seq 1464
- When a module with behaviour `gen_server`, `gen_event` or `gen_fsm` was compiled, warnings were given for absent call-back functions, except for `code_change`. Now, a warning is given for absent `code_change` as well.
  Own Id: OTP-3148
  Aux Id: OTP-3072, OTP-3026

## Sasl 1.7

### Fixed Errors and Malfunctions

- The transient applications were previously treated as temporary applications if an error was detected during start.
  Own Id: OTP-2718
  Aux Id: seq 1136
- Release handler accepts now all types of Erlang terms in -vsn(term()). Own Id: OTP-2740
  Aux Id: seq 1181
- When an application was removed from a node the code was previously not removed from the memory.
  Own Id: OTP-2760
- Better error messages from systool:make_script.
  Own Id: OTP-2768
  Aux Id: seq 1226
- The instructions for kernel in a release upgrade script were not executed, neither were the configuration parameters for kernel updated when upgrading the system. This is now corrected.
  Own Id: OTP-2997

## Sasl 1.6.2

### Fixed Errors and Malfunctions

- In previous releases of OTP it was not possible to upgrade the Erlang emulator (named e.g jam471 or beam471) because the executable file was renamed for each new version. This is now corrected by always giving the same name (jam or beam) without version number to the executable file.
  Own Id: OTP-2372
- If a local application had permission set to false initially, it was previously started anyway. Sasl could also hang in some cases when permission was changed, this is now corrected.
  Own Id: OTP-2463
  Aux Id: Seq 858

### Improvements and New Features

- The parameter start_phases not correctly checked when creating the boot file.
  Own Id: OTP-2610

## Sasl 1.6.1

### Fixed Errors and Malfunctions

- Failover of a loaded MIB did not work. When a MIB was loaded on one node and that node crashed, the failover of the MIB to a new node did not work.
  Own Id: OTP-2200
  Aux Id: seq 651, HA75679
- It is now allowed for an included application to use its own top application; i.e to have the top application in the applications-key in the resource file.
  Own Id: OTP-2564
  Aux Id: Seq 921

### Improvements and New Features

- systools checks for illegal options in the function parameters.
  Own Id: OTP-1851
- A crash of the release_handler process now crashes the enitre application Sasl, which normally means that the node restarts.
  Own Id: OTP-2516
  Aux Id: seq851

## Sasl 1.5

### Fixed Errors and Malfunctions

- The release handler didn't handle downgrades correctly. The downgrade script wasn't found even though it did exist.
  Own Id: OTP-2298
  Aux Id: seq755
- The function `release_handler:create_RELEASES/4` now handles the new syntax with other restart type than `permanent` in the `.rel` file.
  Own Id: OTP-2319
  Aux Id: seq777

### Improvements and New Features

- The `code_change` instruction is extended with explicit support for downgrades.
  The `update` instruction is extended with information needed for downgrades.
  Text about dowgrades is added in the documentation. See the chapter "Release Handling" in the User's guide.

## Sasl 1.4.1

### Fixed Errors and Malfunctions

- Failover/takeover of the SNMP agent administering the MIB did not work, since the old implementation tried to delete a Mnesia table on a node which was not up and running (which always is the case at failover). Now the SNMP related Mnesia table is defined to have the `local_content` property.
  Own Id: OTP-2146
  Aux Id: seq1

## Sasl 1.4

### Fixed Errors and Malfunctions

- A code-only application with no dependecies to other applications is now started correctly, when a start script is generated with `systools:make_script`
  Own Id: OTP-1580
- `rb` handles unknown reports.
  Own Id: OTP-1595
- The `erlNodeWallClock` counter in `OTP-MIB` is now a real `Counter32` objects; i.e. wraps to 0 when 2^32 is reached.
  Own Id: OTP-1604
- `systools:make_script` does not sort applications when it is not necessary. The order specified in the `.rel` file is maintained.
  Own Id: OTP-1644
- The release handling instruction `sync_nodes` could hang forever if one node tried to sync before the other node was ready.
  Own Id: OTP-1959

### Improvements and New Features

- The syntax of the different files defined by Sasl is defined in separate documents. Check the reference manual for `appup(4)`, `rel(4)`, `relup(4)` and `script(4)`.
- It is now possible to customise where the release handler writes its files. The release installation procedure can now be run without write access to the installation root directory.
  Own Id: OTP-1635
  Aux Id: HA54792
- A release packet as constructed with `systools:make_tar` is now a compressed tar file (`.tar.gz`) on all platforms. `systools` and `release_handler` use the new compress functions in `erl_tar`.
  Own Id: OTP-1710
- It is now possible to specify the restart type of an application in the `.rel` file. Previously, all applications were started as `permanent` applications.
  Own Id: OTP-1835

## Sasl 1.3.2

### Fixed Errors and Malfunctions

- Better tar file open/close control in `systools_make`.

## Sasl 1.3.1

### Fixed Errors and Malfunctions

- `systools:make_script` creates the boot script according to new requirements of kernel servers.
  Own Id: OTP-1393

## Sasl 1.3

### Improvements and New Features

- Introduced new attribute, `included_applications`, in application resource files (`.app`). This attribute is used to group a number of applications together. Included applications are not started automatically by the system (they are only loaded), thus this have to be handled by the including application.
- The release file, `Release.rel`, can override the `included_applications` attribute in order to exclude some of the specified (in the `.app` file) applications.
- Added possibilities to specifiy the path option to `systools` functions with a wildcard. The only supported wildcard is `*`. `*` is expanded to the regular expression `[^/]*`. If a wildcard is the only character between two directory separators it is treated as a place holder for exactly one directory level, i.e. the regular expression `[^/]+`.
- It is possible to specify symbolic names for a prefix part of a directory in `systools` functions. A variable name replaces the specified prefix in the generated boot script and tar file.
  This is useful if one want to install applications in other places than under the Erlang root directory.
  A symbolic name (variable) is specified with the `variables` option to `systools:make_script` and `systools:make_tar`. Use the `-boot_var Var Dir` command line flag in order to start a system with variables in the boot script.
- `no_module_tests` option excludes the source code tests (parse for version and validity tests of object code) in `systools:make_script` and `systools:make_tar`. This option is always set for `systools:make_relup`. (Speeds up the generation).
- `systools` can generate boot script and tar files for another target Erlang emulator than the current emulator. Use the `machine` option.
- Application `.appup` files are only read when absolutely necessary by `systools:make_relup`.
- The `start_erl` script shall not be modified/edited. This script now reads configuration data generated by the `release_handler`.
- The requirement that the `start` script (used for embedded systems) shall be located in `<ERL_INSTALL_DIR>/bin` is removed. It is now configurable through the Sasl configuration parameter `start_prg`.
- It is possible to install a release not unpacked by the `release_handler`.
- Added new functions in the `release_handler`:
  - `set_unpacked/2`
  - `set_removed/1`
  - `install_file/2`
- The `release_handler` now handles diskless nodes (and/or nodes with read-only filesystems).
- The file `sys.config` is now mandatory, and must be present in all releases.
- New options `exref` and `{exref, [AppName]}` added to `systools` making it possible to perform a simple cross reference check of function calls. Only modules belonging to applications specified in the `.rel` file are checked.
- Created tar files (by `systools:make_tar`) are only compressed on unix systems.
- Added new option `var_tar` to `systools:make_tar`.
- Added new function to `rb`, `rb:show/0` that shows all reports.
  Own Id: OTP-1144

### Fixed Errors and Malfunctions

- The term output to the `relup` file by `systools:make_relup/3` is now parsable by Erlang. The function now also accept an `Description` parameter for release name lists.
  Own Id: OTP-1206
- `systools:make_relup` now correctly handles new and obsolete applications in the appup scripts.
  Own Id: OTP-1095
- `release_handler_1` has now been included in `sasl.app file`.
  Own Id: OTP-1178
  Aux Id: HA40608
- The order among the mandatory applications (kernel and stdlib) in the `.rel` file does not need to be kernel first.
- Fixed timeout problem in `rb:grep/1`.
  Own Id: OTP-1144
- `release_handler:remove_release/1` handles non-existing files. When it was called and a file to be removed didn't exist, the release handler process crashed.
  Own Id: OTP-1341
- The wrong application version was used in the release down grading script. Note that it is necessary to include the path to all down graded releases. This can be conveniently done by using the new path options specified above.
  Own Id: OTP-1360

## Sasl 1.1.1

### Fixed Errors and Malfunctions

- It is now possible to specify modules without version number in an application resource file (.app), i.e.

      ...
      {modules, [Module | {Module, Vsn}]}
      ...

  Own Id: OTP-1116
- Restart (init:restart/0) of system did not work after a software upgrade. Started using the now old version but should have used the new (if release_handler:make_permanent has been called).
  Own Id: OTP-1113
  Aux Id: HA37170

## Sasl 1.1

### Improvements and New Features

- Added `systools:make_script`, `systools:make_relup` and `systools:make_tar`.
- Added the module `overload`, an overload regulation process.
- Added configuration parameter `errlog_type = error | progress | all` to supress logging of certain error report types. Default is `all`.
- Added the OTP-MIB for SNMP monitoring of OTP.