These document describes the release notes for older versions of the compiler application.

## Compiler 1.1.3

### Incompatibilities with Compiler 1.1.3

Due to corrections listed below, all BEAM code must be recompiled.

### Fixed bugs and malfunctions

-

### Known bugs and problems

???
Own Id: OTP-1476

## Compiler 1.1.2

### Incompatibilities with Compiler 1.1.1

Due to corrections listed below, all BEAM code must be recompiled (see also release notes for ERTS).

### Fixed bugs and malfunctions

Wrong restart of send at busy or garbage collect (BEAM, fast compiled code).

Own Id:OTP-1420

Bad arithmetic in guard fails instead of matching the next clause (BEAM).

Own Id:OTP-1422

### Known bugs and problems

The BEAM compiler terminates with error beam_asm_int: EXIT when a list match is performed as in [H| T] = foo(), in case variable T is subsequently used, while H is not. The work-around is to write T = tl(foo()) instead.
Own Id: OTP-1476

## Compiler 1.1.1

### Incompatibilities with Compiler 1.1

Due to corrections listed below, all BEAM code must be recompiled (see also release notes for ERTS).

### Fixed bugs and malfunctions

Correction of register allocation error in creation of tuples in guards in BEAM.

Own Id:OTP-1390

Correction of compiler error for BEAM which caused ig to generate erroneous code (error in nested case statements).

Own Id:OTP-1392

Aux Id:HA48119

## Compiler 1.1

### Improvements and new features

To simplify maintenance and cross compilations the two compiler directories, compiler_jam and compiler_beam, has been merged into a single compiler directory. Most modules names have been changed to avoid confusion and name collisions. The only user visible change is that the compilation target (jam or beam) can be specified in the list of arguments. E.g. `compile:file(foo, [beam, verbose, report]).`

### Incompatibilities with Compiler 1.0

-

### Fixed bugs and malfunctions

Compiler crashed on "silly" record update like this: `-record(bar, {hello}). compilerCrash() -> R1 = #bar{}, R2 = R1#bar{}, % <--- This causes the compiler to crash with the not_ok.`

Own Id:OTP-1204,OTP-1208

The compiler does not check that record fields in a match are unique. Example: `-module(compiler_6_SUITE). -record(foo, {bar}). f() -> #foo{bar = X,bar = Y} = x, Y. 56> c(compiler_6_SUITE). *** unset variable:'Y' in line:7`

bar is repeated twice in the above example and the compiler does not detect that as an error which causes the assignment of Y to be silently ignored ...

Own Id:OTP-1231

## Compiler 1.0.1

### Improvements and new features

-

### Incompatibilities with Compiler 1.0

-

### Fixed bugs and malfunctions

The compiler no longer crashes on too long atoms (> 255).

Own Id: OTP-1012

The compiler erl_lint did earlier assume that some language constructs aways resided on the same line in the source code which caused a white space to be significant when determing an error or not. This is corrected.

Example: `-module(test). -compile(export_all). -record(test, {a,b}). rectest(R) when record(R, test) -> ok. rectest2(R) when record(R, test) -> ok. (test@etxbc29)3> c(test). ./test.erl:7: illegal guard expression`

Own Id: OTP-1077

The compiler crashes on unsafe variable in nested case. This is corrected.

Own Id: OTP-1104

## Compiler 1.0

### Improvements and new features

A new include directive -include_lib() is introduced. Example:

    -include_lib("mnesia/include/mnemosyne.hrl").

This instructs the compiler (preprocessor) to look for the directory where the application called mnesia is installed and then looks in the subdirectory include for the file mnemosyne.hrl. The preprocessor first looks in the orinary preprocessor search path to allow explicit overloading of the include files.

The new compiler options {i, IncludeDir} and {d, Def} are introduced.

### Incompatibilities with Compiler P1C

There are two new reserved words let and query.

let will be used in the future when a language construction similar to let in Lisp will be implemented.

query is used when making queries to Mnesia tables with the Mnemosyne query language.

### Fixed bugs and malfunctions

-