Author: wyoung
Date: Thu Jun 20 20:50:34 2013
New Revision: 2725
URL: http://svn.gna.org/viewcvs/mysqlpp?rev=2725&view=rev
Log:
- Documented 3.1.0 ABI breakage
- Clarified 3.0.7 API breakage
Modified:
trunk/doc/userman/breakages.dbx
Modified: trunk/doc/userman/breakages.dbx
URL:
http://svn.gna.org/viewcvs/mysqlpp/trunk/doc/userman/breakages.dbx?rev=2725&r1=2724&r2=2725&view=diff
==============================================================================
--- trunk/doc/userman/breakages.dbx (original)
+++ trunk/doc/userman/breakages.dbx Thu Jun 20 20:50:34 2013
@@ -801,7 +801,7 @@
// Do something with row here
}</programlisting>
- <para>...or, in a more C++ish idiom:</para>
+ <para>...or, in a more C++ish idiom:</para>
<programlisting>
mysqlpp::Row row;
@@ -1012,8 +1012,11 @@
exception when you pass an out-of-range index. These
methods variously either did not check their indices,
or threw <classname>std::out_of_range</classname> when
- passed a bad index. The one exception that comes to mind is
- <classname>Fields</classname>, which is just a typedef for a
+ passed a bad index.</para>
+
+ <para>I say “most” because there is at
+ least one MySQL++ class that doesn’t follow this
+ rule. <classname>Fields</classname> is just a typedef for a
specialization of <classname>std::vector</classname>, and the
Standard has its own rules for index checking.</para>
</sect3>
@@ -1188,5 +1191,25 @@
happen, so technically it’s an API change, but it’s
still used the same way.</para>
</sect3>
+
+
+ <sect3 id="abi-3.1.0">
+ <title>v3.1.0</title>
+
+ <para>The addition of a few new virtual methods to
+ <classname>ConnectionPool</classname> inadvertently changed
+ the library ABI. I knew adding fields changed the ABI, but
+ erroneously assumed that the inverse of that truth — that
+ adding <emphasis>methods</emphasis> was always safe —
+ was also true. Adding normal methods <emphasis>is</emphasis>
+ safe, but adding <emphasis>virtual</emphasis> methods breaks
+ the ABI because it changes the class’s vtable size.</para>
+
+ <para>That left us with two bad choices: either we could come
+ out with a 3.1.1 that removed these methods to restore the prior
+ ABI, or we could just declare this the “new ABI”
+ and move on, resolving not to fall into this trap again.
+ We’ve chosen the latter path.</para>
+ </sect3>
</sect2>
</sect1>
_______________________________________________
Mysqlpp-commits mailing list
[email protected]
https://mail.gna.org/listinfo/mysqlpp-commits