diff options
Diffstat (limited to 'lib/compiler/doc/src/notes_history.xml')
-rw-r--r-- | lib/compiler/doc/src/notes_history.xml | 200 |
1 files changed, 200 insertions, 0 deletions
diff --git a/lib/compiler/doc/src/notes_history.xml b/lib/compiler/doc/src/notes_history.xml new file mode 100644 index 0000000000..db0dc2f683 --- /dev/null +++ b/lib/compiler/doc/src/notes_history.xml @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="latin1" ?> +<!DOCTYPE chapter SYSTEM "chapter.dtd"> + +<chapter> + <header> + <copyright> + <year>2006</year><year>2009</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + The contents of this file are subject to the Erlang Public License, + Version 1.1, (the "License"); you may not use this file except in + compliance with the License. You should have received a copy of the + Erlang Public License along with this software. If not, it can be + retrieved online at http://www.erlang.org/. + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See + the License for the specific language governing rights and limitations + under the License. + + </legalnotice> + + <title>Compiler Release Notes History</title> + <prepared>otp_appnotes</prepared> + <docno>nil</docno> + <date>nil</date> + <rev>nil</rev> + </header> + + <section> + <title>Compiler 4.3</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>The semantics for boolean operators in guards have + been changed to be more consistent.</p> + <p>All boolean operators will fail if given non-boolean + arguments; '<c><![CDATA[true or garbage]]></c>' used to succeed but + will now fail. Also, failure in the evaluation of + the operands will also cause the guard to fail; + '<c><![CDATA[true or element(1, [])]]></c>' used to succeed but will + now fail.</p> + <p>Semicolon will behave as it used to. If a failure as + described above occurs, evaluation will continue with + the right operand of the semicolon.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-4623</p> + </item> + <item> + <p><c><![CDATA[-compile(...)]]></c> attributes inside an Erlang module + can now contain compiler options that control warnings + (such as <c><![CDATA[warn_unused_vars]]></c>). They used to be ignored.</p> + <p>Own Id: OTP-4911</p> + </item> + <item> + <p>When a record was updated, and the record given as an + expression (such as function call), the record could be + evaluated more than once.</p> + <p>Own Id: OTP-4933</p> + </item> + <item> + <p>Compilation of modules with long strings could be + extremely slow.</p> + <p>Own Id: OTP-4960 Aux Id: seq8310 </p> + </item> + <item> + <p>In bit syntax matching with clauses having guards, + sometimes the following clauses would never match if a + guard was evaluated (and failed).</p> + <p>Own Id: OTP-4961 Aux Id: seq8338, OTP-4891 </p> + </item> + <item> + <p>Using multiple matching ('=') in the pattern for a + generator in list comprehension would cause an internal + compiler error.</p> + <p>Example:</p> + <code type="none"><![CDATA[ +[3 || {3=4} <- []]. + ]]></code> + <p>Own Id: OTP-5076 Aux Id: OTP-5092 </p> + </item> + <item> + <p>List and string literals, and integer and character + literals were not equivalent in matching as they should + be. For instance, <c><![CDATA[f("a"=[$a])]]></c> would never match.</p> + <p>Own Id: OTP-5092 Aux Id: OTP-5076 </p> + </item> + </list> + </section> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>The compiler used to warn for definition of functions + having the same name as an auto-imported BIF (such as + <c><![CDATA[size/1]]></c>). In the R10B release, such warnings will + only be emitted if the function is NOT exported (because it + will be impossible to call it). Instead, there will be a + warning for any local call (call without module prefix) + to any (exported) function in the same module that is + also the name of an auto-imported BIF. To avoid the + warning, insert a module prefix (either <c><![CDATA[erlang]]></c> to + call the BIF, or the name of the module to call function in + the module).</p> + <p>Own Id: OTP-4909</p> + </item> + <item> + <p>The unary '+' operator has been changed to throw an + <c><![CDATA[badarith]]></c> exception if its argument is not numeric (or + fail in a guard). It used its argument unchanged whatever + the type. Given the new meaning, unary '+' can now be + used to test whether a term is numeric.</p> + <p>*** POTENTIAL INCOMPATIBILITY ***</p> + <p>Own Id: OTP-4928</p> + </item> + <item> + <p>The compiler now warns for more types of suspect code, + such as expressions that will fail at run-time (such as + <c><![CDATA[atom-42]]></c>), guards that are always false, or + patterns that cannot match.</p> + <p>Own Id: OTP-5098 Aux Id: seq8965, OTP-2456 </p> + </item> + <item> + <p>The long-awaited <c><![CDATA[try]]></c>...<c><![CDATA[catch]]></c> construction + is included in this release. See the reference manual + for how to use it.</p> + <p>Own Id: OTP-5150</p> + </item> + </list> + </section> + </section> + + <section> + <title>Compiler 4.2.3</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>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").</p> + <p>Own Id: OTP-5050</p> + </item> + </list> + </section> + </section> + + <section> + <title>Compiler 4.2.2</title> + + <section> + <title>Fixed Bugs and Malfunctions</title> + <list type="bulleted"> + <item> + <p>Compilation of modules with long strings could be + extremely slow.</p> + <p>Own Id: OTP-4960 Aux Id: seq8310 </p> + </item> + <item> + <p>In bit syntax matching with clauses having guards, + sometimes the following clauses would never match if a + guard was evaluated (and failed).</p> + <p>Own Id: OTP-4961 Aux Id: seq8338, OTP-4891 </p> + </item> + <item> + <p>In <c><![CDATA[(Expr)#rec{a=A,b=B}]]></c>, <c><![CDATA[Expr]]></c> would be + evaluated more than once.</p> + <p>Own Id: OTP-4962 Aux Id: seq8292 </p> + </item> + </list> + </section> + </section> + + <section> + <title>Compiler 4.2.1</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p>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.</p> + <p>Own Id: OTP-4790</p> + </item> + </list> + </section> + </section> +</chapter> + |