Hi Michal,

about ABI breakage:

Since MySQL 4.1 all public structures like MYSQL, MYSQL_FIELD have an opaque pointer called extension, where we add new members if necessary. It will be allocated and populated during runtime.
It is considered to be opaque, values from an extension will be retrieved via api functions, e.g. mariadb_get_optionsv().

about version numbers:
MariaDB Connector/C has the version format MAJOR.MINOR.PATCH

Once we released a MAJOR.MINOR version, we will apply bugfixes only and increase the patch number.
If we add new functionality, we will increase the minor version, e.g. after adding the binlog api we released 3.1 after 3.0
If we have a lot of significant changes we bump the major version: E.g. in 3.0 we added a new plugin concept, support for various tls libraries, bulk processing for prepared statements, better unicode support etc.

Usually you don't need to recompile applications when uograding from 3.0 to 3.1.

Hope this helps

/Georg