The semantics for boolean operators in guards have been changed to be more consistent.
All boolean operators will fail if given non-boolean
arguments; '
Semicolon will behave as it used to. If a failure as described above occurs, evaluation will continue with the right operand of the semicolon.
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-4623
Own Id: OTP-4911
When a record was updated, and the record given as an expression (such as function call), the record could be evaluated more than once.
Own Id: OTP-4933
Compilation of modules with long strings could be extremely slow.
Own Id: OTP-4960 Aux Id: seq8310
In bit syntax matching with clauses having guards, sometimes the following clauses would never match if a guard was evaluated (and failed).
Own Id: OTP-4961 Aux Id: seq8338, OTP-4891
Using multiple matching ('=') in the pattern for a generator in list comprehension would cause an internal compiler error.
Example:
Own Id: OTP-5076 Aux Id: OTP-5092
List and string literals, and integer and character
literals were not equivalent in matching as they should
be. For instance,
Own Id: OTP-5092 Aux Id: OTP-5076
The compiler used to warn for definition of functions
having the same name as an auto-imported BIF (such as
Own Id: OTP-4909
The unary '+' operator has been changed to throw an
*** POTENTIAL INCOMPATIBILITY ***
Own Id: OTP-4928
The compiler now warns for more types of suspect code,
such as expressions that will fail at run-time (such as
Own Id: OTP-5098 Aux Id: seq8965, OTP-2456
The long-awaited
Own Id: OTP-5150
The compiler could generate incorrect code for receive clauses did not use the message in any way, for instance if a guard would ignore message depending on some condition not based on the contents of the message (e.g. a state variable in the "loop data").
Own Id: OTP-5050
Compilation of modules with long strings could be extremely slow.
Own Id: OTP-4960 Aux Id: seq8310
In bit syntax matching with clauses having guards, sometimes the following clauses would never match if a guard was evaluated (and failed).
Own Id: OTP-4961 Aux Id: seq8338, OTP-4891
In
Own Id: OTP-4962 Aux Id: seq8292
In rare circumstances, the compiler could optimize away test that would verify that a tuple or record argument indeed was of the correct type (resulting in an emulator crash if the argument was not of the correct type/size). Wrong code could also be generated for floating point expressions.
Own Id: OTP-4790